Nodes/MiniMax H3 Audio T8/MiniMax H3 Skin Finish Preview / 肤质收尾预览审计 (Advanced)
ComfyUI Node

MiniMax H3 Skin Finish Preview / 肤质收尾预览审计 (Advanced)

Actually look at a skin-finish candidate before you accept it

By T8mars·Created 20 days ago·Updated a day ago· 807
MiniMax H3 Skin Finish Preview / 肤质收尾预览审计 (Advanced)
  • 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
gate_report_json
frame_index0
comparison_position0.50
accept_candidatefalse

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 at comparison_position (default 0.5).
  • source_crop and candidate_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.

CategoryT8/MiniMax H3/Post FX/Experimental

Inputs (11)

NameTypeDefaultDescription
source_framesIMAGE
candidate_framesIMAGE
used_maskMASK
rejected_maskMASK
skin_finish_stateH3_T8_SKIN_FINISH_STATE
gate_report_jsonSTRING
frame_indexINT00–65535
comparison_positionFLOAT0.500–1Left side is source; right side is candidate.
accept_candidateBOOLEANfalse
audio_sourceoptAUDIO
audio_passthroughoptAUDIO

Outputs (9)

NameTypeDescription
selectedIMAGE
split_comparisonIMAGE
source_cropIMAGE
candidate_cropIMAGE
mask_previewIMAGE
difference_previewIMAGE
plus_minus_2_loopIMAGE
audioAUDIO
review_report_jsonSTRING