{"id":"2de9354b-007a-47b8-80ca-7805b1481686","shortId":"Q2E66F","kind":"skill","title":"subtitles","tagline":"Use when subtitles or the spoken text of a YouTube video is needed: pasted video links or IDs, requests to translate a video, read along, follow foreign-language content, or extract what was said. Also use for language learning or accessibility. Fetches timestamped subtitles from","description":"# Subtitles\n\nFetch YouTube video subtitles via [TranscriptAPI.com](https://transcriptapi.com).\n\n## Setup\n\nIf `$TRANSCRIPT_API_KEY` is not set, read [references/auth-setup.md](references/auth-setup.md) and follow the instructions there to get and store the key.\n\n## Required Headers\n\nEvery request needs two headers:\n\n- **Authorization:** `Bearer $TRANSCRIPT_API_KEY`\n- **User-Agent:** your agent's name and version if known (e.g. `HermesAgent/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.\n\n## GET /api/v2/youtube/transcript\n\n```bash\ncurl -s \"https://transcriptapi.com/api/v2/youtube/transcript\\\n?video_url=VIDEO_URL&format=text&include_timestamp=false&send_metadata=true\" \\\n  -H \"Authorization: Bearer $TRANSCRIPT_API_KEY\" \\\n  -H \"User-Agent: YourAgent/1.0\"\n```\n\n| Param               | Values                  | Use case                                       |\n| ------------------- | ----------------------- | ---------------------------------------------- |\n| `video_url`         | YouTube URL or video ID | Required                                       |\n| `format`            | `json`, `text`          | `json` for sync'd subs with timing             |\n| `include_timestamp` | `true`, `false`         | `false` for clean text for reading/translation |\n| `send_metadata`     | `true`, `false`         | Include title, channel, description            |\n\n**For language learning** — clean text without timestamps:\n\n```bash\ncurl -s \"https://transcriptapi.com/api/v2/youtube/transcript\\\n?video_url=VIDEO_ID&format=text&include_timestamp=false\" \\\n  -H \"Authorization: Bearer $TRANSCRIPT_API_KEY\" \\\n  -H \"User-Agent: YourAgent/1.0\"\n```\n\n**For translation** — structured segments:\n\n```bash\ncurl -s \"https://transcriptapi.com/api/v2/youtube/transcript\\\n?video_url=VIDEO_ID&format=json&include_timestamp=true\" \\\n  -H \"Authorization: Bearer $TRANSCRIPT_API_KEY\" \\\n  -H \"User-Agent: YourAgent/1.0\"\n```\n\n**Response** (`format=json`):\n\n```json\n{\n  \"video_id\": \"dQw4w9WgXcQ\",\n  \"language\": \"en\",\n  \"transcript\": [\n    { \"text\": \"We're no strangers to love\", \"start\": 18.0, \"duration\": 3.5 }\n  ]\n}\n```\n\n**Response** (`format=text`, `include_timestamp=false`):\n\n```json\n{\n  \"video_id\": \"dQw4w9WgXcQ\",\n  \"language\": \"en\",\n  \"transcript\": \"We're no strangers to love\\nYou know the rules and so do I...\"\n}\n```\n\n## Tips\n\n- Many videos have auto-generated subtitles in multiple languages.\n- Use `format=json` to get timing for each line (great for sync'd reading).\n- Use `include_timestamp=false` for clean text suitable for translation apps.\n\n## Errors\n\n| Code     | Meaning          | Action                                         |\n| -------- | ---------------- | ---------------------------------------------- |\n| 401      | Bad API key      | Check key                                      |\n| 402      | No credits       | transcriptapi.com/billing                      |\n| 403/1010 | Cloudflare block | Add or fix User-Agent header                   |\n| 404      | No subtitles     | No subtitles available                         |\n| 408      | Timeout          | Retry once after 2s                            |\n\n1 credit per request. Free tier: 100 credits, 300 req/min.","tags":["subtitles","youtube","skills","zeropointrepo","agent-skills","clawdbot","hermes-agent","openclaw","youtube-search","youtube-transcript"],"capabilities":["skill","source-zeropointrepo","skill-subtitles","topic-agent-skills","topic-clawdbot","topic-hermes-agent","topic-openclaw","topic-youtube-search","topic-youtube-transcript"],"categories":["youtube-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/ZeroPointRepo/youtube-skills/subtitles","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add ZeroPointRepo/youtube-skills","source_repo":"https://github.com/ZeroPointRepo/youtube-skills","install_from":"skills.sh"}},"qualityScore":"0.511","qualityRationale":"deterministic score 0.51 from registry signals: · indexed on github topic:agent-skills · 123 github stars · SKILL.md body (3,314 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-02T12:54:56.465Z","embedding":null,"createdAt":"2026-04-18T22:11:49.855Z","updatedAt":"2026-05-02T12:54:56.465Z","lastSeenAt":"2026-05-02T12:54:56.465Z","tsv":"'/api/v2/youtube/transcript':135,141,217,247 '/billing':367 '1':390 '100':396 '1010':129 '18.0':286 '2s':389 '3.5':288 '300':398 '401':356 '402':362 '403':126 '403/1010':368 '404':378 '408':384 'access':43 'action':355 'add':371 'agent':92,94,107,163,236,266,376 'alon':109 'along':26 'also':37 'api':59,88,158,231,261,358 'app':351 'author':85,155,228,258 'auto':321 'auto-gener':320 'avail':383 'bad':357 'bare':120 'bash':136,212,242 'bearer':86,156,229,259 'block':131,370 'case':168 'channel':203 'check':360 'claudecode/1.0':103 'clean':193,208,346 'cloudflar':122,369 'code':128,353 'content':31 'credit':364,391,397 'curl':137,213,243 'd':183,339 'default':121 'descript':204 'dqw4w9wgxcq':274,298 'durat':287 'e.g':101 'en':276,300 'error':127,352 'everi':80 'extract':33 'fals':150,190,191,200,226,294,344 'fetch':44,49 'fine':111 'fix':373 'follow':27,68 'foreign':29 'foreign-languag':28 'format':146,177,222,252,269,290,328 'free':394 'generat':322 'get':73,134,331 'great':336 'h':154,160,227,233,257,263 'header':79,84,116,377 'hermesagent/0.11.0':102 'id':19,175,221,251,273,297 'includ':148,187,201,224,254,292,342 'instruct':70 'json':178,180,253,270,271,295,329 'key':60,77,89,159,232,262,359,361 'know':309 'known':100 'languag':30,40,206,275,299,326 'learn':41,207 'line':335 'link':17 'love':284,307 'mani':317 'mean':354 'metadata':152,198 'multipl':325 'name':96,108 'need':14,82 'nyou':308 'omit':114 'option':106 'param':165 'past':15 'per':392 're':280,303 'read':25,64,340 'reading/translation':196 'references/auth-setup.md':65,66 'req/min':399 'request':20,81,133,393 'requir':78,176 'respons':268,289 'retri':386 'return':124 'rule':311 'said':36 'segment':241 'send':118,151,197 'set':63 'setup':56 'skill' 'skill-subtitles' 'source-zeropointrepo' 'spoken':7 'start':285 'store':75 'stranger':282,305 'structur':240 'sub':184 'subtitl':1,4,46,48,52,323,380,382 'suitabl':348 'sync':182,338 'text':8,147,179,194,209,223,278,291,347 'tier':395 'time':186,332 'timeout':385 'timestamp':45,149,188,211,225,255,293,343 'tip':316 'titl':202 'topic-agent-skills' 'topic-clawdbot' 'topic-hermes-agent' 'topic-openclaw' 'topic-youtube-search' 'topic-youtube-transcript' 'transcript':58,87,157,230,260,277,301 'transcriptapi.com':54,55,140,216,246,366 'transcriptapi.com/api/v2/youtube/transcript':139,215,245 'transcriptapi.com/billing':365 'translat':22,239,350 'true':153,189,199,256 'two':83 'url':143,145,170,172,219,249 'use':2,38,167,327,341 'user':91,162,235,265,375 'user-ag':90,161,234,264,374 'valu':166 'version':98,104 'via':53 'video':12,16,24,51,142,144,169,174,218,220,248,250,272,296,318 'without':210 'youragent/1.0':164,237,267 'youtub':11,50,171","prices":[{"id":"e505dd88-5968-4ff9-b9a4-0eedda460267","listingId":"2de9354b-007a-47b8-80ca-7805b1481686","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"ZeroPointRepo","category":"youtube-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:11:49.855Z"}],"sources":[{"listingId":"2de9354b-007a-47b8-80ca-7805b1481686","source":"github","sourceId":"ZeroPointRepo/youtube-skills/subtitles","sourceUrl":"https://github.com/ZeroPointRepo/youtube-skills/tree/main/skills/subtitles","isPrimary":false,"firstSeenAt":"2026-04-18T22:11:49.855Z","lastSeenAt":"2026-05-02T12:54:56.465Z"}],"details":{"listingId":"2de9354b-007a-47b8-80ca-7805b1481686","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"ZeroPointRepo","slug":"subtitles","github":{"repo":"ZeroPointRepo/youtube-skills","stars":123,"topics":["agent-skills","clawdbot","hermes-agent","openclaw","youtube-search","youtube-transcript"],"license":"mit","html_url":"https://github.com/ZeroPointRepo/youtube-skills","pushed_at":"2026-04-29T18:46:05Z","description":"YouTube Transcript API skills for AI agents. Get transcripts, search videos, browse channels. Works with OpenClaw, Hermes-Agent, Claude Code, Cursor, Windsurf.","skill_md_sha":"73fd1032cbb5e9a7b69457a110e2e9dff7ab5ebe","skill_md_path":"skills/subtitles/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/ZeroPointRepo/youtube-skills/tree/main/skills/subtitles"},"layout":"multi","source":"github","category":"youtube-skills","frontmatter":{"name":"subtitles","description":"Use when subtitles or the spoken text of a YouTube video is needed: pasted video links or IDs, requests to translate a video, read along, follow foreign-language content, or extract what was said. Also use for language learning or accessibility. Fetches timestamped subtitles from any YouTube video. Not for uploading subtitles or account management.","compatibility":"Requires internet access to reach transcriptapi.com. No additional runtimes or dependencies needed."},"skills_sh_url":"https://skills.sh/ZeroPointRepo/youtube-skills/subtitles"},"updatedAt":"2026-05-02T12:54:56.465Z"}}