---
name: YouTube Transcript Extraction
slug: youtube-transcript-extraction-2
category: Automation
description: YouTube Transcript Extraction saves subtitles or transcripts from YouTube URLs as normalized timestamped text files. Use it when you need video captions, transcripts, or subtitle text in a local `.txt` file.
github: "https://github.com/feiskyer/codex-settings/tree/main/skills/youtube-transcribe-skill"
language: Python
stars: 237
forks: 33
install: "npx degit https://github.com/feiskyer/codex-settings/tree/main/skills/youtube-transcribe-skill ~/.claude/skills/youtube-transcribe-skill"
installs_to: ~/.claude/skills/youtube-transcribe-skill
source_path: skills/youtube-transcribe-skill/SKILL.md
collection_size: 11
category_size: 1754
collection_url: "https://dirskills.com/collections/feiskyer/codex-settings"
added: 2026-09-03T06:04:03.446Z
last_synced: 2026-09-03T06:04:03.446Z
canonical_url: "https://dirskills.com/skills/youtube-transcript-extraction-2"
---

# YouTube Transcript Extraction

YouTube Transcript Extraction saves subtitles or transcripts from YouTube URLs as normalized timestamped text files. Use it when you need video captions, transcripts, or subtitle text in a local `.txt` file.

**Install:**

```bash
npx degit https://github.com/feiskyer/codex-settings/tree/main/skills/youtube-transcribe-skill ~/.claude/skills/youtube-transcribe-skill
```

## README

# 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
