youtube-full — YouTube Transcripts, Search, and Channel Data skill

Use when the user needs YouTube transcripts, video search, channel browsing, playlist extraction, or content monitoring.

by alirezarezvani·MIT license·★ 26,349 Stars on the repo·GitHub ↗

Use now

Files of youtube-full — YouTube Transcripts, Search, and Channel Data

alirezarezvani/main1 file shown
SKILL.md
Show the full text172 lines

youtube-full — YouTube Transcripts, Search, and Channel Data

Covers transcript extraction, video search, channel browsing, in-channel search, playlist extraction, and new-upload monitoring via TranscriptAPI.

Source: Ported from ZeroPointRepo/youtube-skills (MIT). Original skill authored by ZeroPointRepo contributors. Adapted for the claude-skills format.

BYOK / free-tier note: TranscriptAPI is a commercial service (BYOK — you bring your own key; 100 free credits included, no card required). For local/self-hosted extraction without an API key, use youtube-transcript-api (Python) or yt-dlp as OSS fallbacks. See Anti-Patterns for guidance.

API Setup

Every request to transcriptapi.com requires two headers:

  • Authorization: Bearer $TRANSCRIPT_API_KEY
  • User-Agent: ClaudeCode/1.0

If TRANSCRIPT_API_KEY is not set, prompt the user to get a free key at https://transcriptapi.com (100 free credits, no card required) and store it as TRANSCRIPT_API_KEY.

Operations

Get transcript (1 credit)
GET https://transcriptapi.com/api/v2/youtube/transcript
  ?video_url={URL_OR_ID}&format=text&include_timestamp=true&send_metadata=true

Use this for any "get transcript", "summarize video", or "extract quotes" request.

Search YouTube (1 credit)
GET https://transcriptapi.com/api/v2/youtube/search
  ?q={QUERY}&type=video&limit=20

Use this when the user wants to find videos on a topic. Follow with transcript calls on selected results.

Channel — latest uploads (FREE)
GET https://transcriptapi.com/api/v2/youtube/channel/latest
  ?channel={@HANDLE_OR_ID}

Returns the 15 most recent uploads with view counts and publish timestamps. Use before fetching transcripts to check whether uploads are new.

Channel — all videos (1 credit/page)
GET https://transcriptapi.com/api/v2/youtube/channel/videos
  ?channel={@HANDLE_OR_ID}

Paginate with ?continuation=TOKEN on subsequent pages.

In-channel search (1 credit)
GET https://transcriptapi.com/api/v2/youtube/channel/search
  ?channel={@HANDLE_OR_ID}&q={QUERY}&limit=30

Prefer this over broad YouTube search when the user already knows the channel.

Playlist extraction (1 credit/page)
GET https://transcriptapi.com/api/v2/youtube/playlist/videos
  ?playlist={PLAYLIST_URL_OR_ID}

Paginate with ?continuation=TOKEN. Response includes playlist_info, results, has_more.

Resolve handle (FREE)
GET https://transcriptapi.com/api/v2/youtube/channel/resolve
  ?input={@HANDLE_OR_URL}

Returns {"channel_id": "UC...", "resolved_from": "@handle"}.

Credit Costs Summary

Endpoint Cost
transcript 1
search 1
channel/resolve free
channel/latest free
channel/videos 1/page
channel/search 1
playlist/videos 1/page

Failed or rate-limited calls return a structured error and cost zero credits.

Common Workflows

Research workflow
  1. Search (/search?q=...) — pick the most relevant results
  2. Fetch transcripts (/transcript?video_url=...) for selected videos
  3. Summarize or extract quotes from transcript text
Channel monitoring
  1. channel/latest (free) — check for new uploads
  2. If new videos found, fetch transcripts
  3. Extract signal (announcements, topics)
Playlist to corpus
  1. playlist/videos — get all video IDs in the playlist
  2. Batch-fetch transcripts, pausing if near credit limit
  3. Assemble transcripts into a searchable document set

Decision Rules

  • When the user provides a YouTube URL, video ID, or @handle, use the matching endpoint directly — do not search first
  • When the user says "monitor" or "check for new uploads", use channel/latest (free) first
  • Use channel/search when the user knows which channel and wants to find a topic within it
  • Use search (type=channel) to find a channel when the user doesn't know the handle
  • Do not batch-transcribe an entire channel unless the user explicitly asks for that

Error Handling

Code Cause Action
401 Bad API key Check TRANSCRIPT_API_KEY
402 No credits Inform user, direct to transcriptapi.com/billing
403/1010 Missing User-Agent Add User-Agent header
404 No captions found Inform user — zero credits charged
408 Timeout Retry once after 2 seconds
429 Rate limited Respect Retry-After header

