universal-downloaderlisted
Install: claude install-skill hiyabh/claude-video-skills
# Universal Downloader
Download anything from anywhere — video, audio, images, files, playlists, subtitles.
## Tool Matrix
| Source | Tool | Install |
|--------|------|---------|
| Video platforms (YouTube, Vimeo, TikTok, Twitter/X, Instagram, Facebook, Twitch, Reddit, Bilibili, 1000+ sites) | `yt-dlp` | ✅ installed |
| Audio extraction | `yt-dlp` + `ffmpeg` | ✅ both installed |
| Image galleries (Pixiv, Twitter media, Instagram, Reddit, Pinterest, DeviantArt, 300+) | `gallery-dl` | `pip install gallery-dl` |
| Single files / direct URLs | `curl -L -O` | ✅ installed |
| Large files / segmented | `aria2c -x 16` | `winget install aria2.aria2` |
| Full websites (mirror) | `httrack` or `wget --mirror` | optional |
## Default Output Location
```bash
~/Downloads/web/<category>/<site>/
```
Categories: `video/`, `audio/`, `images/`, `files/`, `playlists/`.
Always `mkdir -p` before download.
## IRON RULES (Windows + Claude Code env)
### RULE 1: Always use `--no-check-certificates` with yt-dlp
**Why:** User's environment has self-signed cert in chain (MITM proxy / antivirus TLS inspection). Without this flag every YouTube/Vimeo/etc download fails with `[SSL: CERTIFICATE_VERIFY_FAILED]`.
```bash
yt-dlp --no-check-certificates <URL>
```
### RULE 2: Use `-o` template with safe filename
YouTube titles contain forbidden Windows chars (`?`, `|`, `:`). yt-dlp handles most but always set explicit template:
```bash
-o "%(title).200B [%(id)s].%(ext)s"
```
`.200B` = byte-length lim