Agent skill
youtube-transcribe-skill
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.
Install this agent skill to your Project
npx add-skill https://github.com/billlzzz18/bl1nk-skill-platform/tree/main/plugins/youtube-transcribe-skill/skills/youtube-transcribe-skill
SKILL.md
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.
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]" - 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.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
file-organizer
Intelligently organizes your files and folders across your computer by understanding context, finding duplicates, suggesting better structures, and automating cleanup tasks. Reduces cognitive load and keeps your digital workspace tidy without manual effort.
notion-knowledge-capture
Skill description
notion-knowledge-capture
Transforms conversations and discussions into structured documentation pages in Notion. Captures insights, decisions, and knowledge from chat context, formats appropriately, and saves to wikis or databases with proper organization and linking for easy discovery.
meeting-insights-analyzer
Analyzes meeting transcripts and recordings to uncover behavioral patterns, communication insights, and actionable feedback. Identifies when you avoid conflict, use filler words, dominate conversations, or miss opportunities to listen. Perfect for professionals seeking to improve their communication and leadership skills.
skill-share
A skill that creates new Claude skills and automatically shares them on Slack using Rube for seamless team collaboration and skill discovery.
internal-comms
A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).
Didn't find tool you were looking for?