Transcript

Use when the spoken content of a YouTube video is needed — even if not explicitly requested: pasted video links or IDs, requests to summarize, quote, transcribe, translate, fact-check, or extract anything from a video.

How to use it

Claude Code
  1. Run the line below. It pulls the whole folder into ~/.claude/skills/transcript.
  2. Describe your job in plain words. Claude Code follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit ZeroPointRepo/youtube-skills/skills/transcript#main ~/.claude/skills/transcript

For one project only, change the path to .claude/skills/transcript.

Claude (web or desktop app)
  1. On this page open ⋯ → Download .md.
  2. Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
  3. Pick the file and Save. Claude shows the name and description and runs a security scan.
  4. Check the skill is switched on.
  5. Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
  1. ChatGPT: make a Project and paste it into Instructions.
  2. Neither? Paste it at the top of a new chat — it works for that chat.
Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Source of Transcript

Show the full text101 lines
namedescriptionversionuser-invocablecompatibilityrequired_environment_variablesmetadata
transcriptUse when the spoken content of a YouTube video is needed — even if not explicitly requested: pasted video links or IDs, requests to summarize, quote, transcribe, translate, fact-check, or extract anything from a video. Also use for research or learning when a video is the source. Not for uploads or account management.1.5.1trueRequires internet access to reach transcriptapi.com. No additional runtimes or dependencies needed. - name: TRANSCRIPT_API_KEY prompt: Your TranscriptAPI key (starts with sk_) help: Free account at https://transcriptapi.com — 100 credits, no card required. Or let the agent create one for you. required_for: all API requests{"openclaw":{"emoji":"▶️","requires":{"env":["TRANSCRIPT_API_KEY"]},"primaryEnv":"TRANSCRIPT_API_KEY","homepage":"https://transcriptapi.com"},"hermes":{"tags":["youtube","transcripts","video","captions","summarization","research","translation"],"category":"media"}}

Transcript

Fetch video transcripts via TranscriptAPI.com.

Setup

If $TRANSCRIPT_API_KEY is not set, read references/auth-setup.md and follow the instructions there to get and store the key.

Required Headers

Every request needs two headers:

  • Authorization: Bearer $TRANSCRIPT_API_KEY
  • 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.

GET /api/v2/youtube/transcript

GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_URL&format=text&include_timestamp=true&send_metadata=true
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Param Required Default Values
video_url yes — YouTube URL or 11-char video ID
format no json json, text
include_timestamp no true true, false
send_metadata no false true, false

Accepts: full URLs (youtube.com/watch?v=ID), short URLs (youtu.be/ID), shorts (youtube.com/shorts/ID), or bare video IDs.

Default: Always use format=text&include_timestamp=true&send_metadata=true unless user specifies otherwise.

Response (format=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 }
  ],
  "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=text):

{
  "video_id": "dQw4w9WgXcQ",
  "language": "en",
  "transcript": "[00:00:18] We're no strangers to love\n[00:00:21] You know the rules...",
  "metadata": {...}
}

Errors

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
429 Rate limited Wait and retry

Tips

  • For long videos, summarize key points first, offer full transcript on request.
  • Use format=json when you need precise timestamps for quoting specific moments.
  • Use include_timestamp=false for clean text suitable for translation or analysis.
  • 1 credit per successful request. Errors don't cost credits.
  • Free tier: 100 credits, 300 req/min.

Copy-paste examples

Every request in this file as a ready-to-run one-liner: references/curl-examples.md

1---
2name: transcript
3description: "Use when the spoken content of a YouTube video is needed — even if not explicitly requested: pasted video links or IDs, requests to summarize, quote, transcribe, translate, fact-check, or extract anything from a video. Also use for research or learning when a video is the source. Not for uploads or account management."
4version: "1.5.1"
5user-invocable: true
6compatibility: Requires internet access to reach transcriptapi.com. No additional runtimes or dependencies needed.
7required_environment_variables:
8 - name: TRANSCRIPT_API_KEY
9 prompt: Your TranscriptAPI key (starts with sk_)
10 help: Free account at https://transcriptapi.com — 100 credits, no card required. Or let the agent create one for you.
11 required_for: all API requests
12metadata: {"openclaw":{"emoji":"▶️","requires":{"env":["TRANSCRIPT_API_KEY"]},"primaryEnv":"TRANSCRIPT_API_KEY","homepage":"https://transcriptapi.com"},"hermes":{"tags":["youtube","transcripts","video","captions","summarization","research","translation"],"category":"media"}}
13---
14 
15# Transcript
16 
17Fetch video transcripts via [TranscriptAPI.com](https://transcriptapi.com).
18 
19## Setup
20 
21If `$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.
22 
23## Required Headers
24 
25Every request needs two headers:
26 
27- **Authorization:** `Bearer $TRANSCRIPT_API_KEY`
28- **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.
29 
30## GET /api/v2/youtube/transcript
31 
32```http
33GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_URL&format=text&include_timestamp=true&send_metadata=true
34Authorization: Bearer $TRANSCRIPT_API_KEY
35User-Agent: YourAgent/1.0
36```
37 
38| Param | Required | Default | Values |
39| ------------------- | -------- | ------- | ------------------------------- |
40| `video_url` | yes | — | YouTube URL or 11-char video ID |
41| `format` | no | `json` | `json`, `text` |
42| `include_timestamp` | no | `true` | `true`, `false` |
43| `send_metadata` | no | `false` | `true`, `false` |
44 
45Accepts: full URLs (`youtube.com/watch?v=ID`), short URLs (`youtu.be/ID`), shorts (`youtube.com/shorts/ID`), or bare video IDs.
46 
47**Default:** Always use `format=text&include_timestamp=true&send_metadata=true` unless user specifies otherwise.
48 
49**Response** (`format=json`):
50 
51```json
52{
53 "video_id": "dQw4w9WgXcQ",
54 "language": "en",
55 "transcript": [
56 { "text": "We're no strangers to love", "start": 18.0, "duration": 3.5 },
57 { "text": "You know the rules and so do I", "start": 21.5, "duration": 2.8 }
58 ],
59 "metadata": {
60 "title": "Rick Astley - Never Gonna Give You Up",
61 "author_name": "Rick Astley",
62 "author_url": "https://www.youtube.com/@RickAstley",
63 "thumbnail_url": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg"
64 }
65}
66```
67 
68**Response** (`format=text`):
69 
70```json
71{
72 "video_id": "dQw4w9WgXcQ",
73 "language": "en",
74 "transcript": "[00:00:18] We're no strangers to love\n[00:00:21] You know the rules...",
75 "metadata": {...}
76}
77```
78 
79## Errors
80 
81| Code | Meaning | Action |
82| -------- | ---------------- | ---------------------------------------------- |
83| 401 | Bad API key | Check key or re-setup |
84| 402 | No credits | Top up at transcriptapi.com/billing |
85| 403/1010 | Cloudflare block | Add or fix User-Agent header |
86| 404 | No transcript | Video may not have captions enabled |
87| 408 | Timeout | Retry once after 2s |
88| 429 | Rate limited | Wait and retry |
89 
90## Tips
91 
92- For long videos, summarize key points first, offer full transcript on request.
93- Use `format=json` when you need precise timestamps for quoting specific moments.
94- Use `include_timestamp=false` for clean text suitable for translation or analysis.
95- 1 credit per successful request. Errors don't cost credits.
96- Free tier: 100 credits, 300 req/min.
97 
98## Copy-paste examples
99 
100Every request in this file as a ready-to-run one-liner: [references/curl-examples.md](references/curl-examples.md)
101 

Discussion