download-video
Download Video
Download videos from YouTube, Bilibili, Twitter/X, TikTok, and 1000+ other sites using yt-dlp.
Step 1: Check prerequisites
which yt-dlp && yt-dlp --version
which ffmpeg
If yt-dlp is missing, install it:
# macOS
brew install yt-dlp ffmpeg
# Cross-platform
pip install yt-dlp
Step 2: Download
Use the bundled script — it wraps yt-dlp with sensible defaults and clear error messages.
python3 scripts/download.py "VIDEO_URL"
Default output: ~/Downloads/Videos/
Common options
python3 scripts/download.py "URL" -f 1080 # Max 1080p
python3 scripts/download.py "URL" -a # Audio only (MP3)
python3 scripts/download.py "URL" -F # List formats
python3 scripts/download.py "URL" --subs # With subtitles
python3 scripts/download.py "URL" -o ~/Desktop # Custom output dir
python3 scripts/download.py "URL" --cookies chrome # Use browser cookies
Direct yt-dlp commands
For cases the script doesn't cover, use yt-dlp directly:
# Download playlist
yt-dlp -P ~/Downloads/Videos "PLAYLIST_URL"
# Custom filename template
yt-dlp -o "%(uploader)s - %(title)s.%(ext)s" "VIDEO_URL"
# Download with subtitles in specific languages
yt-dlp --write-subs --sub-lang zh,en -P ~/Downloads/Videos "VIDEO_URL"
Troubleshooting
Most download failures fall into these categories:
| Symptom | Fix |
|---|---|
| "Sign in required" or age-restricted | Add --cookies chrome to use browser session |
| Only low quality available | Update yt-dlp (brew upgrade yt-dlp), then try with --cookies chrome |
| Slow downloads | Try --concurrent-fragments 3 or --downloader aria2c |
| Network errors (behind firewall) | Use --proxy socks5://127.0.0.1:1080 or set ALL_PROXY env var |
For platform-specific details (YouTube PO tokens, Bilibili series, TikTok watermark removal, etc.), see references/platform-tips.md.
More from feiskyer/video-skills
narrate-video
Generate professional voiceover narration for a video with audio-video sync using Azure TTS by default, or Gemini 3.1 Flash TTS when configured. Use this skill whenever the user wants to add narration, voiceover, commentary, or voice dubbing to any video file — even if they just say "add audio to this video" or "make a narrated version." Also trigger when the user has a screen recording, demo, tutorial, or presentation video that needs a voice track. Trigger on Chinese requests like "视频配音", "给视频加旁白", "录屏解说", "视频加语音", "视频添加声音", "生成视频旁白", "自动配音", "视频解说词".
33transcribe-video
Extract transcript or subtitles from a local video file. Use this skill whenever the user asks to transcribe a video, extract speech-to-text, get subtitles, or wants a text version of what's said in a video. Also trigger on "提取字幕", "视频转文字", "语音转文字", "transcribe", "extract audio text", or when the user references getting a script/transcript from any video file (mp4, mkv, mov, avi, webm). This skill is for LOCAL video files — for YouTube or other online URLs, use the download-video skill first to get the file, then transcribe it.
33