Limitations

  • Transcripts require captions (manual or auto-generated). Some videos have no captions — this returns a 404 and costs zero credits.
  • Private and age-restricted videos are not accessible.
  • Live stream transcripts are unstable until the stream ends.
  • Rate limit: 300 requests/minute on the free tier.
  • This skill does not download audio or video files. For local file download, use yt-dlp directly.

Anti-Patterns

  • Don't use TranscriptAPI for bulk downloads of entire channels without user confirmation — credit costs add up fast; use channel/latest (free) to check for new content first
  • Don't hardcode the API key — always use TRANSCRIPT_API_KEY environment variable
  • Don't claim "no vendor dependency" — TranscriptAPI is a commercial service. If the user needs a zero-cost or self-hosted path: youtube-transcript-api (Python, no auth needed for public videos) or yt-dlp --write-subs are OSS alternatives with different trade-offs (no search, no channel API, but free and local)
  • Don't batch-transcribe without checking credits — check remaining credits before large operations

OSS Fallback Paths

If the user cannot or will not use TranscriptAPI:

Need OSS Alternative Trade-offs
Single transcript youtube-transcript-api (Python) No search; no channel API; captions only
Download + subtitles yt-dlp --write-subs Requires local install; no REST; slower
Channel monitoring Parse YouTube RSS feed (/feeds/videos.xml?channel_id=...) Free, no auth; limited metadata

Cross-References

  • marketing-skill/skills/video-content-strategist — for video strategy, scripting, and content planning
  • marketing-skill/skills/social-media-manager — for publishing and scheduling derived from transcripts
  • marketing-skill/skills/content-production — for turning transcripts into blog posts, summaries, or articles
