From transcribe
Fetch a spoken-word transcript from a video URL. Supports YouTube, YouTube Shorts, Instagram posts/Reels, TikTok, and Threads. Use whenever you need the words said in a video — for research, summarization, or analysis. Invoke with /transcribe:transcribe <url> or from Bash as `transcribe <url>`.
How this skill is triggered — by the user, by Claude, or both
Slash command
/transcribe:transcribe <video-url> [--json]<video-url> [--json]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Fetch a spoken-word transcript from a video URL. YouTube URLs try the uploader's captions first (seconds, no model download). Everything else — and YouTube videos without captions — falls through to audio extraction + mlx-whisper on Apple Silicon, with a headless-Playwright fallback for Threads and other yt-dlp-unsupported platforms.
Fetch a spoken-word transcript from a video URL. YouTube URLs try the uploader's captions first (seconds, no model download). Everything else — and YouTube videos without captions — falls through to audio extraction + mlx-whisper on Apple Silicon, with a headless-Playwright fallback for Threads and other yt-dlp-unsupported platforms.
From the Bash tool:
transcribe <url> # default: captions-first for YouTube, whisper otherwise
transcribe <url> --json
transcribe <url> --force-whisper # skip YouTube captions, always run whisper
The transcribe executable is on PATH once the plugin is installed.
From another skill, use the Skill tool:
Skill({ skill: "transcribe:transcribe", args: "<url>" })
Default (markdown):
# {title}
**Source:** {url}
**Platform:** {YouTube|Instagram|TikTok|Threads}
**Duration:** {mm:ss or "unknown"}
**Model:** mlx-community/whisper-large-v3-mlx
{transcript}
With --json: structured object with title, url, platform, duration_seconds, model, tier (youtube-captions-manual, youtube-captions-auto, ytdlp, or playwright), text, and segments[] with timestamps. The captions tiers return an empty segments[] — segment timing is only available when whisper runs.
Install with:
bash ${CLAUDE_PLUGIN_ROOT}/scripts/install.sh
Apple Silicon only in v0.1. Install deps: yt-dlp, ffmpeg, Node.js ≥ 20, Playwright Chromium, mlx-whisper.
Default model: mlx-community/whisper-large-v3-mlx (~3GB, downloaded on first use). Override per-call with the WHISPER_MODEL environment variable, for example:
WHISPER_MODEL=mlx-community/whisper-base-mlx transcribe <url>
Smaller models trade accuracy for speed. Use whisper-base-mlx (~140MB) for quick checks.
yt-dlp --write-sub --write-auto-sub fetches the uploader's captions directly, no audio download, no whisper. Manual captions preferred; auto-generated is the fallback within this tier. YouTube URLs only. Seconds per video.--force-whisper is set. Minutes per video.The Model: line in the output reports which tier ran: youtube-manual-captions, youtube-auto-captions, or the whisper model name.
--force-whisper when accuracy matters more than speed.~/.cache/transcribe-plugin/playwright-profile/.<video> element's currentSrc and filters to segments sharing its CDN asset id, but expect occasional failures or mismatches. Retry or fall back to manual download for critical Threads transcripts.references/integration-guide.md — how other skills should invoke transcribeCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub studio-moser/skills-n-stuff --plugin transcribe