MiniMax H3 Easy Selected Video Context
Feed a finished render back into H3 for a real second pass
- h3_bundle
- selected_video
- 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
- model
- h3_context
MiniMax H3 Easy Selected Video Context is the node you reach for when you already have a rendered video and want to run it through H3's refinement machinery - upscaling a 480p first pass, reprocessing it in chunks, or giving a Digital Human render a higher-quality pass. It isn't a generator on its own. It's the bridge that takes a finished VIDEO, slices it into a one- or multi-segment plan, and hands that plan to the same Context Segment pipeline the pack uses for fresh generation, so that Segment Refine's per-segment pixel resize or 3D latent upscale can do its thing over a whole clip without ever holding the full timeline in VRAM.
The mental model that prevents confusion: this node makes an existing candidate video look like a freshly generated segment chain. The comment in the source is blunt - no H3 denoising happens in the first pass here. The candidate is VAE-encoded straight into the latent intermediate a normal segment run would produce, and Segment Refine owns the actual second-pass work. If you were upscaling from a normal Easy render, your chain looks like:
Easy Loader ──→ Selected Video Context ──h3_context──→ Segment Sample ──→ Segment Refine ──→ Segment Decode
↑ ──model────→ (encodes) (upscales)
Load Video (candidate)
How it works
Under the hood this node is a subclass of the main MiniMax H3 Easy node, so it inherits all the media and prompt machinery - @ mentions, the optional media port plus numbered media_1…media_15 slots with a per-slot type selector, and the prompt optimizer. You give it your loader's h3_bundle and a candidate video. It resamples the candidate to H3's frame rate, works out shot boundaries from your chosen segment_mode (whole video, or cuts by time or by frame), and builds one shot per boundary, carrying the candidate's audio as the source timeline audio. Each shot gets the segment of your prompt plus the media that segment references. It then emits both the model for the chosen generation mode and the h3_context that drives the chain.
The inputs and outputs that matter
h3_bundle- from MiniMax H3 Easy Loader.selected_video- anyVIDEOsource, typicallyLoad Video. The candidate must fit H3's length cap (~15 s); longer inputs raise a clear error.mode-image,reference, ordigital_human, mirroring the main node's generation modes.segment_modeandsegment_cuts- how to split the candidate:whole_video, ortime_cuts/frame_cuts. The cuts string is a comma-separated, strictly increasing list - seconds in time mode, 24 fps frame numbers in frame mode.context_length(5–141) andcontinuity_mode- the overlap handed between segments. Latent/RGB guide modes want the5/22/39/56/73grid; the AV prefix modes use39/90/141.advanced- revealskeyframe_role(first/last),ref_image_size, reference numbering, and the optimizer toggles.- Outputs:
modelandh3_context.
Installing it
It's part of ComfyUI-MiniMaxH3-Easy:
cd ComfyUI/custom_nodes
git clone https://github.com/nkxx188/ComfyUI-MiniMaxH3-Easy.git
Restart after install. In ComfyUI Manager search the pack and choose the Nightly release, because published versions lag the repo. You need current ComfyUI with the official MiniMax H3 nodes and the H3 weights in ComfyUI/models. For the Latent Upscale path, also drop the matching H3 3D latent upscaler into ComfyUI/models/latent_upscale_models/ - Pixel Resize needs no extra model. Segment Decode at the end requires FFmpeg (the pack prefers imageio-ffmpeg and will also use a system FFmpeg).
Common issues
The biggest conceptual gotcha is expecting this node to denoise. It doesn't - if you wire it straight to a decoder you get your candidate back re-encoded, not improved; the refinement node downstream is where resolution and quality change. Digital Human mode locks in exactly one driving audio track and falls back to ordinary reference mode if you supply none. And note the divide between the two control paths: contexts built here go through Segment Sample, not through the per-Step chain - Sample Setup explicitly rejects selected-video plans. Keep your source video clean before feeding it, because the VAE encode path is the same one H3 itself uses and garbage in propagates straight through.
Inputs (50)
| Name | Type | Default | Description |
|---|---|---|---|
| h3_bundle | MINIMAX_H3_BUNDLE | — | |
| selected_video | VIDEO | — | |
| mode | COMBO | image | 3 options: image, reference, digital_human |
| prompt | STRING | — | |
| segment_mode | COMBO | whole_video | 3 options: whole_video, time_cuts, frame_cuts |
| segment_cuts | STRING | — | |
| context_length | INT | 55–141 | — |
| continuity_mode | COMBO | latent_guide | 4 options: latent_guide, guide, soft_av, hard_av |
| advanced | BOOLEAN | false | — |
| 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 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| h3_context | MINIMAX_H3_CONTEXT | — |