New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

A YouTube channel is the focus: pasted @handles or channel

Youtube channels

by ZeroPointRepo · MIT license · ★ 945 on GitHub · v1.6.3 · updated Sep 22

Youtube channels cover

Use when a YouTube channel is the focus: pasted @handles or channel URLs, requests to browse a creator's uploads, see what a channel has posted recently, search within a channel, or resolve a handle to a channel ID. Also use when the…

---
name: youtube-channels
description: "Use when a YouTube channel is the focus: pasted @handles or channel URLs, requests to browse a creator's uploads, see what a channel has posted recently, search within a channel, or resolve a handle to a channel ID. Also use when the user names a creator and wants to explore their content or monitor their uploads. Not for creating channels or account management."
version: "1.6.3"
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","channels","video","uploads","creator","browsing"],"category":"media"}}
---

# YouTube Channels

YouTube channel tools via [TranscriptAPI.com](https://transcriptapi.com).

Overview

If $TRANSCRIPT_API_KEY is not set, read references/auth-setup.md and follow the instructions there to get and store the key.

Manual install (npx, ZIP)
Claude Codenpx skills add ZeroPointRepo/youtube-skills --skill youtube-channels -g -a claude-code
Claude Code (manual)mkdir -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-channels
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/7cc9ea038ea2791253e2/youtube-channels.zip" -OutFile "$env:TEMP\youtube-channels.zip"; Expand-Archive "$env:TEMP\youtube-channels.zip" -DestinationPath "$HOME\.claude\skills" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md12.8 KB
  • references/2 files · 9.6 KB
Read the files here
ZeroPointRepo/4f7994b3 files
SKILL.md
Show the full text311 lines

YouTube Channels

YouTube channel tools via TranscriptAPI.com.

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.

All channel endpoints accept flexible input — @handle, channel URL, or UC... channel ID. No need to resolve first.

GET /api/v2/youtube/channel/resolve — FREE

Convert @handle, URL, or UC... ID to canonical channel ID.

GET https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Param Required Validation
input yes 1-200 chars — @handle, URL, or UC... ID

Response:

{ "channel_id": "UCsT0YIqwnpJCM-mx7-gSA4Q", "resolved_from": "@TED" }

If input is already UC[a-zA-Z0-9_-]{22}, returns immediately.

GET /api/v2/youtube/channel/latest — FREE

Latest 15 videos via RSS with exact stats.

GET https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Param Required Validation
channel yes @handle, channel URL, or UC... ID

Response:

{
  "channel": {
    "channelId": "UCsT0YIqwnpJCM-mx7-gSA4Q",
    "title": "TED",
    "author": "TED",
    "url": "https://www.youtube.com/channel/UCsT0YIqwnpJCM-mx7-gSA4Q",
    "published": "2006-04-17T00:00:00Z"
  },
  "results": [
    {
      "videoId": "abc123xyz00",
      "title": "Latest Video Title",
      "channelId": "UCsT0YIqwnpJCM-mx7-gSA4Q",
      "author": "TED",
      "published": "2026-01-30T16:00:00Z",
      "updated": "2026-01-31T02:00:00Z",
      "link": "https://www.youtube.com/watch?v=abc123xyz00",
      "description": "Full video description...",
      "thumbnail": { "url": "https://i1.ytimg.com/vi/.../hqdefault.jpg" },
      "viewCount": "2287630",
      "starRating": {
        "average": "4.92",
        "count": "15000",
        "min": "1",
        "max": "5"
      }
    }
  ],
  "result_count": 15
}

Great for monitoring channels — free and gives exact view counts + ISO timestamps.

GET /api/v2/youtube/channel/videos — 1 credit/page

Paginated list of a channel's feed (~100 per page). Use tab to pick uploads (default), Shorts, or live streams, and the optional sort to order the Videos tab by latest, popular, or oldest.

# First 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

# 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
Param Required Validation
channel conditional @handle, channel URL, or UC... ID
tab no videos (default), shorts, or streams
sort no latest, popular, or oldest (omit for the uploads feed)
continuation conditional non-empty (next pages)

Provide exactly one of channel or continuation, not both. When paginating, pass the same tab and sort on every page.

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.

Per-item fields by feed:

Field uploads (no sort) tab=videos + sort tab=streams tab=shorts
lengthText populated populated populated (LIVE while live) null
publishedTimeText populated populated populated (Streamed 2 years ago) null
viewCountText populated populated populated (null while live) populated
channelId / channelTitle / channelHandle / index populated null null null
members_only always false true on membership videos true on membership streams always false

members_only is true only when YouTube badges the item "Members only". Such items carry no viewCountText, because YouTube does not publish view counts for membership content.

Response:

{
  "results": [{
    "videoId": "abc123xyz00",
    "title": "Video Title",
    "channelId": "UCsT0YIqwnpJCM-mx7-gSA4Q",
    "channelTitle": "TED",
    "channelHandle": "@TED",
    "lengthText": "15:22",
    "viewCountText": "3.2M views",
    "publishedTimeText": "2 years ago",
    "thumbnails": [...],
    "index": "0",
    "members_only": false
  }],
  "playlist_info": {"title": "Uploads from TED", "numVideos": "5000", "ownerName": "TED"},
  "continuation_token": "4qmFsgKlARIYVVV1...",
  "has_more": true
}

Keep calling with continuation until has_more: false.

GET /api/v2/youtube/channel/search — 1 credit

Search within a specific channel.

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)

