home / skills / isjiamu / jiamu-skills / video-downloader

video-downloader skill

/video-downloader

This skill downloads videos from YouTube, TikTok, and more using yt-dlp, with options to extract audio and select quality for your saved copies.

npx playbooks add skill isjiamu/jiamu-skills --skill video-downloader

Review the files below or copy the command above to add this skill to your agents.

Files (3)
SKILL.md
4.7 KB
---
name: video-downloader
description: Download videos from 1000+ websites (YouTube, Bilibili, Twitter/X, TikTok, etc.) using yt-dlp. Use this skill when users provide video URLs and want to download videos, extract audio, or need help with video download issues.
---

# Video Downloader

## Overview

Download videos from YouTube, Bilibili, Twitter/X, TikTok, and 1000+ other websites using yt-dlp. Supports multiple quality options, audio extraction, and automatic format selection.

## When to Use This Skill

Invoke this skill when users:
- Provide a video URL and want to download it
- Ask to download videos from any website
- Want to extract audio from online videos
- Need to download videos in specific quality (1080p, 4K, etc.)
- Request help with video download issues

## Quick Start

When a user provides a video URL:

```bash
# Run the bundled download script
python3 scripts/download.py "VIDEO_URL"
```

Default output: `~/Downloads/Videos/`

## Prerequisites

### Install yt-dlp

```bash
# macOS
brew install yt-dlp

# Cross-platform (pip)
pip install yt-dlp

# Update to latest version
brew upgrade yt-dlp  # or: pip install --upgrade yt-dlp
```

### Verify Installation

```bash
which yt-dlp && yt-dlp --version
```

## Common Download Commands

### Basic Download (Best Quality)

```bash
yt-dlp -P ~/Downloads/Videos "VIDEO_URL"
```

### Specific Quality

```bash
# Best quality up to 1080p
yt-dlp -f "bestvideo[height<=1080]+bestaudio/best" -P ~/Downloads/Videos "VIDEO_URL"

# Best quality up to 720p
yt-dlp -f "bestvideo[height<=720]+bestaudio/best" -P ~/Downloads/Videos "VIDEO_URL"

# Best available (including 4K)
yt-dlp -f "bestvideo+bestaudio/best" -P ~/Downloads/Videos "VIDEO_URL"
```

### Audio Only (MP3)

```bash
yt-dlp -x --audio-format mp3 -P ~/Downloads/Videos "VIDEO_URL"
```

### List Available Formats

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

### Download with Subtitles

```bash
yt-dlp --write-subs --sub-lang zh,en -P ~/Downloads/Videos "VIDEO_URL"
```

### Playlist Download

```bash
yt-dlp -P ~/Downloads/Videos "PLAYLIST_URL"
```

## Bundled Script Reference

### scripts/download.py

Convenience wrapper with sensible defaults:

```bash
# Basic usage
python3 scripts/download.py "VIDEO_URL"

# Options
python3 scripts/download.py "VIDEO_URL" -o ~/Desktop          # Custom output
python3 scripts/download.py "VIDEO_URL" -f 1080               # Max 1080p
python3 scripts/download.py "VIDEO_URL" -a                    # Audio only (MP3)
python3 scripts/download.py "VIDEO_URL" -F                    # List formats
python3 scripts/download.py "VIDEO_URL" --subs                # With subtitles
```

## Supported Websites (Examples)

| Platform | Example URL Pattern |
|----------|---------------------|
| YouTube | `youtube.com/watch?v=`, `youtu.be/` |
| Bilibili | `bilibili.com/video/` |
| Twitter/X | `twitter.com/*/status/`, `x.com/*/status/` |
| TikTok | `tiktok.com/@*/video/` |
| Vimeo | `vimeo.com/` |
| Twitch | `twitch.tv/videos/` |
| Instagram | `instagram.com/p/`, `instagram.com/reel/` |
| Facebook | `facebook.com/watch/` |

Full list: https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md

## Platform-Specific Notes

### YouTube

For high-quality (1080p+) YouTube downloads, you may need:

1. **Browser cookies** (recommended):
```bash
yt-dlp --cookies-from-browser chrome "VIDEO_URL"
```

