Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when YouTube is or could be relevant — even if not mentioned: pasted video/channel/playlist links, video IDs, @handles, creator lookups, video summaries, quotes, translations, topic research, tutorials, talks, lectures, expert discussions, product reviews, how-to guides, new product announcements, first looks, or anything where video content is fresher or richer than text search. Covers transcripts, video/channel search, channel browsing, playlists, and within-channel search. Not for uploads
.claude/skills/bilal140202-youtube-full/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 48% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 443% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 43% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 16% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 28% | 0% |
Covers transcript extraction, video search, channel browsing, in-channel search, playlist extraction, and new-upload monitoring via TranscriptAPI.
> Source: Ported from ZeroPointRepo/youtube-skills (MIT). Original skill authored by ZeroPointRepo contributors. Adapted for the claude-skills format.
> BYOK / free-tier note: TranscriptAPI is a commercial service (BYOK — you bring your own key; 100 free credits included, no card required). For local/self-hosted extraction without an API key, use youtube-transcript-api (Python) or yt-dlp as OSS fallbacks. See Anti-Patterns for guidance.
Every request to transcriptapi.com requires two headers:
Authorization: Bearer $TRANSCRIPT_API_KEYUser-Agent: ClaudeCode/1.0If TRANSCRIPT_API_KEY is not set, prompt the user to get a free key at https://transcriptapi.com (100 free credits, no card required) and store it as TRANSCRIPT_API_KEY.
GET https://transcriptapi.com/api/v2/youtube/transcript
?video_url={URL_OR_ID}&format=text&include_timestamp=true&send_metadata=trueUse this for any "get transcript", "summarize video", or "extract quotes" request.
GET https://transcriptapi.com/api/v2/youtube/search
?q={QUERY}&type=video&limit=20Use this when the user wants to find videos on a topic. Follow with transcript calls on selected results.
GET https://transcriptapi.com/api/v2/youtube/channel/latest
?channel={@HANDLE_OR_ID}Returns the 15 most recent uploads with view counts and publish timestamps. Use before fetching transcripts to check whether uploads are new.
GET https://transcriptapi.com/api/v2/youtube/channel/videos
?channel={@HANDLE_OR_ID}Paginate with ?continuation=TOKEN on subsequent pages.
GET https://transcriptapi.com/api/v2/youtube/channel/search
?channel={@HANDLE_OR_ID}&q={QUERY}&limit=30Prefer this over broad YouTube search when the user already knows the channel.
GET https://transcriptapi.com/api/v2/youtube/playlist/videos
?playlist={PLAYLIST_URL_OR_ID}Paginate with ?continuation=TOKEN. Response includes playlist_info, results, has_more.
GET https://transcriptapi.com/api/v2/youtube/channel/resolve
?input={@HANDLE_OR_URL}Returns {"channel_id": "UC...", "resolved_from": "@handle"}.
| Endpoint | Cost | |--------------------|----------| | transcript | 1 | | search | 1 | | channel/resolve | free | | channel/latest | free | | channel/videos | 1/page | | channel/search | 1 | | playlist/videos | 1/page |
Failed or rate-limited calls return a structured error and cost zero credits.
/search?q=...) — pick the most relevant results/transcript?video_url=...) for selected videoschannel/latest (free) — check for new uploadsplaylist/videos — get all video IDs in the playlistchannel/latest (free) firstchannel/search when the user knows which channel and wants to find a topic within itsearch (type=channel) to find a channel when the user doesn't know the handle| Code | Cause | Action | |----------|---------------------|-------------------------------------------| | 401 | Bad API key | Check TRANSCRIPT_API_KEY | | 402 | No credits | Inform user, direct to transcriptapi.com/billing | | 403/1010 | Missing User-Agent | Add User-Agent header | | 404 | No captions found | Inform user — zero credits charged | | 408 | Timeout | Retry once after 2 seconds | | 429 | Rate limited | Respect Retry-After header |
yt-dlp directly.channel/latest (free) to check for new content firstTRANSCRIPT_API_KEY environment variableyoutube-transcript-api (Python, no auth needed for public videos) or yt-dlp --write-subs are OSS alternatives with different trade-offs (no search, no channel API, but free and local)If the user cannot or will not use TranscriptAPI:
| Need | OSS Alternative | Trade-offs | |------|----------------|------------| | Single transcript | youtube-transcript-api (Python) | No search; no channel API; captions only | | Download + subtitles | yt-dlp --write-subs | Requires local install; no REST; slower | | Channel monitoring | Parse YouTube RSS feed (/feeds/videos.xml?channel_id=...) | Free, no auth; limited metadata |
marketing-skill/skills/video-content-strategist — for video strategy, scripting, and content planningmarketing-skill/skills/social-media-manager — for publishing and scheduling derived from transcriptsmarketing-skill/skills/content-production — for turning transcripts into blog posts, summaries, or articles| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 4,028 | 6,020 | +49% | 1 | 1 | 0% | 662 | 2,048 | +209% | 0 | 0 | — |
case-02 | fail→pass | 13,419 | 11,765 | -12% | 1 | 1 | 0% | 2,469 | 3,651 | +48% | 0 | 0 | — |
case-03 | fail→pass | 3,819 | 16,167 | +323% | 1 | 1 | 0% | 817 | 4,436 | +443% | 0 | 0 | — |
case-04 | pass→pass | 4,245 | 3,579 | -16% | 1 | 1 | 0% | 682 | 2,522 | +270% | 0 | 0 | — |
case-05 | fail→fail | 18,205 | 16,973 | -7% | 1 | 1 | 0% | 3,923 | 5,524 | +41% | 0 | 0 | — |
case-06 | fail→pass | 10,329 | 6,434 | -38% | 1 | 1 | 0% | 2,047 | 2,929 | +43% | 0 | 0 | — |
case-07 | fail→pass | 8,643 | 2,582 | -70% | 1 | 1 | 0% | 1,961 | 2,268 | +16% | 0 | 0 | — |
case-08 | fail→pass | 10,905 | 3,800 | -65% | 1 | 1 | 0% | 2,035 | 2,611 | +28% | 0 | 0 | — |
case-09 | pass→pass | 11,624 | 6,960 | -40% | 1 | 1 | 0% | 2,278 | 3,565 | +56% | 0 | 0 | — |
case-10 | fail→pass | 8,832 | 2,273 | -74% | 1 | 1 | 0% | 1,601 | 2,173 | +36% | 0 | 0 | — |
case-11 | pass→pass | 5,628 | 3,745 | -33% | 1 | 1 | 0% | 975 | 2,530 | +159% | 0 | 0 | — |
case-12 | fail→pass | 6,475 | 3,005 | -54% | 1 | 1 | 0% | 1,152 | 2,323 | +102% | 0 | 0 | — |
case-13 | fail→pass | 7,856 | 2,189 | -72% | 1 | 1 | 0% | 1,413 | 2,216 | +57% | 0 | 0 | — |
case-14 | pass→pass | 7,762 | 3,484 | -55% | 1 | 1 | 0% | 1,212 | 2,363 | +95% | 0 | 0 | — |
case-15 | fail→pass | 9,823 | 2,816 | -71% | 1 | 1 | 0% | 1,668 | 2,230 | +34% | 0 | 0 | — |
case-16 | fail→fail | 9,122 | 6,107 | -33% | 1 | 1 | 0% | 1,909 | 2,847 | +49% | 0 | 0 | — |
case-17 | fail→pass | 3,391 | 1,838 | -46% | 1 | 1 | 0% | 657 | 2,113 | +222% | 0 | 0 | — |
case-18 | pass→pass | 9,332 | 8,091 | -13% | 1 | 1 | 0% | 1,909 | 3,529 | +85% | 0 | 0 | — |
case-19 | fail→pass | 9,321 | 1,445 | -84% | 1 | 1 | 0% | 1,662 | 2,048 | +23% | 0 | 0 | — |
case-20 | fail→pass | 3,274 | 1,662 | -49% | 1 | 1 | 0% | 520 | 2,059 | +296% | 0 | 0 | — |
case-21 | pass→pass | 11,244 | 8,091 | -28% | 1 | 1 | 0% | 2,082 | 3,239 | +56% | 0 | 0 | — |
case-22 | fail→pass | 8,380 | 4,090 | -51% | 1 | 1 | 0% | 1,617 | 2,589 | +60% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +59 percentage points is the difference between those two pass rates over the 21 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.