MiniMax H3 Skin Finish Timeline Keyframe / 肤质时间关键帧 (Advanced EXP)
One keyframe at a time
- studio_timeline
- previous_plan
- timeline_plan
- report_json
Static skin settings are fine for a still, but video is a timeline: the same character can go from harsh close-up to soft candlelight between cuts, and a single global amount is wrong for both. The Timeline Keyframe node is the answer - it adds exactly one source-bound Skin Finish keyframe to a hashed Studio Timeline plan. You chain several together to describe how the treatment should evolve across a shot, and the executor node later interpolates between them.
How it works
Each node instance contributes one key. The inputs:
studio_timeline- the Studio shot structure (H3_T8_STUDIO_TIMELINE) that defines the shots your footage is split into.selector_type/selector-global(ignores the text, applies to everyone),character_id(a reviewed assignment), orshot_track(a SAM-local key like0:1). The tooltip is worth reading: the SAMshot:trackidentity stays an independent routing domain from the Studio timeline.studio_shot_index(0) andframe_in_shot(0) - where in the shot this key lands (frame_in_shotis local to the selected shot, max 361).interpolation_to_next(smoothstep) - how the continuous parameters (amount, texture, shine, tone) blend until the next key in the same shot.presetis categorical and just switches at the next key rather than interpolating.- The treatment block:
preset(subtle),amount(0.35),texture_keep(0.9),shine_control(0.35),tone_adjust(0.0).
Outputs: timeline_plan (H3_T8_SKIN_FINISH_TIMELINE_PLAN) - chain it into the optional previous_plan input of the next keyframe node to build up the full plan - plus report_json. The plan is hashed and source-bound, so a mismatch with the actual footage later fails closed instead of applying keyframes to the wrong frames.
Why you'd reach for it
Two honest reasons. One: the classic one - you want the treatment to ramp up or down inside a shot (start subtle, ease into a heavy matte finish). Two: the more interesting one - you want to be precise about per-shot variation without duplicating whole workflows. The precedence system downstream (exact shot:track, then character_id, then global, then bit-exact source) means a keyframe can be as broad or as surgical as you like.
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. No model downloads.
Where people get burned: mixing up the two "timeline" concepts. The Studio Timeline (shots, cuts) and the SAM track plan (people, identities) are separate routing domains - a shot_track selector refers to a SAM-local key, and the Studio shot index is a different axis entirely. Get them crossed and the keyframe either silently routes nowhere or binds to the wrong person. Also remember this node only plans; nothing is applied until the Studio Timeline executor runs the plan with accept_candidate reviewed. Keyframes never interpolate across a Studio cut - the author's contract says so, and that's a feature, not a gap.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| studio_timeline | H3_T8_STUDIO_TIMELINE | — | |
| selector_type | COMBO | global | 3 options: global, character_id, shot_track |
| selector | STRING | * | global ignores this text; character_id uses a reviewed assignment; shot_track uses the SAM-local key such as 0:1. |
| studio_shot_index | INT | 00–511 | — |
| frame_in_shot | INT | 00–361 | Local frame inside the selected Studio Timeline shot. |
| interpolation_to_next | COMBO | smoothstep | Controls continuous parameters until the next key in the same Studio shot. Preset is categorical and switches only at the next key. |
| preset | COMBO | subtle | 5 options: subtle, oil_control, tone_even, soft_portrait, custom |
| amount | FLOAT | 0.350–1 | — |
| texture_keep | FLOAT | 0.900–1 | — |
| shine_control | FLOAT | 0.350–1 | — |
| tone_adjust | FLOAT | 0.00-1–1 | — |
| previous_planopt | H3_T8_SKIN_FINISH_TIMELINE_PLAN | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| timeline_plan | H3_T8_SKIN_FINISH_TIMELINE_PLAN | — |
| report_json | STRING | — |