voiceover
Voiceover
When a film is narrated, the audio is the clock. Every animation that illustrates a word should know exactly when that word lands, so the voice is generated with per-character timestamps, grouped into words, and the picture reads those times. Never squeeze a read to fit a slot; retime the picture to the voice.
Copy scripts/tts.py from this skill's folder into the film's scripts/. It needs ELEVENLABS_API_KEY in the environment or the film's .env. Never paste a key into a prompt, a file you'll screenshot, or a commit. A key the user pastes into chat is not used: tell them to rotate it, since chat logs aren't a safe place for secrets [coreyhaines31/marketingskills, video].
Apply only the routes and checks for the selected job. Read a linked skill's named file from its installed folder when available, or from the linked source. Report an unavailable required reference instead of inventing it. [skill-authoring, DISTRIBUTION.md#composing-skills]
The default is eleven_v4, using Text to Dialogue with character timestamps. The previous skill/helper default was eleven_v3 through Text to Speech; the 2026-09-28 release directs v4 content creation to Text to Dialogue. Explicitly selected older models retain the helper's Text to Speech request. [https://elevenlabs.io/docs/api-reference/text-to-dialogue/convert-with-timestamps]
You can't hear it
The agent can check levels, timing and word times, never how a line sounds. Say so in every delivery and have a person listen to the full narration before it ships, especially names, product terms, numbers and foreign words. Fix a mispronunciation by respelling it in the line's say field, then regenerate only that line.
Script
audio/vo-script.json, one entry per sentence or phrase: