Transcribes videos from YouTube, Facebook, Instagram, TikTok, and other platforms to clean markdown text. Uses a 3-tier strategy: YouTube caption API (fastest), yt-dlp subtitle extraction (any platform with captions), and Whisper fallback (universal). Use this skill whenever the user wants to: transcribe a video, get text from a YouTube/Facebook/ Instagram/TikTok video, extract captions or subtitles, convert a video to text, get a transcript, or turn a video into readable text. Also triggers on phrases like "what did they say in this video", "summarize this video" (transcribe first, then summarize), or any request involving video URLs where the user needs the spoken content as text.
Transcribes videos from YouTube, Facebook, and other platforms to markdown text.
The skill uses a three-tier approach:
Tier 1 — YouTube caption API (youtube-transcript-api): Fetches the same captions
you see in YouTube's "Show transcript" panel. Works for ~95% of public YouTube videos.
Takes about 2 seconds. YouTube only.
Tier 2 — yt-dlp subtitle extraction: Extracts captions from any platform (Facebook,
Instagram, TikTok, Twitter, etc.) using yt-dlp --write-auto-sub --skip-download.
No video download needed. Takes 3-5 seconds. Works on any platform where captions exist.
Tier 3 — Audio extraction + Whisper: Downloads just the audio track via yt-dlp,
then transcribes locally using OpenAI's Whisper. Slower but works on any video with audio,
even without captions. Universal fallback.
Platform support: YouTube, Facebook (videos + reels), Instagram, TikTok, Twitter/X, and any of the 1000+ sites supported by yt-dlp.
After output (DETECT):
Invoke /fact-checker to verify names, institutions, and legislation references.
For transcripts, verify all person names against ~/.claude/skills/bangsamoro/references/barmm-officials-2025-2026.md.
Before publishing (CONFIRM): Present verification results to the user.
The transcribe script handles dependency checking and will tell you what's missing. The required tools:
# Primary (required)
pip3 install youtube-transcript-api
# Fallback (optional — only needed for videos without YouTube captions)
brew install yt-dlp # or: pip3 install yt-dlp
pip3 install openai-whisper # requires ffmpeg: brew install ffmpeg
Run the transcription script from this skill's directory:
SKILL_DIR="/Users/saidamenmambayao/.claude/skills/youtube"
"$SKILL_DIR/venv/bin/python3" "$SKILL_DIR/scripts/transcribe.py" [OPTIONS] URL [URL ...]
| Flag | Description | Default |
|---|---|---|
--lang LANG | Preferred transcript language (ISO code) | en |
--output PATH | Save transcript to file instead of stdout | stdout |
--fallback | Enable Whisper fallback for videos without captions | Off |
--whisper-model | Whisper model size: tiny, base, small, medium, large | base |
# Basic transcription
python3 scripts/transcribe.py "https://youtube.com/watch?v=abc123"
# Filipino language transcript
python3 scripts/transcribe.py --lang fil "https://youtube.com/watch?v=abc123"
# Save to file
python3 scripts/transcribe.py --output transcript.md "https://youtube.com/watch?v=abc123"
# With Whisper fallback enabled
python3 scripts/transcribe.py --fallback "https://youtube.com/watch?v=abc123"
# Batch — multiple videos
python3 scripts/transcribe.py URL1 URL2 URL3
# Batch — save each to separate files
python3 scripts/transcribe.py --output transcripts/ URL1 URL2 URL3
The final document has THREE sections:
Organized Notes (top) — A detailed, AI-generated summary organized by topic with bold section headers and clean prose. NO timestamps in this section. Claude generates this AFTER transcription by reading the Transcript section.
What This Means for Your Work (middle) — A personalized evaluation of how the video's
knowledge applies to the user's actual work. Before writing this section, read
~/Vault/about-saidamen.md for the user's full profile — roles, projects, competencies,
and what drives the work. Reference specific projects, roles, and initiatives from the
profile (not generic advice). Analytical and actionable — not a summary, but an assessment
of what changes, validates, or challenges the user's current approach. Include concrete
next steps tied to specific projects or workflows the user actually has.
Required subsection — "How This Can Improve Your Claude Skills and Workflows":
After the main analysis, add an ### How This Can Improve Your Claude Skills and Workflows
subsection. This evaluates how the video's ideas could enhance, refine, or challenge the
user's existing Claude Code skill system and AI-augmented workflows. Before writing, consult
~/Vault/Claude-Skills/index.md for the full 124-skill library and ~/Vault/about-saidamen.md
for the user's Claude Code setup (129 skills, Obsidian vault memory, NotebookLM integration,
parallel agents, frontend-first development, fact-checking pipeline).
Reference specific skills and projects by name. The subsection should cover any combination of:
Keep it analytical and specific — name the skills, name the projects, describe the concrete change. No generic "this could improve your workflow" statements.
# Video Title
**Channel**: Channel Name
**Duration**: 12:34
**Language**: English (auto-generated)
**URL**: https://youtube.com/watch?v=abc123
---
## Organized Notes
**Introduction**
- Key idea expressed as a **concise bullet** with bold keywords
- Another key point with **specific examples** preserved
**Key Concept Name**
- Main idea of this concept in a **scannable bullet**
- Steps or sub-points as a **numbered list**:
1. First step
2. Second step
- Takeaway: **bold the key insight**
**Another Topic**
- More key ideas as **bullets, not paragraphs**
---
## What This Means for Your Work
Personalized evaluation of how this video's knowledge applies to the user's
specific work context. Analytical, not summary. Includes concrete next steps.
### How This Can Improve Your Claude Skills and Workflows
Specific analysis of how the video's ideas map to existing skills (by name),
active projects, and AI-augmented workflows. References skills from
~/Vault/Claude-Skills/index.md and projects from ~/Vault/about-saidamen.md.
---
## Transcript
[00:00] Complete sentences grouped into idea-sized paragraphs.
Multiple caption fragments are merged into coherent blocks.
[00:13] Another complete idea with its own timestamp. Each block
represents a logical thought, not a raw caption segment.
When the user provides a YouTube URL:
Duplicate check: Before transcribing, extract the video ID from the URL and grep
docs/video-transcripts/index.md for it. The index is a markdown file with tables
organized by topic subfolder, where each row has | VIDEO_ID | Title | Filename |.
grep "VIDEO_ID" docs/video-transcripts/index.md
youtube.com/watch?v=VIDEO_ID or youtu.be/VIDEO_IDRun the transcribe script with the user's URL and any preferences (language, output path). The script produces the metadata header + placeholder Organized Notes + idea-grouped Transcript.
Generate Organized Notes: After the script saves the file, read the Transcript section
and generate the Organized Notes to replace the <!-- PLACEHOLDER --> comment. Follow these rules:
[Translation: O Allah, guide our leaders...])/guide-drafter {topic-folder} {new-transcript-path}
The guide-drafter reads the existing GUIDE, determines what the new transcript adds (new patterns or new evidence for existing patterns), updates with proper Chicago/Turabian footnote citations, and saves to both repo and vault. If no GUIDE exists yet for this topic group, guide-drafter runs in CREATE mode to generate one from scratch.
| Error | What happens |
|---|---|
| No captions available | Reports the issue; suggests --fallback to use Whisper |
| Private/age-restricted video | Reports access error; suggests the user try a different URL |
| Invalid URL | Reports the error with the problematic URL |
| Missing dependencies | Lists exactly what to install |
| Whisper not installed (fallback requested) | Gives install command |
--lang with the video's language code firstbase Whisper model is a good balance of speed and accuracy for the fallback--output transcripts/ creates one .md file per video, named after the video titleTranscript (bottom) — Verbatim [MM:SS] timestamped idea-grouped paragraphs, produced
by the script. Each timestamp marks a complete idea (a sentence or paragraph), not a raw
caption fragment.
*Quotable Quotes:**Quotable Quotes:*
> "Standalone complete quote here." [MM:SS]
If transcription fails and --fallback is not set, suggest re-running with --fallback
Save the output to the appropriate subfolder in docs/video-transcripts/:
File naming convention: YYMMDD-HHMM-slugified-title.md
YYMMDD = transcription date (from the **Transcribed** metadata line)HHMM = transcription time (24h format, from the **Transcribed** metadata line)slugified-title = video title in lowercase, spaces replaced with hyphens, special chars removed260323-0155-stop-fixing-your-claude-skills-autoresearch-does-it-for-you.mdSubfolder routing — choose the BEST match, not just "ai-engineering" for everything:
Save full transcript to vault: Copy the complete transcript file to
~/Vault/transcripts/{topic}/yymmdd-hhmm-slugified-title.md where {topic} mirrors
the transcript subfolder routing. Create the subfolder if it doesn't exist yet.
This is an exact copy of the file saved in step 4 — same content, same filename.
Save vault knowledge note: After generating Organized Notes, create a condensed
knowledge note at ~/Vault/knowledge-areas/{topic}/yymmdd-short-title.md where {topic}
mirrors the transcript subfolder (e.g., ai-design/, ai-engineering/, lean-startup/business-model/).
Create the subfolder if it doesn't exist yet.
The note should contain:
Important: Do NOT save to ~/Vault/research/ — that folder is reserved for
/deep-research, /notebooklm, and Claude Cowork outputs.
Update knowledge area index.md: After saving the knowledge note, update the topic's
~/Vault/knowledge-areas/{topic}/index.md living document:
a. If the index.md doesn't exist yet, create it with the standard 3-section format:
b. If it exists, update all 3 sections:
Incorporate new insights into the Executive Summary (don't just append — synthesize)
Reassess What It Means For You if new insights change the calculus
Append a new row to the Change Log table
Update the updated: and sources: count in YAML frontmatter
ai-claude-code/ — Claude Code CLI, skills, agent teams, Obsidian+Code, NotebookLM+Code, CLAUDE.md, Karpathy agents
ai-claude-cowork/ — Claude Cowork (Desktop), plugins, scheduled tasks, MCP connectors, non-developer AI workflows
ai-design/ — AI design tools (Stitch, v0, Bolt), vibe design, UI generation, Figma AI
lean-startup/business-model/ — Lean Canvas, business plans, pricing, product-market fit
lean-startup/mvp-and-validation/ — MVP strategy, experiments, testing ideas
lean-startup/sales-and-growth/ — selling, customers, metrics, content strategy
lean-startup/founder-mindset/ — lessons, mindset, competition, founder stories
lean-startup/startup-strategy/ — frameworks, launch blueprints, startup playbooks
Create a new subfolder if the topic doesn't fit existing categories
Choose the BEST match — don't default to ai-engineering for everything AI-related
Update transcript index: After saving the transcript, add a new row to the appropriate
topic table in docs/video-transcripts/index.md. Each table has columns:
| Video ID | Title | File |. Also update the Total count at the top of the file.
If the topic subfolder doesn't have a section in the index yet, create one.
Fact-check the output. Run /fact-checker on the saved transcript file. Whisper and
auto-captions routinely garble names, titles, and organizations — especially Filipino Muslim
names in Bangsamoro content. The fact-checker verifies all people, titles, legislation
references, and organizations against local reference files and web sources.
Update the topic GUIDE. Invoke /guide-drafter in UPDATE mode to incrementally update
the topic group's application guide with insights from the new transcript. Pass the topic
folder and new transcript path: