generate-voiceover
Skill4 starsChanged 4 months agoMITView on GitHub
Use when the user wants spoken narration, text-to-speech, a voiceover from a script, available Simplified voices, or an existing voice resolved for a language. For recording transcription, use transcribe-media instead.
In this repository23 other files it gives its agents.
- AGENTS.mdAGENTS.md
- campaign-reviewSkill
- content-repurposerSkill
- creative-testingSkill
- cross-platform-campaignSkill
- edit-imageSkill
- evergreen-content-engineSkill
- generate-imageSkill
- generate-videoSkill
- local-business-marketingSkill
- manage-assetsSkill
- manage-brandSkill
- manage-projectsSkill
- repurpose-videoSkill
- simplified-agentsSkill
- simplified-cliSkill
- simplified-project-managementSkill
- simplified-socialSkill
- simplified-workflowsSkill
- simplified-workspaceSkill
- social-content-plannerSkill
- social-performance-analystSkill
- transcribe-mediaSkill
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 12
Use the connected Simplified tools and current schemas.
- Very specific: line 41
Call api_generateAudio with the verified voice_id, text, use_ssml, and storage: "asset" for retained/reused narration ("default" only for …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Generate narration from approved text
Discover the voice and language before synthesizing. Keep approved spoken meaning intact and return reusable audio with honest timing information.
Scope and generation intent
Use the connected Simplified tools and current schemas. Resolve a named or uncertain workspace/teamspace using api_getWorkspaceInfo and accessible membership from api_listTeamspaces; carry numeric space_id into voice discovery, synthesis, storage, and downstream calls.
A request to create narration authorizes the requested synthesis. “Show voices” or “what would it cost?” is discovery only: do not generate or spend credits. Clarify missing script, language, or constraints that change the result before synthesis. Do not add translations, variants, or repeated paid attempts unless requested.
Select an actual voice
Call api_listVoices with the required exact language_code, such as en-GB or en-US. If the request only says English and no context resolves the locale, obtain or state a suitable locale choice before lookup; do not invent an all-locales call. For a saved UUID, api_getVoice resolves its actual details.
| Need | Behavior |
| Named voice | Use voice_name plus locale; verify the returned voice_name AND language_code before using its UUID |
| Legacy deployment ignores name filter | Inspect all returned entries; never assume voices[0] is the requested voice |
| No optional filter requested | Omit it or retain the documented empty-string sentinel; 0 and false are real filters |
| Neutral delivery | Do not infer neutral gender; gender filter 3 is only for a requested neutral-gender voice |
| Provider, premium tier, engine, gender requested | Use the actual supported filter and verify the selected entry meets it |
| Style/pace instructions | Include instructions only when supports_instructions: true |
search matches locale/language names, not voice names. Voice UUIDs can differ for the same name across locales; re-resolve the name after a language change. Do not fabricate a voice or silently substitute another one. If the requested name and explicit gender/provider constraints conflict, clarify the choice.
For options, show a short relevant list of names, locales, descriptions, supported instruction behavior, and returned samples. Do not promise a model or price from memory.
Prepare the script and duration
Use the approved script verbatim unless adaptation was requested. Resolve pronunciation or ambiguous markup before spending. Plain prose uses use_ssml: false. Use true only for valid supplied/prepared SSML and an appropriately supported voice; do not wrap plain text merely to set the flag. Validate malformed markup or ask about ambiguous meaning instead of speaking broken tags as text.
The generation schema has no duration or rate field. instructions nudges delivery but is not an exact timing control, and unsupported voices ignore it. Word-count estimates are estimates. For “exactly 30 seconds,” resolve the requirement before a paid job: accept approximate narration or arrange separately supported measurement/editing. Do not promise exact runtime, invent duration, silently change approved copy, or regenerate repeatedly to chase timing.
Synthesize and retain the result
Call api_generateAudio with the verified voice_id, text, use_ssml, and storage: "asset" for retained/reused narration ("default" only for an explicitly temporary result). Add supported instructions only when appropriate. There is no separate language/model/duration argument in this generation request; the voice selects the language/provider.
Inspect the actual returned payload; do not require an image/video response shape. Current middleware waits for completion. If only a pending/timeout task identifier returns, continue that exact task_id with api_getTaskResult where exposed, using reasonable intervals and a bounded wait. Stop on terminal failure, and never synthesize again merely because storage or completion metadata is missing.
Retain a returned verified audio asset UUID. If the result has only a usable URL even though persistence was requested, resolve an identifiable stored result when supported; otherwise use api_createAsset with the existing audio URL, then api_getAsset until ready status: 4. Keep signed query strings intact. Do not mistake a voice UUID, task ID, or arbitrary response id for the audio asset UUID. Follow manage-assets for failed/pending storage.
Return the actual voice/locale, audio link, verified asset UUID/readiness, and measured runtime when available or explicit unverified timing. Script narration does not combine audio with a video by itself. Use only exposed composition operations for that handoff, and do not claim an assembled video or published post from an audio result.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

