Docs / Original stories

Create an original video story

Develop a premise into a storyboard, generate the shots, then edit the footage that tells the story. This assisted workflow uses Soundside's existing MCP tools, with review between stages by you or your agent.

Reviewed example

The Grand Entrance

25.5 seconds · 1280 × 720 · 24 fps

A tiny theatrical robot finds the light button on a dark stage, jumps onto it to switch on the spotlight, then takes its moment in the beam and bows.

Watch with sound: music and selected native effects.

This assisted production used 15 image generations: ten distinct accepted images reused across thirteen storyboard holds, plus five superseded images. After reviewing the full board, we generated six initial five-second motion takes. Direct inspection caught a changing button housing. One targeted provider video edit repaired that shot; the other five motion takes were reused. The 30-second draft was trimmed to the accepted 25.5-second cut.

The final film passed mechanical checks and automated review and was also inspected directly. A slightly floaty jump and minor spatial inconsistency between cuts remain. Automated review still needs visual inspection and editorial judgment; this example does not establish unattended or guaranteed film quality. The 30-second template below is illustrative, rather than the exact plan for this edit.

Compare the full initial and revised films

Initial left · revised right, aligned at the start. Cuts diverge after trimming the initial 30.25-second film to 25.5 seconds; the right panel then holds its final frame with a completion label. Only the revised soundtrack plays. The repaired shot is at 13.5–16.5 seconds in the revision, corresponding to approximately 15.1–20.2 seconds in the initial cut.

Story and storyboard

Make the story readable before buying motion

  1. Start with a visible goal, obstacle and payoff. Write the short treatment and identify what each shot must show. A 30-second film can use six logical five-second shots; 30 seconds is the finished timeline target, not a request for one generated clip.
  2. Establish the cast, setting and props. Create or supply authorized image references. Record which character is present, where they are, who holds each prop and what changes.
  3. Review the entire image sequence. Prepare first and last frames for each shot, adding a middle image for an important contact or state change. Check neighboring shots together for identity, geography and cause and effect.
  4. Watch a timed storyboard draft. Assemble reviewed images as still segments with explicit durations and cut transitions. Begin with a silent preview so narration does not retime the holds. Set qa=false and qa_policy="advisory" up front (contracts 1.1 and later ignore qa_policy; a contract 1.0 server rejects qa=false without it). Technical checks still run; manually review the images, timing and output geometry. This draft is not semantically approved motion: stills can establish staging and pacing, but cannot demonstrate convincing movement or physical contact.

Keep intended events separate from observations of the images and footage. Save rejected versions and record manual changes. The full guide includes an ordinary Compose plan for a 30-second storyboard preview.

For the finished film, keep qa=true, as the edit example below does. Its review is evidence: the certificate reads certified or needs_review and lists each judge finding. Read the report and watch the film before accepting it.

Generation and review

Generate shots, then choose the cut

Test the hardest action before generating the whole film. Use supported reference and first/last-frame controls for each operation; a correct endpoint does not guarantee correct movement between endpoints.

For Compose generation, use quality_profile="stable" and video_candidates=1 for one initial video candidate per shot. This does not disable failure recovery or create a spending ceiling. Public Compose uses Grok for generated visuals, MiniMax for narration and Lyria for generated music.

Watch the actual takes. Check the required action, contact, travel, prop possession and changing light or set state. A useful two-second interval can be better than keeping an entire flawed take. Record the accepted resource and source start/end times, then assemble those windows as existing segments.

Review the whole edit with its soundtrack, including adjacent cuts. A completed job or a high automated score does not establish that an audience understands the story. Preserve accepted footage when making a targeted repair, and show the full initial/revised film synchronized side by side with the changed interval identified.

MCP example

Assemble six reviewed shots into a 30-second edit

This is an illustrative plan, not a validated film result. Replace every numbered UUID with a completed resource your account is authorized to use: six videos and one music track. Verify that each video contains the selected interval and required action, and review the music against the full cut. This example uses supplied music and mutes native clip audio; it generates no new sound or references.

