youtube-api
GitHub提供YouTube视频转录、元数据、频道信息及搜索等数据的API访问能力,无需Google API配额或OAuth。适用于通过链接、名称或话题获取视频内容摘要及频道浏览。
Trigger Scenarios
Install
npx skills add ZeroPointRepo/youtube-skills --skill youtube-api -g -y
SKILL.md
Frontmatter
{
"name": "youtube-api",
"version": "1.5.0",
"metadata": {
"hermes": {
"tags": [
"youtube",
"transcripts",
"video",
"search",
"channels",
"playlists",
"api",
"no-quota"
],
"category": "media"
},
"openclaw": {
"emoji": "▶️",
"homepage": "https:\/\/transcriptapi.com",
"requires": {
"env": [
"TRANSCRIPT_API_KEY"
]
},
"primaryEnv": "TRANSCRIPT_API_KEY"
}
},
"description": "Use 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.",
"compatibility": "Requires internet access to reach transcriptapi.com. No additional runtimes or dependencies needed.",
"user-invocable": true,
"required_environment_variables": [
{
"help": "Free account at https:\/\/transcriptapi.com — 100 credits, no card required. Or let the agent create one for you.",
"name": "TRANSCRIPT_API_KEY",
"prompt": "Your TranscriptAPI key (starts with sk_)",
"required_for": "all API requests"
}
]
}
YouTube API
YouTube data access via TranscriptAPI.com — no Google API quota needed.
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.
Endpoint Reference
All endpoints: https://transcriptapi.com/api/v2/youtube/...
Channel endpoints accept channel — an @handle, channel URL, or UC... ID. Playlist endpoints accept playlist — a playlist URL or ID.
| Endpoint | Method | Cost |
|---|---|---|
/transcript?video_url=ID |
GET | 1 |
/search?q=QUERY&type=video |
GET | 1 |
/channel/resolve?input=@handle |
GET | free |
/channel/latest?channel=@handle |
GET | free |
/channel/videos?channel=@handle |
GET | 1/page |
/channel/search?channel=@handle&q=Q |
GET | 1 |
/playlist/videos?playlist=PL_ID |
GET | 1/page |
Quick Examples
Search videos:
curl -s "https://transcriptapi.com/api/v2/youtube/search\
?q=python+tutorial&type=video&limit=10" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY" \
-H "User-Agent: YourAgent/1.0"
Get transcript:
curl -s "https://transcriptapi.com/api/v2/youtube/transcript\
?video_url=dQw4w9WgXcQ&format=text&include_timestamp=true&send_metadata=true" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY" \
-H "User-Agent: YourAgent/1.0"
Resolve channel handle (free):
curl -s "https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY" \
-H "User-Agent: YourAgent/1.0"
Latest videos (free):
curl -s "https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY" \
-H "User-Agent: YourAgent/1.0"
Browse channel uploads (paginated):
curl -s "https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY" \
-H "User-Agent: YourAgent/1.0"
# Use continuation token from response for next pages
Browse playlist (paginated):
curl -s "https://transcriptapi.com/api/v2/youtube/playlist/videos?playlist=PL_PLAYLIST_ID" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY" \
-H "User-Agent: YourAgent/1.0"
Parameter Validation
| Field | Rule |
|---|---|
channel |
@handle, channel URL, or UC... ID |
playlist |
Playlist URL or ID (PL/UU/LL/FL/OL prefix) |
q (search) |
1-200 chars |
limit |
1-50 |
continuation |
non-empty string |
Why Not Google's API?
| Google YouTube Data API | TranscriptAPI | |
|---|---|---|
| Quota | 10,000 units/day (100 searches) | Credit-based, no daily cap |
| Setup | OAuth + API key + project | Single API key |
| Transcripts | Not available | Core feature |
| Pricing | $0.0015/unit overage | $5/1000 credits |
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 |
| 408 | Timeout/retryable | Retry once after 2s |
| 422 | Validation error | Check param format |
| 429 | Rate limited | Wait, respect Retry-After |
Free tier: 100 credits, 300 req/min. Starter ($5/mo): 1,000 credits.
Version History
- d4b7a18 Current 2026-07-30 20:22


