MiniMax H3 Character Replacement (Plan v2)
Swap one actor for another inside an existing video
- h3_plan
- source_video
- h3_plan
- replacement_preview
Character replacement is the use case that makes video-editing-with-a-generator feel real: you have an existing clip, you want the woman in the red jacket to become your character instead, and you want everything else - the body language, the blocking, the scene - to stay put. Character Replacement (Plan v2) declares that exact operation, and it's built on a sharper distinction than you might expect: whether the source video is being edited or continued.
Those are two different H3 modes, and the node's behavior changes accordingly. With Source video to edit, the target recreates the source timeline with the performer swapped. With Source video to continue, it first recreates and edits the source-derived portion, then continues that edited state forward in the same generation - the clip keeps going past the original footage's endpoint with your character still in charge.
Inputs that matter
source_video- connectreference_handlefrom a Video Reference whosevideo_useis "Source video to edit" or "Source video to continue." This is a handle, not raw frames.replacement_subject- the human alias of the character who replaces the source performer. The browser picker lists upstream Subjects, which is a nice touch - no guessing at names.source_character_description- plain visual language identifying exactly one performer already in the source video. No<Subject N>or<Video N>labels; the compiler owns those.appearance_policy- three levels: replace identity while keeping source body and wardrobe; replace identity and body but keep wardrobe; or replace the complete referenced appearance including wardrobe. This is the control that stops the swap from turning into a full redesign.preserve_performanceandpreserve_scene- keep the source's performance/timing and scene/cuts. For continuation, both carry through the source-derived portion and then evolve forward.shot_scope- which shots get the replacement (defaultall).instructions- plain-language constraints. The tooltip is firm: don't type numbered H3 labels; the compiler owns them.
Outputs
h3_plan- continue the chain (this goes before Shots).replacement_preview- resolved source performer, replacement Subject, appearance policy, and scope. Sanity-check this before building shots.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/ethanfel/ComfyUI-MiniMax-H3-Guide
Restart, find it under MiniMax H3 → Plan v2. No extra Python dependencies. You need the H3 weights (Ref2VA family for this route) and a ComfyUI build with native H3 support.
Gotchas
- The chain order matters. The replacement Subject and the source Video Reference must already exist upstream in the setup chain when this node runs - the tooltip says so explicitly, and the compiler enforces it.
- Continuation isn't a free lunch. "First recreate and edit, then continue" means the model is doing a bigger job than a plain edit, and output length rules still apply. Keep the Project duration honest with the source's real length.
- One performer per declaration. This node swaps exactly one performer per source video. Multiple swaps means multiple Character Replacement nodes (or Subject Bindings) - each keyed to its own description.
The pack ships an example workflow for this ("Character Replacement") and a video-extension-with-audio-continuity variant. If you've ever tried to describe a character swap in free-form prompt text and watched H3 wander off into redesigning the wardrobe, the appeal here is obvious: the appearance policy and preservation switches turn that fuzzy intent into structured, validated instructions.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| h3_plan | MINIMAX_H3_PLAN_V2 | Connect the same setup chain that already contains the replacement Subject and source Video Reference. | |
| source_video | MINIMAX_H3_REFERENCE_HANDLE_V2 | Connect reference_handle from the Video Reference whose video_use is Source video to edit or Source video to continue. For continuation, the output edits the source-derived portion first and then continues it. | |
| replacement_subject | STRING | Human alias of the referenced character that replaces the source performer. The browser picker lists upstream Subjects. | |
| source_character_description | STRING | Identify exactly one performer already visible in the source video. Use plain visual language, not <Subject N> or <Video N> labels. | |
| appearance_policy | COMBO | Replace identity; keep source body and wardrobe | Choose which visible properties come from the replacement Subject and which remain from the source performer. |
| preserve_performance | BOOLEAN | true | For an edit, keep the source performance and timing. For a continuation, preserve them through the source-derived portion and then evolve them forward beyond the endpoint. |
| preserve_scene | BOOLEAN | true | For an edit, keep the source scene and cuts. For a continuation, keep them through the source-derived portion and carry the endpoint state forward without a reset. |
| shot_scope | STRING | all | Target Shots where the source performer is replaced. With a continuation, this covers the source-derived edit and continued portion of each selected Shot. |
| instructions | STRING | Optional plain-language constraint specific to this replacement. Do not type numbered H3 labels; the compiler owns them. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| h3_plan | MINIMAX_H3_PLAN_V2 | Continue the ordered setup chain before adding Shots. |
| replacement_preview | STRING | Resolved source performer, replacement Subject, appearance policy, and Shot scope. |