Nodaro Docs
DocumentationNode ReferenceModelsAI Agents (MCP)DevelopersSelf-hostingResearch

Studio productions

Direct a film from an AI assistant as a studio production, validate the plan for free, generate frames and motion with quotes, and keep editing in Studio.

Available on Nodaro Cloud

A studio production is a film that an AI assistant can direct from a conversation and that you keep editing in the Studio editor at studio.nodaro.ai. It is an ordered list of scenes, each with a frame, an optional motion, and the plan, looks, cast and voice that made them. An assistant can draft the film, hand it over, and pick it up again after you moved three scenes around. Studio productions are a Nodaro Cloud feature.

Choose this lane for "make me a film, a scene or a sequence, and let me keep editing it". For a movie written as one JSON document, see Recast; for a workflow on the canvas, see the Film Director.

Two vocabularies

The editor and the production document name the same things differently. The person only ever sees the editor, so an assistant speaks the editor's words and keeps the document's names for tool calls.

The user saysThe document says
filmthe production
scene, such as "Scene 3", a card on the timelinea shots[] entry, addressed by shot_id
a scene's frame, whose results are takesstill
a scene's motion, whose results are takesclip
the shots inside a motionbeats[], set with set_beats
  • "Scene N" is always the N-th entry of shots[]. "Rename scene 3" is rename_shot on it, and "delete scene 3" is remove_shot on it.
  • "Shot" means a shot inside a motion, an entry of beats[] of the scene the user is looking at, never a shots[] entry. When no scene is in view, or its motion has fewer shots than the user named, the assistant asks instead of guessing.
  • A scene's frame is its still. A planned frame is something else: a frame plan the user reviews and accepts, made with generate_studio_keyframe. A scene's start frame and end frame are the endpoints of its motion.
  • Receipts use the document's words. Operation names and the receipts of an edit say "shot" where they mean a scene; an assistant should not repeat that wording to the user.

The loop

Read the guide

get_studio_production_skill returns the guide in four parts: operating (the tools, the loop and the operations), authoring (the plan format), catalog (every picker, model and option) and schema (the plan's JSON Schema). It is generated from the live deployment, so it matches the server you use. Free.

Validate the plan

validate_studio_plan checks a plan for free, saves nothing, and matches cast names against your own library. Fix each errors[].path until the plan is valid, before anything is spent.

Create the production

create_studio_production creates a new film, with the plan's scenes if you pass one. import_studio_production adds a plan's scenes to an existing film. Both are free. For a story without a plan, describe_studio_production asks the Director to write the scenes, as an LLM run.

Read it back

get_studio_production returns the film as it stands, and a pending block of what is still running. With write permission, the read first lands everything that finished, so a re-read is how a finished generation reaches its scene. Pass shot_id for a cheap read of one scene.

Edit with operations

edit_studio_production applies a batch of operations. See Editing.

Generate

generate_studio_still makes a scene's frame, generate_studio_clip its motion, new_studio_shot_from_frame takes a frame out of a motion, voice_studio_shot speaks a line, revoice_studio_clip recasts the voices of a motion, and score_studio_production writes the soundtrack.

Export and share

plan_studio_export lists the steps that assemble the film, each with its price. share_studio_production opens or closes a share link, and clone_studio_production makes a copy.

An abandoned conversation strands nothing. The production is a real film you can open in the editor, and a generation that was still running lands the next time the production is brought up to date, by you, by the editor or by the next assistant.

Editing with operations

Every change to a production is an operation, and edit_studio_production is the one tool that applies them. A batch is applied as one step against the newest version of the document.

  • Operations address things by stable keys: a scene by its id, a cast member by its role slug, a result by its job id or URL. Never by position, because the user may be editing the same film in the browser.
  • A batch composed against a slightly older version still applies, and the reply says it was rebased. strict: true with expected_version refuses instead.
  • One bad operation refuses the whole batch and writes nothing. The error names the operation by its index, counted from 0; fix it and send the batch again.
  • receipts has one past-tense line per operation, which is what to show a user who asks what just happened.
  • Some deletes can be undone. A removed scene, take or planned frame goes to the production's bin and can be restored. Clearing a cast member, a voice or the soundtrack, deleting a cut, removing a sequence, purging a bin entry and emptying the bin cannot.
  • Sharing is not an operation. It has its own tool, so an edit batch can never change who can see the work.
  • Deleting a production is not available. Archiving it is an operation, and it can be undone.

The operation vocabulary is served, not printed here: get_studio_production_skill with part: "operating" returns what the deployment accepts.

Preview a batch

edit_studio_production with dry_run: true answers what the batch would do and writes nothing. Each operation's receipt carries a class: S changes the document, D deletes, P changes who can reach the work, and $ spends. A delete that would go to the bin is marked restorable: true. Show the preview to the user, then send the same batch without dry_run.

The tool checks first that the deployment supports previews, and refuses with studio_preview_unavailable if not, having sent nothing. The ids in a preview are not the ids of the real change: to undo, read the bin ids from the applied batch's receipts.

Spending

An assistant that directs a film makes dozens of calls, so two habits matter.

  • Quote first. generate_studio_still and generate_studio_clip accept dry_run: true, which returns the model and the price and writes nothing. credits: null means the price is unknown, not free. Show the price and let the user accept. The other spending tools have no quote: price them from the model, or ask first.
  • Retry safely. Every spending tool accepts client_request_id, 8 to 128 characters of A-Za-z0-9_.:-. The same token answers with the jobs of the first call and charges nothing new. Make a new token for each new request, and never retry a spending call without one.

Generation is run, then poll, then land:

  1. A frame or motion call returns its job ids at once.
  2. Wait on those jobs with get_job, or watch the production's pending block.
  3. Read the production again with get_studio_production. With write permission, the read lands every finished job before it answers.
  4. Show the user what arrived.

With read-only permission, the read lands nothing, and a finished job stays in pending until someone who may write brings the production up to date.

Confirmation marks

A tool that spends credits, or that changes who can see the work, says so in its own definition, in _meta.nodaro.confirm. A client can put a confirmation prompt in front of every tool with the mark, instead of keeping its own list.

MarkWhy to ask firstTools
$It costs credits.describe_studio_production, generate_studio_still, generate_studio_keyframe, generate_studio_clip, new_studio_shot_from_frame, voice_studio_shot, revoice_studio_clip, score_studio_production
PIt changes who can see the work.share_studio_production

edit_studio_production has no mark: what a batch does depends on its operations. To confirm before a delete, preview the batch, where every operation is classed.

Permissions

The seven spending tools need both workflows:write and workflows:execute. A connection that granted only one of the two sees none of them, without explanation, so grant both for generation. Reading needs workflows:read, and creating, editing, sharing and cloning need workflows:write. The tools reference lists each tool's permission and parameters.

Availability

On a deployment that does not serve studio productions, every tool of the family answers not_available, a plain refusal that is not worth retrying. Call list_studio_productions to check before you offer the feature.

Where the plan format is documented

The plan format, nodaro-studio-production, has one published home. The studio app serves the same authoring guide, catalog and JSON Schema at studio.nodaro.ai/skills/studio-production/, so an assistant reading get_studio_production_skill and a person reading that page read the same document.

The same production lane is available over REST, at Studio productions, and in the SDK as client.studio.productions.

Frequently asked questions

Last updated on

On this page