video-transcript-downloader — Claude Code skill: transcripts
Turns a video into a clean paragraph of text, or downloads the video, audio track or subtitles through yt-dlp. Useful when you would rather skim a talk than watch it.
npx skills add steipete/agent-scripts --skill video-transcript-downloader -a claude-codeWhat video-transcript-downloader does
The skill ships a single script, scripts/vtd.js, that the agent calls with a subcommand. Transcripts come out as one paragraph by default; add --timestamps to keep timing, add --keep-brackets to keep cues like [Music]. On YouTube it first tries youtube-transcript-plus, and falls back to pulling subtitles with yt-dlp and flattening them into prose.
The other subcommands are download, audio, subs and formats. formats lists format ids, resolution and container, so you can pick before committing to a download. Anything after -- goes straight to yt-dlp, which is how --remux-video mp4 wraps the result in mp4 without re-encoding.
Run npm ci inside the skill folder once before the first call. The script needs yt-dlp and ffmpeg on the machine; on macOS brew install yt-dlp ffmpeg covers both. Subcommand help works without a link, so ./scripts/vtd.js transcript --help is the fastest way to see the flags.
What it helps with
- read a recorded talk as plain text
- pull the audio track out for transcription
- download subtitles in one language
- flatten a transcript into one paragraph without timestamps
- inspect available formats before choosing one
Example prompts for the agent
- Pull the transcript from this video and give it to me as one paragraph
- Download the audio from that link into ~/Downloads
- List the formats for this video, I want to pick one
How to install video-transcript-downloader
1Skills CLI (Vercel)
npx skills add steipete/agent-scripts --skill video-transcript-downloader -a claude-code2Manually: put the files in place
~/.claude/skills/video-transcript-downloader/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/video-transcript-downloader/
1Skills CLI (Vercel)
npx skills add steipete/agent-scripts --skill video-transcript-downloader -a codex2Manually: put the files in place
.agents/skills/video-transcript-downloader/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add steipete/agent-scripts --skill video-transcript-downloader -a cursor2Manually: put the files in place
.cursor/skills/video-transcript-downloader/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install steipete/agent-scripts video-transcript-downloader2Manually: put the files in place
.github/skills/video-transcript-downloader/SKILL.md1Skills CLI (Vercel)
npx skills add steipete/agent-scripts --skill video-transcript-downloader -a gemini-cli2Platform CLI
gemini skills install https://github.com/steipete/agent-scripts --path skills/video-transcript-downloaderManually: put the files in place
.devin/skills/video-transcript-downloader/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add steipete/agent-scripts --skill video-transcript-downloader -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about video-transcript-downloader
How do I install video-transcript-downloader in Claude Code?
Run npx skills add steipete/agent-scripts --skill video-transcript-downloader -a claude-code. The skill lands at ~/.claude/skills/video-transcript-downloader/SKILL.md; then run npm ci inside that folder.
What does video-transcript-downloader do?
It prints a video transcript as a single paragraph, or downloads the video, audio or subtitle files. Both paths go through scripts/vtd.js with different subcommands.
Does it need anything installed first?
yt-dlp and ffmpeg. The script shells out to them for subtitles and for downloads, so a missing binary breaks the run.
Source text
SKILL.md · MIT
--- name: video-transcript-downloader description: "yt-dlp downloads: video, audio, subtitles, transcripts, clips, playlists." --- # Video Transcript Downloader `./scripts/vtd.js` can: - Print a transcript as a clean paragraph (timestamps optional). - Download video/audio/subtitles. Transcript behavior: - YouTube: fetch via `youtube-transcript-plus` when possible. - Otherwise: pull subtitles via `yt-dlp`, then clean into a paragraph. ## Setup ```bash cd ~/Projects/agent-scripts/skills/video-transcript-downloader && npm ci ``` CLI syntax: ```bash ./scripts/vtd.js --help ./scripts/vtd.js transcript --help ``` Subcommands support focused help without requiring `--url`. ## Transcript (default: clean paragraph) ```bash ./scripts/vtd.js transcript --url 'https://…' ./scripts/vtd.js transcript --url 'https://…' --lang en ./scripts/vtd.js transcript --url 'https://…' --timestamps ./scripts/vtd.js transcript --url 'https://…' --keep-brackets ``` ## Download video / audio / subtitles ```bash ./scripts/vtd.js download --url 'https://…' --output-dir ~/Downloads ./scripts/vtd.js audio --url 'https://…' --output-dir ~/Downloads ./scripts/vtd.js subs --url 'https://…' --output-dir ~/Downloads --lang en ``` ## Formats (list + choose) List available formats (format ids, resolution, container, audio-only, etc): ```bash ./scripts/vtd.js formats --url 'https://…' ``` Download a specific format id (example): ```bash ./scripts/vtd.js download --url 'https://…' --output-dir ~/Downloads -- --format 137+140 ``` Prefer MP4 container without re-encoding (remux when possible): ```bash ./scripts/vtd.js download --url 'https://…' --output-dir ~/Downloads -- --remux-video mp4 ``` ## Notes - Default transcript output is a single paragraph. Use `--timestamps` only when asked. - Bracketed cues like `[Music]` are stripped by default; keep them via `--keep-brackets`. - Pass extra `yt-dlp` args after `--` for `transcript` fallback, `download`, `audio`, `subs`, `formats`. ```bash ./scripts/vtd.js formats --url 'https://…' -- -v ``` ## Troubleshooting (only when needed) - Missing `yt-dlp` / `ffmpeg`: ```bash brew install yt-dlp ffmpeg ``` - Verify: ```bash yt-dlp --version ffmpeg -version | head -n 1 ```
© steipete · MIT · steipete/agent-scripts