transcriptapiFull TranscriptAPI toolkit ā fetch YouTube transcripts, search videos and channels, browse channel uploads, get latest videos, and explore playlists. Use when the user wants to work with YouTube content programmatically, get transcripts for summarization or analysis, find videos, or monitor channels. Triggers on YouTube URLs, "transcript", "transcriptapi", "video summary", "what did they say", "find videos about", "search youtube".
Install via ClawdBot CLI:
clawdbot install therohitdas/transcriptapiFull YouTube data toolkit via TranscriptAPI.com. Transcripts, search, channels, playlists ā one API key.
If $TRANSCRIPT_API_KEY is not set, help the user create an account (100 free credits, no card):
Step 1 ā Register: Ask user for their email.
node ./scripts/tapi-auth.js register --email USER_EMAIL
ā OTP sent to email. Ask user: _"Check your email for a 6-digit verification code."_
Step 2 ā Verify: Once user provides the OTP:
node ./scripts/tapi-auth.js verify --token TOKEN_FROM_STEP_1 --otp CODE
API key saved to ~/.openclaw/openclaw.json. See File Writes below for details. Existing file is backed up before modification.
Manual option: transcriptapi.com/signup ā Dashboard ā API Keys.
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=
Full OpenAPI spec: transcriptapi.com/openapi.json ā consult this for the latest parameters and schemas.
All requests: -H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Channel endpoints accept channel ā an @handle, channel URL, or UC... ID. No need to resolve first. Playlist endpoints accept playlist ā a playlist URL or ID.
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"
| Param | Required | Default | Validation |
| ------------------- | -------- | ------- | ------------------------------- |
| video_url | yes | ā | YouTube URL or 11-char video ID |
| format | no | json | json or text |
| include_timestamp | no | true | true or false |
| send_metadata | no | false | true or false |
Accepts: https://youtube.com/watch?v=ID, https://youtu.be/ID, youtube.com/shorts/ID, or bare ID.
Response (format=json):
{
"video_id": "dQw4w9WgXcQ",
"language": "en",
"transcript": [
{ "text": "We're no strangers...", "start": 18.0, "duration": 3.5 }
],
"metadata": { "title": "...", "author_name": "...", "author_url": "..." }
}
curl -s "https://transcriptapi.com/api/v2/youtube/search?q=QUERY&type=video&limit=20" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
| Param | Required | Default | Validation |
| ------- | -------- | ------- | --------------------- |
| q | yes | ā | 1-200 chars (trimmed) |
| type | no | video | video or channel |
| limit | no | 20 | 1-50 |
Response (type=video):
{
"results": [
{
"type": "video",
"videoId": "dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up",
"channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
"channelTitle": "Rick Astley",
"channelHandle": "@RickAstley",
"channelVerified": true,
"lengthText": "3:33",
"viewCountText": "1.5B views",
"publishedTimeText": "14 years ago",
"hasCaptions": true,
"thumbnails": [{ "url": "...", "width": 120, "height": 90 }]
}
],
"result_count": 20
}
Response (type=channel):
{
"results": [
{
"type": "channel",
"channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
"title": "Rick Astley",
"handle": "@RickAstley",
"subscriberCount": "4.2M subscribers",
"verified": true,
"rssUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=UC..."
}
],
"result_count": 5
}
curl -s "https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
| 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 a valid UC[a-zA-Z0-9_-]{22} ID, returns immediately without lookup.
# 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"
| Param | Required | Validation |
| -------------- | ----------- | --------------------------------------------- |
| channel | conditional | @handle, channel URL, or UC... ID |
| continuation | conditional | non-empty string (next pages) |
Provide exactly one of channel or continuation.
Response:
{
"results": [{
"videoId": "abc123xyz00",
"title": "Latest Video",
"channelId": "UCsT0YIqwnpJCM-mx7-gSA4Q",
"channelTitle": "TED",
"channelHandle": "@TED",
"lengthText": "15:22",
"viewCountText": "3.2M views",
"thumbnails": [...],
"index": "0"
}],
"playlist_info": {"title": "Uploads from TED", "numVideos": "5000"},
"continuation_token": "4qmFsgKlARIYVVV1...",
"has_more": true
}
curl -s "https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
| Param | Required | Validation |
| --------- | -------- | ----------------------------------------- |
| channel | yes | @handle, channel URL, or UC... ID |
Returns last 15 videos via RSS with exact view counts and ISO timestamps.
Response:
{
"channel": {
"channelId": "...",
"title": "TED",
"author": "TED",
"url": "..."
},
"results": [
{
"videoId": "abc123xyz00",
"title": "Latest Video",
"published": "2026-01-30T16:00:00Z",
"viewCount": "2287630",
"description": "Full description...",
"thumbnail": { "url": "...", "width": "480", "height": "360" }
}
],
"result_count": 15
}
curl -s "https://transcriptapi.com/api/v2/youtube/channel/search\
?channel=@TED&q=climate+change&limit=30" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
| Param | Required | Validation |
| --------- | -------- | ----------------------------------------- |
| channel | yes | @handle, channel URL, or UC... ID |
| q | yes | 1-200 chars |
| limit | no | 1-50 (default 30) |
# First page
curl -s "https://transcriptapi.com/api/v2/youtube/playlist/videos?playlist=PL_PLAYLIST_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"
| Param | Required | Validation |
| -------------- | ----------- | ---------------------------------------------------- |
| playlist | conditional | Playlist URL or ID (PL/UU/LL/FL/OL prefix) |
| continuation | conditional | non-empty string |
| Endpoint | Cost |
| --------------- | -------- |
| transcript | 1 |
| search | 1 |
| channel/resolve | free |
| channel/search | 1 |
| channel/videos | 1/page |
| channel/latest | free |
| playlist/videos | 1/page |
| Code | Meaning | Action |
| ---- | ----------------- | --------------------------------------------------- |
| 401 | Bad API key | Check key, re-run setup |
| 402 | No credits | Top up at transcriptapi.com/billing |
| 404 | Not found | Video/channel/playlist doesn't exist or no captions |
| 408 | Timeout/retryable | Retry once after 2s |
| 422 | Validation error | Check param format |
| 429 | Rate limited | Wait, respect Retry-After |
channel/latest (free) to check for new uploads before fetching transcripts ā pass @handle directly.Generated Mar 1, 2026
Researchers can use this skill to automatically fetch and summarize YouTube video transcripts for literature reviews or data analysis, saving hours of manual transcription. It supports extracting key points from educational or documentary content, with metadata like timestamps for citation.
Marketing teams can search YouTube for trending videos and channels related to specific keywords, analyzing transcripts to understand audience interests and optimize content strategies. This helps in competitor analysis and identifying viral topics for campaign planning.
Media companies can generate text transcripts from YouTube videos to create subtitles or closed captions, improving accessibility for hearing-impaired viewers. The skill allows batch processing of channel uploads to ensure compliance with accessibility standards.
Educators and e-learning platforms can search for and fetch transcripts from educational YouTube channels to create study materials or course supplements. It enables easy browsing of channel videos to compile playlists for structured learning modules.
Businesses can monitor YouTube channels and videos mentioning their brand or industry terms by searching transcripts for specific phrases. This aids in tracking public sentiment, identifying influencers, and responding to customer feedback in real-time.
Offer free credits for initial use to attract users, then charge based on credit consumption for advanced features like high-volume transcript fetching or premium search filters. This model encourages adoption while monetizing heavy usage from enterprises or developers.
License the skill as an integrated tool for existing platforms like learning management systems or content management systems, providing YouTube transcript capabilities under their brand. Revenue comes from licensing fees and customization services for seamless integration.
Bundle transcript data with analytics dashboards to offer insights on video trends, sentiment analysis, or content performance reports. Target businesses needing actionable data, charging based on report complexity and data volume processed.
š¬ Integration Tip
Ensure the TRANSCRIPT_API_KEY is set in the environment or config file before invoking endpoints; use the free channel resolve endpoint to validate inputs before consuming credits.
Work with Obsidian vaults (plain Markdown notes) and automate via obsidian-cli.
Create, search, and manage Bear notes via grizzly CLI.
Track water and sleep with JSON file storage
Notion API for creating and managing pages, databases, and blocks.
Smart ClawdBot documentation access with local search index, cached snippets, and on-demand fetch. Token-efficient and freshness-aware.
Work with Obsidian vaults as a knowledge base. Features: fuzzy/phonetic search across all notes, auto-folder detection for new notes, create/read/edit notes with frontmatter, manage tags and wikilinks. Use when: querying knowledge base, saving notes/documents, editing existing notes by user instructions.