Agent skill

Doubao Tts

by calesthio in calesthio/OpenMontage

Generate Mandarin and multilingual narration with Volcengine Doubao Speech 2.0.

AGPL-3.0Auto-check: notesMedia & Creative

Install Doubao Tts

skills CLI
$ npx skills add calesthio/OpenMontage --skill doubao-tts -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install calesthio/OpenMontage doubao-tts --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/calesthio/OpenMontage.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/doubao-tts .claude/skills/doubao-tts && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
doubao-tts
GitHub stars
66k
Token cost
~988 tokens
SKILL.md length
399 words
Files
1
Skills in repo
41
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Generate Mandarin and multilingual narration with Volcengine Doubao Speech 2.0.

  • Works in 7 steps: Generate a 10-15 second sample before a… → Ask the user to approve voice… → Generate the full narration only after… → …
  • Creating Chinese voiceovers
  • SKILL.md covers Current API, OpenMontage Usage, Recommended Workflow and Parameters, plus 2 more sections
  • Reaches openspeech.bytedance.com; needs DOUBAO_SPEECH_API_KEY

What it does

Doubao Tts is an agent skill from calesthio/OpenMontage. Generate Mandarin and multilingual narration with Volcengine Doubao Speech 2.0. Use when creating Chinese voiceovers, when the user prefers Doubao/Volcengine/火山引擎/豆包 TTS, or when narration needs character-level timestamp metadata for subtitles.

Its SKILL.md is about 990 tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Media & Creative, covering Text to speech and voice. The repository describes itself as: World's first open-source, agentic video production system. 12 production pipelines, 100+ tools, 700+ agent skill and production-knowledge files. Turn your AI coding assistant… The licence is AGPL-3.0.

When your agent uses it

  • Creating Chinese voiceovers
  • The user prefers Doubao/Volcengine/火山引擎/豆包 TTS
  • Narration needs character-level timestamp metadata for subtitles

Example prompts

  • “/doubao-tts”

Requirements

  • Python 3
  • A credential in DOUBAO_SPEECH_API_KEY

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  1. Generate a 10-15 second sample before a full paid narration.
  2. Ask the user to approve voice naturalness, accent, and speed.
  3. Generate the full narration only after approval.
  4. Keep the query JSON. It is the source of truth for subtitle timing.
  5. Build captions from sentences[].words[], not from estimated text length.
  6. Group captions by Chinese semantic phrases before applying timestamps. Do not split only by fixed character count; it can break phrases…
  7. Let the video duration follow the approved voice rhythm unless the user explicitly asks to match a prior runtime.

What it can do on your machine

Read from SKILL.md and the folder at commit 9327439. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are python).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • openspeech.bytedance.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • DOUBAO_SPEECH_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Doubao Tts loads about 988 tokens when it runs. Until then it costs about 64 tokens; SKILL.md has 399 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~64
When it runs · the whole SKILL.md, loaded when a task matches
~988

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:8
    Requires `DOUBAO_SPEECH_API_KEY` in `.env`.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from calesthio/OpenMontage at commit 9327439, republished under its AGPL-3.0 licence (© calesthio). 399 words, ~988 tokens.

