Download videos, audio, and transcripts from YouTube and 1000+ sites with yt-dlp. Use when the user mentions "yt-dlp", "youtube-dl", wants to download a video, rip audio from a video, or extract a transcript from a URL.
96
96%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Advisory
Suggest reviewing before use
$ACTION, remainder as $URL.$ACTION matches one of the actions, follow the action's instructions.$ACTION is empty or does not match an action, list the available actions.Important: downloads are saved to <cwd>/.ai/yt-dlp (current working directory) unless the user specifies another path.
Available scripts:
scripts/strip-transcript.mjs — Transcript utilityDownload a video at the best available quality.
yt-dlp --restrict-filenames -P <yt-dlp-download-folder> -o "%(title)s.%(ext)s" <url>Common variants:
yt-dlp --restrict-filenames -P <yt-dlp-download-folder> -o "%(title)s.%(ext)s" \
-f "bv*[height<=1080]+ba/b[height<=1080]" --merge-output-format mp4 <url>yt-dlp -F <url>,
then pick by id: yt-dlp -f 137+140 <url>.--playlist-items 1-5.--continue --no-overwrites (default behavior is fine for most cases).Extract audio only — strips the video stream.
yt-dlp -x --audio-format mp3 --audio-quality 0 --restrict-filenames -P <yt-dlp-download-folder> -o "%(title)s.%(ext)s" <url>--audio-format accepts mp3, m4a, opus, flac, wav, aac, vorbis.--audio-quality 0 means best VBR; use 192K for a fixed bitrate.--embed-thumbnail --add-metadata.-o "%(playlist_title)s/%(playlist_index)02d - %(title)s.%(ext)s".Download subtitles for a video and produce a clean plain-text transcript. Default to English unless the user specifies a language.
Download subs directly into <yt-dlp-download-folder> with --restrict-filenames so the
sub file has a safe basename we can reuse for the transcript:
yt-dlp --skip-download --write-subs --write-auto-subs --sub-langs "en" --sub-format "vtt/srt/best" --restrict-filenames -P <yt-dlp-download-folder> -o "%(title)s.%(ext)s" <url>en) over wildcards (en.*) — YouTube
exposes en, en-en, and en-orig auto-caption tracks and a wildcard
downloads all three.yt-dlp --list-subs <url>.--sub-langs "en,it,fr".--convert-subs srt.Find the sub and run the stripper with --in-place. The script writes the
transcript alongside the source (stripping a trailing BCP-47 language tag
like .en, .pt-BR, .zh-Hant from the filename), deletes the subtitle,
and prints the new path. Use find rather than a glob — zsh errors on
unmatched patterns (e.g. no .srt present):
SUB=$(find <yt-dlp-download-folder> -maxdepth 1 \( -name '*.vtt' -o -name '*.srt' \) | head -n1)
OUT=$(node scripts/strip-transcript.mjs --in-place "$SUB")The script auto-detects VTT vs SRT, removes cue numbers, timestamp lines,
inline timing tags (<00:00:01.000>), and dedupes the rolling lines that
YouTube auto-captions emit. When reading from stdin it defaults to VTT; for
SRT from stdin pass --format srt.
If the user explicitly asked for the raw subtitle file (e.g. for a video
editor), drop --in-place and redirect stdout to a .txt yourself so the
.vtt/.srt is preserved.
Show the user the path in $OUT and offer to summarize the transcript.
--cookies-from-browser <browser>
(e.g. safari, chrome, firefox) to use the user's logged-in session.--sleep-requests 1 --sleep-interval 5 --max-sleep-interval 15."<url>" to avoid
& query-string surprises.3c16e2d
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.