Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when a YouTube playlist is involved: pasted playlist links or IDs, requests to list playlist videos, browse playlist contents, or work through a playlist for transcripts or research. Also use when the user wants all videos from a series, course, or collection. Not for creating playlists or account management.
.claude/skills/zeropointrepo-youtube-playlist/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 273% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -13% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -1% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 16% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -12% | 0% |
Browse playlists and fetch transcripts via TranscriptAPI.com.
If $TRANSCRIPT_API_KEY is not set, read references/auth-setup.md and follow the instructions there to get and store the key.
Every request needs two headers:
Bearer $TRANSCRIPT_API_KEYHermesAgent/0.11.0, ClaudeCode/1.0). Version is optional — agent name alone is fine. Do not omit this header or send a bare default — Cloudflare will return a 403 (error code 1010) and block the request.Full OpenAPI spec: transcriptapi.com/openapi.json — consult this for the latest parameters and schemas.
Paginated playlist video listing (100 per page). Accepts playlist — a YouTube playlist URL or playlist ID.
http# First page GET https://transcriptapi.com/api/v2/youtube/playlist/videos?playlist=PL_PLAYLIST_ID Authorization: Bearer $TRANSCRIPT_API_KEY User-Agent: YourAgent/1.0 # Next pages GET https://transcriptapi.com/api/v2/youtube/playlist/videos?continuation=TOKEN Authorization: Bearer $TRANSCRIPT_API_KEY User-Agent: YourAgent/1.0
| Param | Required | Validation | | -------------- | ----------- | ---------------------------------------------------- | | playlist | conditional | Playlist URL or ID (PL/UU/LL/FL/OL prefix) | | continuation | conditional | non-empty string |
Provide exactly one of playlist or continuation, not both.
Accepted playlist ID prefixes:
PL — user-created playlistsUU — channel uploads playlistLL — liked videosFL — favoritesOL — other system playlistsResponse:
json{ "results": [ { "videoId": "abc123xyz00", "title": "Playlist Video Title", "channelId": "UCuAXFkgsw1L7xaCfnd5JJOw", "channelTitle": "Channel Name", "channelHandle": "@handle", "lengthText": "10:05", "viewCountText": "1.5M views", "thumbnails": [{ "url": "...", "width": 120, "height": 90 }], "index": "0" } ], "playlist_info": { "title": "Best Science Talks", "numVideos": "47", "description": "Top science presentations", "ownerName": "TED", "viewCount": "5000000" }, "continuation_token": "4qmFsgKlARIYVVV1...", "has_more": true }
Pagination flow:
?playlist=PLxxx — returns first 100 videos + continuation_token?continuation=TOKEN — returns next 100 + new tokenhas_more: false or continuation_token: nullhttp# 1. List playlist videos GET https://transcriptapi.com/api/v2/youtube/playlist/videos?playlist=PL_PLAYLIST_ID Authorization: Bearer $TRANSCRIPT_API_KEY User-Agent: YourAgent/1.0 # 2. Get transcript from a video in the playlist GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_ID&format=text&include_timestamp=true&send_metadata=true Authorization: Bearer $TRANSCRIPT_API_KEY User-Agent: YourAgent/1.0
From https://www.youtube.com/playlist?list=PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf, the playlist ID is PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf. You can also pass the full URL directly to the playlist parameter.
| Code | Meaning | Action | | -------- | ----------------------- | ------------------------------------------------ | | 400 | Both or neither params | Provide exactly one of playlist or continuation | | 402 | No credits | transcriptapi.com/billing | | 403/1010 | Cloudflare block | Add or fix User-Agent header | | 404 | Playlist not found | Check if playlist is public | | 408 | Timeout | Retry once | | 422 | Invalid playlist format | Must be a valid playlist URL or ID |
1 credit per page. Free tier: 100 credits, 300 req/min.
Every request in this file as a ready-to-run one-liner: references/curl-examples.md
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-10 | pass→pass | 11,698 | 4,228 | -64% | 1 | 1 | 0% | 2,243 | 2,102 | -6% | 0 | 0 | — |
case-01 | fail→pass | 6,412 | 15,122 | +136% | 1 | 1 | 0% | 1,111 | 4,141 | +273% | 0 | 0 | — |
case-02 | fail→fail | 13,477 | 6,647 | -51% | 1 | 1 | 0% | 2,268 | 1,665 | -27% | 0 | 0 | — |
case-03 | fail→fail | 30,021 | 6,625 | -78% | 1 | 1 | 0% | 6,213 | 1,628 | -74% | 0 | 0 | — |
case-04 | fail→pass | 14,314 | 3,463 | -76% | 1 | 1 | 0% | 2,158 | 1,869 | -13% | 0 | 0 | — |
case-05 | fail→pass | 9,945 | 2,417 | -76% | 1 | 1 | 0% | 1,663 | 1,649 | -1% | 0 | 0 | — |
case-06 | pass→pass | 22,634 | 2,715 | -88% | 1 | 1 | 0% | 1,286 | 1,692 | +32% | 0 | 0 | — |
case-07 | pass→pass | 10,239 | 2,708 | -74% | 1 | 1 | 0% | 1,751 | 1,665 | -5% | 0 | 0 | — |
case-08 | fail→pass | 8,870 | 2,479 | -72% | 1 | 1 | 0% | 1,366 | 1,589 | +16% | 0 | 0 | — |
case-09 | fail→pass | 11,590 | 2,512 | -78% | 1 | 1 | 0% | 1,897 | 1,663 | -12% | 0 | 0 | — |
case-11 | fail→pass | 11,887 | 3,421 | -71% | 1 | 1 | 0% | 1,776 | 1,853 | +4% | 0 | 0 | — |
case-12 | pass→pass | 10,320 | 1,397 | -86% | 1 | 1 | 0% | 1,591 | 1,448 | -9% | 0 | 0 | — |
case-13 | fail→pass | 9,716 | 1,612 | -83% | 1 | 1 | 0% | 1,364 | 1,494 | +10% | 0 | 0 | — |
case-14 | fail→pass | 10,788 | 2,250 | -79% | 1 | 1 | 0% | 1,727 | 1,569 | -9% | 0 | 0 | — |
case-19 | fail→pass | 8,447 | 2,043 | -76% | 1 | 1 | 0% | 1,375 | 1,545 | +12% | 0 | 0 | — |
case-15 | pass→pass | 9,711 | 1,657 | -83% | 1 | 1 | 0% | 1,514 | 1,467 | -3% | 0 | 0 | — |
case-16 | fail→pass | 10,791 | 2,101 | -81% | 1 | 1 | 0% | 1,560 | 1,573 | +1% | 0 | 0 | — |
case-17 | pass→pass | 10,025 | 4,806 | -52% | 1 | 1 | 0% | 1,669 | 2,087 | +25% | 0 | 0 | — |
case-18 | fail→pass | 7,000 | 2,528 | -64% | 1 | 1 | 0% | 1,103 | 1,701 | +54% | 0 | 0 | — |
case-20 | fail→fail | 3,645 | 7,336 | +101% | 1 | 1 | 0% | 592 | 2,538 | +329% | 0 | 0 | — |
case-21 | fail→pass | 11,962 | 5,095 | -57% | 1 | 1 | 0% | 1,992 | 2,096 | +5% | 0 | 0 | — |
case-22 | fail→pass | 7,796 | 4,451 | -43% | 1 | 1 | 0% | 1,336 | 2,093 | +57% | 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 20 counted toward the lift figure. The other 2 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 20 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
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.