Skip to content
Back to skills

Youtube Transcribe Skill

ASecurity

Extract subtitles/transcripts from a YouTube video URL and save as a local file. Use when you need to extract subtitles from a YouTube video.

  • 4 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 10, 2026
toolsjavascriptjavabash

Works with

  • cli
  • mcp

Security analysis

A100/100

Scanned September 10, 2026

npx -y skills add micsapp/micstec-skills --skill youtube-transcribe-skill --agent claude-code

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.

Security grade badge for Youtube Transcribe Skill
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/micsapp-youtube-transcribe-skill/badge)](https://www.skillsdirectory.com/skills/micsapp-youtube-transcribe-skill)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: youtube-transcribe-skill
description: 'Extract subtitles/transcripts from a YouTube video URL and save as a local file. Use when you need to extract subtitles from a YouTube video.'
---

# YouTube Transcript Extraction

Extract subtitles/transcripts from a YouTube video URL and save them as a local file.

Input YouTube URL: $ARGUMENTS

## Step 1: Verify URL and Get Video Information

1. **Verify URL Format**: Confirm the input is a valid YouTube URL (supports `youtube.com/watch?v=` or `youtu.be/` formats).

2. **Get Video Information**:
   - If `yt-dlp` is available, prefer `yt-dlp --get-title "[VIDEO_URL]"`.
   - If using browser automation, extract the title from the page (via snapshot or `document.title`) for file naming.

## Step 2: CLI Quick Extraction (Priority Attempt)

Use command-line tools to quickly extract subtitles.

1. **Check Tool Availability**:
   Execute `which yt-dlp`.

   - If `yt-dlp` is **found**, proceed to subtitle download.
   - If `yt-dlp` is **NOT found**, skip immediately to **Step 3**.

2. **Execute Subtitle Download** (Only if `yt-dlp` is found):

   - **Tip**: Always add `--cookies-from-browser` to avoid sign-in restrictions. Default to `chrome`.
   - **Retry Logic**: If `yt-dlp` fails with a browser error (e.g., "Could not open Chrome"), ask the user to specify their available browser (e.g., `firefox`, `safari`, `edge`) and retry.

   ```bash
   # Get the title first (try chrome first)
   yt-dlp --cookies-from-browser=chrome --get-title "[VIDEO_URL]"

   # Download subtitles
   yt-dlp --cookies-from-browser=chrome --write-auto-sub --write-sub --sub-lang zh-Hans,zh-Hant,en --skip-download --output "<Video Title>.%(ext)s" "[VIDEO_URL]"
   ```

3. **Verify Results**:
   - Check the command exit code.
   - **Exit code 0 (Success)**: Subtitles have been saved locally, task complete.
   - **Exit code non-0 (Failure)**:
     - If error is related to browser/cookies, ask user for correct browser and retry Step 2.
     - If other errors (e.g., video unavailable), proceed to **Step 3**.

## Step 3: Browser Automation (Fallback)

When the CLI method fails or `yt-dlp` is missing, use browser UI automation to extract subtitles.

1. **Check Tool Availability**:

   - Check if `chrome-devtools-mcp` tools (specifically `mcp__chrome__new_page`) are available.
   - **CRITICAL CHECK**: If `chrome-devtools-mcp` is **NOT** available AND `yt-dlp` was **NOT** found in Step 2:
     - **STOP** execution.
     - **Notify the User**: "Unable to proceed. Please either install `yt-dlp` (for fast CLI extraction) OR configure `chrome-devtools-mcp` (for browser automation)."

2. **Initialize Browser Session** (If tools are available):

   Call `mcp__chrome__new_page` to open the video URL.

### 3.2 Analyze Page State

Call `mcp__chrome__take_snapshot` to read the page accessibility tree.

### 3.3 Expand Video Description

_Reason: The "Show transcript" button is usually hidden within the collapsed description area._

1. Search the snapshot for a button labeled **"...more"**, **"...更多"**, or **"Show more"** (usually located in the description block below the video title).
2. Call `mcp__chrome__click` to click that button.

### 3.4 Open Transcript Panel

1. Call `mcp__chrome__take_snapshot` to get the updated UI snapshot.
2. Search for a button labeled **"Show transcript"**, **"显示转录稿"**, or **"内容转文字"**.
3. Call `mcp__chrome__click` to click that button.

### 3.5 Extract Content via DOM

_Reason: Directly reading the accessibility tree for long lists is slow and consumes many tokens; DOM injection is more efficient._

Call `mcp__chrome__evaluate_script` to execute the following JavaScript:

```javascript
() => {
  // Select all transcript segment containers
  const segments = document.querySelectorAll("ytd-transcript-segment-renderer");
  if (!segments.length) return "BUFFERING"; // Retry if empty

  // Iterate and format as "timestamp text"
  return Array.from(segments)
    .map((seg) => {
      const time = seg.querySelector(".segment-timestamp")?.innerText.trim();
      const text = seg.querySelector(".segment-text")?.innerText.trim();
      return `${time} ${text}`;
    })
    .join("\n");
};
```

If it returns "BUFFERING", wait a few seconds and retry.

### 3.6 Save and Cleanup

1. Use the Write tool to save the extracted text as a local file (e.g., `<Video Title>.txt`).
2. Call `mcp__chrome__close_page` to release resources.

## Output Requirements

- Save the subtitle file to the current working directory.
- Filename format: `<Video Title>.txt`
- File content format: Each line should be `Timestamp Subtitle Text`.
- Report upon completion: File path, subtitle language, total number of lines.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.