A single MiniMax H3 render tops out at around 5 to 15 seconds. That is fine for a shot, but a story needs several shots with the same character, the same place and motion that carries on from one clip to the next. The MiniMax H3 Extender custom node does exactly that. You give it one reference image (or up to nine), write a prompt for each clip, and it generates the clips one after another. The end of each clip seeds the start of the next, and at the end it joins everything into one video with one continuous audio track. In this guide I explain how the Extender works, which models you need, how to set it up for a 16 GB GPU, and how to write prompts that keep your character consistent. There is also a ready-to-use workflow you can download, with one reference image and three connected clips already set up.
- Node: ComfyUI MiniMax H3 Extender by tritant (v3.0.13, Apache 2.0). Install it from ComfyUI Manager by searching “MiniMax H3 Extender”.
- How it works: every clip uses the same reference images, and with Motion Context on, the last 22 frames of each clip guide the start of the next one, so motion and framing carry over.
- References: load up to 9 images straight into the node. Refer to them as
<Picture 1>,<Picture 2>and so on, and start every clip prompt with the samesubject_definitionsblock. - Two ways to run:
clip_by_cliplets you generate, check and validate one clip at a time.full_batchrenders the whole sequence in one go. - Models: the H3 Ref2VA model plus a 4-step Turbo LoRA, the Qwen3-VL text encoder and the H3 video and audio VAEs. Download the workflow.
What the MiniMax H3 Extender Does
MiniMax H3’s reference-to-video mode (Ref2VA) can already keep a character looking like your reference image within one clip. The hard part is making a second clip that starts where the first one ended. If you just render two clips with the same reference, the character looks the same but the camera, pose and position jump, so the cut feels random.
The Extender, made by tritant, wraps the whole process into one node with a clip timeline. Each clip gets its own card with a prompt, seed and duration. You add as many clips as you like, and the node handles everything else:
- shared image, video and audio references for every clip
- Motion Context between clips, so movement carries on
- a disk cache, so finished clips are never sampled again
- seam correction for both video and audio where clips join
- a final decode that exports one MP4 (H.264, H.265 or FFV1) with a single rebuilt audio track
- project save and load as portable
.extfiles, with the reference images embedded
The author calls v3 the final feature release, so the node is stable and will mainly get bug fixes from here.
How It Keeps Clips Connected
Two things work together. First, your reference images are attached to every clip, so H3 always knows what <Picture 1> looks like. Second, when Motion Context is on, the Extender takes the tail of the previous clip (22 frames by default, a little under a second at H3’s 24 fps) and feeds it into the next generation as its starting context. H3 then continues the motion instead of starting fresh. Audio is handled the same way: the clips’ audio is rebuilt from raw PCM and encoded once at the end, with gain matching and short fades to hide the joins.
With Motion Context off, every clip is an independent shot that only shares the references. You lose the continuous motion, but you can re-render any clip without affecting the others. That is useful for multi-angle edits where hard cuts are fine.
Install the Extender Node
- Open ComfyUI Manager, search for MiniMax H3 Extender, install it and restart ComfyUI.
- Or install manually:
cd ComfyUI/custom_nodes git clone https://github.com/tritant/ComfyUI_MiniMax_H3_Extender.git pip install -r ComfyUI_MiniMax_H3_Extender/requirements.txtUse the same Python that runs ComfyUI. On the Windows portable build, use
python_embeded/python.exe -m pipinstead ofpip. - Update ComfyUI itself. The Extender uses ComfyUI’s native MiniMax H3 nodes and video types, so an old build will show errors.
The pack adds the MiniMax H3 Extender node, the MiniMax H3 Extender Final Decode / Preview node, and two optional bridge nodes (Reference Pack Bridge and Prompt Pack Bridge) for feeding images and prompts in from other nodes.
Custom nodes the workflow needs
| Node pack | Needed for | Install folder |
|---|---|---|
| ComfyUI_MiniMax_H3_Extender | MiniMax H3 Extender, Final Decode / Preview (required) | ComfyUI/custom_nodes/ComfyUI_MiniMax_H3_Extender/ |
| ComfyUI-SeedVR2_VideoUpscaler | SeedVR2 loaders and upscaler in the Upscale group (optional) | ComfyUI/custom_nodes/seedvr2_videoupscaler/ |
| ComfyUI-VideoHelperSuite | Video Combine in the Upscale group (optional) | ComfyUI/custom_nodes/ComfyUI-VideoHelperSuite/ |
Everything else (Load Diffusion Model, LoraLoaderModelOnly, Load CLIP, Load VAE, Get Video Components and the Note) is built into ComfyUI. To install the two optional packs by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/numz/ComfyUI-SeedVR2_VideoUpscaler.git seedvr2_videoupscaler
pip install -r seedvr2_videoupscaler/requirements.txt
git clone https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite
pip install -r ComfyUI-VideoHelperSuite/requirements.txt
Models You Need
The workflow uses the official files from Comfy-Org/MiniMax-H3 and the LightX2V Turbo LoRAs.
| Component | File | Folder |
|---|---|---|
| Ref2VA model (main) | minimax_h3_ref2va_pruned_int8_convrot.safetensors (21 GB) |
ComfyUI/models/diffusion_models |
| FL2VA model (optional) | minimax_h3_fl2va_pruned_int8_convrot.safetensors (21 GB) |
ComfyUI/models/diffusion_models |
| Text encoder | qwen3vl_32b_minimax_h3_int8_convrot.safetensors (27.1 GB), or qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors (15.7 GB) on RTX 50 series |
ComfyUI/models/text_encoders |
| Video VAE | minimax_h3_video_vae_int8_convrot.safetensors (2.81 GB) |
ComfyUI/models/vae |
| Audio VAE | minimax_h3_audio_vae_fp32.safetensors (605 MB) |
ComfyUI/models/vae |
| Ref2VA Turbo LoRA | minimax_h3_ref2v_turbo_4step_v1.0_768p_comfyui_bf16.safetensors |
ComfyUI/models/loras |
| FL2VA Turbo LoRA (optional) | minimax_h3_fl2v_turbo_4step_v1.3_768p_comfyui_bf16.safetensors |
ComfyUI/models/loras |
| SeedVR2 DiT (Upscale group, optional) | seedvr2_ema_3b_fp8_e4m3fn.safetensors, downloads automatically on first run |
ComfyUI/models/SEEDVR2 |
| SeedVR2 VAE (Upscale group, optional) | ema_vae_fp16.safetensors, downloads automatically on first run |
ComfyUI/models/SEEDVR2 |
If you already run the smaller W4A8 models and the 4B text encoder from my MiniMax H3 reference-to-video workflow, you can keep them. Just swap the file names in the loader nodes. The Turbo LoRA is what makes multi-clip work practical: 4 steps per clip instead of 25 or more. For other speed options, see my list of MiniMax H3 LoRAs.
The Workflow at a Glance
The downloadable workflow is based on the author’s official example, cleaned up and pre-filled with a three-clip story. It contains:
- Model loaders: the Ref2VA model with its Turbo LoRA, the FL2VA model with its Turbo LoRA, the text encoder, and the video and audio VAEs.
- MiniMax H3 Extender: the main node with the clip timeline. Three clips are ready: “Street walk”, “Coffee stall” and “Crossing”, 5 seconds each.
- Final Decode / Preview: joins the clips, corrects the seams and saves one MP4 at 24 fps with audio.
- Upscale group (bypassed): an optional SeedVR2 pass that takes the joined video to 1080p. Turn it on when your sequence is final.
Adding Your Reference Images
You do not need Load Image nodes. The Extender has its own reference manager with nine fixed slots, shown as thumbnails on the node.
- Click slot 1 and pick your character image. It becomes
<Picture 1>in every prompt. - Add more images for other characters, props or locations. Slot numbers never shift, so
<Picture 2>always means slot 2. - Double-click a thumbnail to view it larger. There is a small built-in editor for crops.
- With
resolution_modeset toauto_from_ref, the video takes its aspect ratio from Picture 1 and its size from themegapixelsvalue. - Each clip can also have local references in its Refs panel, for an object or person that only appears in that clip. Local refs use the next free slot numbers.
You can also attach up to three reference videos (<Video 1> to <Video 3>) and up to three audio references through the node’s inputs. The Extender resamples reference videos to 24 fps for you when you connect the source fps from Get Video Components.
Writing Prompts for Multiple Clips
This is the most important part. The Extender’s author recommends starting every clip prompt with the same subject_definitions block that ties each reference to a subject. Repeating it in each clip is what stops H3 from slowly drifting away from your character. Here are the three prompts in the downloadable workflow:
Clip 1 (Street walk)
subject_definitions: <Picture 1> defines the exact face, hair, clothing and look of <Subject 1> and the street setting. <Subject 1> is the exact same woman shown in <Picture 1>.
Live-action, cinematic, night. <Subject 1> walks slowly along the rain-soaked neon street, glancing at the shop windows. The camera tracks beside her at shoulder height. Soft rain, distant traffic and her footsteps on wet pavement.
Clip 2 (Coffee stall)
[same subject_definitions]
<Subject 1> stops at a small food stall, smiles and orders a coffee from the vendor. Medium shot, the camera slowly pushes in on her face. Rain patters on the stall awning and the vendor answers with a friendly greeting.
Clip 3 (Crossing)
[same subject_definitions]
<Subject 1> takes the coffee, turns away and steps into the crossing as the light turns green, then walks out of frame. Wide shot, the camera stays still. City ambience, a car passes through a puddle.
A few rules that make a big difference:
- One action per clip. Five seconds is enough for one clear beat. Put the next beat in the next clip.
- Start where the last clip ended. If clip 1 ends with her walking, clip 2 should begin with her walking or stopping, not sitting somewhere else.
- A reference can be a place too. In the example, Picture 1 also defines the street. You can add a second image for a location and define it as its own subject.
- Describe the sound. H3 generates audio, so mention footsteps, rain or a line of dialogue in each clip.
- Change the camera on purpose. Tracking, push-in and static wide shots across clips make the sequence feel edited rather than random.
For more on H3’s prompt style, see my MiniMax H3 prompt guide.
Clip by Clip or Full Batch
The run_mode setting decides how the Extender renders.
clip_by_clip (the default, and what I recommend) works on the first clip that is not yet validated:
- Press Queue. Clip 1 renders and shows in the preview.
- If you like it, tick Validated on its card. If not, change the prompt or seed and queue again.
- Press Queue again. Clip 2 renders, using the end of clip 1 as its Motion Context.
- Repeat until every clip is validated.
Validated clips stay in the disk cache and are never sampled again. Validation always runs as a chain from the start. If you un-validate clip 2, every clip after it is un-validated too, because each one depends on the clip before it. Changing a prompt, seed, duration, model, sampler, reference or Motion Context setting also invalidates that clip and everything after it.
full_batch renders every clip in one run. Use it once your prompts are tested, or for overnight renders. You can interrupt a full batch, save the project, close ComfyUI and resume later without losing finished clips. Turning on Save Individual Clips in Final Decode also writes each clip as its own file next to the joined video.
Key Settings Explained
| Setting | Workflow value | What it does |
|---|---|---|
steps |
4 | Sampling steps per clip. 4 matches the Turbo LoRA. |
sampler_name / scheduler |
euler / simple | The node’s defaults, which suit the Turbo LoRAs. |
context_length |
22 | Frames taken from the end of the previous clip as Motion Context. Options are 5, 22, 39 and 56. More frames give smoother continuity but cost more memory. |
resolution_mode |
auto_from_ref | Uses Picture 1’s aspect ratio. manual uses width and height instead. |
megapixels |
0.40 | Size budget for auto mode, snapped to H3’s 32-pixel grid. 0.40 MP is about 832×480 at 16:9. |
motion_context |
on | Chains clips together. Turn it off for independent shots. |
| Clip duration | 5 s | Set on each card. H3 frame counts snap to its 17k+5 grid, so 5 s becomes 124 frames. |
refine_enabled |
off | Latent Refine / Upscale: upscales each clip’s latent (1.5x by default) and runs a short second H3 pass (4 steps, denoise 0.30). |
FL2VA Mode: First, Last and Guide Frames
Switch generation_mode to fl2va when you want exact control over what each clip looks like at specific moments. In FL2VA mode each clip card takes a first frame, a last frame and up to three guide images placed at exact frame positions, so you can stage a clip as First, Guide 1, Guide 2, Guide 3, Last. H3 fills in the motion between those anchors. A clip can also start from the previous clip’s last frame, which chains FL2VA clips together. This mode uses the separate FL2VA model and its own Turbo LoRA, which is why the workflow loads both. If first and last frame generation is new to you, start with my MiniMax H3 image-to-video workflow.
Per-Clip LoRAs, Continuing a Video and Upscaling
- Per-clip LoRAs: each card can load its own LoRAs with their own strengths. For example, use a camera motion LoRA only in the clip with the big push-in, or a style LoRA for a dream sequence. LoRAs loaded before the Extender still apply to every clip.
- Continue an existing video: connect any video to the
continue_existing_videoinput. It becomes a locked Clip 0 at the start of the sequence, and its last frames seed your first new clip. Use Choose Ref to pick a frame from that video as a picture reference. - Per-clip colour correction: the palette button on each card adjusts saturation, contrast and brightness with a live preview, which helps match clips that came out slightly different.
- Upscaling: Final Decode has a native VIDEO output. The workflow’s bypassed Upscale group sends it to SeedVR2 for 1080p. For 60 fps as well, run the result through my MiniMax H3 1080p 60 fps workflow.
- Fixing one bad moment: if a validated sequence has one glitch, the H3 video section editor can re-generate just that part.
Running It on a 16 GB GPU
The Extender has been optimised to keep RAM and VRAM use low on long projects, because it caches finished clips to disk instead of holding them in memory. The big models still need care on a 16 GB card like my RTX 5080:
- Keep
megapixelsat 0.40 or lower while you write prompts. Raise it, or use Latent Refine, for the final render. - Use 5 second clips. Longer clips need more memory per generation, and short clips are easier to validate one by one.
- Leave
context_lengthat 22. Use 5 if you run out of memory between clips. - Use the smaller model variants: the W4A8 diffusion model or the 16 GB
w6a8one, and the nvfp4 text encoder on RTX 50 series. - Keep the Upscale group bypassed until the very end, and run it as a separate job.
- More fixes are in my MiniMax H3 out of memory guide.
Download the Workflow
Click the button to download minimax-h3-extender-multi-clip.json and drag it onto your ComfyUI canvas, or copy the JSON and paste it into ComfyUI with Ctrl+V. It is based on the official example workflow by tritant (Apache 2.0) with the three-clip story pre-filled and current model names. If nodes show up red, use ComfyUI Manager’s Install Missing Custom Nodes.
Show the workflow JSON
{"id":"7b1e2c44-5d3a-4f6e-8a90-2c1d3e4f5a60","revision":0,"last_node_id":90,"last_link_id":133,"nodes":[
{"id":45,"type":"GetVideoComponents","pos":[2310,3870],"size":[300,120],"flags":{},"order":13,"mode":4,"inputs":[{"name":"video","type":"VIDEO","link":86}],"outputs":[{"name":"images","type":"IMAGE","links":[84]},{"name":"audio","type":"AUDIO","links":[133]},{"name":"fps","type":"FLOAT","links":[]},{"name":"bit_depth","type":"COMBO","links":null},{"name":"color_space","type":"COMBO","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.33.2","Node name for S&R":"GetVideoComponents","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.5.2"}}},
{"id":50,"type":"SeedVR2LoadDiTModel","pos":[2310,4020],"size":[320,230],"flags":{},"order":0,"mode":4,"inputs":[{"name":"torch_compile_args","shape":7,"type":"TORCH_COMPILE_ARGS","link":null}],"outputs":[{"name":"SEEDVR2_DIT","type":"SEEDVR2_DIT","links":[82]}],"properties":{"cnr_id":"seedvr2_videoupscaler","ver":"2.5.24","Node name for S&R":"SeedVR2LoadDiTModel","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.5.2"}},"widgets_values":["seedvr2_ema_3b_fp8_e4m3fn.safetensors","cuda:0",16,false,"cpu",false,"sdpa"]},
{"id":52,"type":"SeedVR2VideoUpscaler","pos":[2650,3890],"size":[340,410],"flags":{},"order":14,"mode":4,"inputs":[{"name":"image","type":"IMAGE","link":84},{"name":"dit","type":"SEEDVR2_DIT","link":82},{"name":"vae","type":"SEEDVR2_VAE","link":83}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[85]}],"properties":{"cnr_id":"seedvr2_videoupscaler","ver":"2.5.24","Node name for S&R":"SeedVR2VideoUpscaler","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.5.2"}},"widgets_values":[42,"fixed",1080,1920,21,true,"lab",3,0,0.0,0.0,"cpu",false]},
{"id":51,"type":"SeedVR2LoadVAEModel","pos":[2300,4280],"size":[330,350],"flags":{},"order":1,"mode":4,"inputs":[{"name":"torch_compile_args","shape":7,"type":"TORCH_COMPILE_ARGS","link":null}],"outputs":[{"name":"SEEDVR2_VAE","type":"SEEDVR2_VAE","links":[83]}],"properties":{"cnr_id":"seedvr2_videoupscaler","ver":"2.5.24","Node name for S&R":"SeedVR2LoadVAEModel","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.5.2"}},"widgets_values":["ema_vae_fp16.safetensors","cuda:0",true,1024,128,true,768,128,"false","cpu",false]},
{"id":46,"type":"VHS_VideoCombine","pos":[3020,3890],"size":[570,340],"flags":{},"order":15,"mode":4,"inputs":[{"name":"images","type":"IMAGE","link":85},{"name":"audio","shape":7,"type":"AUDIO","link":133},{"name":"meta_batch","shape":7,"type":"VHS_BatchManager","link":null},{"name":"vae","shape":7,"type":"VAE","link":null}],"outputs":[{"name":"Filenames","type":"VHS_FILENAMES","links":null}],"properties":{"cnr_id":"comfyui-videohelpersuite","ver":"3234937ff5f3ca19068aaba5042771514de2429d","Node name for S&R":"VHS_VideoCombine","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.5.2"}},"widgets_values":{"frame_rate":24,"loop_count":0,"filename_prefix":"MiniMax_H3_extended_1080p","format":"video/h264-mp4","pix_fmt":"yuv420p","crf":17,"save_metadata":true,"trim_to_audio":false,"pingpong":false,"save_output":true,"videopreview":{"hidden":false,"paused":false,"params":{}}}},
{"id":41,"type":"UNETLoader","pos":[-2150,4410],"size":[450,90],"flags":{},"order":2,"mode":0,"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[128]}],"properties":{"cnr_id":"comfy-core","ver":"0.34.1","Node name for S&R":"UNETLoader","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.5.2"}},"widgets_values":["minimax_h3_fl2va_pruned_int8_convrot.safetensors","default"]},
{"id":4,"type":"CLIPLoader","pos":[-1350,4650],"size":[470,120],"flags":{},"order":3,"mode":0,"inputs":[],"outputs":[{"name":"CLIP","type":"CLIP","links":[97]}],"properties":{"cnr_id":"comfy-core","ver":"0.32.0","Node name for S&R":"CLIPLoader","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.5.2"}},"widgets_values":["qwen3vl_32b_minimax_h3_int8_convrot.safetensors","minimax","default"]},
{"id":6,"type":"VAELoader","pos":[-1350,4940],"size":[470,70],"flags":{},"order":4,"mode":0,"inputs":[],"outputs":[{"name":"VAE","type":"VAE","links":[6,99]}],"properties":{"cnr_id":"comfy-core","ver":"0.32.0","Node name for S&R":"VAELoader","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.5.2"}},"widgets_values":["minimax_h3_audio_vae_fp32.safetensors"]},
{"id":54,"type":"LoraLoaderModelOnly","pos":[-1670,4410],"size":[450,90],"flags":{},"order":7,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":128}],"outputs":[{"name":"MODEL","type":"MODEL","links":[132]}],"properties":{"cnr_id":"comfy-core","ver":"0.33.2","Node name for S&R":"LoraLoaderModelOnly","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.5.2"}},"widgets_values":["minimax_h3_fl2v_turbo_4step_v1.3_768p_comfyui_bf16.safetensors",1.0]},
{"id":5,"type":"VAELoader","pos":[-1350,4830],"size":[470,70],"flags":{},"order":5,"mode":0,"inputs":[],"outputs":[{"name":"VAE","type":"VAE","links":[5,98]}],"properties":{"cnr_id":"comfy-core","ver":"0.32.0","Node name for S&R":"VAELoader","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.5.2"}},"widgets_values":["minimax_h3_video_vae_int8_convrot.safetensors"]},
{"id":3,"type":"UNETLoader","pos":[-2160,4190],"size":[480,90],"flags":{},"order":6,"mode":0,"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[22]}],"properties":{"cnr_id":"comfy-core","ver":"0.32.0","Node name for S&R":"UNETLoader","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.5.2"}},"widgets_values":["minimax_h3_ref2va_pruned_int8_convrot.safetensors","default"]},
{"id":13,"type":"LoraLoaderModelOnly","pos":[-1650,4190],"size":[450,90],"flags":{},"order":8,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":22}],"outputs":[{"name":"MODEL","type":"MODEL","links":[131]}],"properties":{"cnr_id":"comfy-core","ver":"0.33.2","Node name for S&R":"LoraLoaderModelOnly","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.5.2"}},"widgets_values":["minimax_h3_ref2v_turbo_4step_v1.0_768p_comfyui_bf16.safetensors",1.0]},
{"id":2,"type":"MiniMaxH3MotionContextDiskFinalDecode","pos":[1120,3780],"size":[990,1900],"flags":{},"order":12,"mode":0,"inputs":[{"name":"cache","type":"H3_MOTION_DISK_CACHE","link":95},{"name":"vae","type":"VAE","link":5},{"name":"audio_vae","type":"VAE","link":6}],"outputs":[{"name":"video","type":"VIDEO","links":[86]}],"properties":{"cnr_id":"ComfyUI_MiniMax_H3_Extender","ver":"908cb0919a7e61073d6489ccf3a8d295384a5b42","Node name for S&R":"MiniMaxH3MotionContextDiskFinalDecode","aux_id":"tritant/ComfyUI_MiniMax_H3_Extender","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.5.2"}},"widgets_values":[24,"MiniMax_H3_extended","","H.264",17,"medium","192k",true,false,false]},
{"id":61,"type":"MiniMaxH3Extender","pos":[-860,3980],"size":[1920,1430],"flags":{},"order":11,"mode":0,"inputs":[{"name":"model","type":"MODEL","link":131},{"name":"clip","type":"CLIP","link":97},{"name":"vae","type":"VAE","link":98},{"name":"fl2va_model","shape":7,"type":"MODEL","link":132},{"name":"audio_vae","shape":7,"type":"VAE","link":99},{"name":"ref_audio_1","shape":7,"type":"AUDIO","link":null},{"name":"ref_video_1","shape":7,"type":"IMAGE","link":null},{"name":"ref_pack","shape":7,"type":"H3_REF_PACK","link":null},{"name":"prompt_pack","shape":7,"type":"H3_PROMPT_PACK","link":null}],"outputs":[{"name":"cache","type":"H3_MOTION_DISK_CACHE","links":[95]},{"name":"clip_count","type":"INT","links":[]},{"name":"validated_count","type":"INT","links":null},{"name":"status","type":"STRING","links":null},{"name":"cache_size_mb","type":"FLOAT","links":null},{"name":"build","type":"STRING","links":null}],"properties":{"Node name for S&R":"MiniMaxH3Extender","cnr_id":"comfyui_minimax_h3_extender","aux_id":"tritant/ComfyUI_MiniMax_H3_Extender"},"widgets_values":["clip_by_clip",896,576,"match",4,"euler","simple",1.0,"22",0,"{\"version\": 2, \"generation_mode\": \"ref2va\", \"motion_context\": true, \"causal_lineage\": [\"clip_1\", \"clip_2\", \"clip_3\"], \"clips\": [{\"id\": \"clip_1\", \"name\": \"Street walk\", \"prompt\": \"subject_definitions: <Picture 1> defines the exact face, hair, clothing and look of <Subject 1> and the street setting. <Subject 1> is the exact same woman shown in <Picture 1>.\\n\\nLive-action, cinematic, night. <Subject 1> walks slowly along the rain-soaked neon street, glancing at the shop windows. The camera tracks beside her at shoulder height. Soft rain, distant traffic and her footsteps on wet pavement.\", \"seed\": 424242, \"seed_mode\": \"fixed\", \"duration\": 5, \"validated\": false}, {\"id\": \"clip_2\", \"name\": \"Coffee stall\", \"prompt\": \"subject_definitions: <Picture 1> defines the exact face, hair, clothing and look of <Subject 1> and the street setting. <Subject 1> is the exact same woman shown in <Picture 1>.\\n\\n<Subject 1> stops at a small food stall, smiles and orders a coffee from the vendor. Medium shot, the camera slowly pushes in on her face. Rain patters on the stall awning and the vendor answers with a friendly greeting.\", \"seed\": 424243, \"seed_mode\": \"fixed\", \"duration\": 5, \"validated\": false}, {\"id\": \"clip_3\", \"name\": \"Crossing\", \"prompt\": \"subject_definitions: <Picture 1> defines the exact face, hair, clothing and look of <Subject 1> and the street setting. <Subject 1> is the exact same woman shown in <Picture 1>.\\n\\n<Subject 1> takes the coffee, turns away and steps into the crossing as the light turns green, then walks out of frame. Wide shot, the camera stays still. City ambience, a car passes through a puddle.\", \"seed\": 424244, \"seed_mode\": \"fixed\", \"duration\": 5, \"validated\": false}]}","auto_from_ref",0.4,"{\"version\": 2, \"refs\": [null, null, null, null, null, null, null, null, null]}","ref2va",true,false,1.5,4,0.3],"color":"#222","bgcolor":"#000"},
{"id":90,"type":"Note","pos":[-2160,3700],"size":[700,420],"flags":{},"order":0,"mode":0,"inputs":[],"outputs":[],"properties":{},"widgets_values":["MiniMax H3 Extender: 1 reference image to 3 connected clips (freakyjolly.com)\n\n1. In the Extender node, load your character/scene image into reference slot 1 (Picture 1).\n2. The 3 clip cards already have prompts. Edit them, keep the subject_definitions block at the top of every prompt.\n3. run_mode clip_by_clip: Queue, check the clip, tick Validated, Queue again for the next clip.\n4. Or switch run_mode to full_batch to render all clips in one go.\n5. Final Decode / Preview joins the clips with audio into one MP4.\n6. Optional: un-bypass the Upscale group (Ctrl+B) for a SeedVR2 1080p pass.\n\nBased on the official workflow by tritant (Apache-2.0): github.com/tritant/ComfyUI_MiniMax_H3_Extender"]}
],
"links":[[5,5,0,2,1,"VAE"],[6,6,0,2,2,"VAE"],[22,3,0,13,0,"MODEL"],[82,50,0,52,1,"SEEDVR2_DIT"],[83,51,0,52,2,"SEEDVR2_VAE"],[84,45,0,52,0,"IMAGE"],[85,52,0,46,0,"IMAGE"],[86,2,0,45,0,"VIDEO"],[95,61,0,2,0,"H3_MOTION_DISK_CACHE"],[128,41,0,54,0,"MODEL"],[97,4,0,61,1,"CLIP"],[98,5,0,61,2,"VAE"],[99,6,0,61,4,"VAE"],[131,13,0,61,0,"MODEL"],[132,54,0,61,3,"MODEL"],[133,45,1,46,1,"AUDIO"]],"groups":[{"id":1,"title":"Upscale","bounding":[2280,3760,1420,1400],"color":"#3f789e","flags":{}}],"config":{},"extra":{"ds":{"scale":0.45,"offset":[2300,-3600]}},"version":0.4}
After loading: put your image in reference slot 1, check the model names in the loaders, then press Queue to render clip 1. The author’s original example workflows, including ones for video references and external prompts, are in the repo’s Workflow folder.
Troubleshooting
- Red or missing nodes: update ComfyUI and install the Extender (and SeedVR2 and Video Helper Suite if you use the Upscale group).
- The character changes between clips: make sure the
subject_definitionsblock is at the start of every clip prompt, and that your reference image shows the face clearly. - Visible jump at a join: keep Motion Context on, write the next prompt so it starts from the previous clip’s last action, or raise
context_lengthto 39. - A clip keeps re-rendering: it is not validated, or you changed a setting that invalidates it. Tick Validated once you are happy.
- Clips after the one I edited were reset: that is by design, because each clip continues from the one before it. Turn Motion Context off if you want to edit clips independently.
- Audio bumps at joins: the Extender declicks and fades joins, but very different sound in neighbouring clips (silence next to heavy rain) can still be noticeable. Describe similar ambience in neighbouring clips.
- Out of memory: lower megapixels, shorten clips, use context_length 5 and the smaller model files.
FAQ
How long a video can the Extender make?
There is no fixed limit on the number of clips. Each clip can be up to 150 seconds in the node’s settings, but H3 itself works best at around 5 to 15 seconds per clip, so build long videos from many short clips.
How many reference images can I use?
Up to 9 global picture references, plus up to 3 video and 3 audio references. Each clip can add its own local references using the free slots.
Can I use the Turbo LoRA with the Extender?
Yes, and you should. Load it before the Extender as in the workflow, and set steps to match the LoRA (4 for the 4-step versions).
Does it work without a reference image?
Yes. With no internal reference the Extender falls back to the width and height you set, and it works like a text-to-video sequencer with Motion Context. You lose the identity lock, though.
Can I stop and continue later?
Yes. Use Save Project to write an .ext file with your prompts, settings and embedded reference images. Load Project restores everything, including validated clips that are still in the cache. Full Batch can also save the project automatically when it finishes.
Does it work with other video models?
No. The Extender is built specifically around MiniMax H3’s Ref2VA and FL2VA conditioning.
Final Thoughts
The MiniMax H3 Extender turns H3 from a clip generator into something much closer to a scene builder. One good reference image, a subject_definitions block repeated in every prompt, and Motion Context are enough to get a character walking, stopping and moving on across several connected shots with continuous sound. Start with the downloadable three-clip workflow, render clip by clip on a small resolution until the story works, then do a full batch and upscale for the final version.
More MiniMax H3 guides:
- Best MiniMax H3 Reference-to-Video Workflow for ComfyUI
- MiniMax H3 to 1080p 60 FPS: RIFE + SeedVR2 Workflow
- Best List of LoRAs for MiniMax H3
- Best MiniMax H3 Video Section Editor in ComfyUI
- MiniMax H3 Prompt Guide
- MiniMax H3 Out of Memory in ComfyUI: 16 GB GPU Fixes
Sources
- GitHub: tritant/ComfyUI_MiniMax_H3_Extender (README, node source and example workflows)
- Hugging Face: Comfy-Org/MiniMax-H3 model files
- Hugging Face: lightx2v/Minimax-h3-Turbo LoRAs
- GitHub: NikoDemon80/ComfyUI-H3-Motion-Context (original Motion Context logic)
- GitHub: numz/ComfyUI-SeedVR2_VideoUpscaler