Download SKILL.mdSave it as .claude/skills/doubao-tts/SKILL.md (or your agent's skills folder).
name
doubao-tts
description
Generate Mandarin and multilingual narration with Volcengine Doubao Speech 2.0. Use when creating Chinese voiceovers, when the user prefers Doubao/Volcengine/火山引擎/豆包 TTS, or when narration needs character-level timestamp metadata for subtitles.

Doubao TTS

Requires DOUBAO_SPEECH_API_KEY in .env. Set DOUBAO_SPEECH_VOICE_TYPE for the default voice, or pass voice_id to the tool.

Current API

Use the new-console API key flow:

text
X-Api-Key: ${DOUBAO_SPEECH_API_KEY}
X-Api-Resource-Id: seed-tts-2.0

Do not use X-Api-App-Id and X-Api-Access-Key with a new-console API Key. If the API returns load grant: requested grant not found, the key type or auth header is probably wrong.

For long-form video narration, prefer the async endpoint:

text
POST https://openspeech.bytedance.com/api/v3/tts/submit
POST https://openspeech.bytedance.com/api/v3/tts/query

This returns audio_url plus sentences[].words[] timing metadata that can be used to build subtitles.

OpenMontage Usage

Generate with the TTS selector:

python
from tools.audio.tts_selector import TTSSelector

result = TTSSelector().execute({
    "preferred_provider": "doubao",
    "text": "如果 AI 真的会改变未来,普通人到底该怎么参与?",
    "voice_id": "zh_female_vv_uranus_bigtts",
    "output_path": "projects/my-video/assets/audio/narration.mp3",
    "speech_rate": 0,
    "enable_timestamp": True,
})

Or call the provider directly:

python
from tools.audio.doubao_tts import DoubaoTTS

result = DoubaoTTS().execute({
    "text": "短样本试听文本。",
    "voice_id": "zh_female_vv_uranus_bigtts",
    "output_path": "projects/my-video/assets/audio/doubao_sample.mp3",
})

The provider writes:

  • output_path: downloaded audio file
  • metadata_path: full query response JSON, defaulting to <output_path>.json
  1. Generate a 10-15 second sample before a full paid narration.
  2. Ask the user to approve voice naturalness, accent, and speed.
  3. Generate the full narration only after approval.
  4. Keep the query JSON. It is the source of truth for subtitle timing.
  5. Build captions from sentences[].words[], not from estimated text length.
  6. Group captions by Chinese semantic phrases before applying timestamps. Do not split only by fixed character count; it can break phrases like "在不押单个公司的情况下" or "可能会被慢慢稀释" and hurt comprehension.
  7. Let the video duration follow the approved voice rhythm unless the user explicitly asks to match a prior runtime.
Show full SKILL.md (189 more words)Show less

Parameters

  • voice_id: Doubao speaker / voice type. Defaults to DOUBAO_SPEECH_VOICE_TYPE.
  • resource_id: use seed-tts-2.0 for Doubao Speech 2.0 voices.
  • speech_rate: 0 is normal, 100 is 2x, -50 is 0.5x.
  • sample_rate: default 24000.
  • enable_timestamp: default true.
  • return_usage: default true, requests usage metadata when available.

Do not pass additions.explicit_language by default. Some endpoint/key combinations reject zh-cn with unsupported additions explicit language zh-cn.

For calm Mandarin explainers, start with speech_rate: 0. If the result is too long for the approved format, make a short comparison sample with speech_rate: 25 or 50 before regenerating the full narration. Do not speed up only to match a previous provider's duration if the user prefers Doubao's natural pace.

Troubleshooting

  • load grant: requested grant not found: wrong key type or wrong auth header. Use X-Api-Key for new-console API Keys.
  • speaker permission denied: voice id is wrong or not authorized for the selected resource.
  • quota exceeded: quota, lifetime characters, or concurrency exceeded.
  • Missing timestamps: verify enable_timestamp: true, keep the query JSON, and confirm the selected endpoint returned sentences.

Safety

Never print or write the API key to logs, metadata, patches, or project artifacts. .env.example should contain only empty variable names.

© calesthio, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/doubao-tts of calesthio/OpenMontage.

Open the folder on GitHubat commit 9327439

Compare with similar skills

Doubao Tts next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Doubao Tts compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Doubao Tts this skillcalesthio/OpenMontage66k—~988Automated safety check: NotesAGPL-3.0
MoneyPrinterTurbo Video Generatorharry0703/MoneyPrinterTurbo130k—~2.1kAutomated safety check: WarnMIT
HyperFrames Media Useheygen-com/hyperframes60k—~2.4kAutomated safety check: PassApache-2.0
Openspec OnboardSAP/e-mobility-charging-stations-simulator22725 repos~3.5kAutomated safety check: PassMIT
Blog AudioAgriciDaniel/claude-blog2.3k1 repos~2.2kAutomated safety check: NotesMIT
Musictadaspetra/loop2962 repos~827Automated safety check: PassMIT

Similar skills

  • MoneyPrinterTurbo Video Generator

    harry0703/MoneyPrinterTurbo

    Installs and runs MoneyPrinterTurbo to turn a topic or script into a finished short video with voice-over, subtitles, stock footage and music.

    130k GitHub stars~2.1k tokensUpdated yesterday
    Media & CreativeAuto-check: warnings
  • HyperFrames Media Use

    heygen-com/hyperframes

    Finds, generates and edits media for HyperFrames video projects: music, sound effects, images, icons, logos, voiceovers, captions and color grades.

    60k GitHub stars~2.4k tokensUpdated today
    Media & CreativeAuto-check passed
  • Openspec Onboard

    SAP/e-mobility-charging-stations-simulator

    Official

    Guided onboarding for OpenSpec - walk through a complete workflow cycle with narration and real codebase work.

    227 GitHub starsUsed in 25 repos~3.5k tokens
    Media & CreativeAuto-check passed
  • Blog Audio

    AgriciDaniel/claude-blog

    Generate audio narration of blog posts using Google Gemini TTS.

    2.3k GitHub starsUsed in 1 repo~2.2k tokens
    Media & CreativeAuto-check: notes
  • Music

    tadaspetra/loop

    Generate music using ElevenLabs Music API. An agent skill from tadaspetra/loop.

    296 GitHub starsUsed in 2 repos~827 tokens
    Media & CreativeAuto-check passed
  • Create News Video

    hoquanghai/Auto-Create-Video

    Tạo video tin tức ngắn 9:16 (~60s) từ URL bài báo hoặc file .txt tiếng Việt.

    319 GitHub starsUsed in 1 repo~3.7k tokens
    Media & CreativeAuto-check passed

More from calesthio/OpenMontage

All 41 skills in this repo
  • Video Understand

    calesthio/OpenMontage

    Understand video content locally using ffmpeg frame extraction and Whisper transcription.

    66k GitHub stars~841 tokensUpdated 7 days ago
    Auto-check passed
  • Avatar Video

    calesthio/OpenMontage

    Create AI avatar videos with precise control over avatars, voices, scripts, scenes, and backgrounds using HeyGen's v2 API.

    66k GitHub stars~1.6k tokensUpdated 7 days ago
    Auto-check passed
  • D3 Viz

    calesthio/OpenMontage

    Creating interactive data visualisations using d3.js. An agent skill from calesthio/OpenMontage.

    66k GitHub starsUsed in 3 repos~5.4k tokens
    Auto-check passed
  • Create Video

    calesthio/OpenMontage

    Create videos from a text prompt using HeyGen's Video Agent.

    66k GitHub stars~1.3k tokensUpdated 7 days ago
    Auto-check passed
  • Threejs World Generation

    calesthio/OpenMontage

    Build deterministic, editable, free-viewpoint Three.js worlds from text or structured briefs.

    66k GitHub stars~2k tokensUpdated 7 days ago
    Auto-check passed
  • Video Edit

    calesthio/OpenMontage

    Edit videos locally using ffmpeg. An agent skill from calesthio/OpenMontage.

    66k GitHub stars~855 tokensUpdated 7 days ago
    Auto-check: notes

Questions about Doubao Tts

What does Doubao Tts do?

Generate Mandarin and multilingual narration with Volcengine Doubao Speech 2.0. Doubao Tts is an agent skill from calesthio/OpenMontage.0.

When should I use Doubao Tts?

Doubao Tts fits situations like: creating Chinese voiceovers; the user prefers Doubao/Volcengine/火山引擎/豆包 TTS; narration needs character-level timestamp metadata for subtitles.

How do I install Doubao Tts in Claude Code?

Run `npx skills add calesthio/OpenMontage --skill doubao-tts -a claude-code`. Or copy the skill folder (.agents/skills/doubao-tts in calesthio/OpenMontage) into .claude/skills/doubao-tts in your project. Claude Code loads it when a task matches its description.

How do I install Doubao Tts in Codex?

Run `npx skills add calesthio/OpenMontage --skill doubao-tts -a codex`. Or copy the skill folder (.agents/skills/doubao-tts in calesthio/OpenMontage) into .agents/skills/doubao-tts in your project. Codex loads it when a task matches its description.

Can I use Doubao Tts in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add calesthio/OpenMontage --skill doubao-tts -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/doubao-tts, .gemini/skills/doubao-tts, .github/skills/doubao-tts and .opencode/skills/doubao-tts in your project.

What does Doubao Tts need to run?

Going by SKILL.md and its folder, Doubao Tts needs credentials named DOUBAO_SPEECH_API_KEY. Our summary lists: Python 3; A credential in DOUBAO_SPEECH_API_KEY.

Does Doubao Tts access the network?

SKILL.md names 1 domain. In commands or code: openspeech.bytedance.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Doubao Tts safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Doubao Tts use?

Doubao Tts is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Doubao Tts use?

About 988 tokens (SKILL.md is roughly 4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Doubao Tts?

Skills that share tags, products or a category with Doubao Tts: MoneyPrinterTurbo Video Generator (harry0703/MoneyPrinterTurbo, 130k stars), HyperFrames Media Use (heygen-com/hyperframes, 60k stars), Openspec Onboard (SAP/e-mobility-charging-stations-simulator, 227 stars) and Blog Audio (AgriciDaniel/claude-blog, 2.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Doubao Tts?

calesthio (a GitHub user) maintains it in calesthio/OpenMontage, which has 65,930 GitHub stars. The repository holds 41 skills in this directory. The repository was last updated on October 3, 2026.

Source: calesthio/OpenMontage on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.