Emotion βοΈπ π π
Retarget a character's expression with NovelAI's hosted emotion tool
- image
- IMAGE
EmotionNAID does something most local tools make you fight for: it takes an existing character image and changes the facial expression, keeping the identity intact. That's the whole point of NovelAI's hosted emotion tool, and this node is the ComfyUI front-end for it. Feed it a neutral portrait, pick "happy" or "confused," and the returned image shows the same character wearing that mood - no prompt gymnastics, no img2img luck-of-the-draw.
The inputs do the heavy lifting, and this is the most opinionated node in the director-tool family:
- image - the character to re-express.
- mood - 24 options, from
neutral,happy,sad,angry,scared,surprised,tired,excited,nervous,thinking,confused,shy, through tosmug,bored,laughing,embarrassed,love,hurt,playful, and more. This is the setting you'll actually change between runs. - strength - a six-step ladder:
normal,slightly_weak,weak,even_weaker,very_weak,weakest.normalis the full effect; the weaker rungs are for when the model's "happy" reads as a grimace and you want a dialed-back take. - prompt - optional text, default empty. It's appended to steer the emotion - "gentle smile" alongside
happy, for instance. You can usually leave it empty and get the stock interpretation. - Plus the usual
limit_opus_free(on) andignore_errors(off).
Output is an IMAGE, autosaved to output/NAI_autosave/. Behind the scenes the node sends req_type: "emotion" and folds your choices into the request options: the mood becomes the first part of the prompt string (happy;; + your extra prompt), and your strength pick is converted to a 0β5 defry value by its position in the ladder. So "strength" here isn't a separate API field - it's your index into NovelAI's defry scale, which is why the ladder only goes one direction.
Workflow-wise this is the director tool with the most immediate payoff: animate a character's expressions across a series of generations by varying only the mood, use the results as character-reference images for consistency, or run a loop that walks through all 24 moods for an expression sheet. It's tuned for anime illustration like the rest of the pack, and each run is a paid API call - expression-sheet sweeps get pricey fast, so plan the shoot before you press run.
Install is pack-standard (Manager β "ComfyUI_NAIDGenerator", or clone into custom_nodes/ and restart), with NAI_ACCESS_TOKEN in a .env in the ComfyUI root. Blank output with ignore_errors on means a swallowed API error - check the console, and don't forget the token is the usual 401 culprit.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | β | |
| limit_opus_free | BOOLEAN | true | Limit image size and steps for free generation by Opus. |
| ignore_errors | BOOLEAN | false | β |
| mood | COMBO | neutral | 24 options: neutral, happy, sad, angry, scared, surprised, +18 |
| strength | COMBO | normal | 6 options: normal, slightly_weak, weak, even_weaker, very_weak, weakest |
| prompt | STRING | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | β |