Install
$ agentstack add skill-smitmartijn-claude-skills-transcribe-video ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Transcribe Video
Produce a plain-text transcript of a video or audio file. Outputs a .txt next to the source. Optional: also emit .srt/.vtt/.json if the user asks for timestamps.
Prerequisites
Before running any commands, verify both dependencies are installed:
command -v ffmpeg >/dev/null || { echo "ffmpeg not found"; exit 1; }
command -v whisper >/dev/null || { echo "whisper not found"; exit 1; }
If missing, guide the user:
- ffmpeg:
brew install ffmpeg(macOS) /sudo apt install ffmpeg(Ubuntu/Debian) - whisper:
pip install openai-whisper
Inputs
- Media file path (the user will provide; otherwise ask). Video or audio.
- Optional:
--modeloverride. Defaulttiny.enfor English,baseotherwise. - Optional:
--language(auto-detect if omitted; non-English forces a non-.enmodel). - Optional:
--with-timestampsto also emit.srt(segment-level) alongside the.txt.
Working directory
./tmp// — mkdir at start, leave artifacts for debugging.
Step 1 — Extract audio
Whisper only needs mono 16 kHz audio. Hardware-decode the source to skip a slow HEVC software pass.
macOS (Apple Silicon):
ffmpeg -y -hwaccel videotoolbox -i "$SRC" \
-vn -ac 1 -ar 16000 \
./tmp/$NAME/audio.wav
Linux / other platforms:
ffmpeg -y -i "$SRC" \
-vn -ac 1 -ar 16000 \
./tmp/$NAME/audio.wav
To detect the platform: [[ "$(uname)" == "Darwin" ]] && HWACCEL="-hwaccel videotoolbox" || HWACCEL=""
Critical flags:
-hwaccel videotoolbox(macOS only) — hardware-decodes HEVC/H.264, ~5–10× faster on Apple Silicon. Omit on Linux/Windows.-vn— skip the video stream entirely; we only need audio.-ac 1 -ar 16000— mono 16 kHz is what whisper resamples to anyway; doing it in ffmpeg is faster than letting whisper do it.
If the source is already audio (.wav, .mp3, .m4a, .flac), still run this — it normalizes the format and gives whisper a clean input.
Step 2 — Transcribe with whisper
whisper ./tmp/$NAME/audio.wav \
--model tiny.en \
--output_format txt \
--output_dir ./tmp/$NAME \
--language en
Model picker:
tiny.en— default for English. Fastest, quality fine for clear speech (tutorials, podcasts, voice-overs).base.en— bump up iftiny.enproduces noticeable errors (proper nouns, technical terms).small.en/medium.en— only if the user explicitly asks for higher accuracy and accepts longer wait.turbo— best quality-to-speed ratio for any language. Use whentiny.enquality isn't good enough but the user hasn't asked for a specific model.base(no.en) — non-English or mixed-language. Drop--language en.
Output format picker:
- Plain
.txtis the default — just the spoken words, one paragraph per whisper segment, no timestamps. This is what most users want. - If the user asked for timestamps, use
--output_format allto emit every format (.txt,.srt,.vtt,.json,.tsv). The user gets their.txtplus whichever timestamp format they need. - If the user asked for a specific format only (e.g. just
.srt), use--output_format srt.
Whisper writes audio.txt (and audio.srt/audio.vtt/audio.json if requested) into --output_dir.
Step 3 — Deliver
- Copy
audio.txtto/.txt(and.srt/.vttif produced). - Print one line: source path → output path, word count, runtime.
- Don't auto-open the file — it's plain text, the user can
cator open it themselves. Just report the path.
Pitfalls — don't repeat these
- Don't use
-hwaccel videotoolboxon Linux. It's macOS-only. Checkunamefirst. - Don't skip
-hwaccel videotoolboxon macOS. Software HEVC decode on a 4K source takes minutes; with the flag, seconds. - Don't feed whisper the raw video file. It works, but ffmpeg's resampling step is much faster than whisper's internal one — and you'd lose
-hwaccel. Always extractaudio.wavfirst. - Don't default to
small.enor larger.tiny.enis fine for English voice-overs, tutorials, podcasts. Only escalate if the user reports errors or asks for better quality. - Don't pass
--word_timestamps Trueunless the user asked for word-level timing. It roughly doubles whisper's runtime. - Don't write the txt to
./tmpand stop. Always deliver alongside the source file so the user can find it. - Don't strip whisper's paragraph breaks. The default
.txtoutput already segments sensibly — leave it alone unless the user asks for a single blob.
Keep this skill focused on one thing: produce a plain-text transcript from a media file, fast.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: smitmartijn
- Source: smitmartijn/claude-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.