audio-to-subtitles
Convert local audio/video files or public media URLs into subtitle files by uploading local files to Cloudflare R2 and calling Volcengine AI MediaKit ASR…
Skill by bozhouDev
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/bozhoudev-audio-to-subtitles
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend, cloud
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/audio-to-subtitles
What's inside
- Skill name
audio-to-subtitles- Description
- Convert local audio/video files or public media URLs into subtitle files by uploading local files to Cloudflare R2 and calling Volcengine AI MediaKit ASR subtitles API. Also supports MiniMax text-to-speech generation from text or text files, with optional subtitle generation from the produced audio. Supports batch processing, SRT/VTT/JSON output, language selection, speaker labels, configurable MiniMax voice ID and model. Use when the user asks to turn audio/video into subtitles, generate ASR subtitles, create SRT/VTT, batch transcription, or generate TTS audio with optional subtitles.
- License
- MIT
- Instructions
- 155 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (3)
- SKILL.md
- main.ts · scripts/
- r2.ts · scripts/
SKILL.md (first lines)
# Audio To Subtitles
Use this skill to:
- turn local audio/video files or public media URLs into subtitle files through AI MediaKit;
- turn text into MiniMax TTS audio;
- optionally generate subtitles from the TTS audio in the same run.
## Workflow
For media inputs:
1. If the input is a local file, upload it to Cloudflare R2 first.
2. Submit the public `audio_url` or `video_url` to AI MediaKit ASR subtitles.
3. Poll the async task until it is completed or failed.
4. Save `.json`, `.srt`, and `.vtt` outputs.
For local video-engine projects:
1. If the media belongs to a `talking-head-hyperframes` project under `<VIDEO_WORKSPACE>`, save subtitles under that project's `work/captions/`.
2. Use `captions.srt` and `captions.vtt` as the main cleaned files, keep raw ASR backups as `captions.raw.srt` and `captions.raw.vtt`, and keep the MediaKit payload as `asr-result.json`.
3. Also write `captions_aligned.json` parsed from the cleaned SRT so `video-script`, `talking-head-hyperframes`, and `hyperframes-scene-animator` share the same locked timeline.
4. The project-local output convention is:
```text
<VIDEO_WORKSPACE>/<project>/work/captions
```
For text inputs:
1. Generate audio through MiniMax TTS.
2. Save the audio file.
3. If `--subtitles` is set, upload the audio to R2 and run the same AI MediaKit subtitle workflow.
## CLI
```bash
# Set this to the directory containing this installed skill (not the current working directory).
SKILL_DIR="<SKILL_ROOT>/audio-to-subtitles"
# Local audio/video: upload to R2, then transcribe
npx -y bun "$SKILL_DIR/scripts/main.ts" audio.mp3 --language zh-CN --out-dir subtitles
# Existing public URL: skip R2 upload
npx -y bun "$SKILL_DIR/scripts/main.ts" "https://example.com/audio.mp3" --out-dir subtitles
# Batch files/URLs
npx -y bun "$SKILL_DIR/scripts/main.ts" a.mp3 b.m4a "https://example.com/video.mp4" --out-dir subtitles
# Batch from manifest
npx -y bun "$SKILL_DIR/scripts/main.ts" --manifest inputs.txt --out-dir subtitles
# Speaker diarization
npx -y bun "$SKILL_DIR/scripts/main.ts" interview.mp3 --speaker --language zh-CN
# Text to audio only
npx -y bun "$SKILL_DIR/scripts/main.ts" --text "你好,欢迎收听。" --voice-id female-shaonv --out-dir audio
# Text file to audio + subtitles
npx -y bun "$SKILL_DIR/scripts/main.ts" --text-file script.md --subtitles --language zh-CN --out-dir audio
```
## Options
| Option | Description |
|--------|-------------|
| `--text <text>` | Generate MiniMax TTS audio from inline text. Can be repeated. |
| `--text-file <path>` | Generate MiniMax TTS audio from a text file. Can be repeated. |
| `--subtitles` | With text input, also generate subtitles from the generated audio. |
| `--manifest <path>` | Batch input manifest. Text files use one input per line; JSON supports an array of strings or objects. |
| `--out-dir <path>` | Output directory. Default: `subtitles`. |
| `--format <all|srt|vtt|json>` | Output format. Comma-separated values are allowed. Default: `all`. |
| `--language <cmn-Hans-CN|zh-CN|eng-US>` | Optional recognition language. `zh-CN` is accepted as an alias for `cmn-Hans-CN`. Omit to let API choose defaults. |
| `--speaker` | Enable speaker info and prefix subtitles with speaker labels when returned. |
| `--voice-id <id>` | MiniMax voice ID. Default: `MINIMAX_VOICE_ID`, then `MINIMAX_TTS_VOICE_ID`, then `female-shaonv`. |
| `--tts-model <model>` | MiniMax TTS model. Default: `MINIMAX_TTS_MODEL`, then `speech-02-hd`. |
| `--tts-speed <n>` | TTS speed. Default: `MINIMAX_TTS_SPEED`, then `1.0`. |
| `--tts-vol <n>` | TTS volume. Default: `MINIMAX_TTS_VOL`, then `1.0`. |
| `--tts-pitch <n>` | TTS pitch. Default: `MINIMAX_TTS_PITCH`, then `0`. |
| `--tts-emotion <emotion>` | TTS emotion. Default: `MINIMAX_TTS_EMOTION`, then `happy`. |
| `--tts-format <mp3|wav|flac|pcm>` | TTS audio format. Default: `MINIMAX_TTS_FORMAT`, then `mp3`. |
| `--tts-sample-rate <n>` | TTS sample rate. Default: `MINIMAX_TTS_SAMPLE_RATE`, then `32000`. |
| `--tts-bitrate <n>` | TTS bitrate. Default: `MINIMAX_TTS_BITRATE`, then `128000`. |
| `--media-kind <auto|audio|video>` | Force API request field. Default: `auto` from extension. |
| `--r2-prefix <prefix>` | R2 object key prefix for uploaded local audio/video. Default: `R2_AUDIO_KEY_PREFIX`, then `audio/YYYY-MM-DD`. |
| `--concurrency <n>` | Batch concurrency. Default: `1`. |
| `--poll-interval <seconds>` | Poll interval. Default: `5`. |
| `--timeout <seconds>` | Per-task timeout. Default: `7200`. |
| `--json` | Print machine-readable run summary to stdout. |
## Manifest
Text manifests (`.txt`) are one media input per line.
JSON manifests can mix media and text jobs:
```json
[
"local-audio.mp3",
{ "url": "https://example.com/video.mp4", "mediaKind": "video" },
{ "text": "你好,欢迎收听。", "outputName": "intro", "subtitles": true, "voiceId": "female-shaonv" },
{ "textFile": "script.md", "outputName": "script-audio", "subtitles": true }
]
```
## Environment
The script loads environment files in this order. The nearest `.env.r2` is loaded last and overrides global R2 defaults for this vault.
1. `~/.skills/.env`
2. `~/.baoyu-skills/.env`
3. nearest `.env.r2` from current directory upward
4. nearest `.skills/.env` from current directory upward
5. nearest `.baoyu-skills/.env` from current directory upward
Required for MiniMax TTS text input:
| Variable | Description |
|----------|-------------|From bozhouDev/video-skills-toolkit, MIT.
More from bozhouDev/video-skills-toolkit
- 0.744score
music
bozhouDev
Generate music using ElevenLabs Music API.
SkillBFreshness: B★ 153Claude Code +9 - 0.744score
media-to-transcript
bozhouDev
Convert audio/video URLs or local media into corrected Markdown transcripts through Volcengine recording-file ASR 2.0.
SkillBFreshness: B★ 153Claude Code +9 - 0.744score
douyin-cover
bozhouDev
生成抖音、视频号、小红书等短视频封面图、视频标题图和合集封面,也能诊断和改版已有封面。用户说做封面、生成封面、抖音封面、视频封面、标题图、合集封面、3:4、4:3、1:1、短视频首图、动态封面首帧、给这期视频做图、这封面为什么没人点、帮我改封面、封面点击率怎么提升、诊断封面时都应使用。小白学AI系列封面除外:遇到“小…
SkillBFreshness: B★ 153Claude Code +9 - 0.740score
minimax-voice-director
bozhouDev
用 MiniMax 云端为视频制作可审批的声音导演稿,再生成、挑选和验收人声,最后以定稿音频产生字幕。用于用户明确选择 MiniMax 配音、继续已有 MiniMax 视频配音项目,或明确请求 MiniMax Voice ID/克隆/设计。泛指本地 TTS 或 IndexTTS 不使用本…
SkillBFreshness: B★ 153Claude Code +9 - 0.740score
talking-head-hyperframes
bozhouDev
为 HyperFrames 口播或旁白项目创建、修复并验证固定舞台,锁定数字人 PIP 的区域、裁切、人物安全区和不透明背景,归档输入,生成 manifest 与 template handoff,并在就绪后按“字幕驱动的全镜头静态审核→动效”门禁路由到…
SkillBFreshness: B★ 153Claude Code +9 - 0.740score
video-script
bozhouDev
使用已经锁定的完整口播音频与带时间码字幕,把确认后的逐字稿转成管线无关的视频导演方案和 Beat Graph。适用于“根据最终配音做分镜”“按字幕设计整片画面”“规划 B-roll/证据/素材”“做 HyperFrames 或 Remotion…
SkillBFreshness: B★ 153Claude Code +9 - 0.740score
viral-video-benchmark
bozhouDev
判断、扫描、拆解并归档抖音视频、小红书图文或小红书视频。实时读取用户同平台粉丝数并划分主对标池/跨级灵感池,用已登录浏览器读取目标作品和作者主页公开指标,再用确定性代码判定普通、小爆、爆款、现象级并扫描作者近 20 条候选;只对用户选中的爆款和现象级先构建可追溯证据包,再调用子 Agent…
SkillBFreshness: B★ 153Claude Code +9 - 0.740score
hook-writing
bozhouDev
为内容写钩子和开头,也可拆解爆款视频开头、逐字稿开头、文章、推文、小红书图文和短视频脚本里的钩子,并沉淀到钩子库。用于视频开头拆解、逐字稿开头分析、推文、文章、小红书图文、短视频脚本、标题和开头优化;当用户说“写个钩子”“开头不抓人”“第一句话怎么写”“标题不够抓人”“优化开头”“拆解这个视频开头”“拆解逐字稿开头”…
SkillBFreshness: B★ 153Claude Code +9 - 0.740score
hyperframes-scene-animator
bozhouDev
接管 talking-head-hyperframes 的 READY_FOR_EXECUTION 交接,由主 Agent 完成字幕分镜与具体导演,先交付全镜头最终静态页审核,批准后再用快速子 Agent 协助实现互不冲突的镜头与动效,最后完成 HyperFrames proof、四遍审查与…
SkillBFreshness: B★ 153Claude Code +9 - 0.740score
content-remix
bozhouDev
把已经完成八部分拆解的抖音视频、小红书图文或小红书视频,迁移成泊舟自己的小红书图文、抖音口播或小红书视频内部草稿。用户说“做二创”“按这个爆款做我的版本”“参考这个机制重新创作”“把这个拆解写成小红书/抖音”“不要照抄地借鉴”时使用;先提炼可迁移机制、删除不可照搬内容、映射泊舟真实经历/案例/判断,再按目标平台重新组…
SkillBFreshness: B★ 153Claude Code +9 - 0.738score
video-transcript
bozhouDev
Deprecated compatibility package.
SkillBFreshness: B★ 153Claude Code +9
Signals
- Stars
- 153
- Forks
- 76
- Open issues
- 0
- Last commit (this folder)
- Jul 27, 2026 (3 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from bozhouDev
- 0.744score
music
bozhouDev
Generate music using ElevenLabs Music API.
SkillBFreshness: B★ 153Claude Code +9 - 0.744score
media-to-transcript
bozhouDev
Convert audio/video URLs or local media into corrected Markdown transcripts through Volcengine recording-file ASR 2.0.
SkillBFreshness: B★ 153Claude Code +9 - 0.744score
douyin-cover
bozhouDev
生成抖音、视频号、小红书等短视频封面图、视频标题图和合集封面,也能诊断和改版已有封面。用户说做封面、生成封面、抖音封面、视频封面、标题图、合集封面、3:4、4:3、1:1、短视频首图、动态封面首帧、给这期视频做图、这封面为什么没人点、帮我改封面、封面点击率怎么提升、诊断封面时都应使用。小白学AI系列封面除外:遇到“小…
SkillBFreshness: B★ 153Claude Code +9 - 0.740score
minimax-voice-director
bozhouDev
用 MiniMax 云端为视频制作可审批的声音导演稿,再生成、挑选和验收人声,最后以定稿音频产生字幕。用于用户明确选择 MiniMax 配音、继续已有 MiniMax 视频配音项目,或明确请求 MiniMax Voice ID/克隆/设计。泛指本地 TTS 或 IndexTTS 不使用本…
SkillBFreshness: B★ 153Claude Code +9 - 0.740score
talking-head-hyperframes
bozhouDev
为 HyperFrames 口播或旁白项目创建、修复并验证固定舞台,锁定数字人 PIP 的区域、裁切、人物安全区和不透明背景,归档输入,生成 manifest 与 template handoff,并在就绪后按“字幕驱动的全镜头静态审核→动效”门禁路由到…
SkillBFreshness: B★ 153Claude Code +9 - 0.740score
video-script
bozhouDev
使用已经锁定的完整口播音频与带时间码字幕,把确认后的逐字稿转成管线无关的视频导演方案和 Beat Graph。适用于“根据最终配音做分镜”“按字幕设计整片画面”“规划 B-roll/证据/素材”“做 HyperFrames 或 Remotion…
SkillBFreshness: B★ 153Claude Code +9
Cite this page
audio-to-subtitles skill. Agent Mart. https://agentmart.dev/skills/bozhoudev-audio-to-subtitles (last updated 2026-10-24)