Skill detail
scenario-video-assembly
Assembles generated clips into finished video on Scenario via MCP: concat with transitions, timeline layering, overlays, music beds, captions/SRT, trimming and vertical variants.
Inspect before use
Read the source instructions and check the requirements before you install this skill.
SKILL.md
The saved excerpt is a snapshot from when this skill was listed. The external source remains the complete and most current version.
---
name: scenario-video-assembly
description: "Use when generated clips must become a finished video on Scenario via MCP: cutting a shot list together, laying a timeline, concatenating with transitions, overlaying a logo or title card, adding a music bed or voiceover, burning in or exporting captions and subtitles, trimming and splitting, or producing vertical and square variants of one master. Keywords: edit, assemble, stitch, concat, compositor, timeline, layers, overlay, captions, SRT, ad, UGC, social cut."
license: MIT
---
# Scenario Video Assembly
## Overview
Scenario has no editing tools on the MCP surface. Every compositor, concatenator, trimmer and
captioner is a deterministic model run through `model_run`. The compositor, concatenator and trimmer
ids are fixed and named below; Scenario ships two captioners, so that one is discovered with
`recommend`. Connection and the core loop: see the `scenario` skill; the clips themselves: see
`scenario-video`. If a sibling skill named here is missing from your available skills, load it with
`skill_get` (Scenario MCP) or ask the user to install it
(https://github.com/scenario-labs/skills#install); unattended, proceed from tool schemas and flag
the gap.
## Quick reference: pick the backend first
| Need | Model |
| ------------------------------------------ | ------------------------------ |
| Clips end to end, optional transitions | `model_scenario-video-concat` |
| Anything overlapping: overlay, bed, titles | `model_scenario-compose-video` |
| Still layout (thumbnails, sheets, key art) | `model_scenario-compose-image` |
These ids are constants: each is Scenario's single deterministic tool for its operation, so
discovery would only re-derive it.
Concat is sequential: `videos` takes 2 to 50 files (never 1), `preserveAudio` (default true) carries
each clip's own track into the cut, and the optional `transitions` array's "length must be number of
videos - 1". Each entry is an object `{type, duration}`, never a bare string: `type` is one of 18
names read off the schema (`fade`, the default, is the plain crossfade; `dissolve` is a different
effect; `none` a hard cut) and `duration` runs 0.1 to 5 seconds, default 0.5. Omit the array for
hard cuts throughout, the right call whenever the brief does not ask one shot to flow into the next.
`preserveAudio` is not a guarantee of sync: a concatenated cut has come back with its audio drifting
against the picture, with and without transitions (a confirmed defect at authoring time). A concat
of clips carrying dialogue or effects is verified, never trusted: `asset_get` the output and compare
`properties.duration` with the inputs' sum (each transition shortens the cut by up to its
`duration`), then download it and check that the audio and video streams run the same length (a
local probe of the download is inspection, not editing) and that a visible cue (a cut, a mouth
opening, an impact) lands on its sound. When speech must stay locked to the picture, assemble in
Video Studio instead: each clip layer carries its own track at its `startTime`, so a drift
introduced by joining has nowhere to arise, at the price of hard cuts or per-layer fades in place of
the transition set. Concat stays the tool for silent clips and for cuts whose bed is laid
afterwards.
Video Studio is an absolute timeline: `layers` holds 1 to 50 image, video or audio sources placed by
`startTime` and stacked by `zIndex` (higher in front), with per-layer `fadeIn`/`fadeOut` rather than
a between-clip array, so a cross-fade between two clips belongs in concat. At least one layer must
be a video, so a music bed over a still is rejected.
## The Video Studio contract
Per layer, three timing ideas have confusable names:
- `startTime` and `endTime` place the layer on the timeline.
- `trimStart` and `trimEnd` are amounts shaved off the head and tail of the source, not in and out
points: to play the first 20 secRead the full source on GitHub (opens external page)