youtube-downloader — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited youtube-downloader (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Download videos and audio from YouTube and 1000+ other websites using yt-dlp, the most powerful and actively maintained YouTube downloader.
Use when you need to:
yt-dlp requires Python 3.7+ and ffmpeg for format conversion:
# Install yt-dlp (if not already installed)
pip install -U yt-dlp
# Install ffmpeg (required for format conversion)
# Ubuntu/Debian:
sudo apt install ffmpeg
# macOS:
brew install ffmpeg
# Verify installation
yt-dlp --version
ffmpeg -versionyt-dlp "https://www.youtube.com/watch?v=VIDEO_ID"yt-dlp -f "bestaudio" "https://www.youtube.com/watch?v=VIDEO_ID"yt-dlp -x --audio-format mp3 --audio-quality 0 "https://www.youtube.com/watch?v=VIDEO_ID"# 1080p video with best audio
yt-dlp -f "bestvideo[height<=1080]+bestaudio/best[height<=1080]" "URL"
# 4K video
yt-dlp -f "bestvideo[height<=2160]+bestaudio/best" "URL"
# 720p video
yt-dlp -f "bestvideo[height<=720]+bestaudio/best[height<=720]" "URL"yt-dlp "https://www.youtube.com/playlist?list=PLAYLIST_ID"# Videos 1-10
yt-dlp --playlist-start 1 --playlist-end 10 "PLAYLIST_URL"
# Videos from #5 onwards
yt-dlp --playlist-start 5 "PLAYLIST_URL"yt-dlp "https://www.youtube.com/@ChannelName/videos"# Download all available subtitles
yt-dlp --write-subs --write-auto-subs --sub-langs "en,es,fr" "URL"
# Download and embed subtitles
yt-dlp --write-subs --embed-subs --sub-langs "en.*" "URL"
# Download only subtitles (no video)
yt-dlp --skip-download --write-subs --write-auto-subs "URL"# Custom filename template
yt-dlp -o "%(uploader)s/%(playlist)s/%(title)s.%(ext)s" "PLAYLIST_URL"
# By date uploaded
yt-dlp -o "%(upload_date)s - %(title)s.%(ext)s" "URL"
# With video ID
yt-dlp -o "%(title)s [%(id)s].%(ext)s" "URL"# Download and embed thumbnail
yt-dlp --write-thumbnail --embed-thumbnail "URL"
# Download thumbnail only
yt-dlp --write-thumbnail --skip-download "URL"# Write metadata to JSON file
yt-dlp --write-info-json "URL"
# Write metadata to description file
yt-dlp --write-description "URL"# Best overall quality (may be WebM)
yt-dlp -f "bestvideo+bestaudio/best" "URL"
# Best MP4 format (most compatible)
yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]" "URL"
# 4K (2160p) maximum
yt-dlp -f "bestvideo[height<=2160]+bestaudio" "URL"
# 1080p maximum
yt-dlp -f "bestvideo[height<=1080]+bestaudio" "URL"
# 720p maximum
yt-dlp -f "bestvideo[height<=720]+bestaudio" "URL"
# 60fps preferred
yt-dlp -f "bestvideo[fps>30]+bestaudio/best" "URL"# Best audio quality (extract as M4A)
yt-dlp -f "bestaudio" "URL"
# Extract as MP3 (best quality)
yt-dlp -x --audio-format mp3 --audio-quality 0 "URL"
# Extract as FLAC (lossless)
yt-dlp -x --audio-format flac "URL"
# Extract as Opus (efficient)
yt-dlp -x --audio-format opus "URL"
# Extract as WAV (uncompressed)
yt-dlp -x --audio-format wav "URL"Before downloading, check what formats are available:
yt-dlp -F "URL"This shows all available video and audio streams with:
Then download specific format:
yt-dlp -f FORMAT_ID "URL"Create a text file with URLs (one per line):
https://www.youtube.com/watch?v=VIDEO1
https://www.youtube.com/watch?v=VIDEO2
https://www.youtube.com/watch?v=VIDEO3Download all:
yt-dlp -a urls.txtTrack downloaded videos to avoid re-downloading:
yt-dlp --download-archive archive.txt "PLAYLIST_URL"This creates archive.txt with IDs of downloaded videos. On subsequent runs, yt-dlp skips already downloaded videos.
# Videos from 2024
yt-dlp --dateafter 20240101 "CHANNEL_URL"
# Videos before 2023
yt-dlp --datebefore 20230101 "CHANNEL_URL"
# Videos between dates
yt-dlp --dateafter 20230101 --datebefore 20231231 "CHANNEL_URL"# Videos with 1M+ views
yt-dlp --match-filter "view_count > 1000000" "CHANNEL_URL"
# Videos with less than 10K views
yt-dlp --match-filter "view_count < 10000" "CHANNEL_URL"# Videos longer than 10 minutes
yt-dlp --match-filter "duration > 600" "PLAYLIST_URL"
# Videos shorter than 5 minutes
yt-dlp --match-filter "duration < 300" "PLAYLIST_URL"# Wait for stream to start and download
yt-dlp --wait-for-video 60 "LIVE_STREAM_URL"
# Download stream as it's happening (may be incomplete if interrupted)
yt-dlp "LIVE_STREAM_URL"# Limit download speed (e.g., 1MB/s)
yt-dlp --limit-rate 1M "URL"
# Set number of retries
yt-dlp --retries 10 "URL"
# Wait between downloads (in seconds)
yt-dlp --sleep-interval 5 "PLAYLIST_URL"
# Use specific proxy
yt-dlp --proxy "http://proxy.server:port" "URL"
# Use cookies from browser (bypass age restrictions)
yt-dlp --cookies-from-browser chrome "URL"# Use proxy
yt-dlp --proxy "socks5://proxy.server:1080" "URL"
# Use specific geo-bypass country
yt-dlp --geo-bypass-country US "URL"# Merge video and audio to MP4
yt-dlp --merge-output-format mp4 "URL"
# Re-encode to H.264
yt-dlp --recode-video mp4 "URL"
# Add metadata
yt-dlp --add-metadata "URL"
# Embed thumbnail
yt-dlp --embed-thumbnail "URL"# Extract audio and convert to MP3
yt-dlp -x --audio-format mp3 --audio-quality 0 "URL"
# Add metadata to audio file
yt-dlp -x --audio-format mp3 --add-metadata "URL"yt-dlp -x --audio-format mp3 --audio-quality 0 \
-o "%(artist)s - %(title)s.%(ext)s" \
--add-metadata \
--embed-thumbnail \
"MUSIC_VIDEO_URL"yt-dlp -o "%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" \
--write-subs --embed-subs \
--write-info-json \
"COURSE_PLAYLIST_URL"yt-dlp --download-archive downloaded.txt \
-o "%(uploader)s/%(upload_date)s - %(title)s.%(ext)s" \
-f "bestvideo[height<=1080]+bestaudio/best" \
"https://www.youtube.com/@ChannelName/videos"yt-dlp -x --audio-format mp3 --audio-quality 0 \
-o "%(playlist)s/%(playlist_index)s. %(title)s.%(ext)s" \
--add-metadata \
"PODCAST_PLAYLIST_URL"yt-dlp -f "bestvideo[height<=720]+bestaudio" \
-o "Conference/%(title)s.%(ext)s" \
--write-subs --embed-subs --sub-langs en \
"CONFERENCE_PLAYLIST_URL"# Create urls.txt with mixed URLs (YouTube, Vimeo, etc.)
yt-dlp -a urls.txt \
-f "bestvideo+bestaudio/best" \
-o "%(extractor)s/%(uploader)s/%(title)s.%(ext)s"Create ~/.config/yt-dlp/config for default options:
# Default format
-f bestvideo[height<=1080]+bestaudio/best
# Output template
-o ~/Downloads/%(uploader)s/%(title)s.%(ext)s
# Embed metadata
--add-metadata
--embed-thumbnail
# Write subtitles
--write-subs
--sub-langs en
# Continue on errors
--ignore-errors
# Rate limit
--limit-rate 5M# Try with cookies from browser
yt-dlp --cookies-from-browser chrome "URL"
# Update yt-dlp
pip install -U yt-dlp# Use browser cookies
yt-dlp --cookies-from-browser firefox "URL"
# Or login with credentials
yt-dlp --username YOUR_USERNAME --password YOUR_PASSWORD "URL"# List all formats first
yt-dlp -F "URL"
# Then select specific format
yt-dlp -f FORMAT_ID "URL"# Use multiple connections
yt-dlp --concurrent-fragments 4 "URL"
# Or use external downloader
yt-dlp --external-downloader aria2c "URL"yt-dlp automatically uses ffmpeg when installed for:
yt-dlp --external-downloader aria2c \
--external-downloader-args "-x 16 -s 16 -k 1M" \
"URL"⚠️ Important:
--limit-rate--concurrent-fragments 4Keep yt-dlp updated for best compatibility:
# Update via pip
pip install -U yt-dlp
# Check version
yt-dlp --versionVersion: 1.0.0 Last Updated: 2025-11-07 Maintained by: Claude Code Skills Collection
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.