captions
Use when captions, subtitles, or the spoken text of a YouTube video is needed — even if not explicitly requested: pasted video…
Use when structured YouTube data is needed: pasted video/channel/playlist links, transcripts for analysis, video metadata, channel upload history, search results, or playlist contents — without Google API quotas or OAuth. Triggers on YouTube URLs, creator names, topic research,
Claude Code
$ npx -y skills add ZeroPointRepo/youtube-skills --skill youtube-data --agent claude-code
Codex
$ npx skills add ZeroPointRepo/youtube-skills --skill youtube-data -a codex -y
Cursor
$ npx skills add ZeroPointRepo/youtube-skills --skill youtube-data -a cursor -y
Gemini CLI
$ npx skills add ZeroPointRepo/youtube-skills --skill youtube-data -a gemini-cli -y
GitHub Copilot
$ npx skills add ZeroPointRepo/youtube-skills --skill youtube-data -a github-copilot -y
OpenCode
$ npx skills add ZeroPointRepo/youtube-skills --skill youtube-data -a opencode -y
Windsurf
$ npx skills add ZeroPointRepo/youtube-skills --skill youtube-data -a windsurf -y
name: youtube-data
description: "Use when structured YouTube data is needed: pasted video/channel/playlist links, transcripts for analysis, video metadata, channel upload history, search results, or playlist contents — without Google API quotas or OAuth. Triggers on YouTube URLs, creator names, topic research, or any request needing YouTube content, even if not mentioned explicitly. Not for uploads, account management, or written-source-only research."
version: "1.6.2"
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","search","channels","playlists","data","metadata"],"category":"media"}}YouTube data access via [TranscriptAPI.com](https://transcriptapi.com) — lightweight alternative to Google's YouTube Data API.
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.
Every request needs two headers:
Full OpenAPI spec: [transcriptapi.com/openapi.json](https://transcriptapi.com/openapi.json) — consult this for the latest parameters and schemas.
GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_URL&format=json&include_timestamp=true&send_metadata=true Authorization: Bearer $TRANSCRIPT_API_KEY User-Agent: YourAgent/1.0
**Response:**
{
"video_id": "dQw4w9WgXcQ",
"language": "en",
"transcript": [
{ "text": "We're no strangers to love", "start": 18.0, "duration": 3.5 }
],
"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"
}
}Check languages before spending a transcript credit (free), or pull view/like counts, publish date, description, duration, and tags (1 credit):
GET https://transcriptapi.com/api/v2/youtube/info?video_url=VIDEO_URL Authorization: Bearer $TRANSCRIPT_API_KEY User-Agent: YourAgent/1.0
GET https://transcriptapi.com/api/v2/youtube/video/metadata?video_url=VIDEO_URL&include=details,related Authorization: Bearer $TRANSCRIPT_API_KEY User-Agent: YourAgent/1.0
`video/metadata` returns `title`, `viewCountText`, `likeCountText`, `publishDate`, `description`, `descriptionLinks`, `channel`, `thumbnails`, plus `details` (duration, category, tags, caption tracks) and `related` videos when requested via `include`.
> **Naming:** `/video/metadata` was previously `/video/info`. The old path still works but is deprecated.
GET https://transcriptapi.com/api/v2/youtube/search?q=QUERY&type=video&limit=20 Authorization: Bearer $TRANSCRIPT_API_KEY User-Agent: YourAgent/1.0
`type` also accepts `playlist` and `movie`. First page only, you can add `sort` (`relevance`/`views`), `upload_date` (`hour`/`today`/`week`/`month`/`year`), `duration` (`short`/`medium`/`long`), and `features` (e.g. `hd,subtitles,cc`).
**Video result fields:** `videoId`, `title`, `channelId`, `channelTitle`, `channelHandle`, `channelVerified`, `lengthText`, `viewCountText`, `publishedTimeText`, `hasCaptions`, `thumbnails`
**Channel result fields** (`type=channel`): `channelId`, `title`, `handle`, `url`, `description`, `subscriberCount`, `verified`, `rssUrl`, `thumbnails`
Channel endpoints accept `channel` — an `@handle`, channel URL, or `UC...` ID. No need to resolve first.
**Resolve handle to ID (free):**
GET https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED Authorization: Bearer $TRANSCRIPT_API_KEY User-Agent: YourAgent/1.0
Returns: `{"channel_id": "UCsT0YIqwnpJCM-mx7-gSA4Q", "resolved_from": "@TED"}`
**Latest 15 videos with exact stats (free):**
GET https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED Authorization: Bearer $TRANSCRIPT_API_KEY User-Agent: YourAgent/1.0
Returns: `channel` info, `results` array with `videoId`, `title`, `published` (ISO), `viewCount` (exact number), `description`, `thumbnail`
**All channel videos (paginated, 1 credit/page):**
GET https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA&tab=videos Authorization: Bearer $TRANSCRIPT_API_KEY User-Agent: YourAgent/1.0 # Most-viewed first (channel Videos tab, ~30 per page) GET https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA&sort=popular Authorization: Bearer $TRANSCRIPT_API_KEY User-Agent: YourAgent/1.0
Returns ~100 videos per page + `continuation_token` for pagination. `tab` also accepts `shorts` or `streams`, and you repeat the same `tab` when paginating.
**Sorting.** Add sort=latest, popular, or oldest to channel/videos to get a channel's videos in the order you want, for example its most-popular uploads first. A sorted page returns about 30 videos (an unsorted page returns about 100), and every page costs the same 1 credit.
When paging, send the same sort on each request.
**Item fi
Get YouTube transcripts, search videos, browse channels, and extract playlists — from any AI agent. YouTube Skills gives your AI agent instant access to YouTube transcripts, video search, channel data, and playlist extraction.
Use when captions, subtitles, or the spoken text of a YouTube video is needed — even if not explicitly requested: pasted video…
Use when subtitles or the spoken text of a YouTube video is needed: pasted video links or IDs, requests to translate a video,…
Use when the spoken content of a YouTube video is needed — even if not explicitly requested: pasted video links or IDs, requests…
Use when YouTube is or could be relevant — even if not mentioned: pasted video/channel/playlist links, video IDs, @handles,…
Use when video content needs to be extracted as text: pasted YouTube links or IDs, requests to transcribe, summarize, quote,…
Use when YouTube data is needed without Google API quotas or OAuth setup: transcripts, video metadata, channel info, search…
Use this skill to extract structured Markdown/JSON from PDFs and document images—tables with cell-level precision, formulas as…
Estimates intracellular metabolic fluxes from steady-state carbon-13 isotope-tracing measurements using validated atom maps,…