Scenario Ad Variants
Overview
One supplied source becomes an ordered set of independently specified edits. Preserve what the brief does not change, and keep every output traceable to the same source. A new storyboard from a product still belongs to scenario-video-ads; single-clip utilities to scenario-video-editing. Connection, discovery, submission and recovery follow scenario. If a sibling skill named here is missing from your available skills, ask the user to install it (npx skills add scenario-labs/skills --skill <name>); unattended, proceed from tool schemas and flag the gap.
Resolve only missing decisions: source, requested variants, exact copy, destination, runtime, audio policy and spend ceiling. Reuse answers already supplied. Distinguish a controlled comparison, where only the agreed variable changes, from creative exploration. Never multiply options into a Cartesian batch unless requested.
Quick reference
| Requested change | Route | What stays fixed |
|---|
| Hook copy, CTA or end card | scenario-text-overlay, then scenario-video-assembly | Underlying footage, source audio and all other copy |
| Cutdown, grade or placement | scenario-video-editing, scenario-formats | Agreed source intervals, sequence and focal subject |
| Background, clothing or object replacement | scenario-video with a discovered video-edit member | Unchanged identities, actions, timing and source audio |
| New shots or concept | scenario-video-ads | This is new creative, not a source-preserving edit |
Use deterministic operations when they satisfy the brief. In gameplay capture, replacing a background generatively can also change geometry, UI or mechanic behavior. Do not silently treat such output as faithful gameplay. If preserving those pixels is mandatory and the available route cannot isolate the edit, report the limitation before spending. A generative preservation prompt is a request to verify, not a guarantee.
Source and variant records
Read asset_get for source dimensions, duration and frame rate; inspect the footage, its existing text, cuts and audio. Reference images have explicit roles: identity, product, style or replacement. Assign each variant a stable label and record its source asset, intended delta, invariants, exact copy, output specification and audio policy. Every independent variant starts from the source, never the last generated variant. A requested revision starts from the chosen variant when that is the user's intent.
Keep a compact local record of each variant's state: blocked, planned, submitted, pending, failed or verified; submitted job id; output ids; measured properties; QA outcome. Save the actual submitted payload, not just a prose prompt. A rendered output awaiting review is not verified. Retain completed variants and wait on pending jobs after interruption; a transport failure is reconciled through scenario before any resubmission. Retry only the affected failed variant within the remaining ceiling, keeping its original label. Changing the intended delta creates a revision, not an invisible retry.
For a generative edit, construct the prompt from the requested change, named reference roles, preserved identities/text/actions and the source timing. Use recommend with the need in the user's own words, then model_schema_get to establish supported video inputs, references, durations and audio controls. Never import another provider's duration or prompt-length limits. If the requested precision or media is unsupported, offer the nearest feasible route without promising equivalence.
Worked example: three hook variants from gameplay
The brief supplies a 15-second gameplay clip with audio and requests exactly three 9:16 exports. The hook copy occupies seconds 0 to 2: "Hold the line", "One hit left", and "Can you survive?". The gameplay, audio, runtime and final end card must not change. The source already has a clear hook area.
asset_get the source, then inspect it. Check that its measured shape, runtime and hook area support the brief. If existing hook text must be removed from flattened footage, ask for a clean source or agree a covering panel. Unattended, use a panel only if already authorized and it preserves all required visible content; otherwise mark affected variants blocked on a clean source and continue any independent feasible variants. Do not spend on blocked variants or generate new gameplay to erase text.
- Record variants A, B and C with the same source and invariants. Render three exact text cards through
scenario-text-overlay, with matching geometry and styling so copy is the only changed variable. Upload the rendered cards through scenario.
- Follow
scenario-video-assembly: model_schema_get on model_scenario-compose-video, Scenario's single deterministic compositor. Each payload uses the same source video layer and its audio, plus its own card as an image layer at the agreed time. Set canvasMode: "custom" with numeric canvasWidth/canvasHeight, and durationMode: "custom" with duration: 15. Give the source layer string width/height matching the canvas and fit: "contain" to preserve the whole picture without stretching; different source ratios leave bars, and cropping requires authorization. Set the card's string width/height, explicit placement and fit: "contain". Set fps from the measured source rate within the schema's whole-number range; disclose any required rounding. This compositor uses seconds in 0.1 increments; do not promise frame-exact timing beyond that contract.
- Price each exact payload with
model_run and dry_run: true. Fit submissions and any planned repairs inside the authorized ceiling. A quote is not payload or visual validation. Submit with wait: false, save each job id and use jobs_wait; pending jobs keep their ids.
- Inspect every exported variant at the hook boundaries, throughout the gameplay and on the end card. Check the frames immediately before, at and after the requested endpoint: a timeline field does not establish whether the rendered endpoint is inclusive. Compare measured runtime and shape with the source. Check that audio stays synchronized and that the tail is intact. A succeeded job with a missing overlay fails. Report an endpoint mismatch instead of silently shortening the hook to hide it.
- Deliver A, B and C in the requested order via
asset_display and asset_download. Include the variant map and measured properties. Preserve the payloads and source references for revisions; these are a reconstruction recipe, not a native editable-editor project.
Verification and common mistakes
For generative edits, inspect a contact-sheet sweep plus frames around important changes, not just the first and last frames. Check identities, original and requested text, objects outside the requested edit, action continuity and audio. When generated audio differs, use the supported assembly route to restore the source track only if the picture still aligns; attaching original audio to retimed action does not fix synchronization. Silent sources remain silent unless the brief asks for sound.
- Rebuilding every variant after one failed job discards successful work and repeats spend.
- Changing music, grade and hook together invalidates a copy-only comparison.
- Requested dimensions and duration are not measured output properties.
- A new visual treatment is not evidence of a better-performing ad; performance needs a separate campaign experiment.
- Source reconstruction is not byte identity after re-encoding. Check preserved content and measured synchronization; promise lossless delivery only when the route supports it.