{"id":81837,"plugin_id":"plugin_asdk_app_6ad7a6e23400819198e9cc963ee1da61","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-11-05T01:19:12.696Z","digest":"72d68b66fdc5b88fe46fb4961a59a81a17698435ae205eedd8233a93c0f80e7a","against":null,"payload":{"description":"Edit video with the Visual Sandbox MCP tools, on the server, with nothing to install: join clips into one video, add a voiceover or music, burn word-timed captions, trim and reframe to 9:16, take a frame, place a logo. Trigger when the person asks to \"put these clips together\", \"make a reel\", \"add music\", \"add a voiceover\", \"add captions or subtitles\", \"cut it to 15 seconds\", \"make it vertical\", \"add my logo\", or to finish a video made of several generated shots. Uses the MCP tools only.\n","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":280}],"name":"vsb-edit-video","skill_md_contents":"---\nname: vsb-edit-video\ndescription: >\n  Edit video with the Visual Sandbox MCP tools, on the server, with nothing\n  to install: join clips into one video, add a voiceover or music, burn\n  word-timed captions, trim and reframe to 9:16, take a frame, place a logo.\n  Trigger when the person asks to \"put these clips together\", \"make a reel\",\n  \"add music\", \"add a voiceover\", \"add captions or subtitles\", \"cut it to 15\n  seconds\", \"make it vertical\", \"add my logo\", or to finish a video made of\n  several generated shots. Uses the MCP tools only.\nlicense: Proprietary. See LICENSE for the terms.\n---\n\n# Edit a video\n\nEvery edit is its own tool. It returns a job id, like `generate`; show the\nresult with `show_media`. Each edit is also a tool model that `generate` and\n`vsb run` can run.\n\nUse the MCP tools only.\n\n| To | Tool | Model | Price |\n|----|------|-------|-------|\n| Join clips and pictures, with a cut or a fade | `join_clips` | `tool/video-join` | Free |\n| Add a voiceover, music or effects | `add_audio` | `tool/video-add-audio` | Free |\n| Burn captions from the speech | `add_captions` | `tool/video-captions` | 5 cents |\n| Trim, reframe to another shape, change speed | `trim_video` | `tool/video-trim` | Free |\n| Take the first, the last or one frame as a picture | `extract_frame` | `tool/video-frame` | Free |\n| Place a logo or a picture on the video | `add_logo` | `tool/video-overlay` | Free |\n\nThe free tools allow 200 runs a day. Each input can be up to 15 minutes.\nCaptions take a video of up to 10 minutes.\n\n## Inputs\n\n- Pass every video, picture and sound as a URL: a `result.urls` entry of an\n  earlier job, a URL from `upload_media`, or any public `https` URL.\n- A file attached in the chat goes to `upload_media` as `file` first.\n- Pass the same `sandbox_name` as the rest of the task, so the edit lands on\n  the same canvas.\n\n## Make a reel from generated shots\n\n1. Generate the shots. Give all of them the same shape, for example 9:16.\n2. Join them: `join_clips` with `clips` in order. Use\n   `transition: \"fade\"` for a calm piece, `\"cut\"` for an ad.\n3. Make the voiceover with `audio/elevenlabs-tts`, then add it:\n   `add_audio` with `video_volume: 0.2`, so the clip sound sits\n   under the voice.\n4. Add music the same way: `loop_audio: true`, `audio_volume: 0.3`,\n   `fade_out_seconds: 1.5`.\n5. Add captions last, on the finished mix: `add_captions` with a\n   `style`: `highlight` (the default: large capitals, the spoken word in\n   yellow), `hormozi` (the spoken word in green, yellow or red), `beast`\n   (two or three comic-book words that pop in), `classic` (words appear one\n   by one), `box` (sentences on a dark box) or `plain`. In ChatGPT the card\n   offers the other looks under the captioned video; a press runs the\n   captions again for 5 cents.\n6. Call `show_media` with the job id of each step, or of the last step.\n\nCaptions read the speech of the video, so run them after the voiceover is\nin. Run each step after the job before it is completed.\n\n## Keep shots flowing\n\nThe last frame of one shot is the start frame of the next:\n`extract_frame` with `position: \"last\"`, then pass its URL to the next\nvideo model as the start image. Do this for shots that must continue one\nmovement.\n\n## Fit one video to another platform\n\n`trim_video` with `aspect_ratio: \"9:16\"` crops a 16:9 video from the\ncentre. Use `fit: \"pad\"` to keep the whole frame with bars. Add\n`start_seconds` and `end_seconds` to keep only the best part, and `speed` to\nfit a length.\n\n## Before you run\n\n- Say what each step does and which job it uses, in one line each.\n- Captions cost 5 cents. Say so before the run.\n- A failed step costs nothing. Read the error, fix the input, run again.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}