
youtube-transcribe-skill
by feiskyer
Claude Code settings, commands and agents for vibe coding
SKILL.md
name: youtube-transcribe-skill description: Extract subtitles/transcripts from YouTube videos. Triggers: "youtube transcript", "extract subtitles", "video captions", "视频字幕", "字幕提取", "YouTube转文字", "提取字幕". allowed-tools: Read, Write, Glob, Grep, Task, Bash(cat:), Bash(ls:), Bash(tree:), Bash(yt-dlp:), Bash(which:), mcp__plugin_claude-code-settings_chrome__
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
-
Verify URL Format: Confirm the input is a valid YouTube URL (supports
youtube.com/watch?v=oryoutu.be/formats). -
Get Video Information: Use WebFetch or firecrawl to fetch the page and extract the video title for subsequent file naming.
Step 2: CLI Quick Extraction (Priority Attempt)
Use command-line tools to quickly extract subtitles.
-
Check Tool Availability: Execute
which yt-dlp.- If
yt-dlpis found, proceed to subtitle download. - If
yt-dlpis NOT found, skip immediately to Step 3.
- If
-
Execute Subtitle Download (Only if
yt-dlpis found):- Tip: Always add
--cookies-from-browserto avoid sign-in restrictions. Default tochrome. - Retry Logic: If
yt-dlpfails 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.
# 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]" - Tip: Always add
-
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.
-
Check Tool Availability:
- Check if
chrome-devtools-mcptools (specificallymcp__plugin_claude-code-settings_chrome__new_page) are available. - CRITICAL CHECK: If
chrome-devtools-mcpis NOT available ANDyt-dlpwas NOT found in Step 2:- STOP execution.
- Notify the User: "Unable to proceed. Please either install
yt-dlp(for fast CLI extraction) OR configurechrome-devtools-mcp(for browser automation)."
- Check if
-
Initialize Browser Session (If tools are available):
Call
mcp__plugin_claude-code-settings_chrome__new_pageto open the video URL.
3.2 Analyze Page State
Call mcp__plugin_claude-code-settings_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.
- Search the snapshot for a button labeled "...more", "...更多", or "Show more" (usually located in the description block below the video title).
- Call
mcp__plugin_claude-code-settings_chrome__clickto click that button.
3.4 Open Transcript Panel
- Call
mcp__plugin_claude-code-settings_chrome__take_snapshotto get the updated UI snapshot. - Search for a button labeled "Show transcript", "显示转录稿", or "内容转文字".
- Call
mcp__plugin_claude-code-settings_chrome__clickto 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__plugin_claude-code-settings_chrome__evaluate_script to execute the following 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
- Use the Write tool to save the extracted text as a local file (e.g.,
<Video Title>.txt). - Call
mcp__plugin_claude-code-settings_chrome__close_pageto 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.
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 1000以上
1ヶ月以内に更新
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon

