Skip to content
Content
Skill

/video-download

Download video and audio from YouTube and 1000+ sites using yt-dlp. No API keys needed. Use when: (1) Downloading a video from YouTube or other sites, (2) Extracting audio from a video URL, (3) Downloading subtitles/captions from a video, (4) Getting video metadata without

From plugin
openmontage
46k48 skills5 agents3 commands
Install
$ npx -y skills add calesthio/OpenMontage --skill video-download --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/video-download

Context preview

The summary Claude sees to decide when to auto-load this skill.

Download video and audio from YouTube and 1000+ sites using yt-dlp. No API keys needed. Use when: (1) Downloading a video from YouTube or other sites, (2) Extracting audio from a video URL, (3) Downloading subtitles/captions from a video, (4) Getting video metadata without

SKILL.md

video-download.SKILL.md
name: video-download
description: |
  Download video and audio from YouTube and 1000+ sites using yt-dlp. No API keys needed.
  Use when: (1) Downloading a video from YouTube or other sites, (2) Extracting audio from a video URL,
  (3) Downloading subtitles/captions from a video, (4) Getting video metadata without downloading.

video-download

Download video and audio from URLs using yt-dlp directly. No wrapper scripts needed.

Prerequisites

  • **yt-dlp**: `brew install yt-dlp` or `pip install yt-dlp`
  • **ffmpeg**: `brew install ffmpeg` or `apt install ffmpeg` (required for merging video+audio streams)

Update yt-dlp periodically to keep up with site changes: `yt-dlp -U` or `pip install -U yt-dlp`.

Commands

Download best quality

yt-dlp "URL" -o "%(title)s.%(ext)s" --merge-output-format mp4

Download specific resolution

# 720p
yt-dlp "URL" -f "bestvideo[height<=720]+bestaudio/best[height<=720]" --merge-output-format mp4

# 1080p
yt-dlp "URL" -f "bestvideo[height<=1080]+bestaudio/best[height<=1080]" --merge-output-format mp4

Audio only

yt-dlp "URL" -x --audio-format mp3 --audio-quality 0

Download subtitles

# Download video with English subtitles
yt-dlp "URL" --write-subs --sub-langs en --merge-output-format mp4

# Download video with multiple subtitle languages
yt-dlp "URL" --write-subs --sub-langs "en,es,fr" --merge-output-format mp4

# Download only subtitles (no video)
yt-dlp "URL" --write-subs --sub-langs en --skip-download

Get metadata (no download)

yt-dlp "URL" --dump-json --no-download

List available formats

yt-dlp "URL" -F

Specify output directory

yt-dlp "URL" -o "./downloads/%(title)s.%(ext)s" --merge-output-format mp4

Quality Presets

| Quality | Format flag | |---------|-------------| | Best | `-f "bestvideo+bestaudio/best"` (default) | | 1080p | `-f "bestvideo[height<=1080]+bestaudio/best[height<=1080]"` | | 720p | `-f "bestvideo[height<=720]+bestaudio/best[height<=720]"` | | 480p | `-f "bestvideo[height<=480]+bestaudio/best[height<=480]"` | | Worst | `-f "worstvideo+worstaudio/worst"` |

Output Template Variables

Common variables for `-o` templates:

| Variable | Description | |----------|-------------| | `%(title)s` | Video title | | `%(ext)s` | File extension | | `%(id)s` | Video ID | | `%(uploader)s` | Channel/uploader name | | `%(upload_date)s` | Upload date (YYYYMMDD) | | `%(duration)s` | Duration in seconds | | `%(resolution)s` | Video resolution |

Tips

  • Always use `--merge-output-format mp4` to avoid ending up with `.webm` or `.mkv` files.
  • Use `--no-download` with `--dump-json` for metadata-only queries -- no files written to disk.
  • If a download fails with HTTP errors, update yt-dlp first (`yt-dlp -U`).
  • Use `-f "bestvideo[height<=720]+bestaudio"` to save bandwidth when full resolution is not needed.
  • yt-dlp automatically handles rate limiting and retries.
  • The `--dump-json` output includes `title`, `duration`, `uploader`, `view_count`, `description`, `formats`, `subtitles`, and much more.

Troubleshooting

  • **"yt-dlp: command not found"**: Install it (`pip install yt-dlp`) and ensure your PATH includes pip's bin directory.
  • **"ffmpeg: command not found"**: Install ffmpeg. Without it, downloads fail when video and audio are separate streams (common on YouTube for HD).
  • **Downloads fail or return errors**: Run `yt-dlp -U` to update. Sites change frequently and yt-dlp ships fixes regularly.
Read more
Ships withopenmontage

World's first open-source, agentic video production system. 12 production pipelines, 100+ tools, 700+ agent skill and production-knowledge files. Turn your AI coding assistant into a full video production studio.

Get the whole plugin

Other skills on openmontage.