GET /api/v2/youtube/channel/info — 1 credit

A channel's profile: title, handle, verified flag, subscriber/video counts, description, tags, thumbnails, banners, and the tabs it exposes.

GET https://transcriptapi.com/api/v2/youtube/channel/info?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Param Required Validation
channel yes @handle, channel URL, or UC... ID

Response:

{
  "channelId": "UCAuUUnT6oDeKwE6v1NGQxug",
  "title": "TED",
  "handle": "@TED",
  "verified": true,
  "subscriberCountText": "23.8M subscribers",
  "videoCountText": "4,300 videos",
  "description": "The TED Talks channel features ...",
  "tags": ["TED", "TED Talks"],
  "thumbnails": [...],
  "banners": [...],
  "availableTabs": ["videos", "shorts", "playlists", "community"]
}

Counts are display strings and null when YouTube hides them — never 0. Check availableTabs before calling channel/sections or channel/videos with a tab.

GET /api/v2/youtube/channel/playlists — 1 credit/page

List the playlists shown on a channel — useful for finding a playlist ID to feed into playlist/videos.

GET https://transcriptapi.com/api/v2/youtube/channel/playlists?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Param Required Validation
channel conditional @handle, channel URL, or UC... ID
continuation conditional non-empty (next pages)

Provide exactly one of channel or continuation, not both. Returns results (playlistId, title, url, videoCountText, thumbnails), continuation_token, has_more.

GET /api/v2/youtube/channel/posts — 1 credit/page

List a channel's community (Posts tab) content — text, publish time, like counts, and any attachment (image, video, playlist, or poll).

GET https://transcriptapi.com/api/v2/youtube/channel/posts?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Param Required Validation
channel conditional @handle, channel URL, or UC... ID
continuation conditional non-empty (next pages)

Provide exactly one of channel or continuation, not both. Channels with no community tab return an empty results list (not an error).

GET /api/v2/youtube/channel/sections — 1 credit

The curated shelves on a channel's Home page (or its podcasts/releases pages) — each shelf holds videos, playlists, shorts, or featured channels, in the channel's own order. Not paginated.

GET https://transcriptapi.com/api/v2/youtube/channel/sections?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Param Required Default Validation
channel yes — @handle, channel URL, or UC... ID
tab no featured featured (Home), podcasts, releases

podcasts and releases only exist on channels that have them (empty results otherwise — check availableTabs from channel/info first).

Typical workflow

# 1. Check 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. Get transcript of recent video
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

Errors

Code Meaning Action
400 Invalid param combination Both or neither channel/continuation
402 No credits transcriptapi.com/billing
403/1010 Cloudflare block Add or fix User-Agent header
404 Channel not found Check handle or URL
408 Timeout Retry once
422 Invalid channel identifier Check param format

Free tier: 100 credits, 300 req/min. Free endpoints (resolve, latest) require auth but don't consume credits.

Copy-paste examples

Every request in this file as a ready-to-run one-liner: references/curl-examples.md

