Format YouTube transcripts into Markdown artifacts using yt-dlp with author chapters and resilient fallback providers
You are using the YouTube Transcript (yt-dlp) Formatting skill.
Goal: produce a clean markdown transcript artifact in the established youtube-transcripts format.
Invoke this skill when the user requests:
/yt-transcript <URL>/yt-transcript <URL> output to <directory>/yt-transcript <URL> --no-chaptersThe script is the deterministic engine. The agent orchestrates:
The script handles extraction, fallback logic, formatting, and file writes. The script also auto-generates canonical filenames when given a directory target.
Install dependencies into the same Python interpreter used to run the script. Python 3.10+ is required.
python -m pip install "yt-dlp[default]"
py -m pip install "yt-dlp[default]"
Optional fallback dependencies:
youtube-transcript-apiopenai-whisperffmpegExample install:
python -m pip install youtube-transcript-api openai-whisper
If your default python is older, create a venv with Python 3.10+ first:
/opt/homebrew/bin/python3.13 -m venv .venv
.venv/bin/python -m pip install "yt-dlp[default]" youtube-transcript-api
youtube-transcripts/ directory in the current workspace context.Default behavior: pass an output directory and let the script generate:
YYYY-MM-DD_identifier_topic-keywords.md
Only pass an explicit .md file path when the user explicitly requests a custom filename.
Default invocation is English subtitle-first.
Available flags:
--no-chapters: force flat transcript body--lang <code>: preferred subtitle language (default en)--proxy <url>: global proxy for yt-dlp requests--http-proxy <url>: HTTP proxy override for transcript API fallback--https-proxy <url>: HTTPS proxy override for transcript API fallback--cookies <file>: Netscape-format cookie file for yt-dlp--cookies-from-browser <spec>: browser cookie import for yt-dlp--yt-impersonate <client[:os]>: yt-dlp impersonation target--asr-fallback: use Whisper fallback if subtitle providers fail--asr-model <name>: Whisper model (default small)--no-artifact-on-failure: fail hard instead of writing fallback artifactBefore execution, show:
Wait for user confirmation.
Use absolute paths and quote arguments.
Linux/macOS example:
python "/full/path/to/yt-transcript/script" "https://www.youtube.com/watch?v=VIDEO_ID" "/full/path/to/youtube-transcripts"
Windows example:
py "C:\path\to\yt-transcript\script" "https://www.youtube.com/watch?v=VIDEO_ID" "C:\path\to\youtube-transcripts"
With fallbacks:
python "/full/path/to/yt-transcript/script" "URL" "/full/path/to/youtube-transcripts" --cookies-from-browser "chrome" --proxy "socks5://127.0.0.1:1080" --asr-fallback
On success:
If fallback artifact was written (extraction failed but file created):
The generated markdown artifact should follow this shape:
# <title>**Source:** ...**Speaker/Channel:** ...**Published:** ...**Duration:** ...**Type:** Video Transcript**Summary:** ...**Topics:** ...**Chapters:** list-----no-chapters)Common failures and responses:
yt-dlp missing in active interpreter -> provide interpreter-specific install commandyt-dlp-ejs messages -> recommend yt-dlp[default] + runtime installyoutube-transcript-api is installed, then rerun--asr-fallback--proxy, --http-proxy, --https-proxy)--cookies or --cookies-from-browserGenerate or edit images via Gemini 3 Pro Image (Nano Banana Pro).
Batch-generate images via OpenAI Images API. Random prompt sampler + `index.html` gallery.
Generate spectrograms and feature-panel visualizations from audio with the songsee CLI.
Extract frames or short clips from videos using ffmpeg.
Search GIF providers with CLI/TUI, download results, and extract stills/sheets.
Category:media-generate