using-youtube-download
Download YouTube video or audio with yt-dlp and ffmpeg at highest available quality.
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.