
Youtube Transcript
Pull captions or transcripts from a YouTube URL with yt-dlp for research notes, content repurposing, or agent context.
Overview
youtube-transcript is an agent skill for the Idea phase that downloads YouTube captions and transcripts using yt-dlp with ordered subtitle fallbacks.
Install
npx skills add https://github.com/michalparkola/tapestry-skills-for-claude-code --skill youtube-transcriptWhat is this skill?
- Seven-step priority flow: install check, list subtitles, manual subs, auto subs, optional Whisper, confirm path, optiona
- Triggers on YouTube URL or requests to download, transcribe, or get captions/subtitles
- Uses yt-dlp with --write-sub before --write-auto-sub fallback
- Whisper transcription only as last resort with explicit user confirmation
- allowed-tools: Bash, Read, Write for shell download and file output
- 7-step documented priority order from install check through optional VTT cleanup
Adoption & trust: 551 installs on skills.sh; 430 GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
You need the spoken content from a YouTube video as text but copying captions manually is slow and error-prone.
Who is it for?
Indie researchers and content builders who cite specific YouTube URLs and want repeatable local transcript files for agents to summarize.
Skip if: Batch copyright-sensitive republishing, videos without any subtitle track when you refuse Whisper installs, or non-YouTube platforms.
When should I use this skill?
User provides a YouTube URL or asks to download, get, fetch, transcribe, or obtain captions/subtitles from YouTube.
What do I get? / Deliverables
A transcript file on disk—manual or auto-generated subtitles when available—with optional cleanup from VTT to plain text.
- Downloaded subtitle or transcript file with confirmed save path
- Optional plain-text version after VTT cleanup
Recommended Skills
Journey fit
Transcript download is a research-side ingestion step when validating ideas or gathering voice-of-customer material from video. Fits research because the output is raw text from external media, not product code or launch assets.
How it compares
A shell-driven yt-dlp recipe skill, not a managed SaaS transcription API.
Common Questions / FAQ
Who is youtube-transcript for?
Solo builders using Claude Code or similar agents who work from YouTube tutorials, reviews, or talks and need local text files for further analysis.
When should I use youtube-transcript?
During Idea research when a URL is provided or when you ask to download, get, fetch, or transcribe YouTube captions or subtitles.
Is youtube-transcript safe to install?
Review the Security Audits panel on this Prism page; the skill runs Bash and may install yt-dlp via package managers—confirm network and shell permissions fit your policy.
SKILL.md
READMESKILL.md - Youtube Transcript
# YouTube Transcript Downloader This skill helps download transcripts (subtitles/captions) from YouTube videos using yt-dlp. ## When to Use This Skill Activate this skill when the user: - Provides a YouTube URL and wants the transcript - Asks to "download transcript from YouTube" - Wants to "get captions" or "get subtitles" from a video - Asks to "transcribe a YouTube video" - Needs text content from a YouTube video ## How It Works ### Priority Order: 1. **Check if yt-dlp is installed** - install if needed 2. **List available subtitles** - see what's actually available 3. **Try manual subtitles first** (`--write-sub`) - highest quality 4. **Fallback to auto-generated** (`--write-auto-sub`) - usually available 5. **Last resort: Whisper transcription** - if no subtitles exist (requires user confirmation) 6. **Confirm the download** and show the user where the file is saved 7. **Optionally clean up** the VTT format if the user wants plain text ## Installation Check **IMPORTANT**: Always check if yt-dlp is installed first: ```bash which yt-dlp || command -v yt-dlp ``` ### If Not Installed Attempt automatic installation based on the system: **macOS (Homebrew)**: ```bash brew install yt-dlp ``` **Linux (apt/Debian/Ubuntu)**: ```bash sudo apt update && sudo apt install -y yt-dlp ``` **Alternative (pip - works on all systems)**: ```bash pip3 install yt-dlp # or python3 -m pip install yt-dlp ``` **If installation fails**: Inform the user they need to install yt-dlp manually and provide them with installation instructions from https://github.com/yt-dlp/yt-dlp#installation ## Check Available Subtitles **ALWAYS do this first** before attempting to download: ```bash yt-dlp --list-subs "YOUTUBE_URL" ``` This shows what subtitle types are available without downloading anything. Look for: - Manual subtitles (better quality) - Auto-generated subtitles (usually available) - Available languages ## Download Strategy ### Option 1: Manual Subtitles (Preferred) Try this first - highest quality, human-created: ```bash yt-dlp --write-sub --skip-download --output "OUTPUT_NAME" "YOUTUBE_URL" ``` ### Option 2: Auto-Generated Subtitles (Fallback) If manual subtitles aren't available: ```bash yt-dlp --write-auto-sub --skip-download --output "OUTPUT_NAME" "YOUTUBE_URL" ``` Both commands create a `.vtt` file (WebVTT subtitle format). ## Option 3: Whisper Transcription (Last Resort) **ONLY use this if both manual and auto-generated subtitles are unavailable.** ### Step 1: Show File Size and Ask for Confirmation ```bash # Get audio file size estimate yt-dlp --print "%(filesize,filesize_approx)s" -f "bestaudio" "YOUTUBE_URL" # Or get duration to estimate yt-dlp --print "%(duration)s %(title)s" "YOUTUBE_URL" ``` **IMPORTANT**: Display the file size to the user and ask: "No subtitles are available. I can download the audio (approximately X MB) and transcribe it using Whisper. Would you like to proceed?" **Wait for user confirmation before continuing.** ### Step 2: Check for Whisper Installation ```bash command -v whisper ``` If not installed, ask user: "Whisper is not installed. Install it with `pip install openai-whisper` (requires ~1-3GB for models)? This is a one-time installation." **Wait for user confirmation before installing.** Install if approved: ```bash pip3 install openai-whisper ``` ### Step 3: Download Audio Only ```bash yt-dlp -x --audio-format mp3 --output "audio_%(id)s.%(ext)s" "YOUTUBE_URL" ``` ### Step 4: Transcribe with Whisper ```bash # Auto-detect language (recommended) whisper audio_VIDEO_ID.mp3 --model base --output_format vtt # Or specify language if known whisper audio_VIDEO_ID.mp3 --model base --language en --o