Install
openclaw skills install yt-summarySummarize any YouTube video by dropping the link in chat. Supports custom prompts — paste the URL followed by your instructions (e.g. 'focus on the technical...
openclaw skills install yt-summarySummarize YouTube videos by extracting transcripts via TranscriptAPI.com and generating structured summaries.
pass (Unix password manager) for secure key storageexport TRANSCRIPT_API_KEY="your-key-here"pass password store (most secure): pass insert transcriptapi/api-keypip install -r skills/youtube-summary/requirements.txt
Trigger on messages containing YouTube URLs matching any of:
youtube.com/watch?v=IDyoutu.be/IDyoutube.com/shorts/IDm.youtube.com/watch?v=IDyoutube.com/live/IDIf using pass:
_yt_key_file=$(mktemp) && pass transcriptapi/api-key > "$_yt_key_file" && python3 skills/youtube-summary/scripts/extract.py "YOUTUBE_URL_OR_ID" --api-key-file "$_yt_key_file"; rm -f "$_yt_key_file"
If using env var:
python3 skills/youtube-summary/scripts/extract.py "YOUTUBE_URL_OR_ID"
(Reads TRANSCRIPT_API_KEY from the environment automatically.)
Security note: The pass + temp file approach avoids exposing the key in ps output or shell history. The env var approach is simpler but the key is visible in the process environment.
Parse stdout:
PROGRESS: lines → relay to user as status updates (optional)ERROR: lines → relay error to user, stopRESULT: line → parse the JSON after RESULT: — contains: header, transcript, language, tokens, title, channel, duration_strUse the extracted transcript to generate a summary. The summary language must match the transcript language (from the language field).
If tokens < 50000 — single-pass: summarize the full transcript in one request.
If tokens ≥ 50000 — tell the user it's a long video and summarize the first ~40K tokens with a note that it was truncated.
Default summary format (use when no custom prompt given):
{header}
**TL;DR:** 2-3 sentence summary.
**Key Points:**
• Point one
• Point two
• (3-7 total)
**Notable Quotes:** (only if genuinely quotable lines exist)
> "Quote here"
Custom prompt — if the user included text alongside the URL, append it as additional instructions for the summary.
ERROR: API_ERROR: Invalid API key → "TranscriptAPI key is invalid. Check pass transcriptapi/api-key."ERROR: No transcript available → "This video doesn't have captions available."ERROR: Video not found → "Couldn't find that video — double-check the URL."ERROR: → relay the message as-is. Do NOT fall back to web_search.YouTube aggressively blocks datacenter/IPv6 ranges from accessing transcripts. Most cloud VPS (Hetzner, DigitalOcean, AWS, etc.) are blocked — direct transcript fetching fails for most videos when running from a server.
TranscriptAPI.com proxies requests through residential IPs, bypassing these blocks reliably. The $5/mo plan covers 1,000 transcript fetches.
💡 Tip: Add instructions after the URL to customize the summary (e.g. "focus on the technical details").