# Yt Video Downloader

> Download YouTube videos in various formats and qualities. Use when you need to save videos for offline viewing, extract audio, download playlists, or get specific video formats.

- Skill: `kbarbel640-del/yt-video-downloader` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add kbarbel640-del/yt-video-downloader`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kbarbel640-del/yt-video-downloader/raw
- Safety review: pending (external: skill-scanner PASS, skillspector CAUTION)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: kbarbel640-del (https://skillmd.com/u/kbarbel640-del)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/kbarbel640-del/yt-video-downloader

---


# YouTube Video Downloader

## Setup

Install yt-dlp:
```bash
pip install yt-dlp
```

Optional: Install ffmpeg for format conversion:
```bash
# macOS
brew install ffmpeg

# Ubuntu/Debian
sudo apt install ffmpeg

# Windows
winget install ffmpeg
```

## Download Video

Best quality (default):
```bash
yt-dlp "VIDEO_URL"
```

Specific quality:
```bash
# Best video + best audio (merged)
yt-dlp -f "bestvideo+bestaudio/best" "VIDEO_URL"

# 1080p max
yt-dlp -f "bestvideo[height<=1080]+bestaudio/best[height<=1080]" "VIDEO_URL"

# 720p max
yt-dlp -f "bestvideo[height<=720]+bestaudio/best[height<=720]" "VIDEO_URL"

# 480p max
yt-dlp -f "bestvideo[height<=480]+bestaudio/best[height<=480]" "VIDEO_URL"
```

## Download Audio Only

Best audio as MP3:
```bash
yt-dlp -x --audio-format mp3 "VIDEO_URL"
```

Best audio as M4A:
```bash
yt-dlp -x --audio-format m4a "VIDEO_URL"
```

Best quality audio (original format):
```bash
yt-dlp -f "bestaudio" "VIDEO_URL"
```

With metadata:
```bash
yt-dlp -x --audio-format mp3 --embed-thumbnail --add-metadata "VIDEO_URL"
```

## List Available Formats

```bash
yt-dlp -F "VIDEO_URL"
```

Download specific format by ID:
```bash
yt-dlp -f 137+140 "VIDEO_URL"
```

## Custom Output Names

```bash
# Custom template
yt-dlp -o "%(title)s.%(ext)s" "VIDEO_URL"

# With channel name
yt-dlp -o "%(channel)s - %(title)s.%(ext)s" "VIDEO_URL"

# With date
yt-dlp -o "%(upload_date)s - %(title)s.%(ext)s" "VIDEO_URL"

# To specific folder
yt-dlp -o "~/Videos/%(title)s.%(ext)s" "VIDEO_URL"
```

## Download Playlist

Entire playlist:
```bash
yt-dlp "PLAYLIST_URL"
```

With numbering:
```bash
yt-dlp -o "%(playlist_index)s - %(title)s.%(ext)s" "PLAYLIST_URL"
```

Specific range:
```bash
# Videos 1-10
yt-dlp --playlist-start 1 --playlist-end 10 "PLAYLIST_URL"

# Only first 5
yt-dlp -I 1:5 "PLAYLIST_URL"
```

## Download Channel

Recent videos from channel:
```bash
yt-dlp -I 1:10 "CHANNEL_URL"
```

All videos (careful - can be large!):
```bash
yt-dlp "CHANNEL_URL/videos"
```

## Download with Subtitles

Embed subtitles:
```bash
yt-dlp --write-sub --embed-subs "VIDEO_URL"
```

Auto-generated subtitles:
```bash
yt-dlp --write-auto-sub --embed-subs --sub-lang en "VIDEO_URL"
```

## Thumbnail & Metadata

Embed thumbnail:
```bash
yt-dlp --embed-thumbnail "VIDEO_URL"
```

Full metadata:
```bash
yt-dlp --embed-thumbnail --add-metadata --embed-chapters "VIDEO_URL"
```

## Speed & Resume

Limit download speed:
```bash
yt-dlp -r 1M "VIDEO_URL"  # 1 MB/s limit
```

Resume interrupted download:
```bash
yt-dlp -c "VIDEO_URL"
```

## Archive (Skip Downloaded)

```bash
yt-dlp --download-archive downloaded.txt "PLAYLIST_URL"
```

## Common Format Codes

| Format | Description |
|--------|-------------|
| `best` | Best single file |
| `bestvideo+bestaudio` | Best quality (requires ffmpeg) |
| `bestvideo[height<=1080]` | Max 1080p |
| `bestaudio` | Best audio only |
| `mp4` | Prefer MP4 container |

## Output Template Variables

| Variable | Description |
|----------|-------------|
| `%(title)s` | Video title |
| `%(id)s` | Video ID |
| `%(channel)s` | Channel name |
| `%(upload_date)s` | Upload date (YYYYMMDD) |
| `%(duration)s` | Duration in seconds |
| `%(playlist_index)s` | Index in playlist |
| `%(ext)s` | File extension |

## Notes

- Respect copyright and terms of service
- Some videos may be geo-restricted
- Age-restricted videos may need cookies
- Use `--cookies-from-browser chrome` for authenticated content
- ffmpeg required for merging separate video/audio streams
- Update regularly: `pip install -U yt-dlp`

