From casper
Downloads YouTube videos/playlists (single/bulk), extracts transcripts/subtitles, retrieves metadata/audio using yt-dlp. Free local tool, no API keys.
How this skill is triggered — by the user, by Claude, or both
Slash command
/casper:youtube-toolsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Free, local YouTube operations using yt-dlp. No API keys required, no per-video costs. Works offline after installation.
Free, local YouTube operations using yt-dlp. No API keys required, no per-video costs. Works offline after installation.
┌─────────────────────────────────────────────────────────────────┐
│ DECISION: YouTube Tools (yt-dlp) vs Apify │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Use youtube-tools (FREE) when: │
│ ├── Downloading videos to local storage │
│ ├── Extracting transcripts/subtitles │
│ ├── Getting video metadata (title, duration, views, etc.) │
│ ├── Bulk downloading playlists or channels │
│ ├── Converting to audio-only (MP3) │
│ └── You want zero API costs │
│ │
│ Use apify-scrapers when: │
│ ├── Scraping YouTube SEARCH results │
│ ├── Getting comments at scale │
│ ├── Channel analytics and statistics │
│ ├── Trending video discovery │
│ └── You need cloud-based processing │
│ │
└─────────────────────────────────────────────────────────────────┘
What do you need?
│
├── Download video(s)
│ ├── Single video → scripts/download_video.py URL
│ ├── Multiple videos → scripts/download_video.py --urls-file list.txt
│ ├── Playlist → scripts/download_video.py "playlist_url"
│ ├── Audio only → scripts/download_video.py URL --audio-only
│ └── Specific quality → scripts/download_video.py URL --quality 720p
│
├── Get transcript/subtitles
│ ├── Auto-generated captions → scripts/get_transcript.py URL
│ ├── Manual subtitles → scripts/get_transcript.py URL --manual-only
│ ├── Specific language → scripts/get_transcript.py URL --lang es
│ └── All available → scripts/get_transcript.py URL --all-langs
│
├── Get video metadata
│ ├── Single video → scripts/get_video_info.py URL
│ ├── Multiple videos → scripts/get_video_info.py --urls-file list.txt
│ └── Playlist info → scripts/get_video_info.py "playlist_url"
│
└── Advanced
├── Age-restricted → scripts/download_video.py URL --cookies-from-browser chrome
├── Private videos → Requires authentication (see references/yt-dlp-guide.md)
└── Live streams → scripts/download_video.py URL --live-from-start
# Install yt-dlp (required)
pip install yt-dlp
# Optional: Install ffmpeg for format conversion
# macOS
brew install ffmpeg
# Ubuntu/Debian
sudo apt install ffmpeg
# Windows
winget install ffmpeg
No API keys required! This is completely free.
python scripts/download_video.py "https://www.youtube.com/watch?v=VIDEO_ID"
python scripts/download_video.py "https://youtu.be/VIDEO_ID" --quality 1080p
python scripts/download_video.py "https://youtube.com/watch?v=VIDEO_ID" --audio-only
python scripts/download_video.py "https://youtube.com/playlist?list=PLAYLIST_ID" --output-dir ./videos
# Create urls.txt with one URL per line
python scripts/download_video.py --urls-file urls.txt --output-dir ./downloads
python scripts/get_transcript.py "https://youtube.com/watch?v=VIDEO_ID"
python scripts/get_transcript.py "https://youtu.be/VIDEO_ID" --lang es
python scripts/get_video_info.py "https://youtube.com/watch?v=VIDEO_ID"
python scripts/get_video_info.py --urls-file videos.txt --output metadata.json
All outputs save to .tmp/youtube/ by default:
.tmp/youtube/videos/.tmp/youtube/audio/.tmp/youtube/transcripts/.tmp/youtube/metadata/FREE - No API keys, no per-video costs, no subscriptions.
.tmp/ directory--sleep-interval 5 to avoid throttlingCause: Video is private, age-restricted, or region-locked
Solution: Use --cookies-from-browser chrome for age-restricted content
Cause: YouTube changed their page structure
Solution: Update yt-dlp: pip install -U yt-dlp
Cause: Video has no captions (auto or manual)
Solution: Use --list-subs to see available subtitles first
Cause: YouTube throttling or network issues
Solution: Try --concurrent-fragments 4 for faster downloads
Cause: ffmpeg not installed Solution: Install ffmpeg (see Environment Setup)
# 1. Download video
python scripts/download_video.py "URL" --output-dir .tmp/video
# 2. Get transcript
python scripts/get_transcript.py "URL" --output .tmp/transcript.txt
# 3. Use content-generation to summarize
# (transcript file is now ready for summarization)
# 1. Get metadata for research videos
python scripts/get_video_info.py --urls-file research_videos.txt --output .tmp/metadata.json
# 2. Download transcripts for text analysis
python scripts/get_transcript.py --urls-file research_videos.txt --output-dir .tmp/transcripts
# 3. Use parallel-research to analyze content
# Download entire playlist as course modules
python scripts/download_video.py "PLAYLIST_URL" --output-dir .tmp/course --quality 720p
# Get all transcripts for notes
python scripts/get_transcript.py "PLAYLIST_URL" --output-dir .tmp/course/transcripts
npx claudepluginhub casper-studios/casper-marketplace --plugin casperManages yt-dlp media acquisition: format selection, playlist/channel syncing, audio extraction, subtitle download, cookies/auth, rate limiting, SponsorBlock, and failure triage.
Downloads YouTube video transcripts as timestamped text files via youtube-transcript-api. Use for extracting transcripts from videos for analysis, documentation, or content review.
Downloads videos, audio, and captions from YouTube/1000+ platforms using yt-dlp CLI. Supports quality selection (1080p/audio) with user confirmation on URL/output.