MiniMax H3 Skin Finish Preview / 肤质收尾预览审计 (Advanced)
Actually look at a skin-finish candidate before you accept it
- source_frames
- candidate_frames
- used_mask
- rejected_mask
- skin_finish_state
- audio_source
- audio_passthrough
- selected
- split_comparison
- source_crop
- candidate_crop
- mask_preview
- difference_preview
- plus_minus_2_loop
- audio
- review_report_json
The whole Skin Finish pipeline in the T8mars H3 pack is built on one rule: the candidate is never the default. MiniMaxH3SkinFinishPreviewAuditT8Advanced is the enforcement mechanism - the review station where you actually look at what the skin-finish node proposed, next to the source, before flipping the switch that makes it your output.
If you've used the Basic MiniMaxH3SkinFinishT8 node you know it hands you a candidate and a source and leaves the decision to you. This is the node that makes that decision visual instead of a leap of faith. It's marked as an output node in the pack, so it sits at the end of the review branch of your graph.
What it shows you
Wire in source_frames, candidate_frames, the used_mask and rejected_mask (both come out of the Advanced/multi-person finish nodes), and optionally the skin_finish_state and gate_report_json from a Texture Guard pass. Then:
split_comparison- one image, source on the left, candidate on the right, with the split point atcomparison_position(default 0.5).source_cropandcandidate_crop- full-resolution masked crops so you can zoom in on the actual skin region instead of judging at thumbnail scale.mask_preview- the used/rejected mask view, so you can confirm the node touched exactly the pixels you think it touched.difference_preview- an amplified difference between source and candidate, which makes even a subtle change obvious.plus_minus_2_loop- a short loop of the current frame and the two frames either side of it, because a still can lie about motion and flicker.
Stepping frames is a frame_index input (you can hook it to a number widget and scrub). If you pass audio_source and audio_passthrough, it also checks that the passed-through audio is PCM-identical to the source - that's the pack's whole audio-integrity posture: finishing the picture must not touch the soundtrack.
The accept gate
accept_candidate defaults to false, and that's the point. While it's off, selected (the output you'd actually route forward) stays on the source frames. You review first - the split, the crops, the difference, the ±2 loop - and only when you're satisfied do you flip acceptance on. Then selected becomes the candidate and the pipeline is allowed to move on to something like the Video Finalize node.
Install and context
Same pack, same install as every node in it: search "MiniMax H3 Audio T8" in ComfyUI Manager, or
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8
then restart. No extra pip packages, no model downloads. The reference workflow that shows Basic → Advanced → Preview/Audit wired together is examples/workflows/17-skin-finish/2026-08-24_H3_Skin_Finish_External_Mask_Advanced_EXP.json.
The one habit worth building: do the acceptance check on more than one frame. The author's own recommendation is to review the first, middle and last frames plus the ±2-frame loop, then accept. A candidate that looks fine on a single still can reveal seams or flicker in motion, and this node exists so you catch that before it's baked into a file.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| source_frames | IMAGE | — | |
| candidate_frames | IMAGE | — | |
| used_mask | MASK | — | |
| rejected_mask | MASK | — | |
| skin_finish_state | H3_T8_SKIN_FINISH_STATE | — | |
| gate_report_json | STRING | — | |
| frame_index | INT | 00–65535 | — |
| comparison_position | FLOAT | 0.500–1 | Left side is source; right side is candidate. |
| accept_candidate | BOOLEAN | false | — |
| audio_sourceopt | AUDIO | — | |
| audio_passthroughopt | AUDIO | — |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| selected | IMAGE | — |
| split_comparison | IMAGE | — |
| source_crop | IMAGE | — |
| candidate_crop | IMAGE | — |
| mask_preview | IMAGE | — |
| difference_preview | IMAGE | — |
| plus_minus_2_loop | IMAGE | — |
| audio | AUDIO | — |
| review_report_json | STRING | — |