Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Download video and audio from YouTube and 1000+ sites using yt-dlp. No API keys needed. Use when: (1) Downloading a video from YouTube or other sites, (2) Extracting audio from a video URL, (3) Downloading subtitles/captions from a video, (4) Getting video metadata without downloading.
.claude/skills/video-production-buddy-video-download/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 0% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 32% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 49% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 25% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 21% | 0% |
Download video and audio from URLs using yt-dlp directly. No wrapper scripts needed.
brew install yt-dlp or pip install yt-dlpbrew install ffmpeg or apt install ffmpeg (required for merging video+audio streams)Update yt-dlp periodically to keep up with site changes: yt-dlp -U or pip install -U yt-dlp.
bashyt-dlp "URL" -o "%(title)s.%(ext)s" --merge-output-format mp4
bash# 720p yt-dlp "URL" -f "bestvideo[height<=720]+bestaudio/best[height<=720]" --merge-output-format mp4 # 1080p yt-dlp "URL" -f "bestvideo[height<=1080]+bestaudio/best[height<=1080]" --merge-output-format mp4
bashyt-dlp "URL" -x --audio-format mp3 --audio-quality 0
bash# Download video with English subtitles yt-dlp "URL" --write-subs --sub-langs en --merge-output-format mp4 # Download video with multiple subtitle languages yt-dlp "URL" --write-subs --sub-langs "en,es,fr" --merge-output-format mp4 # Download only subtitles (no video) yt-dlp "URL" --write-subs --sub-langs en --skip-download
bashyt-dlp "URL" --dump-json --no-download
bashyt-dlp "URL" -F
bashyt-dlp "URL" -o "./downloads/%(title)s.%(ext)s" --merge-output-format mp4
| Quality | Format flag | |---------|-------------| | Best | -f "bestvideo+bestaudio/best" (default) | | 1080p | -f "bestvideo[height<=1080]+bestaudio/best[height<=1080]" | | 720p | -f "bestvideo[height<=720]+bestaudio/best[height<=720]" | | 480p | -f "bestvideo[height<=480]+bestaudio/best[height<=480]" | | Worst | -f "worstvideo+worstaudio/worst" |
Common variables for -o templates:
| Variable | Description | |----------|-------------| | %(title)s | Video title | | %(ext)s | File extension | | %(id)s | Video ID | | %(uploader)s | Channel/uploader name | | %(upload_date)s | Upload date (YYYYMMDD) | | %(duration)s | Duration in seconds | | %(resolution)s | Video resolution |
--merge-output-format mp4 to avoid ending up with .webm or .mkv files.--no-download with --dump-json for metadata-only queries -- no files written to disk.yt-dlp -U).-f "bestvideo[height<=720]+bestaudio" to save bandwidth when full resolution is not needed.--dump-json output includes title, duration, uploader, view_count, description, formats, subtitles, and much more.pip install yt-dlp) and ensure your PATH includes pip's bin directory.yt-dlp -U to update. Sites change frequently and yt-dlp ships fixes regularly.Other measured skills in the registry, with their headline benchmark lift.