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.

MatchDirectRecommended for Video Editing
Sourcescenario-labs/​skillsExternal source
Reported installs765Popularity signal only

Inspect before use

Read the source instructions and check the requirements before you install this skill.

Saved source preview

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 sec
Read the full source on GitHub (opens external page)
Context

Related work