Nodes/comfyui-minimax-h3-audio-T8/MiniMax H3 Skin Finish Studio Timeline / 逐人物肤质时间执行 (Advanced EXP)
ComfyUI Node

MiniMax H3 Skin Finish Studio Timeline / 逐人物肤质时间执行 (Advanced EXP)

Keyframed skin finish, per person, per shot

By T8mars·Created about a month ago·Updated a day ago· 1,031
MiniMax H3 Skin Finish Studio Timeline / 逐人物肤质时间执行 (Advanced EXP)
  • frames
  • studio_timeline
  • timeline_plan
  • track_plan
  • semantic_skin_mask
  • identity_assignment
  • audio
  • candidate
  • source
  • selected
  • audio
  • used_skin_mask
  • rejected_skin_mask
  • ownership_preview
  • skin_finish_state
  • report_json
semantic_report_json
execution_modecandidate_only
accept_candidatefalse
chunk_frames2
proxy_long_side640
preview_count6

If the Timeline Keyframe node writes the script, the Studio Timeline node is the production. It takes your keyframed timeline_plan and applies it to the exact semantic skin owned by each SAM3.1 person track - deciding, for every frame, whose face gets which treatment at which intensity. It's the most complete node in the Skin Finish family, and it's also the one where every safety decision the pack makes comes together in one place.

How it works

Inputs: frames, a studio_timeline (the shot structure), the timeline_plan (built by chaining Timeline Keyframe nodes), a track_plan (H3_T8_SAM31_MULTIFACE_TRACK_PLAN), the semantic_skin_mask plus its semantic_report_json from the same source-bound Multi-Person Semantic Mask node, and optional identity_assignment and audio.

The routing precedence is explicit and worth memorizing: SAM shot:track → character_id → global → bit-exact source. A shot-local key overrides a character profile; a character profile overrides a global key; anything unmatched stays untouched. And the two hard rules: it never blends across Studio cuts (keyframes interpolate only within their shot), and it never accepts automatically.

Outputs: candidate, source, selected (source until you flip accept_candidate), audio, used_skin_mask, rejected_skin_mask, ownership_preview, skin_finish_state (H3_T8_SKIN_FINISH_STATE, which carries the applied state for downstream nodes), and report_json. Like the Per-Person node, execution_mode (default candidate_only), chunk_frames (2), proxy_long_side (640), and preview_count (6) tune CPU/RAM and the review previews - treatment runs on proxies, masks are built at full res.

Why you'd reach for it

When "one profile for the whole clip" isn't good enough and "one profile per person" isn't good enough either - you need the full matrix: person × shot × time. A character who's subtle in the wide but needs serious oil control in the close-up, or a treatment that eases in across a shot, is exactly this node's job. The ownership_preview output is your friend here: it shows which track owns which mask pixels, so you can catch routing mistakes before accepting anything.

Installing it and gotchas

Pack install: ComfyUI Manager "MiniMax H3 Audio T8", or clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git into custom_nodes, update ComfyUI core, restart. Upstream dependencies: SAM3.1 for the track plan and the pinned ParseNet checkpoint (models/facedetection/parsing_parsenet.pth) for the semantic mask.

Where people get burned: wiring a semantic_report_json from a different source batch - the hash binding breaks and everything routes to source; and expecting cross-cut interpolation, which never happens by design (it would smear treatment across a hard cut). And the eternal pack rule: accept_candidate=false means selected is bit-exact source no matter how good the candidate looks. If you want the applied result, flip the switch after review - not before.

CategoryT8/MiniMax H3/Post FX/Experimental

Inputs (13)

NameTypeDefaultDescription
framesIMAGE
studio_timelineH3_T8_STUDIO_TIMELINE
timeline_planH3_T8_SKIN_FINISH_TIMELINE_PLAN
track_planH3_T8_SAM31_MULTIFACE_TRACK_PLAN
semantic_skin_maskMASK
semantic_report_jsonSTRINGConnect report_json from the same source-bound Multi-Person Semantic Mask node.
execution_modeCOMBOcandidate_only3 options: candidate_only, review_only, bypass
accept_candidateBOOLEANfalseFalse preserves source on selected output; acceptance is never automatic.
chunk_framesINT21–32
proxy_long_sideINT640128–1280
preview_countINT61–8
identity_assignmentoptH3_T8_MULTIFACE_IDENTITY_ASSIGNMENT
audiooptAUDIO

Outputs (9)

NameTypeDescription
candidateIMAGE
sourceIMAGE
selectedIMAGE
audioAUDIO
used_skin_maskMASK
rejected_skin_maskMASK
ownership_previewIMAGE
skin_finish_stateH3_T8_SKIN_FINISH_STATE
report_jsonSTRING