Log in
WorkflowBy HypernaturalVersion 2, updated

Reframe to vertical

hn/workflow-reframe-to-vertical

Turn a finished 16:9 spot into a 9:16 vertical version for TikTok, Reels or Shorts: crop every shot first, restage and re-animate only the shots a crop loses a story beat in, then splice them back over the source audio. Works on an original cut or a remake from workflow-shot-for-shot-remake.

SKILL.md

The person brings a finished 16:9 cut (an original, or a variant from workflow-shot-for-shot-remake) and, if it has one, the job that made it. You deliver the 9:16 cut over the source audio and every shot as its own file, in the layout agreed with the person (core skill).

Cheapest first: crop everything, watch the whole vertical cut, and only then spend generation on the shots that fail. Most shots survive a crop.

Steps

  1. Crop every shot (guide-prepare-renders-for-delivery, ffmpeg-crop-to-vertical). Take the shot list from the 16:9 job or find it with ffmpeg-scene-cuts; together the shots must cover the whole video. Place a window per shot from a gridded sheet of frames across it (ffmpeg-crop-to-vertical, Place the windows): it follows the action across the whole shot, pans when the action moves, and fits end cards wider than it. Record each window and why where you keep the job's notes. Build the crop-only cut over the source audio and a sheet of every shot's first, middle and last frame. Gate: the person watches the whole crop-only cut at native size and names the shots that need more than a crop.
  2. Restage only the shots a crop can't save (guide-edit-a-frame-before-animating, nano-banana-restage-for-new-aspect). Write per shot what moves and what stays. Make both kinds, on nano banana 2.1 and Pro:
    • a 16:9 edit with the subjects moved into the middle third, judged by its centred 9:16 crop: for close-ups, and when the look must match the cropped shots around it;
    • a native 9:16 redraw, the same camera "shot in portrait": more resolution for the render and better for wides, but the model recomposes more freely. Gate: a review_choose per shot, all in the same turn: the original 16:9 frame as original, the plain crop the person saw as previous, each 16:9 edit an option holding its crop and its full frame, and each redraw an option. Check every person in a redraw: they sometimes duplicate a background person or bunch two on one side.
  3. Fix held props on the pick (guide-keep-small-details, nano-banana-swap-held-product): Pro, a pre-hazed product photo for the design, a crop of the source frame's prop for angle and grip. Redraws lose small logos; judge the logo at playback size. Gate: review the fixed stills.
  4. Animate the restaged shots (guide-animate-a-shot). Use the model that won the shot in the 16:9 job (kling-v3-image-to-video, seedance-2-5-image-to-video). With no earlier job, draft on h3-max-image-to-video and upgrade where guide-choose-a-video-model says the shot needs it; a draft approves composition and timing, not motion. Trim to the shot's length plus a 0.5 s tail (ffmpeg-frame-exact-trim) and keep the render's own audio in the trimmed file, so a take is judged with its sound. Crop a 16:9 render to 9:16; if the crop holds only a sliver of someone, move the crop centre and lock the camera in the prompt, or a push-in drifts them out. Gate: a review_choose per shot, all in the same turn, its renders as the options and the plain-crop clip as previous.
  5. Lip-sync the dialogue shots (guide-lipsync-video, h3-max-lipsync-a-still). Isolate the voice (elevenlabs-voice-isolation) and cut the line to start on the shot's first frame and go silent after the speaker's last word, picked by ear from a ladder of trims (ffmpeg-cut-audio-window). Pad it with silence to 5 s; never take a longer window. It is a fresh performance from the restaged still. Gate: a review_choose with the lip sync and the plain render as the options, with their sound: H3 smooths facial hair and skin on a close-up, so pick the lip sync only if it holds up.
  6. Splice (ffmpeg-splice-into-source-cut): each picked render replaces its shot at exactly the shot's length (the tail dropped), over the source audio. Count the frames after every cut (ffmpeg-frame-exact-trim).
  7. Deliver (core skill), shaped like the 16:9 job's delivery: deliver the cut, plus shotNN.mp4 and shotNN_noaudio.mp4 for every shot. A restaged shot is the picked render with its 0.5 s tail and its own audio; a cropped shot is the crop at exactly the shot's length with the source audio, since the source cuts straight to the next shot.

Resolution: the vertical ships at 608×1080, the pixels the source has. Where the client needs full 1080×1920 quality, restage those shots and render them natively at 1080p 9:16 with Seedance; don't put Topaz on the crops.

Choices this workflow makes

  • Restage only when the crop loses a story beat: a second character, an interaction, the product. Not for empty space or a slightly tight frame.
  • Background people: ask for a glimpse at the frame edges. "Move them close behind her" crowds the subject.
  • Re-animate with the model that already won the shot, so the vertical matches the 16:9 version's motion.
  • Shot files carry a 0.5 s tail so a word finishing over the next shot is still in the file; the cut always uses the exact shot length.

Dead ends

  • Trims without an output frame rate, and fps= inside per-segment chains before a concat: a frame lost per shot (472 of 484); the fixes are in ffmpeg-frame-exact-trim, Tips and traps.
  • Asking Seedance image-to-video for an aspect ratio or a seed: it takes neither; the aspect comes from the image.

Worked example

Acme Co.'s office spot, variant A (the original): 12 shots at 1920×1080, 24 fps, 484 frames. 10 shots shipped as crops. Two were restaged: shot 03 (the manager leaning in with his line) as a 16:9 edit judged by its crop, then lip-synced on H3 Max from the picked still; shot 09 (the wide office chaos) as a native 9:16 redraw plus a fix of the client's drink tumbler, whose logo the redraw had lost.

FAQs

Turn a finished 16:9 spot into a 9:16 vertical version for TikTok, Reels or Shorts: crop every shot first, restage and re-animate only the shots a crop loses a story beat in, then splice them back over the source audio. Works on an original cut or a remake from workflow-shot-for-shot-remake.

Install Hypernatural Desktop, a free Mac app, and connect it to Claude Code, Codex or Claude Desktop. Then describe the video you want and your agent finds the workflow itself, or paste this page's link (https://hypernatural.ai/skill/hn/workflow-reframe-to-vertical) and it installs hn/workflow-reframe-to-vertical and follows it.

Nothing. The workflow is free and runs with tools on your own Mac.

It calls 20 smaller skills for its steps, including Prepare renders for delivery, Edit a frame before animating and Keep small details. Each one is listed on this page, and your agent loads them as the job needs them.

Yes. Ask your agent to adjust it for your job, or to save its own version. You can publish your version under your own handle so anyone can install it.

Go make something cool.

Install the app, open your agent, describe the video. That's the whole onboarding.

Sticker HypernaturalSticker BannerSticker TVBoy