T8 Character Performance Bible(角色表演圣经)
"Sad character looks sad" won\'t cut it — write an acting contract instead
- character_performance_bible
- performance_contract_text
- performance_bible_json
Every H3 or Seedance prompt you've ever hand-written has a version of this line: "sad man looks sad." And the model, predictably, gives you a generic sad face and nothing else. That's the failure this node is built against. T8 Character Performance Bible lives in T8mars's MiniMax H3 / Seedance 2.0 prompt-enhancer pack, and its whole job is to turn vague emotional intent into a small, structured acting contract the LLM has to respect when it writes your video prompt for you.
The design is the smart part, and it's also the part people get wrong: this node never calls an LLM. No API key, no network, no per-run cost. It's a local compiler. You type in what a character wants, what's blocking them, what they do about it, and it emits a schema-versioned JSON "bible" plus a plain-text instruction that rides along into the H3/Seedance enhancer's prompt-writing request. The contract it produces is deliberately tight - one primary tactic per beat, at most three high-signal observable cue channels per character per beat, and a hard rule that any dialogue you supply is preserved verbatim and nothing new is invented.
What you actually fill in
Eight text inputs, but only three are required:
character_id- the character's name (default角色A). If you're using reference media, this doubles as the tag you refer back to.scene_objective- write an action verb, not an emotion label. "Get out of the room" compiles far better than "is scared."obstacle_and_stakes- what's in the way and what it costs to fail.
The other five are the seasoning: tactics (one per line, max 4, switch only after visible failure), physical_task_and_inertia (the body state that should carry across cuts), voice_lock (applies only while the character actually speaks), mask_break_trigger (what makes the composure crack), and gaze_and_listening (where they look, and what their listening looks like). Leave them empty and it still runs - but you're leaving the interesting half of the job undone.
The three outputs
character_performance_bible is a custom socket type, not a STRING. That's the one you want: it plugs into the optional character_performance_bible input on the H3 or Seedance 2.0 enhancer (or into the Stack node if you have more than one character - see that article). performance_contract_text is the human-readable instruction, handy for reading or routing into a text preview. performance_bible_json is the compiled JSON for debugging or saving.
Installing it
It's one node in the T8mars pack, so installing the pack installs all of them. In ComfyUI Manager search for "MiniMax H3 / Seedance 2.0 / Music 3 Prompt Enhancer (T8)", or from the terminal:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-prompt-enhancer-T8
Then restart ComfyUI (and Ctrl+F5 your browser after any update). Cloud mode adds zero Python dependencies - it rides on requests/NumPy/Pillow that ComfyUI already has. The heavy option is the local Qwen GGUF mode, which is a separate ~16 GB model download and is best skipped unless you really want no API key at all.
Where people get burned
The three required fields are genuinely required - leave character_id, scene_objective, or obstacle_and_stakes empty and the node raises an error. The custom socket won't snap to a plain text node, so don't try to feed this into an enhancer through a STRING connection. And set expectations: this is a compiler, not a critic. It structures your intent and passes it forward; it doesn't judge whether the acting will read on screen, and it can't override the model's own behavior. If the downstream enhancer is set to a pure landscape shot, this contract just won't apply - which is correct behavior, not a bug.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| character_id | STRING | 角色A | — |
| scene_objective | STRING | — | |
| obstacle_and_stakes | STRING | — | |
| tacticsopt | STRING | — | |
| physical_task_and_inertiaopt | STRING | — | |
| voice_lockopt | STRING | — | |
| mask_break_triggeropt | STRING | — | |
| gaze_and_listeningopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| character_performance_bible | T8_CHARACTER_PERFORMANCE_BIBLE | — |
| performance_contract_text | STRING | — |
| performance_bible_json | STRING | — |