Inspiration
AI video models are astonishing per clip and useless per film. Every generation is a fresh roll of the dice, so characters drift, styles wander, and scene two stars a stranger. I wanted to make short films and ads, but I kept fighting the tools instead of directing. The insight that became Recut: stop fixing the frame, and fix the film. A real production has a cast, a script, and continuity. So should the software.
What it does
Recut is an AI showrunner that takes a script to a finished, on-model film in four stages on one screen:
- Cast. Generate or upload reference images for each character, prop, or location, crown a winner, and lock it. Locked references travel by name (@yeepi) into every shot.
- Script. Paste a script or a two-line premise. A director agent breaks it into named cuts (1A, 2A, 3B) with blocking, acting beats, and camera presets, keeping your character names and style word for word.
- Shots. Each cut plus its locked cast goes straight to a reference-to-video model, so the same characters come back in every frame, with native audio. A continuity judge scores takes against the cast; you star a keeper per cut.
- Edit. Keepers land on a real timeline: trim, split, reorder, drag in alternates. Export renders with ffmpeg, native audio beds and voice lines mixed in, and out comes an MP4.
How I built it
Next.js 15 App Router with API routes orchestrating Alibaba Cloud Model Studio (DashScope) end to end: qwen-max directs the shotlist, qwen-image-plus casts references, qwen3-vl-plus judges continuity, wan2.7-r2v shoots each cut as reference-to-video with native audio, and qwen3-tts-flash speaks the dialogue. Model ids live in exactly one manifest layer, enforced by a guard test. Prompts are compiled from typed state (style, cut text, camera presets, enumerated reference bindings), never concatenated in UI code. A hard budget governor caps spend, and every generated asset is mirrored to durable storage the instant it is produced because hosted URLs expire.
Challenges I ran into
Our first build was the obvious one: a node canvas around image-to-video. Generate a still, approve it, animate it. It looks cheaper, a cheap image gating every expensive clip, but image-to-video only guarantees the first frame. The moment a shot moves, identity drifts, and you pay for the repair: re-rolls, fixes, re-animation. The cheap path quietly became the expensive one. The breaking test was a two-character scene where the model kept merging our two swallows into one average bird. So I pivoted mid-hackathon to binding locked references directly into the video model, with enumerated reference instructions ("Reference image 1 is yeepi... never merge, swap, or average their features"). Both birds survived every cut. Consistency by construction, not by cleanup. Other battles: hosted result URLs expiring within a day (solved with durable mirroring), and race conditions clobbering saved edits (solved with revision-checked, union-merging saves and crash backups).
Accomplishments that I'm proud of
The pivot from image-to-video to reference-to-video is the whole product, and I made the call while the clock was running. I shipped a genuine editing suite, not a gallery: a real timeline with split, trim, and reorder. And the demo is the product itself, not a slideshow: our judge walkthrough replays real projects through the live UI, prompts typing themselves into the actual inputs and real media revealing in place, ending on the author's own edited cut. I built the entire thing under a hard budget cap.
What I learned
"Cheaper per unit" and "cheaper per outcome" are different numbers, and at film length only the second one matters. Character consistency is not a prompt-engineering trick you bolt on; it has to be structural, enforced by the model's inputs rather than patched afterward. And separating story (the script) from direction (camera, blocking) from generation (the model) is what makes every layer independently editable.
What's next for Recut
Multi-provider support (the manifest layer already makes adding a model a one-file change), so the best model wins per shot. A season mode that carries a cast and look across episodes. Deeper continuity auto-repair, and voice casting with per-character timbre. The near-term goal is DTC and ecommerce brand films: the moment a marketer says "that's a real ad," Recut has done its job.
Built With
- alibaba-cloud
- dashscope
- ffmpeg
- model-studio
- next.js
- qwen
- qwen-image
- qwen-max
- qwen3-tts
- qwen3-vl
- react
- tailwindcss
- typescript
- wan2.7-r2v
- zustand
Log in or sign up for Devpost to join the conversation.