2. **PO token provider** (for persistent access):
See `references/platform-tips.md` for setup instructions.

### Bilibili

```bash
# Download with best quality
yt-dlp --cookies-from-browser chrome "https://www.bilibili.com/video/BV..."
```

### Twitter/X

```bash
# Usually works without authentication
yt-dlp "https://twitter.com/user/status/123456789"
```

## Troubleshooting

### "Video unavailable" or "Sign in required"

Use browser cookies:
```bash
yt-dlp --cookies-from-browser chrome "VIDEO_URL"
```

### Only Low Quality Available

1. Update yt-dlp: `brew upgrade yt-dlp`
2. Use browser cookies for authentication
3. Check available formats: `yt-dlp -F "VIDEO_URL"`

### Download Speed Issues

```bash
# Limit concurrent fragments
yt-dlp --concurrent-fragments 3 "VIDEO_URL"

# Use specific format to avoid merging
yt-dlp -f best "VIDEO_URL"
```

### Network Errors (China/Proxy)

```bash
# Use proxy
yt-dlp --proxy socks5://127.0.0.1:1080 "VIDEO_URL"

# Or set environment variable
export ALL_PROXY=socks5://127.0.0.1:1080
yt-dlp "VIDEO_URL"
```

## Output Format

Default filename template: `%(title)s [%(id)s].%(ext)s`

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

## Further Reading

- **Platform Tips**: See `references/platform-tips.md` for site-specific guidance
- **yt-dlp Documentation**: https://github.com/yt-dlp/yt-dlp
- **Supported Sites**: https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md

Overview

This skill downloads videos from 1000+ websites (YouTube, Bilibili, Twitter/X, TikTok, Vimeo, Twitch, Instagram, Facebook, etc.) using yt-dlp. It supports selecting quality (including 1080p and 4K), extracting audio (MP3), downloading playlists, and saving subtitles. Use the bundled script or direct yt-dlp commands for flexible, reproducible downloads.

How this skill works

When given a video or playlist URL, the skill runs yt-dlp with sensible defaults or user-specified flags to fetch media, choose formats, and write output to a target folder (default: ~/Downloads/Videos). It can query available formats, merge video and audio streams, extract audio, save subtitles, and use browser cookies or proxies for authenticated or region-restricted content. A lightweight Python wrapper provides easy CLI options for common workflows.

When to use it

  • You have a video or playlist URL and want to download the file locally.
  • You need audio-only extraction (MP3) from an online video.
  • You want to download a specific quality (720p, 1080p, 4K) or the best available.
  • A video requires authentication or region access—use cookies or a proxy.
  • You need subtitles saved alongside the downloaded video.

Best practices

  • Install or update yt-dlp via package manager or pip before downloading.
  • Use yt-dlp -F to inspect available formats before choosing a specific quality.
  • Provide browser cookies (--cookies-from-browser) for sign-in or age-restricted content.
  • Use the bundled script for defaults and the yt-dlp CLI for advanced format strings.
  • Set a clear output template ( -o ) and destination folder to organize downloads.

Example use cases

  • Download a YouTube lecture at 1080p using the bundled script: python3 scripts/download.py "VIDEO_URL" -f 1080
  • Extract audio as MP3 from a talk: yt-dlp -x --audio-format mp3 -P ~/Downloads/Videos "VIDEO_URL"
  • Save subtitles in English and Chinese: yt-dlp --write-subs --sub-lang en,zh -P ~/Downloads/Videos "VIDEO_URL"
  • Download a private or region-locked Bilibili video using browser cookies: yt-dlp --cookies-from-browser chrome "VIDEO_URL"
  • Download an entire playlist to a folder: yt-dlp -P ~/Downloads/Videos "PLAYLIST_URL"

FAQ

What if yt-dlp reports "video unavailable" or "sign in required"?

Use --cookies-from-browser to provide your browser cookies, or authenticate with the site if supported. Updating yt-dlp can also fix access issues.

How do I pick a specific resolution like 1080p?

List formats with yt-dlp -F "URL" then use a format selector such as -f "bestvideo[height<=1080]+bestaudio/best" to restrict to 1080p or lower.