Install
$ agentstack add skill-mikefluff-skills-transcribe-maker Open-source listing, not yet scanned by AgentStack. Follow the source repository for install instructions.
Security review
⚠ Flagged1 finding(s); flagged for manual review. · v0.1.0 How review works →
- • Prompt-injection patterns
- • Secret / credential exfiltration
- • Dangerous shell & filesystem operations
- • Untrusted network calls
- • Known-malicious package signatures
- high Reads credentials/environment and may exfiltrate them.
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.
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
Speech-to-text utility. Take audio or video file → output subtitle file (SRT / VTT) or transcript (JSON / text).
Distinct from voiceover-maker:
- voiceover-maker generates SPEECH from text. This goes the OPPOSITE direction: speech → text.
- Both wrap an OpenAI audio API endpoint.
Distinct from subtitle-burner:
- subtitle-burner takes an existing subtitle file and burns it into video. THIS skill GENERATES the subtitle file. Chain them:
transcribe-maker→subtitle-burner.
This skill does NOT:
- Translate the transcript (Whisper supports it via separate endpoint; not exposed in v1 — use OpenAI's
/v1/audio/translationsdirectly if needed) - Identify speakers / diarize (Whisper doesn't natively diarize — use deepgram or assemblyai for that)
- Process files >25 MB (Whisper API limit — split with ffmpeg first)
- Run locally (uses OpenAI API; for offline use whisper.cpp directly)
- Edit / clean up transcript (raw Whisper output may have minor errors — manual cleanup needed for production captions)
ROLE
Read audio/video input → call OpenAI Whisper API with the requested format → save subtitle / transcript file.
PIPELINE
- Resolve input:
--input— audio (.mp3, .wav, .m4a) or video (.mp4, .mov, .webm) (required)
- Pick output format:
--format srt(default) — forsubtitle-burnerconsumption--format vtt— WebVTT (YouTube / HTML5 ``)--format text— plain transcript, no timestamps--format json— Whisper raw JSON (simple)--format verbose_json— JSON with word-level timestamps + segments
- Resolve language (optional):
--lang en/--lang ru/--lang deetc. — ISO-639-1 hint- Auto-detect if omitted
- Pre-flight:
- Check OPENAIAPIKEY set
- Check file ≤25 MB
- Cost estimate via ffprobe
- Execute — POST to OpenAI
/v1/audio/transcriptions.
- Save:
- Default:
.next to source - Custom:
--output
MODES
Required
transcribe-maker --input
Optional
--format srt|vtt|json|text|verbose_json(defaultsrt)--model whisper-1|gpt-4o-transcribe|gpt-4o-mini-transcribe(defaultwhisper-1)--lang— language hint (default: auto-detect)--temperature— Whisper sampling temp (default 0; deterministic)--output— explicit output path--yes— skip cost confirmation--check— verify env + connectivity--cost-only— print estimated cost + exit
PICKING A MODEL
The choice is decided by the output format, not by quality — only whisper-1 emits subtitles.
| Need | Model | Cost/min | |---|---|---| | SRT / VTT / word-level timestamps | whisper-1 | $0.006 | | Plain transcript, highest accuracy | gpt-4o-transcribe | $0.006 | | Plain transcript, bulk / cheapest | gpt-4o-mini-transcribe | $0.003 |
The GPT-4o transcribe models return json/text only. Asking one of them for srt fails fast with a message rather than handing subtitle-burner something it cannot burn. So anything feeding the subtitle pipeline stays on whisper-1; the GPT-4o tiers are for transcripts a human or an LLM will read.
REFERENCES (load on demand)
| File | When to load | |---|---| | [references/formats.md](references/formats.md) | Output format details, when to pick each, Whisper segment behavior | | [references/preprocessing.md](references/preprocessing.md) | When file >25MB: how to split / compress with ffmpeg | | [references/troubleshoot.md](references/troubleshoot.md) | When transcription has errors, language mis-detected, timestamps drift |
EXAMPLES
See [examples/before-after.md](examples/before-after.md) — 3 calibration runs: tutorial video to SRT, Russian podcast to text transcript, multilingual interview with word-level timestamps.
CONSTRAINTS
- OpenAI API key required. Set via
/skills-keys add OPENAI_API_KEY ....
- File size limit: 25 MB. Whisper API hard limit. For larger files:
- Audio: re-encode to lower bitrate (
ffmpeg -i input.wav -b:a 64k input.mp3) - Video: extract audio only (
ffmpeg -i video.mp4 -vn -acodec copy audio.aac) - Long files: split with ffmpeg into <25 MB chunks, transcribe each, concatenate
- Cost: ~$0.006/min. A 60-min podcast = ~$0.36. Very affordable for most use cases.
- Language auto-detect is good but not perfect. For multilingual content, pass
--langexplicitly for best results.
- Whisper has known weaknesses:
- Names / proper nouns sometimes wrong
- Technical jargon often substituted with phonetic alternatives
- Very quiet audio → hallucination of plausible-but-wrong text
- Background music interference
- Always proofread for production use. Raw Whisper output is ~95% accurate for clean speech; 80-90% for noisy/accented/technical content.
- No speaker diarization. Whisper transcribes ALL speech but doesn't tag who's speaking. For multi-speaker tagging: use Deepgram / AssemblyAI (not in scope for v1).
- SRT format includes timestamps. Word-level timestamps via
--format verbose_json. Sentence-level via--format srtorvtt.
- For burning captions on video: chain with
subtitle-burner:
`` transcribe-maker --input video.mp4 --format srt --output captions.srt --execute subtitle-burner burn ./video.mp4 --subtitle ./captions.srt --style modern ``
- Never print API keys.
INVOCATION HINTS
When the user says any of:
- "transcribe this video / audio", "subtitles from audio", "speech to text"
- "распознай речь", "сделай субтитры из видео", "превратить аудио в текст"
- "whisper this", "extract dialogue from video"
If the user wants final burned-in captions: suggest chaining with subtitle-burner.
If the user has only audio: transcribe works the same. If only video: works (transcribes audio track).
Defaults: --format srt --temperature 0 (best for captions). For plain transcript / blog post draft: --format text. For analytics / word-level alignment: --format verbose_json.
This skill is distinct from:
voiceover-maker— text → speech (opposite direction)subtitle-burner— burns existing subtitles onto video; this produces themaudio-mix-maker— mixing, not recognitionmusic-prompt— generates music, not transcription
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Mikefluff
- Source: Mikefluff/skills
- License: MIT
- Homepage: https://www.npmjs.com/package/@mikefluff/skills
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.