One continuous 40-50 second shot out of 4-6 second segments. You can build it by hand in ComfyUI or give the whole job to an agent. The agent route takes much less of your time, and it's how we made all 12 versions.
We spent a night trying to get one continuous 40-second shot out of H3 with no visible seams. The scene: a woman walks down a street, goes into a cafe, sits down, greets the waiter, drinks her coffee and looks out of the window. We made 12 versions of it, photoreal and comic, 26 to 54 seconds long.
Setup: ComfyUI with FeiHou Easy H3 (Remix model, two passes, 416p upscaled to 624p), RTX 4070 SUPER 12 GB, 96 GB RAM.
The take
Comic: 39 seconds, 8 segments joined into one take. MiniMax H3 Remix v0.8 with FeiHou Easy H3 on an RTX 4070 SUPER 12 GB.
The same scene in photoreal style, from the same plan, is on the resource page together with all the files: https://civitai.com/models/3038677
The idea in four lines
Plan states, not shots. At every seam write down where she is, which way she faces, what she looks at, the props, who comes in and leaves, what the camera does.
One establishing image at the start, with your character's face on it. Nothing else gets pinned later.
Continue from the tail, not from the last frame. The next segment gets 22+22 latent frames of the previous one, so motion carries over the seam.
Re-anchor identity in every segment: the face reference as Picture 1, the establishing image as Picture 2, the full outfit in the text.
Over 10 segments and 53 seconds nothing accumulated. Face, hair, clothes and colour at 53 s look the same as at 13 s.
1. If you do it by hand
You need H3 with FeiHou Easy H3, our UI workflows for segment 1 and segment N, ffmpeg, and ReActor if the face on your establishing image is off. A chat assistant (ChatGPT, Claude, a local LLM) saves you most of the writing.
Step 1. Segment texts
A 40-second take is 8-10 segments, and every text has to repeat everything the model should keep. This is the part people give up on, so let a chat assistant write it. Paste planner_prompt.md as the first message, describe your scene in a paragraph and ask for paste-ready texts. You get one block per segment with its length and continuation mode.
If you write them yourself, every segment text holds:
the character line with the full outfit and its details: neckline, buttons, zipper side, colours;
the start state, copied word for word from the end state of the previous segment, and the end state;
2-4 small actions with time codes over the whole segment;
one camera instruction;
the props, described by their state in this segment;
the view through the window and other location details, in positive terms only.
The template we use:
<character line>. At the start of the shot she <start state>. Then <actions with time codes>. At the end of the shot she <end state>. <camera>. <props and location>. One continuous shot, natural pace, no cuts. <sound>.From segment 2 on, add: "The woman's face and hairstyle are exactly as in Picture 1; her clothes and drawing style are exactly as in Picture 2."
Rules for the texts. Every one of them comes from something that broke for us:
Door jumps into her hand, gets pulled and then pushed
Rule: A fixed prop keeps its state; never mention handling itTwo bags, a bag thrown on the floor
Rule: Props move only through an explicit action inside one segmentShe waves at the camera, the waiter leaves the wrong way
Rule: Off-screen targets are named by screen side, the same way in every segment; extras come in and leave within one segment"Turns forward" and she walked back out
Rule: Turns are described by body and sides: "turns around to face the doorway, her back to the camera"Third leg, broken feet when she sits cross-legged
Rule: Knees together, frame from the waist upA V-neck appears, a second zipper
Rule: Full outfit with its distinguishing details in every segmentA different street outside the window
Rule: The window view is part of the location, described in every segment, only in positive termsCars and asphalt after "no cars, no asphalt"
Rule: No negations: whatever you name shows upA second cup while the first is in her hands
Rule: Describe a prop by its state: "there is only one white cup in the scene: it is in her hands and its saucer waits empty on the table"Big wave at face height
Rule: Describe the gesture without its name and say which joint stays down: "her right palm stays flat on the table; she lifts only the fingers and wiggles them"Walking in place
Rule: Move the camera with her and say that the background slides past
Segment length comes from the number of small actions. The model plays a sip, a hair tuck or a head turn in about 1.2 s whatever the time codes say, and then stands still until the segment ends. With time codes alone 30% of our take was frozen. 2-4 actions per segment and at least 3 s brought it down to 15% in photo and 13% in comic. H3 lengths go in steps of 17 frames at 24 fps: 2.33, 3.04, 3.75, 4.46, 5.17, 5.88, 6.58 s. A continued segment comes out about 0.5 s longer.
Step 2. Establishing image
One still for segment 1. Compare its face with your character reference. If it isn't the same person, swap the reference face onto it with ReActor. Ours scored 0.30 ArcFace similarity: on the street she had one face, and in the cafe, where every segment is anchored to the reference, she had another. After the swap it was 0.65 and the face held.
Step 3. Segment 1
Segment 1 workflow: image-to-video from the still, continuation set to hard cut. The node is Chinese-first, so in the dropdown hard cut is 硬切. About 1.5 minutes on a 4070 SUPER.
Step 4. Segments 2 to N
Segment N workflow, one run per segment:
continuation: continue (接续 in the dropdown), context frames 22+22;
continue_video: the file of the previous segment;
Picture 1: the face reference, Picture 2: the establishing image;
paste the segment text, set its length, run.
Each run takes 2.5-3.5 minutes. Watch the result before you go on. If something broke, re-run the same segment from the same previous file with another seed or a reworded state. Everything before it stays as it is.
Put seams in motion: mid-step, halfway into sitting down. The tail carries the motion over, while a seam at rest turns into a 1.5-2.5 s freeze. The one place a seam must not go is the middle of the camera passing through a doorway: the camera ends up staring at an empty door. Keep the whole crossing inside one segment.
The workflow already has the wiring: ProductionPackLoader with packs off goes into Setup.production_shot, and ContinueOut after the second pass goes into Video Combine V2 through its latent input. ContinueOut trims the overlapping frames, so the segments join end to end.
Step 5. Join
ffmpeg -f concat -safe 0 -i list.txt -vf deflicker=mode=pm:size=5 -c:v libx264 -crf 18 -pix_fmt yuv420p -c:a aac -b:a 160k take.mp4list.txt has one line per segment in order: file 'seg01.mp4'. Every seam has a one-frame brightness flash of about 2%, and deflicker takes out 85-93% of it.
What to watch for
Watch the take at normal speed, then step through each seam frame by frame: freezes, a flash, a jump. Then count the props, look at hands and legs in the seated shots and at the view through the window. That is where our takes broke.
By hand a 40-second take is 8-10 runs. You copy a file path and paste a text before each one.
2. If you hand it to an agent (more efficient)
The agent takes the parts people get tired of. It keeps the plan consistent over 10 segments, lints it, drives ComfyUI through the API without copying paths, checks every seam with numbers and every second frame by eye, and re-runs only the segments that broke. You read a report instead of babysitting 10 runs.
You need an agent that can run commands and make HTTP calls (Claude Code, Codex or similar), your ComfyUI reachable over its API, Python with ffmpeg, and our files: planner_prompt.md, scene_plan.py, the API graphs for segment 1 and segment N, the example plan.
The loop:
Plan. The agent turns your scenario into a JSON plan of states, with
planner_prompt.mdas its instructions.Lint.
scene_plan.pychecks the plan before anything gets generated. It blocks a seam in the middle of a doorway crossing, a gaze at the camera or no gaze target at a seam, handling a prop that is fixed, props passed from hand to hand, and extras without entry and exit sides or who never leave. It warns about negations, the word "wave", seams where the face isn't visible, and a prop set on the table while it is in her hands.python scene_plan.py plan.json textsprints the final segment texts.Establishing image. The agent measures its ArcFace similarity to the reference and swaps the face with ReActor if it is low.
Chain. Segment 1 with hard cut from the still, segments 2 to N with continue from the previous file and both references, texts from the plan.
Checks, numbers first: hard cuts, motion at the seams, brightness jumps, freezes longer than 0.5 s, ArcFace similarity per segment on faces of at least 60-80 px (profiles pull it down anyway). Then eyes: every second frame on 3x3 sheets, split into thirds across several independent reviewers. Each one times every pause and adds them up. For anatomy, zoomed crops anchored on the face: general sheets miss it, and on a control sheet both reviewers missed an extra leg we knew was there. Reviewers also report things that aren't there. A "headband" turned out to be a strand of hair, so anything about hair and accessories gets checked on the full frame.
Fix. A broken segment is re-run from the same tail with another seed or a reworded state. If another seed breaks the same way, look for the cause in the text and turn the fix into a plan rule. Our second cup went away only after we started describing props by their state.
Join with deflicker and report what is still wrong.
A brief you can give your agent:
Make one continuous shot with MiniMax H3 in my ComfyUI at <address>.
Scene: <your scene in a paragraph>. Character reference: <file>. Style: <photo or comic>.
Write the plan with planner_prompt.md, check it with scene_plan.py and fix every error before generating.
Segment 1: graph_segment1_api.json, hard cut from the establishing image.
Segments 2 to N: graph_segmentN_api.json, continue from the previous segment, Picture 1 = face reference, Picture 2 = establishing image.
After each segment check seams, freezes, brightness jumps and face similarity; look at every second frame and at body crops.
Re-run broken segments from the same tail. Join with ffmpeg deflicker=mode=pm:size=5 and tell me what is still wrong.Time on a 4070 SUPER
Segment 1 takes about 1.5 minutes. Each continued segment with references takes 2.5-3.5 minutes. Our best version, 39 seconds in 8 segments, took 21 minutes.
What still doesn't work
A car or a curb still sneaks into the window view. Seated wide shots still drift to crossed legs when the camera doesn't move in to waist height. Asking for the move-in after she has already sat down does nothing: it has to be in the segment where she sits.
In comic style the waiter can pass through the heroine, and her gestures stay big.
There is no anti-drift LoRA for H3. With references in every segment we didn't need one. A character LoRA for H3 can be trained on 12 GB from images only (musubi-tuner, single-frame mode, 3-5 hours), but it wouldn't fix what's left: what's left is motion and props, not identity.
Files
Everything below is in one archive on the resource page: https://civitai.com/models/3038677

The segment 1 graph (UI workflow long_take_segment1.json). Open the image and zoom in.

The segment 2..N graph (UI workflow long_take_segmentN.json): continuation 接续 with 22+22 context frames, reference mode.
planner_prompt.md: planner system prompt. Gives a JSON plan for an agent or paste-ready texts for you.scene_plan.py: plan linter, also prints the final segment texts.Example plan from the cafe scene.
UI workflows for segment 1 and segment N.
API graphs for segment 1 and segment N.


Comments