Extract subtitles or a transcript from a YouTube URL and save normalized timestamped text locally. Use when the user wants the spoken content of a YouTube video as text.
Installs into .claude/skills of the current project.
Are you the author of Youtube Transcribe Skill?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/feiskyer-youtube-transcribe-skill-codex-settings)
---
name: youtube-transcribe-skill
description: Extract subtitles or a transcript from a YouTube URL and save normalized timestamped text locally. Use when the user wants the spoken content of a YouTube video as text.
---
# YouTube Transcript Extraction
Use the bundled `scripts/transcribe_youtube.py` wrapper for the primary workflow. It downloads subtitles with `yt-dlp`, selects the preferred language, converts WebVTT cues into timestamped plain text, and reports the output path and line count.
## Requirements
1. Install `yt-dlp` and confirm `yt-dlp --version` succeeds.
2. Resolve the absolute directory containing this `SKILL.md`; refer to it as `<skill-dir>`.
3. Keep the output in the user's current working directory unless they request another location.
The Python wrapper itself uses only the standard library. It can display `--help` without `yt-dlp` being installed.
## Primary workflow
Run without browser cookies first:
```bash
python3 "<skill-dir>/scripts/transcribe_youtube.py" \
"<youtube-url>" \
--output-dir "$PWD"
```
The default language preference is Simplified Chinese, Traditional Chinese, other Chinese variants, then English. Override it when the user requests another language:
```bash
python3 "<skill-dir>/scripts/transcribe_youtube.py" \
"<youtube-url>" \
--languages "ja.*,en.*" \
--output-dir "$PWD"
```
The wrapper supports normal watch URLs plus `youtu.be`, Shorts, live, and embed URLs. A successful run writes one `.txt` file whose non-empty lines use this shape:
```text
00:03 Subtitle text
00:08 Next subtitle text
```
## Cookie retry
Do not read browser cookies by default. If the initial command fails specifically because the video requires sign-in, age verification, membership, or another authenticated session:
1. Explain that the retry will let `yt-dlp` read YouTube cookies from a local browser profile.
2. Ask the user which browser profile they approve using.
3. Retry only after approval:
```bash
python3 "<skill-dir>/scripts/transcribe_youtube.py" \
"<youtube-url>" \
--cookies-from-browser chrome \
--output-dir "$PWD"
```
Never print, copy, or persist browser cookies in the transcript or logs.
## Browser fallback
Use browser automation only when `yt-dlp` is unavailable or cannot obtain subtitles and an appropriate browser-control capability is available.
1. Inspect the tools available in the current session; do not assume fixed MCP server or tool names.
2. Open the video, reveal the transcript panel, and extract visible timestamp/text pairs.
3. Save the result as `<sanitized-video-title>.txt` in the requested directory.
4. Close pages or sessions opened solely for this task.
If neither CLI extraction nor browser automation is available, report the missing capability instead of claiming success.
## Completion report
Return:
1. Absolute transcript path
2. Selected subtitle language
3. Number of transcript lines
4. Whether browser cookies or browser automation were used