Agent Skills
› ZeroPointRepo/youtube-skills
› subtitles
subtitles
GitHub通过 TranscriptAPI 获取 YouTube 视频的字幕或文本,支持翻译、语言学习和无障碍访问。
Trigger Scenarios
需要 YouTube 视频字幕
请求翻译视频内容
跟随外语内容学习
提取视频 spoken text
Install
npx skills add ZeroPointRepo/youtube-skills --skill subtitles -g -y
SKILL.md
Frontmatter
{
"name": "subtitles",
"version": "1.5.0",
"metadata": {
"hermes": {
"tags": [
"youtube",
"subtitles",
"captions",
"transcripts",
"video",
"translation",
"language-learning"
],
"category": "media"
},
"openclaw": {
"emoji": "▶️",
"homepage": "https:\/\/transcriptapi.com",
"requires": {
"env": [
"TRANSCRIPT_API_KEY"
]
},
"primaryEnv": "TRANSCRIPT_API_KEY"
}
},
"description": "Use 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.",
"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"
}
]
}
Subtitles
Fetch YouTube video subtitles 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.
GET /api/v2/youtube/transcript
curl -s "https://transcriptapi.com/api/v2/youtube/transcript\
?video_url=VIDEO_URL&format=text&include_timestamp=false&send_metadata=true" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY" \
-H "User-Agent: YourAgent/1.0"
| Param | Values | Use case |
|---|---|---|
video_url |
YouTube URL or video ID | Required |
format |
json, text |
json for sync'd subs with timing |
include_timestamp |
true, false |
false for clean text for reading/translation |
send_metadata |
true, false |
Include title, channel, description |
For language learning — clean text without timestamps:
curl -s "https://transcriptapi.com/api/v2/youtube/transcript\
?video_url=VIDEO_ID&format=text&include_timestamp=false" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY" \
-H "User-Agent: YourAgent/1.0"
For translation — structured segments:
curl -s "https://transcriptapi.com/api/v2/youtube/transcript\
?video_url=VIDEO_ID&format=json&include_timestamp=true" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY" \
-H "User-Agent: YourAgent/1.0"
Response (format=json):
{
"video_id": "dQw4w9WgXcQ",
"language": "en",
"transcript": [
{ "text": "We're no strangers to love", "start": 18.0, "duration": 3.5 }
]
}
Response (format=text, include_timestamp=false):
{
"video_id": "dQw4w9WgXcQ",
"language": "en",
"transcript": "We're no strangers to love\nYou know the rules and so do I..."
}
Tips
- Many videos have auto-generated subtitles in multiple languages.
- Use
format=jsonto get timing for each line (great for sync'd reading). - Use
include_timestamp=falsefor clean text suitable for translation apps.
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 | No subtitles | No subtitles available |
| 408 | Timeout | Retry once after 2s |
1 credit per request. Free tier: 100 credits, 300 req/min.
Version History
- d4b7a18 Current 2026-07-30 20:22


