/voice
Text-to-Speech (TTS), voiceover, narration placement/sync, and custom sound effects (SFX) generator. Use when the user wants generated speech from text, wants to add/replace/align narration or voiceover for an existing video/timeline, wants to keep existing voiceover synced
$ npx -y skills add 0xsline/OpenChatCut --skill voice --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/voice
Context preview
The summary Claude sees to decide when to auto-load this skill.
Text-to-Speech (TTS), voiceover, narration placement/sync, and custom sound effects (SFX) generator. Use when the user wants generated speech from text, wants to add/replace/align narration or voiceover for an existing video/timeline, wants to keep existing voiceover synced
SKILL.md
voice.SKILL.mdname: voice
description: |
Text-to-Speech (TTS), voiceover, narration placement/sync, and custom sound effects (SFX) generator. Use when the user wants generated speech from text, wants to add/replace/align narration or voiceover for an existing video/timeline, wants to keep existing voiceover synced after visual retiming edits, needs voice audition/selection, or explicitly wants a newly generated/custom sound effect that is not available in the Sound Effects library.
user-invocable: true
Voice & Sound Effects Generator
Generate voiceovers (TTS) and sound effects. For TTS, choose a concrete provider and voice before calling `submit_voice`.
When to Use
- Generate voiceover/narration from text
- Create text-to-speech audio for videos
- Add, replace, or redo narration/voiceover for an existing video, timeline,
screen recording, slide animation, product demo, B-roll edit, MG explainer, or other visual sequence
- Keep existing narration/voiceover aligned after trimming, speeding up, slowing
down, moving, reordering, or replacing the visuals it describes
- Offer and audition TTS voice choices when the user has not picked a concrete voice
- Generate custom sound effects from text descriptions only after checking the Sound Effects library first
TTS (Text-to-Speech)
If the current request has an existing visual target and the user wants narration, voiceover, dubbing, or replacement speech for that target, read [references/video-sync.md](references/video-sync.md) before drafting new narration, using existing narration text to generate TTS, or placing audio. Do this even when the user did not explicitly say "sync" or "match the visuals"; the existence of a visual target means narration timing and meaning may need to follow on-screen content. Use the normal standalone TTS path only when there is no visual target or the user just wants an audio asset from text.
Also read [references/video-sync.md](references/video-sync.md) when the timeline already has narration/voiceover and the user asks to change the visuals while keeping that voiceover aligned. This is a sync maintenance task even if no new TTS is needed.
Use `submit_voice` to create a TTS audio asset. The current MCP tool contract is:
- `provider` is required. Configured choices may be `doubao`, `elevenlabs`,
`minimax`, `inworld`, `fishaudio`, `speechify`, `openai`, `gemini`, `mistral`, or `cartesia`. All providers are opt-in; use only providers shown as configured in the capabilities prompt.
- `voiceId` is required, concrete, and provider-specific. The only exception is
deliberate MiniMax `timbreWeights` mixing, where `voiceId` must be empty. Do not mix catalogs.
- The curated catalog in [references/voices.md](references/voices.md) covers
only Doubao, ElevenLabs, and MiniMax. Other providers have no bundled preset or sample catalog in OpenChatCut. Require a concrete voice ID from the user or their provider account; never invent a preset or `/voice-samples/...` URL.
- AI SDK-backed fields are provider-specific: OpenAI supports `modelId`,
`speed`, `outputFormat`, and `instructions`; Gemini supports `modelId`, `outputFormat`, and `instructions`; Mistral supports `modelId` and `outputFormat`; Cartesia supports `modelId`, `speed`, `languageCode`, and `outputFormat`. Omit unsupported or unrequested fields.
- Inworld, Fish Audio, and Speechify accept only `voiceId` plus optional
`modelId`. Do not pass expressive, speed, language, or output controls to these providers.
- `submit_voice` creates an audio asset only. Timeline placement, replacement,
trimming, and alignment happen later with timeline tools.
- For long narration, multiple `submit_voice` calls can be useful: split at
natural pauses, sentence groups, or script beat boundaries when the workflow benefits from separately timed or placed voice clips.
- Doubao supports `speedRatio`, `loudnessRatio`, `pitch`, `emotion`,
`emotionScale`, `performancePrompt`, and `explicitDialect`, but not every voice supports every expressive control. Check [references/voices.md](references/voices.md) before using them.
- ElevenLabs retains its official voice settings, language, seed, output,
normalization, pronunciation-dictionary, continuity, logging, and latency controls. MiniMax retains its dedicated controls documented in [references/minimax-tts.md](references/minimax-tts.md).
Doubao control support for current curated voices:
- `vivi`, `xiaohe`, `yunzhou`, `xiaotian`, `naiqimengwa`, `yingtaowanzi`,
`wenroumama`, `zhixingnv`, `dayi`, `jitangnv`, `liuchang`, `ruyayichen`, `morgan`, `qingcang`, `huiben`, `popo`, `yuanboxiaoshu`, `baqiqingshu`, and `tangseng` support explicit `emotion` / `emotionScale`, `performancePrompt`, and ASMR-style prompt directions.
- `shuanglangshaonian` supports `performancePrompt` and COT/QA-style
instruction following, but does not support explicit `emotion` / `emotionScale` or ASMR-style control.
- `explicitDialect` is only supported by `vivi` and can be `dongbei`,
`shaanxi`, or `sichuan`.
ElevenLabs control support for current curated voices:
- `amelia`, `brittney`, `hope`, `jessica`, `arabella`, `jane`, `maria`,
`mark`, `frederick`, `peter`, `james`, `jon`, `sully`, `david`, and `alex` all support the same request-level controls; model-specific support is still validated by ElevenLabs.
- These controls are not per-voice guarantees of a specific acting style.
Use the preset tags/samples to pick a naturally suitable voice, then use the controls for moderate delivery changes.
- For ElevenLabs `eleven_v3`, inline audio tags are available when the user
asks for expressive delivery such as emotion, tone, nonverbal cues, accent hints, or local pacing. Official examples fit these useful TTS categories: emotion/tone tags such as `[happy]`, `[sad]`, `[angry]`, `[excited]`, `[curious]`, `[sarcastic]`, `[crying]`, `[annoyed]`, `[appalled]`, `[thoughtful]`, `[surprised]`, and `[mis
Read more
name: voice description: | Text-to-Speech (TTS), voiceover, narration placement/sync, and custom sound effects (SFX) generator. Use when the user wants generated speech from text, wants to add/replace/align narration or voiceover for an existing video/timeline, wants to keep existing voiceover synced after visual retiming edits, needs voice audition/selection, or explicitly wants a newly generated/custom sound effect that is not available in the Sound Effects library. user-invocable: true
Voice & Sound Effects Generator
Generate voiceovers (TTS) and sound effects. For TTS, choose a concrete provider and voice before calling `submit_voice`.
When to Use
- Generate voiceover/narration from text
- Create text-to-speech audio for videos
- Add, replace, or redo narration/voiceover for an existing video, timeline,
screen recording, slide animation, product demo, B-roll edit, MG explainer, or other visual sequence
- Keep existing narration/voiceover aligned after trimming, speeding up, slowing
down, moving, reordering, or replacing the visuals it describes
- Offer and audition TTS voice choices when the user has not picked a concrete voice
- Generate custom sound effects from text descriptions only after checking the Sound Effects library first
TTS (Text-to-Speech)
If the current request has an existing visual target and the user wants narration, voiceover, dubbing, or replacement speech for that target, read [references/video-sync.md](references/video-sync.md) before drafting new narration, using existing narration text to generate TTS, or placing audio. Do this even when the user did not explicitly say "sync" or "match the visuals"; the existence of a visual target means narration timing and meaning may need to follow on-screen content. Use the normal standalone TTS path only when there is no visual target or the user just wants an audio asset from text.
Also read [references/video-sync.md](references/video-sync.md) when the timeline already has narration/voiceover and the user asks to change the visuals while keeping that voiceover aligned. This is a sync maintenance task even if no new TTS is needed.
Use `submit_voice` to create a TTS audio asset. The current MCP tool contract is:
- `provider` is required. Configured choices may be `doubao`, `elevenlabs`,
`minimax`, `inworld`, `fishaudio`, `speechify`, `openai`, `gemini`, `mistral`, or `cartesia`. All providers are opt-in; use only providers shown as configured in the capabilities prompt.
- `voiceId` is required, concrete, and provider-specific. The only exception is
deliberate MiniMax `timbreWeights` mixing, where `voiceId` must be empty. Do not mix catalogs.
- The curated catalog in [references/voices.md](references/voices.md) covers
only Doubao, ElevenLabs, and MiniMax. Other providers have no bundled preset or sample catalog in OpenChatCut. Require a concrete voice ID from the user or their provider account; never invent a preset or `/voice-samples/...` URL.
- AI SDK-backed fields are provider-specific: OpenAI supports `modelId`,
`speed`, `outputFormat`, and `instructions`; Gemini supports `modelId`, `outputFormat`, and `instructions`; Mistral supports `modelId` and `outputFormat`; Cartesia supports `modelId`, `speed`, `languageCode`, and `outputFormat`. Omit unsupported or unrequested fields.
- Inworld, Fish Audio, and Speechify accept only `voiceId` plus optional
`modelId`. Do not pass expressive, speed, language, or output controls to these providers.
- `submit_voice` creates an audio asset only. Timeline placement, replacement,
trimming, and alignment happen later with timeline tools.
- For long narration, multiple `submit_voice` calls can be useful: split at
natural pauses, sentence groups, or script beat boundaries when the workflow benefits from separately timed or placed voice clips.
- Doubao supports `speedRatio`, `loudnessRatio`, `pitch`, `emotion`,
`emotionScale`, `performancePrompt`, and `explicitDialect`, but not every voice supports every expressive control. Check [references/voices.md](references/voices.md) before using them.
- ElevenLabs retains its official voice settings, language, seed, output,
normalization, pronunciation-dictionary, continuity, logging, and latency controls. MiniMax retains its dedicated controls documented in [references/minimax-tts.md](references/minimax-tts.md).
Doubao control support for current curated voices:
- `vivi`, `xiaohe`, `yunzhou`, `xiaotian`, `naiqimengwa`, `yingtaowanzi`,
`wenroumama`, `zhixingnv`, `dayi`, `jitangnv`, `liuchang`, `ruyayichen`, `morgan`, `qingcang`, `huiben`, `popo`, `yuanboxiaoshu`, `baqiqingshu`, and `tangseng` support explicit `emotion` / `emotionScale`, `performancePrompt`, and ASMR-style prompt directions.
- `shuanglangshaonian` supports `performancePrompt` and COT/QA-style
instruction following, but does not support explicit `emotion` / `emotionScale` or ASMR-style control.
- `explicitDialect` is only supported by `vivi` and can be `dongbei`,
`shaanxi`, or `sichuan`.
ElevenLabs control support for current curated voices:
- `amelia`, `brittney`, `hope`, `jessica`, `arabella`, `jane`, `maria`,
`mark`, `frederick`, `peter`, `james`, `jon`, `sully`, `david`, and `alex` all support the same request-level controls; model-specific support is still validated by ElevenLabs.
- These controls are not per-voice guarantees of a specific acting style.
Use the preset tags/samples to pick a naturally suitable voice, then use the controls for moderate delivery changes.
- For ElevenLabs `eleven_v3`, inline audio tags are available when the user
asks for expressive delivery such as emotion, tone, nonverbal cues, accent hints, or local pacing. Official examples fit these useful TTS categories: emotion/tone tags such as `[happy]`, `[sad]`, `[angry]`, `[excited]`, `[curious]`, `[sarcastic]`, `[crying]`, `[annoyed]`, `[appalled]`, `[thoughtful]`, `[surprised]`, and `[mis
Open-source, local-first conversational AI video editor with a professional multi-track timeline, Agent Skills, MCP integration, and Remotion rendering.
Repo: 0xsline/OpenChatCut
Other skills on openchatcut.
- /openchatcut
Connect an MCP-capable coding agent to OpenChatCut and edit local video projects. Use when the user asks to install, connect, or set up OpenChatCut; inspect or edit an OpenChatCut project; work with its timeline, transcript, captions, media, generation, motion graphics, audio,
Open skill - /ai-cinematic-short-film
Plan AI short films with story, shots, prompts, and continuity.
Open skill - /asset-import
Use when acquiring or importing media into a OpenChatCut project asset library for video editing or creation, including local/attached videos, user-provided paths, public media URLs, web video/audio/image assets, upload fallback decisions, and deciding between import_media,
Open skill - /create-motion-graphics
Use whenever the agent needs to add, create, hand-author, patch, or place Motion Graphic JSX assets in a OpenChatCut project. This is the direct-authoring path: use create_motion_graphic_from_code / edit_asset / edit_item, not motion-graphic-gen or submit_motion_graphic. Covers
Open skill - /explainer-video
Create finished explainer videos from a topic, script, outline, voiceover, product logic, data, technical concept, course material, or reference assets. Use when the user wants narration, motion graphics, stock footage, generated visuals, or mixed visuals to explain an idea.
Open skill - /export
Use when a OpenChatCut video editing or creation workflow needs export, render, download, share, final delivery, subtitle-file export, render choice, local-only asset handling, or export fallback explanation.
Open skill

