# YouTube Transcript Agent Skill for Claude Code, Cursor & Codex 🎬
[](https://skills.sh/tubeagentkit/youtube-transcript-skills)
[](./LICENSE)
[](https://getyoutubetranscript.com/?utm_source=github&utm_medium=readme&utm_campaign=youtube-transcript-skills)
> Get YouTube transcripts, search videos, browse channels, and pull playlists — from any AI agent, with no dashboard visit required to get started.
An [Agent Skill](https://skills.sh) that teaches Claude, Cursor, Antigravity, Windsurf, and any other Agent Skills-compatible tool how to fetch YouTube transcripts, search YouTube (videos or channels), resolve channel handles, browse a channel's uploads, Shorts, live streams, playlists and posts, search inside a channel, fetch a channel's banner, pull playlist contents, find related videos, and read a video's estimated likes and dislikes — all through the [getyoutubetranscript.com](https://getyoutubetranscript.com/?utm_source=github&utm_medium=readme&utm_campaign=youtube-transcript-skills) public API.
Works with Claude Code, Cursor, Antigravity, Windsurf, Cline, Codex, and 70+ other agent runtimes via [skills.sh](https://skills.sh), and via [ClawHub](https://clawhub.ai) for OpenClaw/ClawdBot/Moltbot.
**Metered API: 1 credit per successful request · 100 free credits on signup, no card · then from $5/month for 1,000 credits · Your agent can set it up for you**
---
## Install
```bash
npx skills add tubeagentkit/youtube-transcript-skills --skill youtube-transcript
```
**ClawHub (OpenClaw/ClawdBot/Moltbot):**
```bash
npx clawhub@latest install tubeagentkit/youtube-transcript
```
**Manual (git clone):**
```bash
git clone https://github.com/tubeagentkit/youtube-transcript-skills.git
cp -r youtube-transcript-skills/skills/youtube-transcript ~/.claude/skills/
```
> **Not a developer?** Paste this into Claude, Cursor, or any AI agent that supports Agent Skills:
>
> ```
> Install the youtube-transcript skill from this GitHub repo:
> https://github.com/tubeagentkit/youtube-transcript-skills
> I want to get YouTube transcripts, search YouTube, and browse channels from you directly.
> Set everything up for me, including getting an API key.
> ```
>
> The agent handles the rest — including signing you up for a free API key by email, no browser or dashboard visit needed.
---
## What You Can Do
Just install and ask. No config, no code — talk to your agent in plain English.
| Task | Example Prompt |
|---|---|
| **Get a transcript** | "Summarize this video: [URL]" |
| **Find where something is said** | "At what point does this video talk about pricing? Link the moment." |
| **Search YouTube** | "Find videos about machine learning" |
| **Find a channel** | "Search YouTube for MKBHD's channel" |
| **Browse a channel** | "What has @veritasium posted recently?" |
| **Get a channel's full upload history** | "List every video @TED has ever uploaded" |
| **Get a channel's Shorts or live streams** | "Show @mkbhd's most popular Shorts" |
| **Get a channel's playlists or posts** | "What playlists does @veritasium have?" |
| **Get a channel's banner** | "Download the banner of @mkbhd" |
| **Find related videos** | "What else should I watch after this video? [URL]" |
| **Get estimated dislikes** | "How many dislikes does this video have? [URL]" |
| **Search inside a channel** | "Search MKBHD's channel for iPhone reviews" |
| **Get playlist contents** | "List all videos in this playlist: [URL]" |
| **Research a topic** | "Find and summarize the top 5 videos about quantum computing" |
| **Bulk transcripts** | "Get transcripts for every video in this playlist" |
---
## Getting an API Key: No Browser Required
Ask your agent for a transcript with no key configured, and it will:
1. Tell you the cost (1 credit per successful request; 100 free credits for new accounts, then from $5/month for 1,000) and ask for the email you'd like to use.
2. Send that email to `getyoutubetranscript.com`, which creates the account (or signs you in) and emails you a 6-digit code.
3. Once you give it the code, it gets an API key, checks it, and saves it to `~/.config/getyoutubetranscript/api_key` (readable only by you). The key is never printed in the chat.
Can't get the code (no access to that inbox, or it never arrives)? Sign up at [getyoutubetranscript.com/dashboard](https://getyoutubetranscript.com/dashboard?utm_source=github&utm_medium=readme&utm_campaign=youtube-transcript-skills) and paste the key to your agent instead.
The key file is the only thing the skill writes. It only touches your shell profile if you ask it to and say yes to the exact line it will add (`scripts/save_key.sh --profile`). See [`skills/youtube-transcript/SKILL.md`](skills/youtube-transcript/SKILL.md) for the exact flow, including the two API calls involved (`POST /api/v1/signup`, `POST /api/v1/signup/verify`).
---
## Available Endpoints
All of these are documented in [`SKILL.md`](skills/youtube-transcript/SKILL.md) and wrapped by a bundled script in [`scripts/`](skills/youtube-transcript/scripts/). Base URL: `https://getyoutubetranscript.com/api/v1`.
| Endpoint | Cost | What it does |
|---|---|---|
| `GET /transcript` | 1 credit | Full transcript + title/author/thumbnail for one video, with `caption_type` (manual/auto) and the language actually returned; add `timestamps=true` for per-line `segments` |
| `GET /transcript/languages` | 1 credit | The caption languages a video offers (manual or auto-generated) and which one a default request returns |
| `POST /batch` + `GET /batch` | 1 credit per successful video | Up to 100 videos in one call; poll for results (failed videos are never charged) |
| `GET /search` | 1 credit/page | Search YouTube for videos or channels, paginated |
| `GET /resolve` | 1 credit | Resolve a channel handle/URL/ID to its canonical channel ID |
| `GET /channel/latest` | 1 credit | Channel details + its 15 newest uploads |
| `GET /channel/videos` | 1 credit/page | Every video a channel has ever uploaded, fully paginated |
| `GET /channel/search` | 1 credit/page | Search within one channel's videos, fully paginated |
| `GET /playlist` | 1 credit/page | Every video in a playlist, fully paginated |
| `GET /credits` | Free | Remaining credit balance, plan, and rate limit for this key |
---
## Pricing
| Plan | Price | Credits | Rate Limit |
|---|---|---|---|
| **Free** | $0 | 100 credits on signup | 60 req/min |
| **Monthly** | $5/month | 1,000 credits/month | 200 req/min |
| **Annual** | $4.50/mo ($54/yr) | 1,000 credits/month | 300 req/min |
| **Starter** | $19/month | 7,500 credits/month | 300 req/min |
| **Pro** | $49/month | 25,000 credits/month | 400 req/min |
| **Scale** | $99/month | 60,000 credits/month | 600 req/min |
- **1 credit = 1 successful request.** Failed calls are never charged.
- Only `GET /credits` is free; every other endpoint costs 1 credit per successful call, whatever the plan.
- Top-ups: $2.50 per 1,000 credits (Monthly), $1.50 per 1,000 (Annual, Starter, Pro and Scale).
- [View pricing / manage billing →](https://getyoutubetranscript.com/dashboard?utm_source=github&utm_medium=readme&utm_campaign=youtube-transcript-skills)
---
## Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| `401 MISSING_API_KEY` / `INVALID_API_KEY` | No key sent, or it's wrong/revoked | Confirm `YOUTUBE_TRANSCRIPT_API_KEY` is actually set in your agent's environment, and that it starts with `sk_live_` |
| `402 PAYMENT_REQUIRED` | Out of credits | Top up or upgrade at the [dashboard](https://getyoutubetranscript.com/dashboard?utm_source=github&utm_medium=readme&utm_campaign=youtube-transcript-skills) — don't retry the same call |
| `404 VIDEO_UNAVAILABLE` / `TRANSCRIPT_NOT_FOUND` / `TRANSCRIPT_DISABLED` | Video doesn't exist, is private, or has no captions | Confirm the video plays and shows captions in a real browser first |
| `404 LANGUAGE_NOT_AVAILABLE` | The video doesn't have a transcript in the language you asked for | Omit `language` to get whatever's available, or try a different one |
| `429 RATE_LIMITED` | Too many requests for your plan tier | Back off — don't hammer it in a retry loop |
| `503 UPSTREAM_UNAVAILABLE` / `UPSTREAM_TIMEOUT` | Transient upstream hiccup | Safe to retry once after a short delay |
Two more things worth knowing:
- **Signup email never arrives.** Check spam first. Disposable/throwaway email domains are rejected outright with a clear error — use a real address.
- **Timestamps are opt-in.** `GET /transcript` returns the full spoken text as one string. Add `timestamps=true` to also get `data.segments` (`start`, `duration`, `text` per caption line, in seconds). Same credit cost, larger response, so your agent only asks for it when you want timestamps, quotes or chapters.
---
## FAQ
**Do I need a Google YouTube Data API key?**
No. This replaces the need for a Google Cloud project, API key, and quota management entirely — signup here is free and instant.
**Which endpoint should I use for a whole channel's videos?**
`channel/latest` if you just want recent uploads (1 credit). `channel/videos` if you want the complete upload history, paginated.
**Can I search inside just one channel, not all of YouTube?**
Yes — `channel/search` does exactly that, with the same pagination convention as everything else here.
**Is there an MCP server version of this too?**
Yes — see [tubeagentkit/youtube-mcp](https://github.com/tubeagentkit/youtube-mcp) for direct integration with Claude, ChatGPT, Cursor, and any other MCP-compatible client, including full OAuth 2.1 sign-in (no API key needed at all).
---
## Also available as a REST API
Building an app instead of an agent skill? The exact same backend is a plain JSON REST API — see [`SKILL.md`](skills/youtube-transcript/SKILL.md) for the full endpoint reference, or the [dashboard](https://getyoutubetranscript.com/dashboard?utm_source=github&utm_medium=readme&utm_campaign=youtube-transcript-skills) to get a key directly.
## Disclosure
getyoutubetranscript.com is an independent product and is not affiliated with or endorsed by YouTube or Google.
## Contributing
Issues and PRs welcome.
## Related projects
Other ways to use the [GetYouTubeTranscript API](https://getyoutubetranscript.com/?utm_source=github&utm_medium=readme&utm_campaign=youtube-transcript-skills):
- [youtube-transcript-api](https://github.com/tubeagentkit/youtube-transcript-api): YouTube Transcript API docs, endpoint reference, OpenAPI spec and examples in curl, Python, JavaScript, Go and PHP
- [youtube-transcript-api-python](https://github.com/tubeagentkit/youtube-transcript-api-python): YouTube Transcript API SDK for Python
- [youtube-transcript-api-node](https://github.com/tubeagentkit/youtube-transcript-api-node): YouTube Transcript API SDK for Node.js / TypeScript
- [youtube-mcp](https://github.com/tubeagentkit/youtube-mcp): Remote YouTube MCP server for Claude, ChatGPT, Cursor and VS Code
- [youtube-transcript-cursor-plugin](https://github.com/tubeagentkit/youtube-transcript-cursor-plugin): YouTube Transcript Cursor plugin bundling the MCP server, skills, commands and a research agent
- [n8n-nodes-getyoutubetranscript](https://github.com/tubeagentkit/n8n-nodes-getyoutubetranscript): YouTube transcript n8n community node, also usable as an AI Agent tool
Comparing options, including other tools: [awesome-youtube-transcripts](https://github.com/tubeagentkit/awesome-youtube-transcripts) lists libraries, hosted APIs, MCP servers and speech-to-text tools for YouTube transcripts.
## License
MIT — see [LICENSE](./LICENSE).