YouTube Transcript Extraction Skill
Overview
Extract YouTube transcripts and download videos using yt-dlp via Desktop Commander MCP. Executes commands directly on your local machine with automatic error handling and cross-platform support.
How It Works
- •Claude uses
start_processto run yt-dlp commands on your local system - •Automatically checks tool installation and offers to install if missing
- •Handles YouTube bot detection and common errors automatically
- •Downloads to ~/Downloads by default (customizable)
- •Monitors progress and provides real-time status updates
Prerequisites Check & Installation
Claude Will Automatically:
- •Check if yt-dlp and ffmpeg are installed
- •Detect your OS and available package managers
- •Offer installation options if tools are missing
- •Verify installation and update if needed
Installation Commands by Platform:
# macOS (Homebrew) brew install yt-dlp ffmpeg # Windows (Chocolatey - run as Admin) choco install yt-dlp ffmpeg -y # Linux (apt) sudo apt update && sudo apt install yt-dlp ffmpeg -y # Linux (snap) sudo snap install yt-dlp ffmpeg
Core Usage
Request Examples:
- •"유튜브 자막 추출해줘: [URL]" → Korean subtitles only
- •"영상도 다운로드해줘: [URL]" → Video + Korean subtitles (720p)
- •"영어 자막도 추가해줘" → Multiple languages
- •"/path/to/folder에 저장해줘" → Custom output directory
What Claude Executes:
Subtitles Only (Default):
yt-dlp --extractor-args "youtube:player_client=android" \ --write-auto-sub --sub-lang ko \ --convert-subs srt --skip-download \ "VIDEO_URL"
Video + Subtitles:
yt-dlp --extractor-args "youtube:player_client=android" \ --write-auto-sub --sub-lang ko,en \ --convert-subs srt \ -f "best[height<=720]" \ "VIDEO_URL"
Error Handling (Automatic)
Bot Detection Error
Error: "Sign in to confirm you're not a bot" Solution: Use Android client (already included in commands above)
HTTP 403 Forbidden
Error: Video download fails with 403 Claude's Response:
- •Retry with 720p quality (automatic)
- •Try iOS client if 720p fails
- •Offer browser cookies as last resort (requires approval)
HTTP 429 Rate Limited
Error: "Too Many Requests" for subtitles Claude's Response:
- •Add
--sleep-subtitles 2delay - •Download languages separately with 5-second intervals
Missing Subtitles
Error: "No subtitles available" Claude's Response:
- •Check with
--list-subsfirst - •Try auto-generated if manual unavailable
- •Report if video has no captions
Tool Not Found
Error: "command not found: yt-dlp" Claude's Response:
- •Detect OS and package manager
- •Offer installation with commands
- •Install with user approval
- •Verify and retry download
Key Parameters Explained
| Parameter | Purpose | When Used |
|---|---|---|
--extractor-args "youtube:player_client=android" | Bypass bot detection | Always (most reliable) |
--write-auto-sub | Download auto-generated subtitles | When manual subs unavailable |
--sub-lang ko,en | Specify languages | Default: ko (Korean) |
--convert-subs srt | Convert to SRT format | Always (best compatibility) |
--skip-download | Subtitles only, no video | Subtitle-only requests |
-f "best[height<=720]" | 720p quality | Video downloads (avoids 403) |
--cookies-from-browser safari | Use browser session | Last resort for persistent errors |
Claude's Execution Flow
Step 1: Verify Tools
which yt-dlp && yt-dlp --version which ffmpeg && ffmpeg -version
Step 2: Navigate to Output Directory
cd ~/Downloads # or user-specified path
Step 3: Execute Download
# Start process with 180-second timeout for videos
start_process("yt-dlp [options] VIDEO_URL", timeout_ms=180000)
Step 4: Monitor Progress
# Check output every 10 seconds read_process_output(pid, timeout_ms=10000) # Watch for: completion, errors, progress percentage
Step 5: Handle Errors
- •Detect error type from output
- •Apply appropriate solution automatically
- •Report status to user
Step 6: Verify & Report
ls -la *.srt *.mp4 # List downloaded files
- •Provide absolute file paths
- •Confirm successful downloads
- •Mention any issues encountered
Best Practices for Claude
- •Always start with Android client - highest success rate
- •Use 720p for videos - best balance of quality and reliability
- •Check subtitles first - run
--list-subsif uncertain - •Handle errors gracefully - try alternatives before asking user
- •Ask before cookies - browser cookies need user approval
- •Provide absolute paths - always report full file locations
- •Clean up .part files - remove incomplete downloads on failure
- •Update when needed - suggest upgrade if repeated failures
Timeout Guidelines
# Short: Check/list operations (5-10s)
start_process("yt-dlp --list-subs URL", timeout_ms=10000)
# Medium: Subtitle downloads (30-60s)
start_process("yt-dlp --skip-download ...", timeout_ms=60000)
# Long: Video downloads (2-3 minutes)
start_process("yt-dlp -f best[height<=720] ...", timeout_ms=180000)
Common Request Patterns
| User Request | Claude Action | Output |
|---|---|---|
| "자막 추출해줘: [URL]" | Subtitles only, Korean | .srt file |
| "영상도 다운로드" | 720p video + subtitles | .mp4 + .srt |
| "영어 자막도 추가" | Add --sub-lang ko,en | Multiple .srt files |
| "1080p로 다운로드" | Try, fallback to 720p if 403 | Best available quality |
| "/path에 저장" | Navigate to path first | Files in specified directory |
Advanced Options
Playlist Download
yt-dlp --extractor-args "youtube:player_client=android" \ --write-auto-sub --sub-lang ko \ "PLAYLIST_URL"
Custom Filename Template
yt-dlp -o "%(uploader)s_%(title)s_%(upload_date)s.%(ext)s" VIDEO_URL
Resume Interrupted Download
yt-dlp --continue "VIDEO_URL"
Multiple URLs (Batch Processing)
Claude will process each URL sequentially with appropriate delays between downloads.
Troubleshooting Quick Reference
| Symptom | Cause | Quick Fix |
|---|---|---|
| Bot detection error | Default client blocked | Use player_client=android |
| 403 on video | High quality blocked | Lower to 720p or below |
| 429 on subtitles | Rate limited | Add delays between languages |
| Cookie decrypt failed | Browser security | Close browser, grant permissions |
| No subtitles found | Video has no captions | Check --list-subs, try auto-generated |
| Command not found | Tools not installed | Install via package manager |
Platform-Specific Notes
macOS: Safari cookies work best, may need Full Disk Access for Terminal Windows: Use PowerShell/CMD, Chrome cookies recommended Linux: Firefox or Chrome cookies, may need sudo for installation
Support
- •GitHub: https://github.com/yt-dlp/yt-dlp
- •Update regularly - YouTube API changes frequently