MiniMax H3 Easy Context Segments
The node that splits your long MiniMax H3 video into shots that remember each other
- h3_bundle
- media
- media_1
- media_2
- media_3
- media_4
- media_5
- media_6
- media_7
- media_8
- media_9
- media_10
- media_11
- media_12
- media_13
- media_14
- media_15
- media_16
- media_17
- media_18
- media_19
- media_20
- media_21
- media_22
- media_23
- media_24
- media_25
- media_26
- media_27
- media_28
- media_29
- media_30
- media_31
- media_32
- media_33
- media_34
- media_35
- media_36
- media_37
- media_38
- media_39
- media_40
- media_41
- media_42
- media_43
- media_44
- media_45
- model
- h3_context
MiniMax H3 tops out at 4–15 second clips. That's fine for a shot, useless for a scene, and the naive fix - generate five clips and cut them together - gives you five clips that don't agree on anything: the character's face shifts, the lighting changes, and every cut feels like a jump. MiniMax H3 Easy Context Segments is the pack's answer to that. It doesn't generate one long video; it builds a plan for a chain of connected shots, where every segment keeps its own prompt, duration, and references while receiving continuity from the segment before it.
What it actually is
This node is a planner, not a sampler. It takes your h3_bundle (from the Easy Loader) and turns a single structured prompt into a multi-shot segment plan, then hands you two outputs: a model (pass-through from the bundle, so you can keep wiring LoRAs and patches) and an h3_context (MINIMAX_H3_CONTEXT), which you connect to Segment Sample to actually run the chain.
The workflow shape is:
Context Segments → Segment Sample → Segment Decode → first-pass video
↓
Segment Refine → Segment Decode → refined video
The inputs you'll actually touch
prompt- separate shots with a standalone---line. In the structured editor you type~to insert the divider. Each block becomes one segment, up to 30.segment_seconds- durations per segment as comma-separated values, e.g.5,5,5. This also tells the prompt optimizer how many prompts to produce if you feed it one undivided story.continuity_mode- how a segment borrows from the previous one. Latent Guide passes the previous video latent straight through and is usually the best starting point; RGB Guide re-encodes the previous tail as a multi-frame visual guide; Soft/Hard AV Prefix carry video and audio prefixes (the AV modes exist because H3 generates audio natively, and only they lock a speaker's voice reliably).context_length- how many frames of context each segment carries. The allowed values step in fixed grids: 5/22/39/56/73 for the latent and RGB guides, 39/90/141 for the AV modes.resolution,aspect_ratio(or rawwidth/height), andfps(locked to 24) set the shared canvas every segment renders into.
Media is a shared library here (up to 27 images, 9 videos, 9 audio) - but only what you explicitly @-reference inside a segment's prompt gets sent to that segment's generation. References aren't inherited, so repeat @Image1 in every segment that needs the same asset. That's deliberate: it stops references from one shot leaking into another.
The audio_mode switch adds a Digital Human variant: connect exactly one audio item and it's sliced across the whole timeline and locked in as the final soundtrack. If you don't supply audio, it silently falls back to ordinary reference-to-video instead of failing.
Prompt optimization
Click the ✦ button (or flip prompt_optimizer_settings on) and the node can rewrite your plan through an OpenAI-compatible, Gemini, or Ollama endpoint - settings live in prompt_optimizer.json in the plugin folder. whole_sequence understands the full video in one request; per_segment rewrites one shot at a time with the originals as read-only context. It's genuinely useful for turning "a rainy street, a bar, an argument" into three standalone prompts - but it's optional, and the API keys are stored in plain text in that JSON, so don't publish it.
Gotchas
Two to know before you build a 10-minute epic. First, segment sampling and refining re-execute on every queue even when seed and inputs are unchanged - no caching will save you, so iterate on a short plan first. Second, the pipeline is only as good as its continuity mode: Latent Guide is fast and usually fine, but if a character's voice needs to stay consistent, use an AV Prefix mode. The README is blunt about it - RGB Guide carries visual boundaries, not voice timbre.
Installing
Update ComfyUI to a build with the official MiniMax H3 nodes, then grab the pack via ComfyUI Manager (search ComfyUI-MiniMaxH3-Easy, choose Nightly) or:
cd ComfyUI/custom_nodes
git clone https://github.com/nkxx188/ComfyUI-MiniMaxH3-Easy.git
Restart, select models in the Easy Loader, and import one of the bundled context-segment workflows to see the whole chain wired up.
Inputs (115)
| Name | Type | Default | Description |
|---|---|---|---|
| h3_bundle | MINIMAX_H3_BUNDLE | — | |
| mode | COMBO | context_segments | 1 options: context_segments |
| audio_mode | COMBO | generated | 2 options: generated, digital_human |
| prompt | STRING | — | |
| resolution | COMBO | 480P | 12 options: 360P, 416P, 480P, 540P, 640P, 720P, +6 |
| aspect_ratio | COMBO | 16:9 | 8 options: 1:1, 2:3, 3:2, 3:4, 4:3, 9:16, +2 |
| width | INT | 134432–16384 | — |
| height | INT | 76832–16384 | — |
| seconds | FLOAT | 5.00.2–900 | — |
| segment_seconds | STRING | — | |
| context_length | INT | 55–141 | — |
| continuity_mode | COMBO | latent_guide | 4 options: latent_guide, guide, soft_av, hard_av |
| advanced | BOOLEAN | true | — |
| fps | FLOAT | 2424–24 | — |
| keyframe_role | COMBO | first | 2 options: first, last |
| ref_image_size | COMBO | 1k | 5 options: match, 1k, 1.5k, 2k, original |
| reference_mention_mode | COMBO | index | 2 options: filename, index |
| prompt_optimizer_settings | BOOLEAN | false | — |
| prompt_optimizer_scene_guide | COMBO | none | 9 options: none, 3d_animation_short, brand_promo, coop_game_intro, handdrawn_live, minimalist_product_ad, +3 |
| context_prompt_optimizer_mode | COMBO | whole_sequence | 2 options: whole_sequence, per_segment |
| context_prompt_optimizer_concurrency | INT | 31–20 | — |
| mediaopt | * | — | |
| prompt_optimizer_resourcesopt | STRING | — | |
| prompt_optimizer_markeropt | STRING | — | |
| prompt_optimizer_prompt_connectedopt | BOOLEAN | false | — |
| media_1opt | * | — | |
| media_type_1opt | STRING | — | |
| media_2opt | * | — | |
| media_type_2opt | STRING | — | |
| media_3opt | * | — | |
| media_type_3opt | STRING | — | |
| media_4opt | * | — | |
| media_type_4opt | STRING | — | |
| media_5opt | * | — | |
| media_type_5opt | STRING | — | |
| media_6opt | * | — | |
| media_type_6opt | STRING | — | |
| media_7opt | * | — | |
| media_type_7opt | STRING | — | |
| media_8opt | * | — | |
| media_type_8opt | STRING | — | |
| media_9opt | * | — | |
| media_type_9opt | STRING | — | |
| media_10opt | * | — | |
| media_type_10opt | STRING | — | |
| media_11opt | * | — | |
| media_type_11opt | STRING | — | |
| media_12opt | * | — | |
| media_type_12opt | STRING | — | |
| media_13opt | * | — | |
| media_type_13opt | STRING | — | |
| media_14opt | * | — | |
| media_type_14opt | STRING | — | |
| media_15opt | * | — | |
| media_type_15opt | STRING | — | |
| media_16opt | * | — | |
| media_type_16opt | STRING | — | |
| media_17opt | * | — | |
| media_type_17opt | STRING | — | |
| media_18opt | * | — | |
| media_type_18opt | STRING | — | |
| media_19opt | * | — | |
| media_type_19opt | STRING | — | |
| media_20opt | * | — | |
| media_type_20opt | STRING | — | |
| media_21opt | * | — | |
| media_type_21opt | STRING | — | |
| media_22opt | * | — | |
| media_type_22opt | STRING | — | |
| media_23opt | * | — | |
| media_type_23opt | STRING | — | |
| media_24opt | * | — | |
| media_type_24opt | STRING | — | |
| media_25opt | * | — | |
| media_type_25opt | STRING | — | |
| media_26opt | * | — | |
| media_type_26opt | STRING | — | |
| media_27opt | * | — | |
| media_type_27opt | STRING | — | |
| media_28opt | * | — | |
| media_type_28opt | STRING | — | |
| media_29opt | * | — | |
| media_type_29opt | STRING | — | |
| media_30opt | * | — | |
| media_type_30opt | STRING | — | |
| media_31opt | * | — | |
| media_type_31opt | STRING | — | |
| media_32opt | * | — | |
| media_type_32opt | STRING | — | |
| media_33opt | * | — | |
| media_type_33opt | STRING | — | |
| media_34opt | * | — | |
| media_type_34opt | STRING | — | |
| media_35opt | * | — | |
| media_type_35opt | STRING | — | |
| media_36opt | * | — | |
| media_type_36opt | STRING | — | |
| media_37opt | * | — | |
| media_type_37opt | STRING | — | |
| media_38opt | * | — | |
| media_type_38opt | STRING | — | |
| media_39opt | * | — | |
| media_type_39opt | STRING | — | |
| media_40opt | * | — | |
| media_type_40opt | STRING | — | |
| media_41opt | * | — | |
| media_type_41opt | STRING | — | |
| media_42opt | * | — | |
| media_type_42opt | STRING | — | |
| media_43opt | * | — | |
| media_type_43opt | STRING | — | |
| media_44opt | * | — | |
| media_type_44opt | STRING | — | |
| media_45opt | * | — | |
| media_type_45opt | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| h3_context | MINIMAX_H3_CONTEXT | — |