1---
2name: "youtube-full"
3description: "Use when the user needs YouTube transcripts, video search, channel browsing, playlist extraction, or content monitoring. Trigger phrases: 'get the transcript for', 'search YouTube for', 'what are the latest videos on', 'list this playlist', 'monitor this channel', or any request involving a YouTube URL, video ID, or @handle. Do NOT use for downloading video or audio files, YouTube engagement data (likes, comments), or private/age-restricted videos."
4license: "MIT"
5---
6 
7# youtube-full — YouTube Transcripts, Search, and Channel Data
8 
9Covers transcript extraction, video search, channel browsing, in-channel search, playlist extraction, and new-upload monitoring via TranscriptAPI.
10 
11> **Source:** Ported from [ZeroPointRepo/youtube-skills](https://github.com/ZeroPointRepo/youtube-skills) (MIT). Original skill authored by ZeroPointRepo contributors. Adapted for the claude-skills format.
12 
13> **BYOK / free-tier note:** TranscriptAPI is a commercial service (BYOK — you bring your own key; 100 free credits included, no card required). For local/self-hosted extraction without an API key, use `youtube-transcript-api` (Python) or `yt-dlp` as OSS fallbacks. See [Anti-Patterns](#anti-patterns) for guidance.
14 
15## API Setup
16 
17Every request to `transcriptapi.com` requires two headers:
18 
19- `Authorization: Bearer $TRANSCRIPT_API_KEY`
20- `User-Agent: ClaudeCode/1.0`
21 
22If `TRANSCRIPT_API_KEY` is not set, prompt the user to get a free key at `https://transcriptapi.com` (100 free credits, no card required) and store it as `TRANSCRIPT_API_KEY`.
23 
24## Operations
25 
26### Get transcript (1 credit)
27 
28```
29GET https://transcriptapi.com/api/v2/youtube/transcript
30 ?video_url={URL_OR_ID}&format=text&include_timestamp=true&send_metadata=true
31```
32 
33Use this for any "get transcript", "summarize video", or "extract quotes" request.
34 
35### Search YouTube (1 credit)
36 
37```
38GET https://transcriptapi.com/api/v2/youtube/search
39 ?q={QUERY}&type=video&limit=20
40```
41 
42Use this when the user wants to find videos on a topic. Follow with transcript calls on selected results.
43 
44### Channel — latest uploads (FREE)
45 
46```
47GET https://transcriptapi.com/api/v2/youtube/channel/latest
48 ?channel={@HANDLE_OR_ID}
49```
50 
51Returns the 15 most recent uploads with view counts and publish timestamps. Use before fetching transcripts to check whether uploads are new.
52 
53### Channel — all videos (1 credit/page)
54 
55```
56GET https://transcriptapi.com/api/v2/youtube/channel/videos
57 ?channel={@HANDLE_OR_ID}
58```
59 
60Paginate with `?continuation=TOKEN` on subsequent pages.
61 
62### In-channel search (1 credit)
63 
64```
65GET https://transcriptapi.com/api/v2/youtube/channel/search
66 ?channel={@HANDLE_OR_ID}&q={QUERY}&limit=30
67```
68 
69Prefer this over broad YouTube search when the user already knows the channel.
70 
71### Playlist extraction (1 credit/page)
72 
73```
74GET https://transcriptapi.com/api/v2/youtube/playlist/videos
75 ?playlist={PLAYLIST_URL_OR_ID}
76```
77 
78Paginate with `?continuation=TOKEN`. Response includes `playlist_info`, `results`, `has_more`.
79 
80### Resolve handle (FREE)
81 
82```
83GET https://transcriptapi.com/api/v2/youtube/channel/resolve
84 ?input={@HANDLE_OR_URL}
85```
86 
87Returns `{"channel_id": "UC...", "resolved_from": "@handle"}`.
88 
89## Credit Costs Summary
90 
91| Endpoint | Cost |
92|--------------------|----------|
93| transcript | 1 |
94| search | 1 |
95| channel/resolve | free |
96| channel/latest | free |
97| channel/videos | 1/page |
98| channel/search | 1 |
99| playlist/videos | 1/page |
100 
101Failed or rate-limited calls return a structured error and cost zero credits.
102 
103## Common Workflows
104 
105### Research workflow
106 
1071. Search (`/search?q=...`) — pick the most relevant results
1082. Fetch transcripts (`/transcript?video_url=...`) for selected videos
1093. Summarize or extract quotes from transcript text
110 
111### Channel monitoring
112 
1131. `channel/latest` (free) — check for new uploads
1142. If new videos found, fetch transcripts
1153. Extract signal (announcements, topics)
116 
117### Playlist to corpus
118 
1191. `playlist/videos` — get all video IDs in the playlist
1202. Batch-fetch transcripts, pausing if near credit limit
1213. Assemble transcripts into a searchable document set
122 
123## Decision Rules
124 
125- When the user provides a YouTube URL, video ID, or @handle, use the matching endpoint directly — do not search first
126- When the user says "monitor" or "check for new uploads", use `channel/latest` (free) first
127- Use `channel/search` when the user knows which channel and wants to find a topic within it
128- Use `search` (type=channel) to find a channel when the user doesn't know the handle
129- Do not batch-transcribe an entire channel unless the user explicitly asks for that
130 
131## Error Handling
132 
133| Code | Cause | Action |
134|----------|---------------------|-------------------------------------------|
135| 401 | Bad API key | Check TRANSCRIPT_API_KEY |
136| 402 | No credits | Inform user, direct to transcriptapi.com/billing |
137| 403/1010 | Missing User-Agent | Add User-Agent header |
138| 404 | No captions found | Inform user — zero credits charged |
139| 408 | Timeout | Retry once after 2 seconds |
140| 429 | Rate limited | Respect Retry-After header |
141 
142## Limitations
143 
144- Transcripts require captions (manual or auto-generated). Some videos have no captions — this returns a 404 and costs zero credits.
145- Private and age-restricted videos are not accessible.
146- Live stream transcripts are unstable until the stream ends.
147- Rate limit: 300 requests/minute on the free tier.
148- This skill does not download audio or video files. For local file download, use `yt-dlp` directly.
149 
150## Anti-Patterns
151 
152- **Don't use TranscriptAPI for bulk downloads of entire channels** without user confirmation — credit costs add up fast; use `channel/latest` (free) to check for new content first
153- **Don't hardcode the API key** — always use `TRANSCRIPT_API_KEY` environment variable
154- **Don't claim "no vendor dependency"** — TranscriptAPI is a commercial service. If the user needs a zero-cost or self-hosted path: `youtube-transcript-api` (Python, no auth needed for public videos) or `yt-dlp --write-subs` are OSS alternatives with different trade-offs (no search, no channel API, but free and local)
155- **Don't batch-transcribe without checking credits** — check remaining credits before large operations
156 
157## OSS Fallback Paths
158 
159If the user cannot or will not use TranscriptAPI:
160 
161| Need | OSS Alternative | Trade-offs |
162|------|----------------|------------|
163| Single transcript | `youtube-transcript-api` (Python) | No search; no channel API; captions only |
164| Download + subtitles | `yt-dlp --write-subs` | Requires local install; no REST; slower |
165| Channel monitoring | Parse YouTube RSS feed (`/feeds/videos.xml?channel_id=...`) | Free, no auth; limited metadata |
166 
167## Cross-References
168 
169- `marketing-skill/skills/video-content-strategist` — for video strategy, scripting, and content planning
170- `marketing-skill/skills/social-media-manager` — for publishing and scheduling derived from transcripts
171- `marketing-skill/skills/content-production` — for turning transcripts into blog posts, summaries, or articles
172 

Discussion

Alternatives