using-youtube-download
This skill teaches how to download YouTube videos and audio using yt-dlp and ffmpeg, with commands for extracting highest-quality MP4 video files, MP3 audio, entire playlists, and custom formats. Use it when needing to locally archive YouTube content, extract audio tracks, download playlists systematically, or convert videos to specific resolutions and bitrates.
git clone --depth 1 https://github.com/besoeasy/open-skills /tmp/using-youtube-download && cp -r /tmp/using-youtube-download/skills/using-youtube-download ~/.claude/skills/using-youtube-downloadSKILL.md
# YouTube Download Skill Teach how to download YouTube videos as video files and MP3 audio, defaulting to highest quality. ## Prerequisites - `yt-dlp` (recommended fork of youtube-dl): https://github.com/yt-dlp/yt-dlp - `ffmpeg` (for merging/conversion) Install (Linux/macOS): ```bash python3 -m pip install -U yt-dlp # or sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp && sudo chmod a+rx /usr/local/bin/yt-dlp # ffmpeg sudo apt install ffmpeg # Debian/Ubuntu brew install ffmpeg # macOS (Homebrew) ``` Windows: use the yt-dlp.exe release and install ffmpeg for Windows. --- ## Download highest-quality video (merged MP4) This downloads the best video and best audio and merges them into an MP4 (default highest quality). ```bash yt-dlp -f "bestvideo+bestaudio/best" --merge-output-format mp4 -o "%(title)s.%(ext)s" <VIDEO_URL> ``` Notes: - `-f "bestvideo+bestaudio/best"` prefers separate best video and audio streams and falls back to the single best format. - `--merge-output-format mp4` ensures a widely compatible container. - Output template `%(title)s.%(ext)s` names the file by video title. To force a max resolution (e.g., 1080p): ```bash yt-dlp -f "bestvideo[height<=1080]+bestaudio/best" --merge-output-format mp4 -o "%(title)s.%(ext)s" <VIDEO_URL> ``` --- ## Download as MP3 (highest audio quality) Extract and convert the best available audio to MP3 (highest quality): ```bash yt-dlp -x --audio-format mp3 --audio-quality 0 -o "%(title)s.%(ext)s" <VIDEO_URL> ``` Options: - `-x` / `--extract-audio` extracts audio. - `--audio-format mp3` converts to MP3. - `--audio-quality 0` tells ffmpeg to use best VBR quality. If you prefer 320kbps constant bitrate MP3: ```bash yt-dlp -x --audio-format mp3 --postprocessor-args "-b:a 320k" -o "%(title)s.%(ext)s" <VIDEO_URL> ``` --- ## Download a playlist Download an entire playlist (preserve order): ```bash yt-dlp -f "bestvideo+bestaudio/best" --merge-output-format mp4 -o "%(playlist_index)s - %(title)s.%(ext)s" <PLAYLIST_URL> ``` To download only a single video from a playlist use `--no-playlist`. --- ## Advanced examples - Download best audio only (no conversion): ```bash yt-dlp -f bestaudio -o "%(title)s.%(ext)s" <VIDEO_URL> ``` - Download a clip by time range (requires ffmpeg post-processing): ```bash yt-dlp -f bestvideo+bestaudio --external-downloader ffmpeg --external-downloader-args "-ss 00:01:00 -to 00:02:00" -o "%(title)s.%(ext)s" <VIDEO_URL> ``` --- ## Windows PowerShell examples ```powershell . # Highest-quality video yt-dlp.exe -f "bestvideo+bestaudio/best" --merge-output-format mp4 -o "%(title)s.%(ext)s" https://www.youtube.com/watch?v=... # MP3 yt-dlp.exe -x --audio-format mp3 --audio-quality 0 -o "%(title)s.%(ext)s" https://www.youtube.com/watch?v=... ``` --- ## Notes & best practices - Respect YouTube's terms of service and copyright laws. Only download content you have rights to or permission to download. - Use `--no-overwrites` to avoid replacing existing files. - Use `--download-archive archive.txt` to avoid re-downloading previously downloaded videos when processing playlists or channels. - Use `--quiet` for scripting and check exit codes for success. - Cache and limit requests to avoid rate limits. --- This skill covers common `yt-dlp` patterns to download highest-quality video and audio (MP3). For automation, combine these commands into scripts and use environment variables for URLs and output directories.
Encrypt and decrypt files or streams using age — a simple, modern, and secure encryption tool with small explicit keys, passphrase support, SSH key support, post-quantum hybrid keys, and UNIX-style composability. No config options, no footguns.
Upload and host files anonymously using decentralized storage with Originless and IPFS.
Automate web browsers for AI agents using agent-browser CLI with deterministic element selection.
Star all repositories from a GitHub user automatically. Use when: (1) Supporting open source creators, (2) Bulk discovery of useful projects, or (3) Automating GitHub engagement.
Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.
Log all chat messages to a SQLite database for searchable history and audit. Use when: (1) Building chat history, (2) Auditing conversations, (3) Searching past messages, or (4) User asks to log chats.
Check cryptocurrency wallet balances across multiple blockchains using free public APIs.
Calculate line-of-sight and road distances between two cities using free OpenStreetMap services.