compose_video · selected existing footage
{
  "name": "compose_video",
  "arguments": {
    "plan": {
      "title": "The Spotlight — reviewed edit",
      "brief": "A theatrical robot reaches a button, presses it to turn on a spotlight, takes a run-up, jumps into the beam, then lands and bows.",
      "style": "silent_cinematic",
      "delivery_intent": "narrative film",
      "output": {
        "duration_sec": 30,
        "resolution": "1280x720",
        "aspect_ratio": "16:9",
        "fps": 24
      },
      "transitions": {"type": "cut", "duration_ms": 0},
      "audio_strategy": "scored",
      "audio": {"music": {"resource_id": "00000000-0000-0000-0000-000000004001"}},
      "auto_generate_references": false,
      "overlays": [],
      "segments": [
        {"id": "approach", "type": "existing", "resource_id": "00000000-0000-0000-0000-000000002001", "source_start_sec": 0, "source_end_sec": 5, "duration_sec": 5, "source_audio_volume": 0},
        {"id": "press", "type": "existing", "resource_id": "00000000-0000-0000-0000-000000002002", "source_start_sec": 0, "source_end_sec": 5, "duration_sec": 5, "source_audio_volume": 0},
        {"id": "light", "type": "existing", "resource_id": "00000000-0000-0000-0000-000000002003", "source_start_sec": 0, "source_end_sec": 5, "duration_sec": 5, "source_audio_volume": 0},
        {"id": "run_up", "type": "existing", "resource_id": "00000000-0000-0000-0000-000000002004", "source_start_sec": 0, "source_end_sec": 5, "duration_sec": 5, "source_audio_volume": 0},
        {"id": "jump", "type": "existing", "resource_id": "00000000-0000-0000-0000-000000002005", "source_start_sec": 0, "source_end_sec": 5, "duration_sec": 5, "source_audio_volume": 0},
        {"id": "bow", "type": "existing", "resource_id": "00000000-0000-0000-0000-000000002006", "source_start_sec": 0, "source_end_sec": 5, "duration_sec": 5, "source_audio_volume": 0}
      ]
    },
    "quality_profile": "stable",
    "image_candidates": 1,
    "video_candidates": 1,
    "evaluation_mode": "full",
    "qa": true
  }
}

Each window's duration equals its end minus its start. Preserve the resolution and frame rate through preparation and assembly. When shortening the cut, review the total duration, overlay timing and audio placement together. Keep review notes outside the strict public plan; unknown fields are rejected.

Execution

Keep the returned job and its evidence

compose_video returns a pending parent resource_id. Check completion with lib_list (the parent's status). A notifications/resources/updated push may also arrive while your client holds a stream, but don't rely on it; an update announces a change, not a completion verdict.

After reconnecting, read the saved resource with lib_list. A client timeout is not a cancellation or a reason to buy the same production again. Inspect the execution report and watch the output before accepting the film.

Read an existing job after reconnecting
{
  "name": "lib_list",
  "arguments": {
    "entity_type": "resources",
    "resource_ids": ["<returned-parent-resource-uuid>"]
  }
}

Pricing and availability

Use authenticated account credits

One credit is US $0.01. Compose adds a five-credit ($0.05) success-only root fee and separately itemizes child calls. Images, motion, audio, analysis, attempted repairs and assembly can add costs. A failed production can still incur charges for work already performed.

These are billable MCP operations, including storyboard assembly and QA. Compose uses authenticated account credits and does not support x402 purchases or Recast's signed quote-token flow. Estimates and candidate settings are not a reserved budget or a guaranteed total price.

This is an assisted workflow rather than a one-click original-film maker. It adds no public autonomy, task or hold/resume controls. Use authorized Soundside resource UUIDs for media inputs, and check live tool schemas before calling them.

See Pricing & Limits for credit behavior. To transform an existing movie's cast or setting, see Recast.