Get started
FormFit — Auto Reframe Video for Shorts & Reels

FormFit — Auto Reframe Video for Shorts & Reels

Put in one horizontal video and FormFit reframes it to 5 aspect ratios at once: Shorts, Reels and TikTok (9:16), Instagram feed (1:1, 4:5) and YouTube (16:9). Auto tracking prefers faces and falls back to motion to keep the subject in frame, and scenes where cropping would lose information switch to blur fill (full frame + blurred background). Logo watermark, top/bottom title bar and intro/outro cards are added in the same pipeline. Runs fully locally (uv + ffmpeg), no API key.
#Vídeo#Redes sociais#Produtividade
Avaliação
São necessárias mais avaliações
Vendas
0
Como usar
Baixar

hero_en.webp before_after_en.webp

FormFit — Auto Reframe Video for Shorts & Reels

If you have ever taken one horizontal video and reopened the editor to cut it for Shorts, Reels
and the Instagram feed, you know the worst part is setting the crop position by hand for each
aspect ratio so the subject does not leave the frame. Add the logo watermark again each time,
and 30 minutes go by on a single video. FormFit cuts that repetition down to three scripts. It
follows the subject automatically while cropping, and adds the logo, title and intro/outro in one
pipeline. In our measurement, one 8-second source took under 6 seconds through the analyze,
reframe and brand steps.

It is not offered for impersonating real people, deepfakes or deception.

Pipeline

  1. analyze: tracks the subject center with face detection (Haar cascade) first, switching to
    motion-based tracking when there is no face, smooths out shake, and saves crop_path.json.
  2. reframe: follows that path to crop to the target aspect ratio (crop mode), or, for scenes
    where cropping would lose information, uses blur mode, which keeps the whole frame and fills
    the margins with blur.
  3. brand: adds a logo (corner, opacity and margin settings), a top/bottom title bar (Korean
    supported, rendered with Pillow) and intro/outro card images for the final output.

Actual commands

uv run scripts/analyze.py --input in.mp4 --output crop_path.json

uv run scripts/reframe.py --input in.mp4 --crop-path crop_path.json \
    --preset shorts --mode crop --out out/9x16.mp4

uv run scripts/brand.py --input out/9x16.mp4 --out out/9x16_branded.mp4 \
    --logo logo.png --logo-corner br --logo-opacity 0.85 \
    --title "채널 이름" --intro intro.png --outro outro.png

What's included

Item Contents
scripts/analyze.py Face/motion-based subject tracking → crop_path.json
scripts/reframe.py Reframing with 4 platform presets × 2 modes (crop/blur)
scripts/brand.py Logo, title bar, intro/outro branding
guides/platforms.md Resolution, fps and length specs for Shorts, Reels, TikTok, Instagram feed, YouTube
guides/recipes.md Batch processing and troubleshooting (FAQ)

Presets: shorts (9:16, 1080x1920) · feed-square (1:1, 1080x1080) · feed-portrait (4:5,
1080x1350) · youtube (16:9, 1920x1080). All output as H.264 + AAC with +faststart.

3 usage examples

1) YouTube long-form → Shorts clip
Cut a section from a horizontal interview or vlog and convert it to vertical for Shorts. It tracks
faces first, so the speaker stays in the center of the frame.

uv run scripts/analyze.py --input interview.mp4 --output cp.json
uv run scripts/reframe.py --input interview.mp4 --crop-path cp.json \
    --preset shorts --mode crop --out shorts.mp4
uv run scripts/brand.py --input shorts.mp4 --out shorts_final.mp4 \
    --logo logo.png --title "이번 주 하이라이트"

2) Lecture/presentation screen → Instagram feed 4:5
When the whole slide matters, cropping cuts off text. blur mode keeps the whole frame and fills
only the margins with blur (no tracking needed, analyze can be skipped).

uv run scripts/reframe.py --input lecture.mp4 --preset feed-portrait \
    --mode blur --out feed_4x5.mp4

3) Apply a brand logo + intro/outro in bulk
Put the same logo and intro card on several already-reframed videos at once to keep a consistent
look.

for f in clip1.mp4 clip2.mp4 clip3.mp4; do
  uv run scripts/brand.py --input "$f" --out "branded_$f" \
    --logo logo.png --logo-corner br --intro intro.png --outro outro.png
done

What you need

This is all you need, no more.

  • uv, ffmpeg/ffprobe (must be on PATH). No API key.
  • For a logo, a transparent-background PNG is recommended (an opaque background works, but looks
    less like a watermark).
  • For Korean titles, the OS needs a Korean font (built in on macOS/Windows; on some minimal Linux
    installs you need to install Noto Sans CJK or pass a path with --font).
  • Automatic subtitles and music are not included: it only does reframing and branding.

Recommended / not recommended

Recommended

  • You need vertical and square clips for several platforms from one horizontal source
  • Content with a subject that has a clear position on screen, such as a person or product
  • You need to apply the same logo and intro to many videos

Not recommended

  • If the whole frame matters evenly (several people, charts, captions) so cropping is not suitable
    in the first place, you will only use blur mode and get little out of the tracking
  • If you need automatic subtitles, this skill alone is not enough (you need a separate STT skill)
  • Extremely fast subjects that cross the frame in under 1 second can briefly catch at segment
    boundaries (reduce --chunk-sec to soften this; details in the FAQ)

FAQ

Q1. Does face detection really work on real people?
Face detection uses the standard OpenCV Haar cascade (frontal faces). However, the test videos for
this card could not use real people because of policy, so we tested with synthetic shapes; with no
faces, it switched automatically to motion-based tracking, and that path is what we measured. The
face detection itself is a standard, proven algorithm, but we do not claim "verified directly on
real people." It can miss side faces, low light or masks, and in those cases it moves over to
motion tracking.

Q2. Is the output exactly the same length as the source?
crop mode encodes in segments and joins them, so when the source and output frame rates differ
(for example 25fps → 30fps), rounding errors add up. In our measurement, an 8-second source came
out about 0.26 s (+3.2%) longer. Audio does not drift and segments are not misaligned internally.

Q3. Should I use crop or blur?
crop if the subject is in one place, blur if information across the whole frame matters. SKILL.md
and guides/recipes.md have the criteria and examples.

Q4. Why not use the drawtext filter?
The default Homebrew ffmpeg build often has no drawtext/subtitles (libass, freetype) filter
(verified). So text and logos are drawn by Pillow as transparent PNGs and applied with the overlay
filter; it works on the buyer's machine without a separate ffmpeg build.

Q5. Can I batch process several videos at once?
The skill itself has no batch runner. Instead, guides/recipes.md has a recipe that wraps the
three scripts in a shell loop; copy and use it.

Purchase notes

One-time download purchase. Follow the SKILL.md instructions in the archive and run it with
uv. No account sign-up or API key is needed to run it. Search "FormFit" on Capafy to find it.

The example images are real runs on the trailer of the Blender Foundation open movie Big Buck Bunny (CC BY 3.0, bigbuckbunny.org).