Complete YouTube toolkit via TranscriptAPI.com. Everything in one skill.
You MUST have a $TRANSCRIPT_API_KEY environment variable set.
If you don't have tell the user to create a free account at transcriptapi.com: transcriptapi.com/signup → Dashboard → API Keys.
If you have the key, See File Writes below for details. Existing file is backed up before modification.
The verify and save-key commands save the API key to ~/.openclaw/openclaw.json (sets skills.entries.transcriptapi.apiKey and enabled: true). Existing file is backed up to ~/.openclaw/openclaw.json.bak before modification.
To use the API key in terminal/CLI outside the agent, add to your shell profile manually:
export TRANSCRIPT_API_KEY=<your-key>
Full OpenAPI spec: transcriptapi.com/openapi.json — consult this for the latest parameters and schemas.
bash
curl -s "https://transcriptapi.com/api/v2/youtube/transcript\
?video_url=VIDEO_URL&format=text&include_timestamp=true&send_metadata=true" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
ParamRequiredDefaultValuesvideo_urlyes—YouTube URL or 11-char video IDformatnojson``json, text``include_timestampnotrue``true, false``send_metadatanofalse``true, false
Response ( format=json):
json
{
"video_id": "dQw4w9WgXcQ",
"language": "en",
"transcript": [{ "text": "...", "start": 18.0, "duration": 3.5 }],
"metadata": { "title": "...", "author_name": "...", "author_url": "..." }
}
bash
# Videos
curl -s "https://transcriptapi.com/api/v2/youtube/search?q=QUERY&type=video&limit=20" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
# Channels
curl -s "https://transcriptapi.com/api/v2/youtube/search?q=QUERY&type=channel&limit=10" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
ParamRequiredDefaultValidationqyes—1-200 charstypenovideo``video, channel``limitno201-50
All channel endpoints accept channel — an @handle, channel URL, or UC... channel ID. No need to resolve first.
bash
curl -s "https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Response: {"channel_id": "UC...", "resolved_from": "@TED"}
bash
curl -s "https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Returns exact viewCount and ISO published timestamps.
bash
# First page (100 videos)
curl -s "https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
# Next pages
curl -s "https://transcriptapi.com/api/v2/youtube/channel/videos?continuation=TOKEN" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Provide exactly one of channel or continuation. Response includes continuation_token and has_more.
bash
curl -s "https://transcriptapi.com/api/v2/youtube/channel/search\
?channel=@TED&q=QUERY&limit=30" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Accepts playlist — a YouTube playlist URL or playlist ID.
bash
# First page
curl -s "https://transcriptapi.com/api/v2/youtube/playlist/videos?playlist=PL_ID" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
# Next pages
curl -s "https://transcriptapi.com/api/v2/youtube/playlist/videos?continuation=TOKEN" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Valid ID prefixes: PL, UU, LL, FL, OL. Response includes playlist_info, results, continuation_token, has_more.
If you will use NOT FREE endpoints, make sure to tell the user and let them to choose if they want to proceed or not.
EndpointCosttranscript1search1channel/resolvefreechannel/latestfreechannel/videos1/pagechannel/search1playlist/videos1/page
FieldRulechannel``@handle, channel URL, or UC... IDplaylistPlaylist URL or ID ( PL/ UU/ LL/ FL/ OL prefix)q1-200 charslimit1-50
CodeMeaningAction401Bad API keyCheck key402No creditstranscriptapi.com/billing404Not foundResource doesn't exist or no captions408TimeoutRetry once after 2s422Validation errorCheck param format429Rate limitedWait, respect Retry-After
Research workflow: search → pick videos → fetch transcripts
bash
# 1. Search
curl -s "https://transcriptapi.com/api/v2/youtube/search\
?q=machine+learning+explained&limit=5" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
# 2. Transcript
curl -s "https://transcriptapi.com/api/v2/youtube/transcript\
?video_url=VIDEO_ID&format=text&include_timestamp=true&send_metadata=true" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Channel monitoring: latest (free) → transcript
bash
# 1. Latest uploads (free — pass @handle directly)
curl -s "https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
# 2. Transcript of latest
curl -s "https://transcriptapi.com/api/v2/youtube/transcript\
?video_url=VIDEO_ID&format=text&include_timestamp=true&send_metadata=true" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Free tier: 100 credits, 300 req/min. Starter ($5/mo): 1,000 credits.