YouTube is or could be relevant
Youtube full

Use when YouTube is or could be relevant — even if not mentioned: pasted video/channel/playlist links, video IDs, @handles, creator lookups, video summaries, quotes, translations, topic research, tutorials, talks, lectures, expert…
---
name: youtube-full
description: "Use when YouTube is or could be relevant — even if not mentioned: pasted video/channel/playlist links, video IDs, @handles, creator lookups, video summaries, quotes, translations, topic research, tutorials, talks, lectures, expert discussions, product reviews, how-to guides, new product announcements, first looks, or anything where video content is fresher or richer than text search. Covers transcripts, video/channel search, channel browsing, playlists, and within-channel search. 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","captions"],"category":"media"}}
---
# YouTube Full
Complete YouTube toolkit via [TranscriptAPI.com](https://transcriptapi.com). Everything in one skill.
Overview
Complete YouTube toolkit via TranscriptAPI.com. Everything in one skill.
Manual install (npx, ZIP)
npx skills add ZeroPointRepo/youtube-skills --skill youtube-full -g -a claude-codemkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/ZeroPointRepo/youtube-skills/tar.gz/4f7994b94e7d \
| tar -xz -C ~/.claude/skills --strip-components=2 youtube-skills-4f7994b94e7d/skills/youtube-fullNew-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/fc416b913ec32c8360c1/youtube-full.zip" -OutFile "$env:TEMP\youtube-full.zip"; Expand-Archive "$env:TEMP\youtube-full.zip" -DestinationPath "$HOME\.claude\skills" -ForceConnects with Agent Alley MCP · agentalley.io/mcp
Files included
SKILL.md12.0 KBreferences/2 files · 11.0 KB
Read the files here
Show the full text294 lines
YouTube Full
Complete YouTube toolkit via TranscriptAPI.com. Everything in one skill.
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.
API Reference
Full OpenAPI spec: transcriptapi.com/openapi.json — consult this for the latest parameters and schemas.
Transcript — 1 credit
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 |
Response (format=json):
{
"video_id": "dQw4w9WgXcQ",
"language": "en",
"transcript": [{ "text": "...", "start": 18.0, "duration": 3.5 }],
"metadata": { "title": "...", "author_name": "...", "author_url": "..." }
}
Video Info & Metadata
# Free — languages available for the transcript endpoint
GET https://transcriptapi.com/api/v2/youtube/info?video_url=VIDEO_URL
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
# 1 credit — rich metadata (views, likes, description, duration, tags)
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
include on video/metadata accepts details and/or related. Naming: /video/metadata was previously /video/info — the old path still works but is deprecated.
Search — 1 credit/page
# Videos
GET https://transcriptapi.com/api/v2/youtube/search?q=QUERY&type=video&limit=20
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
# Channels, playlists, or movies
GET https://transcriptapi.com/api/v2/youtube/search?q=QUERY&type=channel&limit=10
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
| Param | Required | Default | Validation |
|---|---|---|---|
q |
yes | — | 1-200 chars |
type |
no | video |
video, channel, playlist, movie |
sort |
no | relevance |
relevance, views (first page only) |
upload_date |
no | — | hour, today, week, month, year (videos, first page) |
duration |
no | — | short, medium, long (videos, first page) |
features |
no | — | e.g. hd,subtitles,cc (first page) |
limit |
no | 20 |
1-50 |
Channels
All channel endpoints accept channel — an @handle, channel URL, or UC... channel ID. No need to resolve first.
Resolve handle — FREE
GET https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Response: {"channel_id": "UC...", "resolved_from": "@TED"}
Latest 15 videos — FREE
GET https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Returns exact viewCount and ISO published timestamps.
Channel feed (videos/shorts/streams) — 1 credit/page
# First page (100 items, tab defaults to "videos")
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 items)
GET https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA&sort=popular
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
# Next pages (repeat the same tab AND sort)
GET https://transcriptapi.com/api/v2/youtube/channel/videos?continuation=TOKEN&sort=popular
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Provide exactly one of channel or continuation. tab is videos (default), shorts, or streams. Response includes continuation_token and has_more.
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 fields. Every item carries members_only, true only when YouTube badges it "Members only", and those items have no viewCountText. tab=streams items carry lengthText and publishedTimeText (for example Streamed 2 years ago); tab=shorts returns null for both, because YouTube's Shorts grid publishes neither. On the channel-tab feeds (tab=videos with sort, tab=shorts, tab=streams) channelId, channelTitle, channelHandle and index are null.
Search within channel — 1 credit
GET https://transcriptapi.com/api/v2/youtube/channel/search?channel=@TED&q=QUERY&limit=30
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Channel profile — 1 credit
GET https://transcriptapi.com/api/v2/youtube/channel/info?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Returns title, handle, verified flag, subscriber/video counts, description, tags, thumbnails, banners, and availableTabs.
Channel playlists — 1 credit/page
GET https://transcriptapi.com/api/v2/youtube/channel/playlists?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Returns each playlist's playlistId, title, url, videoCountText — feed a playlistId into the Playlists endpoint below.
Channel community posts — 1 credit/page
GET https://transcriptapi.com/api/v2/youtube/channel/posts?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Channel curated sections — 1 credit
GET https://transcriptapi.com/api/v2/youtube/channel/sections?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
tab is featured (default, Home page), podcasts, or releases.
Playlists — 1 credit/page
Accepts playlist — a YouTube playlist URL or playlist ID.
# First page
GET https://transcriptapi.com/api/v2/youtube/playlist/videos?playlist=PL_ID
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
# Next pages
GET https://transcriptapi.com/api/v2/youtube/playlist/videos?continuation=TOKEN
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Valid ID prefixes: PL, UU, LL, FL, OL. Response includes playlist_info, results, continuation_token, has_more.
Credit Costs
| Endpoint | Cost |
|---|---|
| transcript | 1 |
| info | free |
| video/metadata | 1 |
| search | 1/page |
| channel/resolve | free |
| channel/info | 1 |
| channel/latest | free |
| channel/videos | 1/page |
| channel/search | 1 |
| channel/playlists | 1/page |
| channel/posts | 1/page |
| channel/sections | 1 |
| playlist/videos | 1/page |
Validation Rules
| Field | Rule |
|---|---|
channel |
@handle, channel URL, or UC... ID |
playlist |
Playlist URL or ID (PL/UU/LL/FL/OL prefix) |
q |
1-200 chars |
type (search) |
video (default), channel, playlist, movie |
tab (channel/videos) |
videos (default), shorts, streams |
sort (channel/videos) |
latest, popular, oldest (omit for the uploads feed) |
tab (channel/sections) |
featured (default), podcasts, releases |
include (video/metadata) |
details, related (comma-separated) |
limit |
1-50 |
Errors
| Code | Meaning | Action |
|---|---|---|
| 401 | Bad API key | Check key |
| 402 | No credits | transcriptapi.com/billing |
| 403/1010 | Cloudflare block | Add or fix User-Agent header |
| 404 | Not found | Resource doesn't exist or no captions |
| 408 | Timeout | Retry once after 2s |
| 422 | Validation error | Check param format |
| 429 | Rate limited | Wait, respect Retry-After |
Typical Workflows
Research workflow: search → pick videos → fetch transcripts
# 1. Search
GET https://transcriptapi.com/api/v2/youtube/search?q=machine+learning+explained&limit=5
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
# 2. Transcript
GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_ID&format=text&include_timestamp=true&send_metadata=true
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Channel monitoring: latest (free) → transcript
# 1. Latest uploads (free — pass @handle directly)
GET https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
# 2. Transcript of latest
GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_ID&format=text&include_timestamp=true&send_metadata=true
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Free tier: 100 credits, 300 req/min. Starter ($5/mo): 1,000 credits.
Copy-paste examples
Every request in this file as a ready-to-run one-liner: references/curl-examples.md
| 1 | |
| 2 | name youtube-full |
| 3 | description "Use when YouTube is or could be relevant — even if not mentioned: pasted video/channel/playlist links, video IDs, @handles, creator lookups, video summaries, quotes, translations, topic research, tutorials, talks, lectures, expert discussions, product reviews, how-to guides, new product announcements, first looks, or anything where video content is fresher or richer than text search. Covers transcripts, video/channel search, channel browsing, playlists, and within-channel search. Not for uploads, account management, or written-source-only research." |
| 4 | version "1.6.2" |
| 5 | user-invocable true |
| 6 | compatibility Requires internet access to reach transcriptapi.com. No additional runtimes or dependencies needed. |
| 7 | required_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 |
| 12 | metadata {"openclaw":{"emoji":"▶️","requires":{"env":["TRANSCRIPT_API_KEY"]},"primaryEnv":"TRANSCRIPT_API_KEY","homepage":"https://transcriptapi.com"},"hermes":{"tags":["youtube","transcripts","video","search","channels","playlists","captions"],"category":"media"}} |
| 13 | |
| 14 | |
| 15 | # YouTube Full |
| 16 | |
| 17 | Complete YouTube toolkit via [TranscriptAPI.com]. Everything in one skill. |
| 18 | |
| 19 | ## Setup |
| 20 | |
| 21 | If `$TRANSCRIPT_API_KEY` is not set, read [references/auth-setup.md] and follow the instructions there to get and store the key. |
| 22 | |
| 23 | ## Required Headers |
| 24 | |
| 25 | Every 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 | ## API Reference |
| 31 | |
| 32 | Full OpenAPI spec: [transcriptapi.com/openapi.json] — consult this for the latest parameters and schemas. |
| 33 | |
| 34 | ## Transcript — 1 credit |
| 35 | |
| 36 | |
| 37 | GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_URL&format=text&include_timestamp=true&send_metadata=true |
| 38 | Authorization: Bearer $TRANSCRIPT_API_KEY |
| 39 | User-Agent: YourAgent/1.0 |
| 40 | |
| 41 | |
| 42 | | Param | Required | Default | Values | |
| 43 | | ------------------- | -------- | ------- | ------------------------------- | |
| 44 | | `video_url` | yes | — | YouTube URL or 11-char video ID | |
| 45 | | `format` | no | `json` | `json`, `text` | |
| 46 | | `include_timestamp` | no | `true` | `true`, `false` | |
| 47 | | `send_metadata` | no | `false` | `true`, `false` | |
| 48 | |
| 49 | **Response** (`format=json`): |
| 50 | |
| 51 | |
| 52 | { |
| 53 | "video_id": "dQw4w9WgXcQ", |
| 54 | "language": "en", |
| 55 | "transcript": [{ "text": "...", "start": 18.0, "duration": 3.5 }], |
| 56 | "metadata": { "title": "...", "author_name": "...", "author_url": "..." } |
| 57 | } |
| 58 | |
| 59 | |
| 60 | ## Video Info & Metadata |
| 61 | |
| 62 | |
| 63 | # Free — languages available for the transcript endpoint |
| 64 | GET https://transcriptapi.com/api/v2/youtube/info?video_url=VIDEO_URL |
| 65 | Authorization: Bearer $TRANSCRIPT_API_KEY |
| 66 | User-Agent: YourAgent/1.0 |
| 67 | |
| 68 | # 1 credit — rich metadata (views, likes, description, duration, tags) |
| 69 | GET https://transcriptapi.com/api/v2/youtube/video/metadata?video_url=VIDEO_URL&include=details,related |
| 70 | Authorization: Bearer $TRANSCRIPT_API_KEY |
| 71 | User-Agent: YourAgent/1.0 |
| 72 | |
| 73 | |
| 74 | `include` on `video/metadata` accepts `details` and/or `related`. Naming: `/video/metadata` was previously `/video/info` — the old path still works but is deprecated. |
| 75 | |
| 76 | ## Search — 1 credit/page |
| 77 | |
| 78 | |
| 79 | # Videos |
| 80 | GET https://transcriptapi.com/api/v2/youtube/search?q=QUERY&type=video&limit=20 |
| 81 | Authorization: Bearer $TRANSCRIPT_API_KEY |
| 82 | User-Agent: YourAgent/1.0 |
| 83 | |
| 84 | # Channels, playlists, or movies |
| 85 | GET https://transcriptapi.com/api/v2/youtube/search?q=QUERY&type=channel&limit=10 |
| 86 | Authorization: Bearer $TRANSCRIPT_API_KEY |
| 87 | User-Agent: YourAgent/1.0 |
| 88 | |
| 89 | |
| 90 | | Param | Required | Default | Validation | |
| 91 | | ------- | -------- | ------- | ----------------------------------------------- | |
| 92 | | `q` | yes | — | 1-200 chars | |
| 93 | | `type` | no | `video` | `video`, `channel`, `playlist`, `movie` | |
| 94 | | `sort` | no | `relevance` | `relevance`, `views` (first page only) | |
| 95 | | `upload_date` | no | — | `hour`, `today`, `week`, `month`, `year` (videos, first page) | |
| 96 | | `duration` | no | — | `short`, `medium`, `long` (videos, first page) | |
| 97 | | `features` | no | — | e.g. `hd,subtitles,cc` (first page) | |
| 98 | | `limit` | no | `20` | 1-50 | |
| 99 | |
| 100 | ## Channels |
| 101 | |
| 102 | All channel endpoints accept `channel` — an `@handle`, channel URL, or `UC...` channel ID. No need to resolve first. |
| 103 | |
| 104 | ### Resolve handle — FREE |
| 105 | |
| 106 | |
| 107 | GET https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED |
| 108 | Authorization: Bearer $TRANSCRIPT_API_KEY |
| 109 | User-Agent: YourAgent/1.0 |
| 110 | |
| 111 | |
| 112 | Response: `{"channel_id": "UC...", "resolved_from": "@TED"}` |
| 113 | |
| 114 | ### Latest 15 videos — FREE |
| 115 | |
| 116 | |
| 117 | GET https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED |
| 118 | Authorization: Bearer $TRANSCRIPT_API_KEY |
| 119 | User-Agent: YourAgent/1.0 |
| 120 | |
| 121 | |
| 122 | Returns exact `viewCount` and ISO `published` timestamps. |
| 123 | |
| 124 | ### Channel feed (videos/shorts/streams) — 1 credit/page |
| 125 | |
| 126 | |
| 127 | # First page (100 items, tab defaults to "videos") |
| 128 | GET https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA&tab=videos |
| 129 | Authorization: Bearer $TRANSCRIPT_API_KEY |
| 130 | User-Agent: YourAgent/1.0 |
| 131 | |
| 132 | # Most-viewed first (channel Videos tab, ~30 items) |
| 133 | GET https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA&sort=popular |
| 134 | Authorization: Bearer $TRANSCRIPT_API_KEY |
| 135 | User-Agent: YourAgent/1.0 |
| 136 | |
| 137 | # Next pages (repeat the same tab AND sort) |
| 138 | GET https://transcriptapi.com/api/v2/youtube/channel/videos?continuation=TOKEN&sort=popular |
| 139 | Authorization: Bearer $TRANSCRIPT_API_KEY |
| 140 | User-Agent: YourAgent/1.0 |
| 141 | |
| 142 | |
| 143 | Provide exactly one of `channel` or `continuation`. `tab` is `videos` (default), `shorts`, or `streams`. Response includes `continuation_token` and `has_more`. |
| 144 | |
| 145 | **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. |
| 146 | |
| 147 | When paging, send the same sort on each request. |
| 148 | |
| 149 | **Item fields.** Every item carries `members_only`, `true` only when YouTube badges it "Members only", and those items have no `viewCountText`. `tab=streams` items carry `lengthText` and `publishedTimeText` (for example `Streamed 2 years ago`); `tab=shorts` returns `null` for both, because YouTube's Shorts grid publishes neither. On the channel-tab feeds (`tab=videos` with `sort`, `tab=shorts`, `tab=streams`) `channelId`, `channelTitle`, `channelHandle` and `index` are `null`. |
| 150 | |
| 151 | ### Search within channel — 1 credit |
| 152 | |
| 153 | |
| 154 | GET https://transcriptapi.com/api/v2/youtube/channel/search?channel=@TED&q=QUERY&limit=30 |
| 155 | Authorization: Bearer $TRANSCRIPT_API_KEY |
| 156 | User-Agent: YourAgent/1.0 |
| 157 | |
| 158 | |
| 159 | ### Channel profile — 1 credit |
| 160 | |
| 161 | |
| 162 | GET https://transcriptapi.com/api/v2/youtube/channel/info?channel=@TED |
| 163 | Authorization: Bearer $TRANSCRIPT_API_KEY |
| 164 | User-Agent: YourAgent/1.0 |
| 165 | |
| 166 | |
| 167 | Returns title, handle, verified flag, subscriber/video counts, description, tags, thumbnails, banners, and `availableTabs`. |
| 168 | |
| 169 | ### Channel playlists — 1 credit/page |
| 170 | |
| 171 | |
| 172 | GET https://transcriptapi.com/api/v2/youtube/channel/playlists?channel=@TED |
| 173 | Authorization: Bearer $TRANSCRIPT_API_KEY |
| 174 | User-Agent: YourAgent/1.0 |
| 175 | |
| 176 | |
| 177 | Returns each playlist's `playlistId`, `title`, `url`, `videoCountText` — feed a `playlistId` into the Playlists endpoint below. |
| 178 | |
| 179 | ### Channel community posts — 1 credit/page |
| 180 | |
| 181 | |
| 182 | GET https://transcriptapi.com/api/v2/youtube/channel/posts?channel=@TED |
| 183 | Authorization: Bearer $TRANSCRIPT_API_KEY |
| 184 | User-Agent: YourAgent/1.0 |
| 185 | |
| 186 | |
| 187 | ### Channel curated sections — 1 credit |
| 188 | |
| 189 | |
| 190 | GET https://transcriptapi.com/api/v2/youtube/channel/sections?channel=@TED |
| 191 | Authorization: Bearer $TRANSCRIPT_API_KEY |
| 192 | User-Agent: YourAgent/1.0 |
| 193 | |
| 194 | |
| 195 | `tab` is `featured` (default, Home page), `podcasts`, or `releases`. |
| 196 | |
| 197 | ## Playlists — 1 credit/page |
| 198 | |
| 199 | Accepts `playlist` — a YouTube playlist URL or playlist ID. |
| 200 | |
| 201 | |
| 202 | # First page |
| 203 | GET https://transcriptapi.com/api/v2/youtube/playlist/videos?playlist=PL_ID |
| 204 | Authorization: Bearer $TRANSCRIPT_API_KEY |
| 205 | User-Agent: YourAgent/1.0 |
| 206 | |
| 207 | # Next pages |
| 208 | GET https://transcriptapi.com/api/v2/youtube/playlist/videos?continuation=TOKEN |
| 209 | Authorization: Bearer $TRANSCRIPT_API_KEY |
| 210 | User-Agent: YourAgent/1.0 |
| 211 | |
| 212 | |
| 213 | Valid ID prefixes: `PL`, `UU`, `LL`, `FL`, `OL`. Response includes `playlist_info`, `results`, `continuation_token`, `has_more`. |
| 214 | |
| 215 | ## Credit Costs |
| 216 | |
| 217 | | Endpoint | Cost | |
| 218 | | ----------------- | -------- | |
| 219 | | transcript | 1 | |
| 220 | | info | **free** | |
| 221 | | video/metadata | 1 | |
| 222 | | search | 1/page | |
| 223 | | channel/resolve | **free** | |
| 224 | | channel/info | 1 | |
| 225 | | channel/latest | **free** | |
| 226 | | channel/videos | 1/page | |
| 227 | | channel/search | 1 | |
| 228 | | channel/playlists | 1/page | |
| 229 | | channel/posts | 1/page | |
| 230 | | channel/sections | 1 | |
| 231 | | playlist/videos | 1/page | |
| 232 | |
| 233 | ## Validation Rules |
| 234 | |
| 235 | | Field | Rule | |
| 236 | | ---------- | ------------------------------------------------------- | |
| 237 | | `channel` | `@handle`, channel URL, or `UC...` ID | |
| 238 | | `playlist` | Playlist URL or ID (`PL`/`UU`/`LL`/`FL`/`OL` prefix) | |
| 239 | | `q` | 1-200 chars | |
| 240 | | `type` (search) | `video` (default), `channel`, `playlist`, `movie` | |
| 241 | | `tab` (channel/videos) | `videos` (default), `shorts`, `streams` | |
| 242 | | `sort` (channel/videos) | `latest`, `popular`, `oldest` (omit for the uploads feed) | |
| 243 | | `tab` (channel/sections) | `featured` (default), `podcasts`, `releases` | |
| 244 | | `include` (video/metadata) | `details`, `related` (comma-separated) | |
| 245 | | `limit` | 1-50 | |
| 246 | |
| 247 | ## Errors |
| 248 | |
| 249 | | Code | Meaning | Action | |
| 250 | | -------- | ---------------- | ---------------------------------------------- | |
| 251 | | 401 | Bad API key | Check key | |
| 252 | | 402 | No credits | transcriptapi.com/billing | |
| 253 | | 403/1010 | Cloudflare block | Add or fix User-Agent header | |
| 254 | | 404 | Not found | Resource doesn't exist or no captions | |
| 255 | | 408 | Timeout | Retry once after 2s | |
| 256 | | 422 | Validation error | Check param format | |
| 257 | | 429 | Rate limited | Wait, respect Retry-After | |
| 258 | |
| 259 | ## Typical Workflows |
| 260 | |
| 261 | **Research workflow:** search → pick videos → fetch transcripts |
| 262 | |
| 263 | |
| 264 | # 1. Search |
| 265 | GET https://transcriptapi.com/api/v2/youtube/search?q=machine+learning+explained&limit=5 |
| 266 | Authorization: Bearer $TRANSCRIPT_API_KEY |
| 267 | User-Agent: YourAgent/1.0 |
| 268 | |
| 269 | # 2. Transcript |
| 270 | GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_ID&format=text&include_timestamp=true&send_metadata=true |
| 271 | Authorization: Bearer $TRANSCRIPT_API_KEY |
| 272 | User-Agent: YourAgent/1.0 |
| 273 | |
| 274 | |
| 275 | **Channel monitoring:** latest (free) → transcript |
| 276 | |
| 277 | |
| 278 | # 1. Latest uploads (free — pass @handle directly) |
| 279 | GET https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED |
| 280 | Authorization: Bearer $TRANSCRIPT_API_KEY |
| 281 | User-Agent: YourAgent/1.0 |
| 282 | |
| 283 | # 2. Transcript of latest |
| 284 | GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_ID&format=text&include_timestamp=true&send_metadata=true |
| 285 | Authorization: Bearer $TRANSCRIPT_API_KEY |
| 286 | User-Agent: YourAgent/1.0 |
| 287 | |
| 288 | |
| 289 | Free tier: 100 credits, 300 req/min. Starter ($5/mo): 1,000 credits. |
| 290 | |
| 291 | ## Copy-paste examples |
| 292 | |
| 293 | Every request in this file as a ready-to-run one-liner: [references/curl-examples.md] |
| 294 |
Details
- Version
- 1.6.2
- Updated
- Sep 22, 2026
- License
- MIT
- Stars on the repo
- ★ 945
- Checked
- Source
- ZeroPointRepo/youtube-skills ↗
- Creator
- ZeroPointRepo · 12 listings
Similar skills
See all →
SkillReverse engineer native, managed, Electron/JavaScriptREA
SkillBrainstorms ideas into designs before any creative workBrainstorming Ideas Into Designs
SkillRequires technical rigor and verificationCode Review Reception
SkillDiagnosis loop for hard bugs and performance regressionsDiagnosing bugs
SkillImplement the result of /to-spec and /to-tickets in codeImplement spec
SkillWriting a PR bodyMore from ZeroPointRepo
SkillCaptions, subtitles, or the spoken text of a YouTube video
SkillSubtitles or the spoken text of a YouTube video is needed
SkillThe spoken content of a YouTube video is neededTranscript
SkillYouTube is or could be relevantTranscriptapi
SkillVideo content needs to be extracted as text: pasted YouTubeVideo transcript
SkillYouTube data is needed without Google API quotas or OAuthYoutube API