Nodes/comfyui-minimax-h3-audio-T8/MiniMax H3 Skin Finish Safety Audit / 肤质候选安全审计 (Advanced EXP)
ComfyUI Node

MiniMax H3 Skin Finish Safety Audit / 肤质候选安全审计 (Advanced EXP)

A fail-closed audit that isn't a beauty score

By T8mars·Created about a month ago·Updated a day ago· 1,031
MiniMax H3 Skin Finish Safety Audit / 肤质候选安全审计 (Advanced EXP)
  • source_frames
  • candidate_frames
  • used_skin_mask
  • track_plan
  • audio_source
  • audio_passthrough
  • selected
  • gated_candidate
  • source
  • audio
  • hard_gate_pass
  • failed_frame_count
  • failure_preview
  • report_json
audit_scopemask_only
temporal_policyreport_only
maximum_mean_abs_change0.080
maximum_peak_abs_change0.30
maximum_temporal_effect_jump0.040
maximum_track_leak_fraction0.0010
minimum_temporal_pixels64
scene_cut_reset_threshold0.20
accept_candidatefalse

Every Skin Finish candidate in this pack is generated on the assumption that a human will look at it before it ships. The Safety Audit node is the mechanical enforcer of that promise: a final, fail-closed gate that rejects candidates with mask spill, excessive pixel changes, treatment jumps between frames, multi-person track spill, or audio mismatch. What it will not do is score beauty or decide a result looks good - the description is explicit that it can't replace human review.

How it works

You feed it the source_frames, the candidate_frames, and the used_skin_mask, and it checks the candidate against a battery of objective gates:

  • Mask discipline - audit_scope picks how strict the spatial check is: mask_only (no SAM needed), track_union (every edited pixel must be inside a tracked person), or unique_track_owner (also rejects edits where two person masks overlap). The last two take an optional track_plan.
  • Change magnitude - maximum_mean_abs_change (0.08) and maximum_peak_abs_change (0.3) cap how far from source the candidate is allowed to drift.
  • Temporal consistency - maximum_temporal_effect_jump (0.04) bounds the change in mask-weighted treatment statistics between adjacent frames (not raw video motion), with shot boundaries resetting the comparison. temporal_policy is report_only or hard_gate.
  • Track leak - maximum_track_leak_fraction (0.001) catches edits bleeding outside their owning person.
  • Audio - optional audio_source/audio_passthrough inputs so the audit can catch an audio mismatch too.

scene_cut_reset_threshold is the fallback shot detector used only when no track_plan is provided.

The outputs that matter

hard_gate_pass (BOOLEAN) and failed_frame_count (INT) tell you the verdict; failure_preview shows you where it failed; report_json explains. The two image outputs matter most for wiring: selected (which stays the exact source until you flip accept_candidate) and gated_candidate - "the untouched candidate when all hard gates pass; exact source when any hard gate fails." That gated_candidate output is the one your finalizers should consume, because it makes the fail-closed behavior automatic: bad candidate → source, good candidate → candidate, human always has the last say via the toggle.

Why you'd reach for it

Because this pack's whole philosophy is "never auto-accept." When you're stringing together a semantic mask → per-person skin finish → finalize chain, the Safety Audit is the checkpoint that keeps a mask spill or a flickering treatment from ever reaching the exported video. If you're automating a pipeline you're not babysitting frame-by-frame, this is the node that buys you that trust.

Installing it and gotchas

Standard pack install: ComfyUI Manager search "MiniMax H3 Audio T8", or clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git into custom_nodes, update ComfyUI core first, restart. No extra model files (SAM3.1 only if you feed it a track_plan).

Where people get burned: wiring the wrong output. If you hook selected into your finalize and accept_candidate is false - which is the default forever - you'll export bit-exact source and wonder why nothing changed. And remember a passing audit is not a quality judgement: it means "safe to ship mechanically," and the author says the aesthetic call stays with a human. Over-tightening the temporal gate on fast-cutting footage will also spam failed_frame_count for no visual reason, so start with report_only and read the report before going hard_gate.

CategoryT8/MiniMax H3/Post FX/Experimental

Inputs (15)

NameTypeDefaultDescription
source_framesIMAGE
candidate_framesIMAGE
used_skin_maskMASK
audit_scopeCOMBOmask_onlymask_only works without SAM. track_union requires every edited pixel inside a tracked person. unique_track_owner also rejects edits where two person masks overlap.
temporal_policyCOMBOreport_onlyreport_only records source-relative treatment jumps. hard_gate also rejects jumps above the configured limit.
maximum_mean_abs_changeFLOAT0.0800–1
maximum_peak_abs_changeFLOAT0.300–1
maximum_temporal_effect_jumpFLOAT0.0400–1Maximum adjacent-frame change in mask-weighted treatment statistics, not raw video motion. Shot boundaries reset the comparison.
maximum_track_leak_fractionFLOAT0.00100–1
minimum_temporal_pixelsINT641–1048576
scene_cut_reset_thresholdFLOAT0.200–1Used only without a track plan. A source-frame mean absolute change above this value resets the temporal comparison.
accept_candidateBOOLEANfalseEven after hard gates pass, the source remains selected until a human explicitly enables this switch.
track_planoptH3_T8_SAM31_MULTIFACE_TRACK_PLAN
audio_sourceoptAUDIO
audio_passthroughoptAUDIO

Outputs (8)

NameTypeDescription
selectedIMAGE
gated_candidateIMAGEThe untouched candidate when all hard gates pass; exact source when any hard gate fails. Finalizers should consume this output.
sourceIMAGE
audioAUDIO
hard_gate_passBOOLEAN
failed_frame_countINT
failure_previewIMAGE
report_jsonSTRING