{"id":81858,"plugin_id":"plugin_asdk_app_6ad7a6e23400819198e9cc963ee1da61","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-11-05T01:19:13.375Z","digest":"35424ab17db104561db9e9b1effa2a2d0ff72e564127d400adca62930714be75","against":null,"payload":{"description":"Cut a long video into short vertical clips with the Visual Sandbox MCP tools: find the best passages in a podcast, an interview, a webinar or a talk, cut and reframe them to 9:16 in one render, and burn word-timed captions from the source's own transcript. Trigger when the person asks to \"turn this video into reels\", \"make shorts from my podcast\", \"find the best clips\", \"clip this interview\", \"repurpose this video for TikTok\", sends a YouTube, TikTok, Instagram or X link, or attaches a long video and asks for short ones. Transcribes, proposes the passages, and cuts only the ones the person picks. Uses the MCP tools only.\n","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":280}],"name":"vsb-video-to-reels","skill_md_contents":"---\nname: vsb-video-to-reels\ndescription: >\n  Cut a long video into short vertical clips with the Visual Sandbox MCP\n  tools: find the best passages in a podcast, an interview, a webinar or a\n  talk, cut and reframe them to 9:16 in one render, and burn word-timed\n  captions from the source's own transcript. Trigger when the person asks to\n  \"turn this video into reels\", \"make shorts from my podcast\", \"find the best\n  clips\", \"clip this interview\", \"repurpose this video for TikTok\", sends a\n  YouTube, TikTok, Instagram or X link, or attaches a long video and asks for\n  short ones. Transcribes, proposes the passages, and cuts only the ones the\n  person picks. Uses the MCP tools only.\nlicense: Proprietary. See LICENSE for the terms.\n---\n\n# Long video to reels\n\nThe transcript finds the passages, the person picks them, and one render cuts\nthem. You pick the moments; `cut_and_reframe_video` only cuts what it is\ngiven. Use the MCP tools only.\n\n## 1. Get the video\n\n- **A public page** (YouTube, TikTok, Instagram, X): keep the link for step 2,\n  and call `download_video` with it for step 4. A site can refuse the server;\n  then ask the person to attach the file. Use only video the person has the\n  right to use.\n- **A file in the chat** goes to `upload_media` as `file`. Use the `url` it\n  returns.\n\nThe source can be up to 2 hours long.\n\n## 2. Transcribe it\n\n- **A public page:** call `transcribe_link` with the link. A page with\n  captions, such as most YouTube videos, costs nothing. A page without\n  captions ends the run with no charge. Then say that Scribe charges for the\n  real length, and on a yes call `transcribe_link` again with\n  `use_captions: false`.\n- **A file:** run `audio/scribe` with the file URL. Call `estimate_cost` with\n  the length first, and say the price.\n\n`get_job` returns the transcript as timed lines, `[12.3-18.0] The sentence.`\nKeep the job id: the captions in step 4 read the words from it.\n\n## 3. Propose the passages\n\nA passage with a hook, the context and a payoff beats a quotable line with no\nend. Default to one passage of 30 to 60 seconds; offer up to five.\n\n- It opens with a strong line in its first 3 seconds: a claim, a question or\n  a surprise.\n- It ends at the end of a thought, not in the middle of a sentence.\n- It stands alone. A viewer who did not see the rest understands it.\n- A passage can join two or three parts of the source, in order or not, when\n  the joined parts still say what the speaker meant.\n\nCut at a pause. A pause of 400 ms or more is a clean cut; take care between\n150 and 400 ms; below 150 ms, keep more context. **Never join parts so that a\nspeaker seems to say something they did not say.**\n\nShow a list: the start and end seconds of each part, the length, and the\nfirst line. Wait for the person to pick.\n\n## 4. Cut, reframe and caption in one run\n\nCall `cut_and_reframe_video` once for each reel:\n\n- `video`: the source URL from step 1.\n- `segments`: the parts in the order the reel plays them, each with `start`\n  and `end` in source seconds. Up to 40 parts and 5 minutes in all, each at\n  least 0.15 s.\n- `framing` for each part: `center_crop` for one person in the middle,\n  `pad` when two people sit far apart, or `crop` with `crop_x`, `crop_y`,\n  `crop_width` and `crop_height` in source pixels to follow one speaker.\n- `aspect_ratio`: `9:16` by default.\n- `captions`: one of the six looks of `add_captions`, with `transcript` set\n  to the job id of step 2: `highlight` (large capitals, the spoken word lit\n  up), `hormozi`, `beast`, `classic`, `box` or `plain`. Each look has its own\n  place and number of words. Use `none` when the source already has captions\n  burned in.\n\nThe cut is free. Captions from the source transcript need no second\ntranscription. Send the same `sandbox_name` on every run, such as\n\"Podcast ep 12 reels\".\n\nTo change the caption look, run `cut_and_reframe_video` again with the same\nparts and another look. The cut is free, and the old captions do not stay on\nthe new reel. The looks are in [`vsb-edit-video`](../vsb-edit-video/SKILL.md).\n\n## 5. Hand it over\n\nCall `show_media` with the job ids, and give the `sandbox_url`. Look at the\nframes before you report a reel.\n\n## Rules\n\n- Cut nothing before the person picks the passages.\n- One reel is one run. A complaint about one reel is not a yes for new runs\n  of the others.\n- A failed cut costs nothing. Read the error, fix the input, and run again.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}