video-transcript — Claude Code skill: what it does, how to install
Extracts captions and transcripts from YouTube videos using a URL or video ID. Useful for generating video summaries, quotes, or translations quickly.
npx skills add ZeroPointRepo/youtube-skills --skill video-transcript -a claude-codeWhat video-transcript does
This skill queries TranscriptAPI to fetch video transcripts as plain text or structured JSON with timestamps. It handles standard YouTube videos along with YouTube Shorts. If requested, it also pulls metadata such as video titles, author names, and thumbnails.
An environment variable named TRANSCRIPT_API_KEY is required. Free accounts get 100 credits without entering a card. You must send a User-Agent header identifying your agent, or Cloudflare blocks the request with a 403 status code. The skill only extracts text and does not handle video uploads or account management.
What it helps with
- summarize long video content into bullet points
- pull quotes with exact timestamps from YouTube
- translate video captions to another language
- extract text from YouTube Shorts without a browser
Example prompts for the agent
- Summarize the key points from video dQw4w9WgXcQ
- Get the transcript with timestamps as JSON for video ID dQw4w9WgXcQ
- Translate the captions of video dQw4w9WgXcQ into Spanish
How to install video-transcript
1Skills CLI (Vercel)
npx skills add ZeroPointRepo/youtube-skills --skill video-transcript -a claude-code2Manually: put the files in place
~/.claude/skills/video-transcript/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/video-transcript/
1Skills CLI (Vercel)
npx skills add ZeroPointRepo/youtube-skills --skill video-transcript -a codex2Manually: put the files in place
.agents/skills/video-transcript/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add ZeroPointRepo/youtube-skills --skill video-transcript -a cursor2Manually: put the files in place
.cursor/skills/video-transcript/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install ZeroPointRepo/youtube-skills video-transcript2Manually: put the files in place
.github/skills/video-transcript/SKILL.md1Skills CLI (Vercel)
npx skills add ZeroPointRepo/youtube-skills --skill video-transcript -a gemini-cli2Platform CLI
gemini skills install https://github.com/ZeroPointRepo/youtube-skills --path clawhub/video-transcriptManually: put the files in place
.devin/skills/video-transcript/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add ZeroPointRepo/youtube-skills --skill video-transcript -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about video-transcript
How do I install video-transcript in Claude Code?
Run npx skills add ZeroPointRepo/youtube-skills --skill video-transcript -a claude-code. Then set the TRANSCRIPT_API_KEY environment variable before sending requests.
What does video-transcript do?
It retrieves transcripts and captions for YouTube videos and Shorts, returning plain text or timestamped JSON via TranscriptAPI.
Why does the API return a 403 error?
Cloudflare blocks requests that omit a proper User-Agent header. Always provide your agent name in the request headers.
Source text
SKILL.md · MIT
---
name: video-transcript
description: "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."
version: "1.5.1"
user-invocable: true
compatibility: Requires internet access to reach transcriptapi.com. No additional runtimes or dependencies needed.
required_environment_variables:
- 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
metadata: {"openclaw":{"emoji":"🎬","requires":{"env":["TRANSCRIPT_API_KEY"]},"primaryEnv":"TRANSCRIPT_API_KEY","homepage":"https://transcriptapi.com"},"hermes":{"tags":["youtube","transcripts","video","captions","text-extraction","summarization"],"category":"media"}}
---
# Video Transcript
Extract transcripts from videos via [TranscriptAPI.com](https://transcriptapi.com).
## Setup
If `$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.
## 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
```bash
curl -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_ID`
- `https://youtu.be/VIDEO_ID`
- `https://youtube.com/shorts/VIDEO_ID`
- Bare video ID: `dQw4w9WgXcQ`
**Response** (`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 }
]
}
```
## Tips
- Summarize long transcripts into key points first, offer full text on request.
- Use `format=json` when you need precise timestamps for quoting specific moments.
- Use `send_metadata=true` to get video title and channel for context.
- Works with YouTube Shorts too.
## 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 |
1 credit per successful request. Errors don't consume credits. Free tier: 100 credits, 300 req/min.
© ZeroPointRepo · MIT · ZeroPointRepo/youtube-skills