MiniMax H3 Skin Finish Person Profile / 逐人物肤质参数 (Advanced EXP)
The little node that builds the per-person skin-fix plan
- previous_profiles
- profiles
- report_json
Multi-person video is where per-character skin work actually earns its keep: the lead in the wide shot shouldn't get the same treatment as the close-up villain, and neither should inherit a global "one preset for everyone" pass. The Person Profile node is how you say that explicitly. It adds exactly one Skin Finish profile - for a reviewed character_id or a shot:track key - to a small hashed in-memory stack. Chain a few together and you've described the whole cast's skin treatment in one tidy plan.
How it works
The node is deliberately dumb, and that's its virtue. It takes your selector and a set of treatment values, and pushes one entry onto an H3_T8_SKIN_FINISH_PERSON_PROFILES stack:
selector_type-character_id(a reviewed character label) orshot_track(a shot-local key like0:1).selector- the actual ID or track key. The tooltip is pointed: use the reviewed character ID. This pack treats identity labels as human-reviewed assignments, not model guesses.preset-subtleby default (there's alsooil_controlin the wider family).amount(0.35) - overall correction strength.texture_keep(0.9) - how much source skin texture survives.shine_control(0.35) - highlight/sheen handling.tone_adjust(0.0) - a bounded midtone exposure-like adjustment. The tooltip warns: this is not automatic skin-tone matching, and you should keep it at 0 unless you've reviewed it on the actual character. That's the author drawing a hard line against "just nudge the tone until it looks right" workflows.
The optional previous_profiles input lets you chain: Profile A's output feeds Profile B, and so on. Each node also returns a report_json so you can see what's in the stack.
Why the architecture matters
Two design decisions make this node quietly important. First, it never estimates skin tone - no automatic "this person is X complexion, apply Y" logic, which is a conscious refusal of the colorism-adjacent shortcut. Second, it never accepts a candidate: it only builds a plan. The profile stack is consumed downstream by the Per-Person node, which is where actual frames get touched. So think of this as the cast-sheet half of a two-stage system: Person Profile writes the script, Per-Person executes it against SAM3.1 tracks.
When to use it
When you have more than one face on screen and they need different treatment - lead vs. supporting, hero vs. baddie, or just different lighting conditions per shot. The routing precedence downstream is exact shot:track overrides character profile, then the default, then bit-exact source, so you can give one character a global gentle profile and still override a specific shot-local moment.
Installing it and gotchas
Ships in the comfyui-minimax-h3-audio-T8 pack: 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 model downloads.
Where people get burned: using character IDs that were never reviewed/assigned, or assuming tone_adjust auto-matches skin tone - it doesn't, and the author flags non-zero values as "unreviewed" territory. Also, the stack is in-memory and hash-bound to the exact plan; if you change a source's geometry downstream, the binding breaks and the safe answer is to re-route rather than fight it.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| selector_type | COMBO | character_id | 2 options: character_id, shot_track |
| selector | STRING | Character_A | Use the reviewed character ID, or switch selector_type to shot_track and enter a shot-local key such as 0:1. |
| 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 | Bounded midtone exposure-like adjustment; not automatic skin-tone matching. Keep 0 unless reviewed on the actual character. |
| previous_profilesopt | H3_T8_SKIN_FINISH_PERSON_PROFILES | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| profiles | H3_T8_SKIN_FINISH_PERSON_PROFILES | — |
| report_json | STRING | — |