Save script
save_scriptSave script text (your own draft, or an edited version of the generated one). Saving UPDATES the active version in place — the previous text is not kept, so show the user the current script (get_script) before overwriting it. New versions are created by generate_script runs, and activate_script_version switches between those. Run scan_script afterwards so assets and voice blocks reflect the new text.
Three notations the script text carries, none of them ever spoken:
SCENE DIRECTIONS — `[SCENE: <visual direction>]` as its OWN paragraph
(blank line before and after; brackets inside a narration paragraph are
never matched). It directs the storyboard for the narration that follows,
until the next direction, and for that span OUTRANKS the director style's
shot choices — say what is on screen, who is in frame, and any on-screen
text to bake in verbatim. It does not constrain how many segments the
span is cut into. scan_script extracts characters/places named only
inside a direction too, under the exact name used.
PAUSES — `<break time="1.5s" />` is the ONLY thing that makes the voice
pause; ellipses, dashes and paragraph breaks produce no silence. Use
~0.5s between thoughts, ~1.0s at act seams, longer where a card needs
reading time; write ONE tag with the total ("4.0s"), never two back to
back. narrator_speed changes how fast words are said; breaks add the
silence between them.
SPEAKERS — a paragraph starting `Name: "..."` assigns that line to a
character, who gets their own voice (set_character_voice) and their own
shot. Narration with no prefix is the narrator's.Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Full script text to save as a new version; plain prose narration, optionally with `[SCENE: ...]` direction paragraphs, `<break time="0.5s" />` pauses, and `Name:` speaker prefixes | |
| project_id | Yes | Project ID, as returned by create_project or list_projects |