yt-dlp
暂无简介
- License 许可
- MIT
- 最近更新
- 2026-06-24
- Stars
- ★ 66
- Forks
- 24
02 资源文件 73
- 参考文档checklist.md13.4 KB
- 其他customize.toml1.5 KB
- 参考文档instructions.md1.1 KB
- 参考文档nfr-report-template.md13.6 KB
- 参考文档resources/knowledge/adr-quality-readiness-checklist.md24.8 KB
- 参考文档resources/knowledge/api-request.md16.7 KB
- 参考文档resources/knowledge/api-testing-patterns.md26.3 KB
- 参考文档resources/knowledge/auth-session.md15.8 KB
- 参考文档resources/knowledge/burn-in.md6.4 KB
- 参考文档resources/knowledge/ci-burn-in.md22.0 KB
- 参考文档resources/knowledge/component-tdd.md15.8 KB
- 参考文档resources/knowledge/contract-testing.md38.1 KB
- 参考文档resources/knowledge/data-factories.md15.0 KB
- 参考文档resources/knowledge/email-auth.md24.0 KB
- 参考文档resources/knowledge/error-handling.md22.4 KB
- 参考文档resources/knowledge/feature-flags.md22.7 KB
- 参考文档resources/knowledge/file-utils.md13.4 KB
- 参考文档resources/knowledge/fixture-architecture.md12.1 KB
- 参考文档resources/knowledge/fixtures-composition.md11.0 KB
- 参考文档resources/knowledge/intercept-network-call.md13.2 KB
- 参考文档resources/knowledge/log.md11.0 KB
- 参考文档resources/knowledge/network-error-monitor.md12.0 KB
- 参考文档resources/knowledge/network-first.md15.9 KB
- 参考文档resources/knowledge/network-recorder.md15.1 KB
- 参考文档resources/knowledge/nfr-criteria.md26.0 KB
- 参考文档resources/knowledge/overview.md9.4 KB
- 参考文档resources/knowledge/pact-broker-webhooks.md13.1 KB
- 参考文档resources/knowledge/pact-consumer-di.md11.7 KB
- 参考文档resources/knowledge/pact-consumer-framework-setup.md35.0 KB
- 参考文档resources/knowledge/pact-mcp.md8.8 KB
- 参考文档resources/knowledge/pactjs-utils-consumer-helpers.md15.7 KB
- 参考文档resources/knowledge/pactjs-utils-overview.md10.2 KB
- 参考文档resources/knowledge/pactjs-utils-provider-verifier.md17.8 KB
- 参考文档resources/knowledge/pactjs-utils-request-filter.md7.1 KB
- 参考文档resources/knowledge/playwright-cli.md14.6 KB
- 参考文档resources/knowledge/playwright-config.md21.0 KB
- 参考文档resources/knowledge/probability-impact.md18.8 KB
- 参考文档resources/knowledge/recurse.md12.6 KB
- 参考文档resources/knowledge/risk-governance.md20.5 KB
- 参考文档resources/knowledge/selective-testing.md21.3 KB
- 参考文档resources/knowledge/selector-resilience.md19.3 KB
- 参考文档resources/knowledge/test-healing-patterns.md20.9 KB
- 参考文档resources/knowledge/test-levels-framework.md14.4 KB
- 参考文档resources/knowledge/test-priorities-matrix.md11.2 KB
- 参考文档resources/knowledge/test-quality.md24.0 KB
- 参考文档resources/knowledge/timing-debugging.md13.7 KB
- 参考文档resources/knowledge/visual-debugging.md17.1 KB
- 参考文档resources/knowledge/webhook-module-setup.md5.7 KB
- 参考文档resources/knowledge/webhook-providers.md6.3 KB
- 参考文档resources/knowledge/webhook-risk-guidance.md6.3 KB
- 参考文档resources/knowledge/webhook-template-matchers.md5.9 KB
- 参考文档resources/knowledge/webhook-testing-fundamentals.md3.1 KB
- 参考文档resources/knowledge/webhook-timeout-error.md5.6 KB
- 参考文档resources/knowledge/webhook-waiting-querying.md6.9 KB
- 资产文件resources/tea-index.csv10.7 KB
- 参考文档steps-c/step-01-load-context.md3.7 KB
- 参考文档steps-c/step-01b-resume.md3.2 KB
- 参考文档steps-c/step-02-define-thresholds.md2.5 KB
- 参考文档steps-c/step-03-gather-evidence.md3.1 KB
- 参考文档steps-c/step-04-evaluate-and-score.md6.8 KB
- 参考文档steps-c/step-04a-subagent-security.md3.1 KB
- 参考文档steps-c/step-04b-subagent-performance.md1.8 KB
- 参考文档steps-c/step-04c-subagent-reliability.md1.8 KB
- 参考文档steps-c/step-04d-subagent-scalability.md2.0 KB
- 参考文档steps-c/step-04e-aggregate-nfr.md6.8 KB
- 参考文档steps-c/step-05-generate-report.md3.1 KB
- 参考文档steps-e/step-01-assess.md1.2 KB
- 参考文档steps-e/step-02-apply-edit.md1.4 KB
- 参考文档steps-v/step-01-validate.md1.8 KB
- 参考文档validation-report-20260127-095021.md2.0 KB
- 参考文档validation-report-20260127-102401.md3.7 KB
- 参考文档workflow-plan.md397 B
- 参考文档workflow.yaml1.6 KB
03 SKILL.md 正文
yt-dlp
Overview
Download and extract media from YouTube and 1000+ other sites using yt-dlp — the actively maintained fork of youtube-dl. This skill covers audio extraction (MP3/FLAC/WAV), video download with quality selection, playlist handling, subtitle download, metadata extraction, thumbnail embedding, batch operations, channel archiving, and integration with processing pipelines (ffmpeg, whisper).
Instructions
Step 1: Installation
# pip (recommended)
pip install yt-dlp
# Standalone binary
curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
chmod +x /usr/local/bin/yt-dlp
# Update
yt-dlp -U
# Verify
yt-dlp --version
ffmpeg is required for merging formats and audio conversion:
apt install -y ffmpeg # Ubuntu/Debian
brew install ffmpeg # macOS
Step 2: Audio Extraction
# Download best audio, convert to MP3
yt-dlp -x --audio-format mp3 "https://youtube.com/watch?v=VIDEO_ID"
# Best audio as FLAC (lossless)
yt-dlp -x --audio-format flac "URL"
# Best audio as WAV
yt-dlp -x --audio-format wav "URL"
# MP3 with specific quality (0=best, 9=worst)
yt-dlp -x --audio-format mp3 --audio-quality 0 "URL"
# Keep original format (no conversion)
yt-dlp -x "URL"
# Download audio + embed thumbnail as album art
yt-dlp -x --audio-format mp3 --embed-thumbnail "URL"
# Download audio + embed metadata (title, artist, etc.)
yt-dlp -x --audio-format mp3 --embed-metadata --embed-thumbnail "URL"
# Custom output filename
yt-dlp -x --audio-format mp3 -o "%(title)s.%(ext)s" "URL"
yt-dlp -x --audio-format mp3 -o "%(uploader)s - %(title)s.%(ext)s" "URL"
Step 3: Video Download
# Best quality (video + audio merged)
yt-dlp "URL"
# List available formats
yt-dlp -F "URL"
# Output: ID EXT RESOLUTION FPS FILESIZE CODEC BITRATE
# Download specific format by ID
yt-dlp -f 137+140 "URL" # 1080p video + best audio
# Best video up to 1080p
yt-dlp -f "bestvideo[height<=1080]+bestaudio/best[height<=1080]" "URL"
# Best video up to 720p, prefer MP4
yt-dlp -f "bestvideo[height<=720][ext=mp4]+bestaudio[ext=m4a]/best[height<=720]" "URL"
# Only 4K if available
yt-dlp -f "bestvideo[height>=2160]+bestaudio" "URL"
# Smallest file
yt-dlp -f "worstvideo+worstaudio/worst" "URL"
# MP4 output (re-mux if needed)
yt-dlp --merge-output-format mp4 "URL"
Step 4: Playlists & Channels
# Download entire playlist
yt-dlp "https://youtube.com/playlist?list=PLAYLIST_ID"
# Playlist: audio only
yt-dlp -x --audio-format mp3 "PLAYLIST_URL"
# Download specific items from playlist
yt-dlp --playlist-start 5 --playlist-end 10 "PLAYLIST_URL" # Items 5-10
yt-dlp --playlist-items 1,3,5,7-10 "PLAYLIST_URL" # Specific items
# Download entire channel
yt-dlp "https://youtube.com/@ChannelName/videos"
# Download channel with organized folders
yt-dlp -o "%(uploader)s/%(playlist)s/%(title)s.%(ext)s" "CHANNEL_URL"
# Only videos from last 30 days
yt-dlp --dateafter today-30days "CHANNEL_URL"
# Skip already downloaded (archive file)
yt-dlp --download-archive archive.txt "PLAYLIST_URL"
# Subsequent runs skip already downloaded videos
Step 5: Subtitles
# Download video + subtitles
yt-dlp --write-sub --sub-lang en "URL"
# Download auto-generated subtitles
yt-dlp --write-auto-sub --sub-lang en "URL"
# All available subtitles
yt-dlp --write-sub --all-subs "URL"
# Subtitles only (no video)
yt-dlp --skip-download --write-sub --sub-lang en "URL"
# Convert subtitles to SRT
yt-dlp --write-sub --sub-lang en --convert-subs srt "URL"
# Embed subtitles into video file
yt-dlp --embed-subs --sub-lang en "URL"
# List available subtitle languages
yt-dlp --list-subs "URL"
Step 6: Metadata & Information
# Print video info (no download)
yt-dlp --dump-json "URL" | python3 -m json.tool
# Extract specific fields
yt-dlp --print "%(title)s | %(duration)s | %(view_count)s" "URL"
# Get thumbnail URL
yt-dlp --get-thumbnail "URL"
# Download thumbnail only
yt-dlp --skip-download --write-thumbnail "URL"
# Download description
yt-dlp --skip-download --write-description "URL"
# Download comments
yt-dlp --skip-download --write-comments "URL"
# Get video info as JSON for a playlist
yt-dlp --dump-json --flat-playlist "PLAYLIST_URL"
Step 7: Output Templates
# Fields: title, uploader, upload_date, duration, view_count, ext, id, playlist_index, etc.
yt-dlp -o "%(uploader)s/%(upload_date)s - %(title)s.%(ext)s" "URL"
yt-dlp -x --audio-format mp3 -o "podcasts/%(playlist)s/%(playlist_index)03d - %(title)s.%(ext)s" "PLAYLIST_URL"
yt-dlp -o "%(title).100B.%(ext)s" "URL" # Limit title to 100 bytes
Step 8: Batch Operations
# Download from URL list, with archive tracking and rate limiting
yt-dlp -a urls.txt -x --audio-format mp3
yt-dlp -a urls.txt --download-archive done.txt -x --audio-format mp3
yt-dlp --rate-limit 5M --sleep-interval 5 -a urls.txt
yt-dlp -N 4 "PLAYLIST_URL" # 4 concurrent downloads
Step 9: Other Platforms
yt-dlp supports 1000+ sites beyond YouTube. Use yt-dlp --list-extractors to see all:
yt-dlp "https://twitter.com/user/status/123456789" # Twitter/X
yt-dlp "https://www.instagram.com/p/POST_ID/" # Instagram
yt-dlp "https://www.tiktok.com/@user/video/123456789" # TikTok
yt-dlp "https://www.twitch.tv/videos/123456789" # Twitch VODs
yt-dlp "https://soundcloud.com/artist/track-name" # SoundCloud
yt-dlp "https://vimeo.com/123456789" # Vimeo
Step 10: Pipeline Integration
# Download → extract audio → transcribe with Whisper
yt-dlp -x --audio-format wav -o "temp.%(ext)s" "URL"
whisper temp.wav --model small --output_format srt
# Download podcast → normalize → generate waveform
yt-dlp -x --audio-format wav -o "episode.%(ext)s" "URL"
sox episode.wav normalized.wav norm -1 highpass 80
audiowaveform -i normalized.wav -o waveform.json --pixels-per-second 20
Step 11: Configuration File
Save defaults in ~/.config/yt-dlp/config:
-f bestvideo[height<=1080][ext=mp4]+bestaudio[ext=m4a]/best[height<=1080]
-o %(uploader)s/%(title)s.%(ext)s
--embed-metadata
--embed-thumbnail
--download-archive ~/.local/share/yt-dlp/archive.txt
--rate-limit 10M
--sleep-interval 3
--write-auto-sub
--sub-lang en
--convert-subs srt
Examples
Example 1: Download a YouTube playlist as MP3 with metadata and thumbnails
User prompt: "Download all videos from this YouTube playlist as high-quality MP3 files with embedded album art and metadata. Organize them by playlist index number. Playlist URL: https://youtube.com/playlist?list=PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf"
The agent will:
- Verify yt-dlp and ffmpeg are installed.
- Run
yt-dlp -x --audio-format mp3 --audio-quality 0 --embed-thumbnail --embed-metadata -o "%(playlist_index)03d - %(title)s.%(ext)s" --download-archive archive.txt "PLAYLIST_URL". - The archive file ensures re-running the command skips already-downloaded tracks.
- Report how many files were downloaded and their total size.
Example 2: Extract audio from a conference talk and generate subtitles
User prompt: "Download this conference talk as 720p MP4 with English subtitles embedded, then also extract just the audio as WAV for transcription: https://youtube.com/watch?v=dQw4w9WgXcQ"
The agent will:
- Download the video with embedded subtitles:
yt-dlp -f "bestvideo[height<=720]+bestaudio" --merge-output-format mp4 --embed-subs --sub-lang en --write-auto-sub "URL". - Extract audio separately:
yt-dlp -x --audio-format wav -o "talk-audio.%(ext)s" "URL". - Confirm both files exist and report their sizes and durations.
Guidelines
- Always install ffmpeg alongside yt-dlp; it is required for merging separate video and audio streams and for audio format conversion.
- Use
--download-archive archive.txtwhen downloading playlists or channels to avoid re-downloading videos on subsequent runs. - Apply rate limiting with
--rate-limit 5M --sleep-interval 5when batch downloading to avoid being throttled or blocked by the source platform. - Use
-f "bestvideo[height<=1080]+bestaudio/best[height<=1080]"as a default format selector to get good quality without unnecessarily large 4K files. - Keep yt-dlp updated regularly with
yt-dlp -U; extractors break frequently as platforms change their APIs and page structures.