Video Transcript
Documentsvideo-transcriptVideo Transcript is an Agent Skill for documents published in the majiayu000/claude-skill-registry repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.
Extract video transcripts: yt-dlp subtitles to clean paragraphs.
How to use this skill
Bring this guide into your coding agent with a prompt tailored to the tool you use.
- Open your project in Codex.
- Copy and paste the prompt below.
- Review files and risks before approving any action.
Inspect the Agent Skill at https://github.com/majiayu000/claude-skill-registry/blob/HEAD/skills/bash/video-transcript/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/video-transcript, but wait for my approval before writing files or running scripts.
Copying this prompt does not install or run the skill. Review third-party files before use.
Video Transcript
Pull a video's transcript as readable paragraphs. Two paths, in order:
Path 1 — uploader subtitles (accurate, prefer when present):
yt-dlp --skip-download --write-subs --sub-langs en --sub-format vtt \
-o '<work-dir>/%(id)s' '<URL>'
Path 2 — auto-generated captions (fallback when path 1 writes no file):
yt-dlp --skip-download --write-auto-subs --sub-langs en --sub-format vtt \
-o '<work-dir>/%(id)s' '<URL>'
Then clean the VTT into paragraphs:
python3 skills/research/video-transcript/scripts/vtt_to_paragraph.py <work-dir>/<id>.en.vtt
Default output is plain paragraph text with [Music]-style cues stripped and the rolling duplicates of auto-captions deduplicated. Use --timestamps for [mm:ss] markers, --keep-brackets to keep cue tags, -o FILE to write to a file.
For other languages, change --sub-langs (e.g. de, en.*). List what a video offers with yt-dlp --list-subs '<URL>'.
Error handling
Both paths write no .vtt file
Cause: video has no subtitles or captions in the requested language.
Solution: run yt-dlp --list-subs '<URL>' and pick an available language; if none exist, report that and offer audio transcription via the markdown-converter skill on a downloaded audio file.
HTTP 429 / "Sign in to confirm"
Cause: platform rate-limiting the host.
Solution: wait and retry with --sleep-requests 2; keep request volume low.
Cleaner output repeats lines
Cause: VTT came from a third path (e.g. translated captions) with cue formats the dedupe misses.
Solution: rerun the cleaner; if repeats remain, file the sample VTT alongside a fix to vtt_to_paragraph.py.