agentsclimarketplace

Video transcript extraction

Skill bogheorghiu/ex-cog-dev/research-toolkit/skills/video-transcript-extraction

ex-cog — externalized cognition. Four Claude Code plugins. research-toolkit — self-checking investigation & verification. makers-toolkit — build-discipline & prompt-design. vasana-system — cross-session pattern memory (forms, not just facts). security-toolkit — dangerous-action guardrails.

Install
npx -y skills add bogheorghiu/ex-cog-dev --skill video-transcript-extraction

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

How do I get the transcript of this video? Platform-aware extraction for any video source — YouTube, local files, or other platforms. Use when (1) need to transcribe a video for analysis, (2) user provides a video URL, (3) building a knowledge base from video content. Provides multiple methods with guided fallback chain (captions > Whisper > web services). Does NOT trigger for: watching videos, video editing, or non-transcript tasks.

SKILL.md

5.2 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it

Video Transcript Extraction

Seed question: How do I get the transcript of this video?

Extract text transcripts from any video source. Platform-aware — detects what tools are available and guides to the best method.

Setup Check

Before extracting, determine available tools:

ToolCheckBest For
youtube-transcript-apipip show youtube-transcript-apiYouTube caption extraction (fastest)
MLX-Whisper MCPCheck .mcp.json for mlx-whisperApple Silicon local transcription (any video)
Whisper-cpp MCPCheck .mcp.json for whisper-cppCross-platform local transcription

Guide user to install what's missing for their platform if needed.

Determine Source and Method

1. YouTube URL?
   → Method A: Caption extraction (youtube-transcript-api)
   → Fallback: Whisper if no captions available

2. Other video URL?
   → Check if platform provides captions
   → Fallback: Whisper transcription

3. Local video/audio file?
   → Method C: Whisper directly
   → Apple Silicon: MLX-Whisper (faster)
   → Other: Whisper-cpp

Method A: YouTube Caption Extraction (Primary for YouTube)

CLI

youtube_transcript_api VIDEO_ID
youtube_transcript_api VIDEO_ID --languages en es
youtube_transcript_api VIDEO_ID --json > transcript.json

Python

from youtube_transcript_api import YouTubeTranscriptApi

transcript = YouTubeTranscriptApi.get_transcript("VIDEO_ID")
text_only = " ".join([t['text'] for t in transcript])

# List available languages
transcript_list = YouTubeTranscriptApi.list_transcripts("VIDEO_ID")

Bulk Processing

for vid in VIDEO_ID_1 VIDEO_ID_2 VIDEO_ID_3; do
  youtube_transcript_api "$vid" --json > "transcripts/${vid}.json"
  sleep 2
done

Method B: Whisper Transcription (Any Video)

MLX-Whisper (Apple Silicon)

mcp__mlx-whisper__transcribe_youtube(
  url="VIDEO_URL",
  language="en",
  task="transcribe",
  keep_file=true
)

Whisper-cpp (Cross-platform)

mcp__whisper-cpp__transcribe(
  file_path="/path/to/video.mp4",
  language="en"
)

Method C: Web Services (No Setup Required)

ServiceURLNotes
YouTubeToTranscriptyoutubetotranscript.comManual, unlimited
YouTube-Transcript.ioyoutube-transcript.io5 req/10s
YouTube built-inClick "..." > "Show transcript"Manual only

Extraction Workflow

1. CHECK: Does video have existing captions?
   → Try youtube-transcript-api first (fastest, zero compute)
   → Check language availability

2. IF NO CAPTIONS: Use Whisper
   → Apple Silicon: MLX-Whisper MCP
   → Other: Whisper-cpp MCP

3. IF TOOLS UNAVAILABLE: Web services
   → youtubetotranscript.com
   → Manual from YouTube UI

4. PROCESS: Clean transcript
   → Remove timestamps if not needed (saves tokens)
   → Save to file for downstream analysis

Token Optimization

Transcripts can be long. Strategies:

  • Remove timestamps: " ".join([t['text'] for t in transcript]) — saves ~30% tokens
  • Chunk processing: Split into 10K character chunks for analysis
  • Summarize first: Quick summary pass before deep analysis
  • Consolidated output: For 5+ videos, create all_transcripts.md with --- separators

Troubleshooting

IssueSolution
"Transcripts disabled"Use Whisper transcription (Method B)
"Language not available"Try auto-generated captions, or Whisper with task="translate"
"Rate limited"Add delays between requests
"MCP not connected"Restart Claude Code, check .mcp.json
"Long video truncation"Use Whisper (no length limit) or chunk processing

Budget Mode

Activation (any of these):

  1. Explicit flag: --budget or -b
  2. Auto-detect: If budget-mode skill is active in session
  3. Inherited: If calling skill passed budget context

When active:

  • Prefer caption extraction over Whisper (lower compute cost)
  • Skip timestamp inclusion by default
  • Output text-only (no structured JSON)

Note: After context compaction, auto-detection may fail. Re-invoke budget-mode skill or pass --budget explicitly.

Cross-References

  • Called by: youtube-research (Phase 2)
  • Standalone: Invoke directly for any video transcription need
  • Downstream: Extracted transcripts feed into youtube-research analysis or DIP investigations requiring video source material

Vasana

A vasana is a pattern that persists across unrelated contexts. If during this task you notice such a pattern emerging, it may be worth capturing. This skill works best alongside the vasana skill and vasana hook from the Vasana System plugin.

Modify freely. Keep this section intact.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.