MiniMax H3 Contex Loop Assemble
Stitch your saved H3 scenes into one MP4
- manifest
- source_audio
- source_timeline
- blend_video_vae
- video_path
MiniMax H3 Contex Loop Assemble is the payoff node of the whole pack. Everything upstream - the Plan, the recursive loop, the review gate, the checkpointing - exists to produce accepted per-scene MP4s on disk. This node joins them into one final video, and it's the step where "I've got five good takes" becomes "I've got a movie."
The design philosophy is refreshing: it doesn't re-encode anything. Assemble stream-copies the saved H.264 scene segments into one MP4 and muxes the audio track on top. That means assembly is fast and lossless relative to the segments - you're not re-running diffusion, you're not even re-encoding video. The only encoding that happens is the AAC audio at audio_bitrate (256 kbps default).
The inputs that matter
manifest- the completed (or partial) manifest from Loop End, or from Manifest Load if you're assembling an old run. Every segment file is verified before joining, so a missing file fails loudly rather than producing a broken video.audio_source- the one you'll actually think about.planis the default and is the smart choice: it does what the Plan said, using checkpointed H3-generated sound (generated) or the original source track (source) automatically.nonegives you a silent MP4. The other two are explicit overrides.filename- the MP4 basename inside the chain's output folder..mp4is added for you, date tokens like%date:yyyy-MM-dd%work, and existing files are never clobbered - you get_001,_002, and so on.
The optional inputs are where the "assembly-only" tricks live, and they're worth knowing because they fix real problems without re-rendering:
blend_schedule- visual crossfades at scene boundaries.planuses the Plan's global value; a list like5,30means 5 frames at the first boundary, 30 at every later one.boundary_tone_match- set toautoand it compares the protected overlap with the first generated frames, detects a coherent exposure/contrast step, and applies a small capped tone curve to kill the seam.color_stabilization-scene_1_anchoruses scene one as a fixed color reference and gently ramps a capped exposure/saturation correction over 72 frames. It's a temporal grade, not pixel blending.
All three are explicitly "this never reruns diffusion." If a join looks off, try these before you think about resampling.
copy_to_output plus output_subfolder will also drop the finished MP4 into the regular ComfyUI output tree - handy if your chain folder is buried and you want the render in the normal place. The output is just video_path, a STRING with the absolute path of the assembled file.
Installing it
Part of ComfyUI-MiniMaxH3-Contex-Loop (ComfyUI Manager: search "MiniMax H3 Contex Loop"), or:
cd ComfyUI/custom_nodes && git clone https://github.com/ethanfel/ComfyUI-MiniMaxH3-Contex-Loop.git
Restart ComfyUI. The README notes ffmpeg on PATH is preferred for review and assembly; if you don't have it, ComfyUI's bundled PyAV handles the job as a fallback.
Common issues
The classic gotcha: blend_schedule asks for more overlap than the saved blend MP4 actually retained. When that happens you'll see a prompt to connect blend_video_vae - Assemble then re-decodes the existing checkpoint to get the extra frames. It doesn't sample or regenerate, just re-decodes. Also: if you get a silent or missing-audio result, check audio_source against what your Plan actually saved. New 0.5 manifests recover the source track themselves; the source_audio input is only a legacy fallback for pre-0.5 manifests, so a redundant wire is harmless but usually unnecessary.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| manifest | H3_CHAIN_MANIFEST | Completed manifest from Loop End or Manifest Load. Every segment file is verified before joining. | |
| audio_source | COMBO | plan | Keep plan for automatic audio: generated assembles checkpointed H3 sound, source recovers the track supplied once upstream, and none makes a silent MP4. The other choices are explicit assembly overrides. |
| filename | STRING | final | Final MP4 basename inside this chain's output folder. The .mp4 extension is added automatically. Supports date tokens such as %date:yyyy-MM-dd%. Existing files are preserved by adding _001, _002, and so on. |
| audio_bitrate | INT | 25664–512 | AAC bitrate in kilobits per second for the final mux. It does not re-encode the saved H.264 video segments. |
| copy_to_outputopt | BOOLEAN | false | Also copy the completed MP4 out of the chain folder into the regular ComfyUI output tree. |
| output_subfolderopt | STRING | Relative folder for the optional output copy. Empty means the output root. Nested folders and date tokens such as renders/%date:yyyy-MM-dd% are supported; the filename widget above still sets the MP4 name. | |
| blend_scheduleopt | STRING | plan | Assembly-only visual blend schedule. 'plan' uses the Plan's global value. A list such as 5,30 applies 5 frames at the first boundary and 30 at every later boundary. The final value repeats; extra values are ignored by a shorter partial manifest. This never reruns diffusion. |
| boundary_tone_matchopt | COMBO | off | Optional assembly-only boundary correction. auto compares the protected overlap with the first generated frames, detects a coherent exposure/contrast step, and applies a small capped tone curve only after that step. Accepted corrections are carried through later overlaps so they do not create a new seam. This never reruns diffusion. |
| color_stabilizationopt | COMBO | off | Optional assembly-only temporal grade. scene_1_anchor measures the first scene as a fixed color reference, applies no new change at a join, then gently ramps a capped exposure/saturation correction over 72 frames. It uses one assembly encode, never blends pixels for color, and does not affect motion or audio sync. Off preserves the existing stream-copy/blend behavior. |
| source_audioopt | AUDIO | Legacy fallback for manifests created before Loop Start persisted its AUDIO. New manifests recover the original source track themselves; a redundant matching wire is harmless. The track is trimmed or safely silent-padded to the final duration. | |
| source_timelineopt | H3_SOURCE_TIMELINE | Primary 0.5 source-audio route. Usually this can be left unconnected because the manifest contains its path-backed recovery descriptor. | |
| blend_video_vaeopt | VAE | Optional recovery-only MiniMax H3 video VAE. Connect the original VAE when blend_schedule requests more overlap than the saved blend MP4 retained. Assemble then re-decodes the existing checkpoint; it does not sample or regenerate the scene. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video_path | STRING | Absolute path of the assembled final MP4. |