Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when video content needs to be extracted as text: pasted YouTube links or IDs, requests to transcribe, summarize, quote, translate, convert video to text, or extract information from video content. Also use when a user shares a video URL without explanation and wants to know what it says. Not for uploads or account management.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | -4% | 0% |
| case-17 | ✗→✓ | ▲ Improved | -3% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -19% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -31% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -7% | 0% |
Extract transcripts from videos 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.bashcurl -s "https://transcriptapi.com/api/v2/youtube/transcript\ ?video_url=VIDEO_URL&format=text&include_timestamp=true&send_metadata=true" \ -H "Authorization: Bearer $TRANSCRIPT_API_KEY" \ -H "User-Agent: YourAgent/1.0"
| Param | Required | Default | Values | | ------------------- | -------- | ------- | -------------------------------------- | | video_url | yes | — | YouTube URL or 11-char video ID | | format | no | json | json (structured), text (readable) | | include_timestamp | no | true | true, false | | send_metadata | no | false | true, false |
Accepted URL formats:
https://www.youtube.com/watch?v=VIDEO_IDhttps://youtu.be/VIDEO_IDhttps://youtube.com/shorts/VIDEO_IDdQw4w9WgXcQResponse (format=text&send_metadata=true):
json{ "video_id": "dQw4w9WgXcQ", "language": "en", "transcript": "[00:00:18] We're no strangers to love\n[00:00:21] You know the rules...", "metadata": { "title": "Rick Astley - Never Gonna Give You Up", "author_name": "Rick Astley", "author_url": "https://www.youtube.com/@RickAstley", "thumbnail_url": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg" } }
Response (format=json):
json{ "video_id": "dQw4w9WgXcQ", "language": "en", "transcript": [ { "text": "We're no strangers to love", "start": 18.0, "duration": 3.5 }, { "text": "You know the rules and so do I", "start": 21.5, "duration": 2.8 } ] }
format=json when you need precise timestamps for quoting specific moments.send_metadata=true to get video title and channel for context.| Code | Meaning | Action | | -------- | ---------------- | ---------------------------------------------- | | 401 | Bad API key | Check key or re-setup | | 402 | No credits | Top up at transcriptapi.com/billing | | 403/1010 | Cloudflare block | Add or fix User-Agent header | | 404 | No transcript | Video may not have captions enabled | | 408 | Timeout | Retry once after 2s |
1 credit per successful request. Errors don't consume credits. Free tier: 100 credits, 300 req/min.
Other measured skills in the registry, with their headline benchmark lift.