captions
Use when captions, subtitles, or the spoken text of a YouTube video is needed — even if not explicitly requested: pasted video…
Use when the user wants to find YouTube content on any topic: searching for videos or channels, finding creators who cover a subject, discovering tutorials, talks, or expert discussions, or looking up a channel by name or handle. Also use proactively when the user wants to
Claude Code
$ npx -y skills add ZeroPointRepo/youtube-skills --skill youtube-search --agent claude-code
Codex
$ npx skills add ZeroPointRepo/youtube-skills --skill youtube-search -a codex -y
Cursor
$ npx skills add ZeroPointRepo/youtube-skills --skill youtube-search -a cursor -y
Gemini CLI
$ npx skills add ZeroPointRepo/youtube-skills --skill youtube-search -a gemini-cli -y
GitHub Copilot
$ npx skills add ZeroPointRepo/youtube-skills --skill youtube-search -a github-copilot -y
OpenCode
$ npx skills add ZeroPointRepo/youtube-skills --skill youtube-search -a opencode -y
Windsurf
$ npx skills add ZeroPointRepo/youtube-skills --skill youtube-search -a windsurf -y
name: youtube-search
description: "Use when the user wants to find YouTube content on any topic: searching for videos or channels, finding creators who cover a subject, discovering tutorials, talks, or expert discussions, or looking up a channel by name or handle. Also use proactively when the user wants to research a topic and YouTube is a good source. Not for account management or written-source-only research."
version: "1.6.0"
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","search","video","channels","discovery","research"],"category":"media"}}Search YouTube and fetch transcripts via [TranscriptAPI.com](https://transcriptapi.com).
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.
Search YouTube globally for videos, channels, playlists, or movies.
GET https://transcriptapi.com/api/v2/youtube/search?q=QUERY&type=video&limit=20 Authorization: Bearer $TRANSCRIPT_API_KEY User-Agent: YourAgent/1.0
| Param | Required | Default | Validation | | -------------- | ----------- | ----------- | ------------------------------------------------------------------ | | `q` | conditional | — | 1-200 chars (trimmed), first page | | `type` | no | `video` | `video`, `channel`, `playlist`, `movie` (first page) | | `sort` | no | `relevance` | `relevance` or `views` (first page) | | `upload_date` | no | — | `hour`, `today`, `week`, `month`, `year` — videos, first page | | `duration` | no | — | `short` (<4m), `medium` (4-20m), `long` (>20m) — videos, first page | | `features` | no | — | comma-separated: `hd`, `subtitles`, `cc`, `live`, `4k`, `hdr`, etc. | | `limit` | no | `20` | 1-50 | | `continuation` | conditional | — | token from a previous response (subsequent pages) |
Provide exactly one of `q` (first page) or `continuation` (next pages) — the token already encodes the filters. `sort`/`upload_date`/`duration`/`features` apply to the first page only.
**Find recent, most-viewed videos:**
GET https://transcriptapi.com/api/v2/youtube/search?q=innovation&sort=views&duration=long&upload_date=month Authorization: Bearer $TRANSCRIPT_API_KEY User-Agent: YourAgent/1.0
**Search for playlists on a topic:**
GET https://transcriptapi.com/api/v2/youtube/search?q=react+tutorial&type=playlist Authorization: Bearer $TRANSCRIPT_API_KEY User-Agent: YourAgent/1.0
**Video search response:**
{
"results": [
{
"type": "video",
"videoId": "dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up",
"channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
"channelTitle": "Rick Astley",
"channelHandle": "@RickAstley",
"channelVerified": true,
"lengthText": "3:33",
"viewCountText": "1.5B views",
"publishedTimeText": "14 years ago",
"hasCaptions": true,
"thumbnails": [{ "url": "...", "width": 120, "height": 90 }]
}
],
"result_count": 20
}**Channel search response** (`type=channel`):
{
"results": [{
"type": "channel",
"channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
"title": "Rick Astley",
"handle": "@RickAstley",
"url": "https://www.youtube.com/@RickAstley",
"description": "Official channel...",
"subscriberCount": "4.2M subscribers",
"verified": true,
"rssUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=UC...",
"thumbnails": [...]
}],
"result_count": 5
}Search videos within a specific channel. Accepts `channel` — an `@handle`, channel URL, or `UC...` ID.
GET https://transcriptapi.com/api/v2/youtube/channel/search?channel=@TED&q=climate+change&limit=30 Authorization: Bearer $TRANSCRIPT_API_KEY User-Agent: YourAgent/1.0
| Param | Required | Validation | | --------- | -------- | ----------------------------------------- | | `channel` | yes | `@handle`, channel URL, or `UC...` ID | | `q` | yes | 1-200 chars | | `limit` | no | 1-50 (default 30) |
Returns up to ~30 results (YouTube limit). Same video response shape as global search.
Convert @handle to channel ID:
GET https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED Authorization: Bearer $TRANSCRIPT_API_KEY User-
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,…