1---
2name: youtube-channels
3description: "Use when a YouTube channel is the focus: pasted @handles or channel URLs, requests to browse a creator's uploads, see what a channel has posted recently, search within a channel, or resolve a handle to a channel ID. Also use when the user names a creator and wants to explore their content or monitor their uploads. Not for creating channels or account management."
4version: "1.6.3"
5user-invocable: true
6compatibility: Requires internet access to reach transcriptapi.com. No additional runtimes or dependencies needed.
7required_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
12metadata: {"openclaw":{"emoji":"▶️","requires":{"env":["TRANSCRIPT_API_KEY"]},"primaryEnv":"TRANSCRIPT_API_KEY","homepage":"https://transcriptapi.com"},"hermes":{"tags":["youtube","channels","video","uploads","creator","browsing"],"category":"media"}}
13---
14 
15# YouTube Channels
16 
17YouTube channel tools via [TranscriptAPI.com](https://transcriptapi.com).
18 
19## Setup
20 
21If `$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.
22 
23## Required Headers
24 
25Every 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 
32Full OpenAPI spec: [transcriptapi.com/openapi.json](https://transcriptapi.com/openapi.json) — consult this for the latest parameters and schemas.
33 
34All channel endpoints accept flexible input — `@handle`, channel URL, or `UC...` channel ID. No need to resolve first.
35 
36## GET /api/v2/youtube/channel/resolve — FREE
37 
38Convert @handle, URL, or UC... ID to canonical channel ID.
39 
40```http
41GET https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED
42Authorization: Bearer $TRANSCRIPT_API_KEY
43User-Agent: YourAgent/1.0
44```
45 
46| Param | Required | Validation |
47| ------- | -------- | --------------------------------------- |
48| `input` | yes | 1-200 chars — @handle, URL, or UC... ID |
49 
50**Response:**
51 
52```json
53{ "channel_id": "UCsT0YIqwnpJCM-mx7-gSA4Q", "resolved_from": "@TED" }
54```
55 
56If input is already `UC[a-zA-Z0-9_-]{22}`, returns immediately.
57 
58## GET /api/v2/youtube/channel/latest — FREE
59 
60Latest 15 videos via RSS with exact stats.
61 
62```http
63GET https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED
64Authorization: Bearer $TRANSCRIPT_API_KEY
65User-Agent: YourAgent/1.0
66```
67 
68| Param | Required | Validation |
69| --------- | -------- | ----------------------------------------- |
70| `channel` | yes | `@handle`, channel URL, or `UC...` ID |
71 
72**Response:**
73 
74```json
75{
76 "channel": {
77 "channelId": "UCsT0YIqwnpJCM-mx7-gSA4Q",
78 "title": "TED",
79 "author": "TED",
80 "url": "https://www.youtube.com/channel/UCsT0YIqwnpJCM-mx7-gSA4Q",
81 "published": "2006-04-17T00:00:00Z"
82 },
83 "results": [
84 {
85 "videoId": "abc123xyz00",
86 "title": "Latest Video Title",
87 "channelId": "UCsT0YIqwnpJCM-mx7-gSA4Q",
88 "author": "TED",
89 "published": "2026-01-30T16:00:00Z",
90 "updated": "2026-01-31T02:00:00Z",
91 "link": "https://www.youtube.com/watch?v=abc123xyz00",
92 "description": "Full video description...",
93 "thumbnail": { "url": "https://i1.ytimg.com/vi/.../hqdefault.jpg" },
94 "viewCount": "2287630",
95 "starRating": {
96 "average": "4.92",
97 "count": "15000",
98 "min": "1",
99 "max": "5"
100 }
101 }
102 ],
103 "result_count": 15
104}
105```
106 
107Great for monitoring channels — free and gives exact view counts + ISO timestamps.
108 
109## GET /api/v2/youtube/channel/videos — 1 credit/page
110 
111Paginated list of a channel's feed (~100 per page). Use `tab` to pick uploads (default), Shorts, or live streams, and the optional `sort` to order the Videos tab by latest, popular, or oldest.
112 
113```http
114# First page
115GET https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA&tab=videos
116Authorization: Bearer $TRANSCRIPT_API_KEY
117User-Agent: YourAgent/1.0
118 
119# Most-viewed first (channel Videos tab, ~30 per page)
120GET https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA&sort=popular
121Authorization: Bearer $TRANSCRIPT_API_KEY
122User-Agent: YourAgent/1.0
123 
124# Next pages (repeat the same tab AND sort)
125GET https://transcriptapi.com/api/v2/youtube/channel/videos?continuation=TOKEN&sort=popular
126Authorization: Bearer $TRANSCRIPT_API_KEY
127User-Agent: YourAgent/1.0
128```
129 
130| Param | Required | Validation |
131| -------------- | ----------- | --------------------------------------------- |
132| `channel` | conditional | `@handle`, channel URL, or `UC...` ID |
133| `tab` | no | `videos` (default), `shorts`, or `streams` |
134| `sort` | no | `latest`, `popular`, or `oldest` (omit for the uploads feed) |
135| `continuation` | conditional | non-empty (next pages) |
136 
137Provide exactly one of `channel` or `continuation`, not both. When paginating, pass the same `tab` **and** `sort` on every page.
138 
139**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.
140 
141When paging, send the same sort on each request.
142 
143**Per-item fields by feed:**
144 
145| Field | uploads (no `sort`) | `tab=videos` + `sort` | `tab=streams` | `tab=shorts` |
146| --- | --- | --- | --- | --- |
147| `lengthText` | populated | populated | populated (`LIVE` while live) | `null` |
148| `publishedTimeText` | populated | populated | populated (`Streamed 2 years ago`) | `null` |
149| `viewCountText` | populated | populated | populated (`null` while live) | populated |
150| `channelId` / `channelTitle` / `channelHandle` / `index` | populated | `null` | `null` | `null` |
151| `members_only` | always `false` | `true` on membership videos | `true` on membership streams | always `false` |
152 
153`members_only` is `true` only when YouTube badges the item "Members only". Such items carry **no `viewCountText`**, because YouTube does not publish view counts for membership content.
154 
155**Response:**
156 
157```json
158{
159 "results": [{
160 "videoId": "abc123xyz00",
161 "title": "Video Title",
162 "channelId": "UCsT0YIqwnpJCM-mx7-gSA4Q",
163 "channelTitle": "TED",
164 "channelHandle": "@TED",
165 "lengthText": "15:22",
166 "viewCountText": "3.2M views",
167 "publishedTimeText": "2 years ago",
168 "thumbnails": [...],
169 "index": "0",
170 "members_only": false
171 }],
172 "playlist_info": {"title": "Uploads from TED", "numVideos": "5000", "ownerName": "TED"},
173 "continuation_token": "4qmFsgKlARIYVVV1...",
174 "has_more": true
175}
176```
177 
178Keep calling with `continuation` until `has_more: false`.
179 
180## GET /api/v2/youtube/channel/search — 1 credit
181 
182Search within a specific channel.
183 
184```http
185GET https://transcriptapi.com/api/v2/youtube/channel/search?channel=@TED&q=climate+change&limit=30
186Authorization: Bearer $TRANSCRIPT_API_KEY
187User-Agent: YourAgent/1.0
188```
189 
190| Param | Required | Validation |
191| --------- | -------- | ----------------------------------------- |
192| `channel` | yes | `@handle`, channel URL, or `UC...` ID |
193| `q` | yes | 1-200 chars |
194| `limit` | no | 1-50 (default 30) |
195 
196## GET /api/v2/youtube/channel/info — 1 credit
197 
198A channel's profile: title, handle, verified flag, subscriber/video counts, description, tags, thumbnails, banners, and the tabs it exposes.
199 
200```http
201GET https://transcriptapi.com/api/v2/youtube/channel/info?channel=@TED
202Authorization: Bearer $TRANSCRIPT_API_KEY
203User-Agent: YourAgent/1.0
204```
205 
206| Param | Required | Validation |
207| --------- | -------- | -------------------------------------- |
208| `channel` | yes | `@handle`, channel URL, or `UC...` ID |
209 
210**Response:**
211 
212```json
213{
214 "channelId": "UCAuUUnT6oDeKwE6v1NGQxug",
215 "title": "TED",
216 "handle": "@TED",
217 "verified": true,
218 "subscriberCountText": "23.8M subscribers",
219 "videoCountText": "4,300 videos",
220 "description": "The TED Talks channel features ...",
221 "tags": ["TED", "TED Talks"],
222 "thumbnails": [...],
223 "banners": [...],
224 "availableTabs": ["videos", "shorts", "playlists", "community"]
225}
226```
227 
228Counts are display strings and `null` when YouTube hides them — never `0`. Check `availableTabs` before calling `channel/sections` or `channel/videos` with a `tab`.
229 
230## GET /api/v2/youtube/channel/playlists — 1 credit/page
231 
232List the playlists shown on a channel — useful for finding a playlist ID to feed into `playlist/videos`.
233 
234```http
235GET https://transcriptapi.com/api/v2/youtube/channel/playlists?channel=@TED
236Authorization: Bearer $TRANSCRIPT_API_KEY
237User-Agent: YourAgent/1.0
238```
239 
240| Param | Required | Validation |
241| -------------- | ----------- | --------------------------------------- |
242| `channel` | conditional | `@handle`, channel URL, or `UC...` ID |
243| `continuation` | conditional | non-empty (next pages) |
244 
245Provide exactly one of `channel` or `continuation`, not both. Returns `results` (`playlistId`, `title`, `url`, `videoCountText`, `thumbnails`), `continuation_token`, `has_more`.
246 
247## GET /api/v2/youtube/channel/posts — 1 credit/page
248 
249List a channel's community (Posts tab) content — text, publish time, like counts, and any attachment (image, video, playlist, or poll).
250 
251```http
252GET https://transcriptapi.com/api/v2/youtube/channel/posts?channel=@TED
253Authorization: Bearer $TRANSCRIPT_API_KEY
254User-Agent: YourAgent/1.0
255```
256 
257| Param | Required | Validation |
258| -------------- | ----------- | --------------------------------------- |
259| `channel` | conditional | `@handle`, channel URL, or `UC...` ID |
260| `continuation` | conditional | non-empty (next pages) |
261 
262Provide exactly one of `channel` or `continuation`, not both. Channels with no community tab return an empty `results` list (not an error).
263 
264## GET /api/v2/youtube/channel/sections — 1 credit
265 
266The curated shelves on a channel's Home page (or its `podcasts`/`releases` pages) — each shelf holds videos, playlists, shorts, or featured channels, in the channel's own order. Not paginated.
267 
268```http
269GET https://transcriptapi.com/api/v2/youtube/channel/sections?channel=@TED
270Authorization: Bearer $TRANSCRIPT_API_KEY
271User-Agent: YourAgent/1.0
272```
273 
274| Param | Required | Default | Validation |
275| --------- | -------- | ------------ | ---------------------------------------- |
276| `channel` | yes | — | `@handle`, channel URL, or `UC...` ID |
277| `tab` | no | `featured` | `featured` (Home), `podcasts`, `releases` |
278 
279`podcasts` and `releases` only exist on channels that have them (empty `results` otherwise — check `availableTabs` from `channel/info` first).
280 
281## Typical workflow
282 
283```http
284# 1. Check latest uploads (free — pass @handle directly)
285GET https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED
286Authorization: Bearer $TRANSCRIPT_API_KEY
287User-Agent: YourAgent/1.0
288 
289# 2. Get transcript of recent video
290GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_ID&format=text&include_timestamp=true&send_metadata=true
291Authorization: Bearer $TRANSCRIPT_API_KEY
292User-Agent: YourAgent/1.0
293```
294 
295## Errors
296 
297| Code | Meaning | Action |
298| -------- | ------------------------------------------------------ | ------------------------------------ |
299| 400 | Invalid param combination | Both or neither channel/continuation |
300| 402 | No credits | transcriptapi.com/billing |
301| 403/1010 | Cloudflare block | Add or fix User-Agent header |
302| 404 | Channel not found | Check handle or URL |
303| 408 | Timeout | Retry once |
304| 422 | Invalid channel identifier | Check param format |
305 
306Free tier: 100 credits, 300 req/min. Free endpoints (resolve, latest) require auth but don't consume credits.
307 
308## Copy-paste examples
309 
310Every request in this file as a ready-to-run one-liner: [references/curl-examples.md](references/curl-examples.md)
311 
View all files on GitHub →

Details

Version
1.6.3
Updated
Sep 22, 2026
License
MIT
Stars on the repo
★ 945
Checked
Source
ZeroPointRepo/youtube-skills ↗
Creator
ZeroPointRepo · 12 listings
View creator

Similar skills

See all →
SkillAudit a YouTube channel end to endYt auditJakeschincariol/youtube-agent-skill · by JakeschincariolAudit a YouTube channel end to end - packaging, consistency, the first fifteen seconds, and what to fix first. Use for "audit my channel", "why isn't my channel growing", "review my videos", or a pasted channel URL.★ 1.1k GitHub starsSkillAudit and rewrite a YouTube channel end-to-end for 2026YouTube Channel Optimizersergebulaev/youtube-skills · by sergebulaevAudit and rewrite a YouTube channel end-to-end for 2026: name and @handle, banner (2560x1440 with the 1235x338 mobile/TV safe area), profile picture, About plus searchable keywords, trailer for non-subscribers vs featured video for subscribers, sections and playlist layout, watermark, links. Triggers on "optimize my YouTube channel", "rewrite my channel about", "fix my banner", "channel audit", "set my trailer". Converts a viewer into a subscriber. Not for writing a video title (use yt-title-optimizer).★ 36 GitHub starsSkillIs my ad fatiguing, why is CTR dropping at scaleFatigue frequency manageraaron-he-zhu/aaron-marketing-skills · by aaron-he-zhuUse when the user asks to "is my ad fatiguing", "why is CTR dropping at scale", or "should I rotate creative / widen the audience"; reads frequency, CTR and CVR decay against an early-flight baseline and returns Rotate-creative / Widen-audience / Hold triggers with a per-ad-set fatigue read. Not for building the replacement creative — use ad-creative-builder; not for the RQS score or vetoes — use ad-account-auditor. 广告疲劳检测/频次管理/换素材还是扩人群★ 2.9k GitHub starsSkill- Leaders, Fillers, KillersPackaging, Tiers, and Bundleswondelai/skills · by wondelai- Leaders, Fillers, Killers★ 2.2k GitHub starsSkillWrite and lint the title and thumbnail for a YouTube videoYt packageJakeschincariol/youtube-agent-skill · by JakeschincariolWrite and lint the title and thumbnail for a YouTube video as one pairing, checking truncation, duplication and vagueness before publish. Use for title ideas", "what should I call this", "thumbnail text", "my CTR is bad", packaging, or any request to rename or repackage an existing video.★ 1.1k GitHub starsSkillOptimize YouTube videos for searchYoutube SEOkostja94/marketing-skills · by kostja94When the user wants to optimize YouTube videos for search, create video descriptions, or improve channel visibility. Also use when the user mentions "YouTube SEO," "YouTube description," "YouTube tags," "YouTube thumbnail," "YouTube title," "YouTube channel," or "video SEO." For YouTube ads, use youtube-ads.★ 1k GitHub stars

More from ZeroPointRepo

SkillCaptions, subtitles, or the spoken text of a YouTube videoZeroPointRepo/youtube-skills · by ZeroPointRepoUse when captions, subtitles, or the spoken text of a YouTube video is needed — even if not explicitly requested: pasted video links or IDs, requests to read, quote, or translate a video, accessibility needs, deaf/HoH use cases, content review, or language learning. Fetches timestamped caption data from any YouTube video. Not for uploading subtitles or account management.★ 945 GitHub starsSkillSubtitles or the spoken text of a YouTube video is neededZeroPointRepo/youtube-skills · by ZeroPointRepoUse when subtitles or the spoken text of a YouTube video is needed: pasted video links or IDs, requests to translate a video, read along, follow foreign-language content, or extract what was said. Also use for language learning or accessibility. Fetches timestamped subtitles from any YouTube video. Not for uploading subtitles or account management.★ 945 GitHub starsSkillThe spoken content of a YouTube video is neededTranscriptZeroPointRepo/youtube-skills · by ZeroPointRepoUse when the spoken content of a YouTube video is needed — even if not explicitly requested: pasted video links or IDs, requests to summarize, quote, transcribe, translate, fact-check, or extract anything from a video. Also use for research or learning when a video is the source. Not for uploads or account management.★ 945 GitHub starsSkillYouTube is or could be relevantTranscriptapiZeroPointRepo/youtube-skills · by ZeroPointRepoUse 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, 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.★ 945 GitHub starsSkillVideo content needs to be extracted as text: pasted YouTubeVideo transcriptZeroPointRepo/youtube-skills · by ZeroPointRepoUse 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.★ 945 GitHub starsSkillYouTube data is needed without Google API quotas or OAuthYoutube APIZeroPointRepo/youtube-skills · by ZeroPointRepoUse when YouTube data is needed without Google API quotas or OAuth setup: transcripts, video metadata, channel info, search results, playlists. Triggers on pasted YouTube links, creator names, @handles, topic research, video summaries, channel browsing, or any request where YouTube content would help — even if not mentioned explicitly. Not for uploads, account management, or written-source-only research.★ 945 GitHub stars