본문으로 건너뛰기
cccskills
무료GitHub에 공개

scenario-video-assembly

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.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(1)

  • SKILL.md9.2 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

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, ask the user to install it (npx skills add scenario-labs/skills --skill <name>); unattended, proceed from tool schemas and flag the gap.

Quick reference: pick the backend first

NeedModel
Clips end to end, optional transitionsmodel_scenario-video-concat
Anything overlapping: overlay, bed, titlesmodel_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 seconds of a 90-second track, set trimEnd: 70.
  • duration overrides the layer's length. The top-level duration is a different field, setting the whole composition, and applies only when durationMode is "custom".

Everything is in seconds at step: 0.1, so do not promise frame-accurate cuts. x and y are strings taking pixels, percentages or words, and anchor says which point of the layer they address: top-left, top-center, top-right, center-left, center, center-right, bottom-left, bottom-center, bottom-right (the middle one is bare center), defaulting to "top-left". A bottom-right logo is x: "right", y: "bottom", anchor: "bottom-right", flush to the edge unless you inset it with a percentage.

canvasMode and durationMode both default to "auto", computed from the layers: a custom frame is canvasMode: "custom" plus numeric canvasWidth and canvasHeight (there are no top-level width/height, and unlike the layers' string width/height these are numbers), and a custom length is durationMode: "custom" plus the top-level duration. fit only acts on a layer that also sets the layer's own width and height, strings like x and y: to reframe a clip, set both to the canvas size as bare pixel numbers in strings (width: "1920", height: "1080", the form of the schema's own "0" default; a percent string also works) and pass "cover" (crops) or "contain" (letterboxes), since the default "fill" stretches. Give an overlay layer an explicit width and height even at its native size: leaving them empty is documented as preserving the original but does not reliably, and a 560x80 strip came back at 1792x256 on a 1920x1080 canvas. The output field is videoOutputFormat here, imageOutputFormat in Image Studio, and outputFormat in concat and the trim utilities.

A layer's type (image, video, audio, or mask) is optional and otherwise inferred from source. There is no text layer, so titles, lower thirds and end cards arrive as rendered PNGs composited as image layers; scenario-text-overlay renders them letter-perfect.

Worked example: three clips, a music bed, and captions

  1. For every source, asset_get and read properties: the real duration (audio carries it too), frameRate on video, and width/height on video and images alike. A model asked for eight seconds does not always return exactly eight.
  2. Add them up to get each clip's startTime, then model_schema_get on model_scenario-compose-video.
  3. model_run it with layers holding the three clips at their computed startTimes (zIndex: 0), a logo PNG pinned by x/y/anchor at zIndex: 1, and the music as an audio layer trimmed to the clips' total with trimEnd, since auto durationMode computes from every layer, the bed included. volume (0 to 2) and mute are per-layer and apply to video layers too, so balance the bed from either side. Set canvasMode: "custom" with canvasWidth and canvasHeight; fps defaults to 30 and takes whole numbers from 1 to 120, so set it to the clips' measured frameRate when they agree (rounded), which is what step 1 read it for.
  4. jobs_wait, then caption the finished cut rather than each clip: model_scenario-caption-studio (an authoring-time pick, since Scenario ships two captioners: re-discover with recommend) takes it as video and transcribes whatever audio the master actually carries, so lower the bed's volume rather than muting the dialogue. For Caption Studio, follow scenario-caption-studio for corrected-SRT input and rendered-caption verification rather than inferring an upload route from a file-typed schema: the exposed upload_asset kinds do not include text. It burns captions in by default, returns a sidecar when outputSrt is true, and positions them with textPosition (top, middle or bottom, default bottom, so move it off a bottom-edge overlay). Other captioners use their own live input contracts.
  5. asset_display to review, then asset_download with format left unset (it is an image conversion target) for the file.

For a revision handoff, retain the clean master, source assets, actual submitted layer payload, measured timings, narration text and voice settings, title PNGs with their editable layout settings, and any corrected SRT and returned caption theme. Keep output ids linked to the recipe. Revise the requested layer and recaption from the clean master; do not stack new captions over a burned export. These records support reconstruction, not a promise of a native editor project or a tested replay in a new environment.

Trim, split and resize have their own tool models. Note model_scenario-video-cut's startTime/endTime are source in and out points, not timeline placement.

Common mistakes

  • Reaching for an MCP tool like video_compose, or for local ffmpeg to do the edit itself. The editing surface is model_run on tool models; probing a download is fine.
  • Handing concat one clip, or one transition per clip: the minimum is 2 videos, and transitions run one fewer.
  • Trusting dry_run here as validation: it returns a cost estimate only, and assembly payloads are the most structurally complex in the catalog.
  • Captioning a concatenated master before checking its sync: the captioner times its lines to the audio it hears, so drifted audio ships drifted captions on top of it.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Handle review comments received on GitHub for the current branch's PR or a given PR number or URL, by triaging each unresolved thread, fixing what is warranted, pushing, and replying in each thread, when asked to address, fix or answer PR comments. Works in any Scenario repository.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

scenario-labs/skills1.1천2026년 10월 23일 업데이트

Generate one short Conventional Commits squash message describing only the net diff between the PR's base and head, set its header as the PR title, validate it with the repository's commitlint and both copy its description to the clipboard and display it, when asked for a squash message. Works in any Scenario repository, whatever its default branch.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

scenario-labs/skills1.1천2026년 10월 23일 업데이트

Refresh the current pull request description from its net changes, following the repository's PR template, when asked to update or write the PR summary. Works in any Scenario repository, whatever its default branch.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

scenario-labs/skills1.1천2026년 10월 23일 업데이트

scenario

무료

Use when connecting an AI agent to Scenario (scenario.com) through MCP, or when a task involves generating images, video, 3D, audio, sprites, textures, or game assets. Also when picking a Scenario model, running a LoRA, refining a generation prompt, uploading reference images, waiting on generation jobs, checking credits or quota, hitting Scenario auth, scope, or Forbidden errors, or setting up mcp.scenario.com in Claude Code, Cursor, VSCode, or another agent.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

scenario-labs/skills1.1천2026년 10월 23일 업데이트

Use when generating or handling 3D assets through the Scenario MCP server, including text-to-3D or image-to-3D meshes, GPT-6 Astra 3D or Claude Opus 5.5 3D, GLB, FBX, OBJ, STL, or VOX files, PBR-textured or game-ready models, voxel models, multi-view reconstruction, editing a mesh by prompt, retexture, remesh, UV unwrap, auto-rigging a biped or quadruped, or retargeting an animation, previewing a mesh in the 3D viewer, or downloading a model for import into Unity, Unreal, Godot, or Blender.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

scenario-labs/skills1.1천2026년 10월 23일 업데이트

Use when generating navigable 3D worlds or Gaussian splat scenes on Scenario via MCP: text-to-world, image-to-world, a 360 panorama or skybox turned into a walkable splat, multi-view photos or a video walkthrough reconstructed as a splat, or one object photo to splat. Keywords: World Labs Marble 1.1, 1.1 Plus, 1.0 Draft, Hunyuan World, HY World, image-to-skybox, skybox-to-splat, multiview-to-splat, TripoSplat, gaussian splatting, 3DGS, spz, world generation, explorable scene, VR.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

scenario-labs/skills1.1천2026년 10월 23일 업데이트

scenario-labs의 스킬 모두 보기

이 스킬의 문제 신고