Download YouTube videos using yt-dlp. Automatically checks for yt-dlp installation and installs if needed. Supports both full YouTube URLs and video IDs. Use when user asks to download YouTube videos, save videos locally, or get video files.
Resources
2Install
npx skillscat add zxhfighter/skills-hub/youtube-downloader Install via the SkillsCat registry.
YouTube Video Downloader
Download YouTube videos using the powerful yt-dlp tool. Automatically handles installation and supports multiple input formats and quality options.
Features
- ✅ Auto-installation: Checks for yt-dlp and installs if not present
- ✅ Flexible Input: Accepts full URLs or just video IDs
- ✅ Quality Selection: Choose from best, 1080p, 720p, 480p, or audio-only
- ✅ Format Options: MP4 video or MP3 audio
- ✅ Progress Tracking: Shows download progress
- ✅ Metadata Embedding: Automatically embeds thumbnails and metadata
Installation Check
The skill automatically checks if yt-dlp is installed:
# Check for yt-dlp
which yt-dlp
# If not found, install via:
# macOS (Homebrew)
brew install yt-dlp
# Alternative: pip
pip install yt-dlp
# Alternative: pipx (recommended)
pipx install yt-dlpUsage
Basic Syntax
youtube-download <url-or-id> [quality] [format] [output-dir]Parameters
URL or Video ID (required)
- Full URL:
https://www.youtube.com/watch?v=dQw4w9WgXcQ - Short URL:
https://youtu.be/dQw4w9WgXcQ - Video ID only:
dQw4w9WgXcQ
- Full URL:
Quality (optional, default:
best)best- Best available quality1080p- Full HD720p- HD480p- SDaudio- Audio only (converts to MP3)
Format (optional, default:
mp4)mp4- Video in MP4 formatmp3- Audio in MP3 format (same as quality=audio)
Output Directory (optional, default:
~/Downloads/YouTube)- Custom directory path for downloaded files
Examples
# Download best quality (full URL)
youtube-download "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
# Download using video ID
youtube-download dQw4w9WgXcQ
# Download 720p quality
youtube-download dQw4w9WgXcQ 720p
# Download audio only as MP3
youtube-download dQw4w9WgXcQ audio
# Download to custom directory
youtube-download dQw4w9WgXcQ best mp4 ~/Videos
# Download MP3 directly
youtube-download dQw4w9WgXcQ "" mp3Quality Options Explained
Video Quality
| Option | Resolution | Bitrate | Use Case |
|---|---|---|---|
best |
Varies | Highest | Best quality, larger file |
1080p |
1920x1080 | ~8 Mbps | Full HD, good balance |
720p |
1280x720 | ~5 Mbps | HD, moderate size |
480p |
854x480 | ~2.5 Mbps | SD, smaller files |
Audio Quality
| Option | Format | Bitrate | Use Case |
|---|---|---|---|
audio |
MP3 | 192 kbps | Music, podcasts |
mp3 |
MP3 | 192 kbps | Same as audio |
Output
Downloaded files are named with pattern:
<video-title>-<video-id>.mp4
<video-title>-<video-id>.mp3Example:
Never Gonna Give You Up-dQw4w9WgXcQ.mp4Advanced Features
Playlist Download
# Download entire playlist
youtube-download "https://www.youtube.com/playlist?list=PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf"
# Download first N videos from playlist
youtube-download "playlist-url" best mp4 ~/Downloads "--playlist-end 10"Subtitle Download
# Download with subtitles
youtube-download <video-id> best mp4 ~/Downloads "--write-subs --sub-lang en"
# Download auto-generated subtitles
youtube-download <video-id> best mp4 ~/Downloads "--write-auto-subs"Age-Restricted Videos
# Download age-restricted content (requires cookies)
youtube-download <video-id> best mp4 ~/Downloads "--cookies-from-browser chrome"Error Handling
The skill handles common errors:
- yt-dlp not found → Prompts to install
- Invalid URL/ID → Shows example format
- Video unavailable → Suggests checking video existence
- Network error → Suggests retrying
- Disk space → Checks available space before download
Implementation Details
URL Normalization
The script automatically converts various input formats:
# All these work:
https://www.youtube.com/watch?v=dQw4w9WgXcQ
https://youtu.be/dQw4w9WgXcQ
dQw4w9WgXcQ
youtube.com/watch?v=dQw4w9WgXcQQuality Selection Logic
if quality == "best":
use yt-dlp default (bestvideo+bestaudio)
elif quality == "audio" or format == "mp3":
use bestaudio, convert to mp3
else:
use format: bestvideo[height<=<quality>]+bestaudioCommon Use Cases
1. Quick Video Download
User says: "下载这个 YouTube 视频 https://www.youtube.com/watch?v=abc123"
Action:
youtube-download "https://www.youtube.com/watch?v=abc123"2. Audio Extraction
User says: "提取 YouTube 视频 abc123 的音频"
Action:
youtube-download abc123 audio3. Specific Quality
User says: "下载 720p 质量的视频"
Action:
youtube-download <url> 720p4. Batch Download
User says: "下载这个播放列表"
Action:
youtube-download "https://www.youtube.com/playlist?list=..."Configuration
Default configuration can be customized in ~/.config/yt-dlp/config:
# Prefer 1080p
-f bestvideo[height<=1080]+bestaudio/best
# Always embed thumbnails
--embed-thumbnail
# Add metadata
--add-metadata
# Output template
-o "~/Downloads/YouTube/%(title)s-%(id)s.%(ext)s"Limitations
- ⚠️ Respects copyright and YouTube Terms of Service
- ⚠️ Some videos may be geo-blocked or unavailable
- ⚠️ Live streams require special handling
- ⚠️ Very long videos may take significant time
Troubleshooting
"Video unavailable"
- Check if video exists and is public
- Try with
--cookies-from-browser chrome
"Format not available"
- Try different quality option
- Use
bestfor automatic selection
"Slow download"
- Use lower quality (720p or 480p)
- Check network connection
"yt-dlp outdated"
# Update yt-dlp
brew upgrade yt-dlp
# or
pip install -U yt-dlpLegal Notice
⚠️ Important: Only download videos you have permission to download. Respect:
- YouTube Terms of Service
- Copyright laws
- Content creator rights
- Fair use guidelines
This tool is for personal, educational, and fair use purposes only.
Integration with Other Skills
Works well with:
- youtube-transcript: Download video + extract transcript
- notebooklm: Download + analyze video content
- gen_wechat_article: Download + create article from video
Script Location
Main download script: scripts/download.sh
Can be called directly:
~/.claude/skills/youtube-downloader/scripts/download.sh <args>Updates
yt-dlp is actively maintained. Update regularly:
brew upgrade yt-dlp # macOS
pip install -U yt-dlp # pip
pipx upgrade yt-dlp # pipx