๐ Kisekae Identity
Who the character is, and why its dropdowns start empty
- char
- char
This is the first node in most chains after a preset load, and the one whose dropdowns will confuse you most: who and series have almost nothing in them besides (keep) and (clear). That's not broken. The author can't ship a dropdown of every character and series on earth, so those fields are built to be filled by your text or your preset - the dropdown is just where you'd put it if you wanted it reusable.
๐ Kisekae Identity holds the six fields that say who's in the picture: who, series, gender, age, species, skin.
How it works
A character is a dict on a KISEKAE_CHAR wire, one entry per section. Identity nodes chain with everything else, and per-field the last node to write wins.
Order per node: incoming character, then this node's preset pick (replacing the whole identity section, LoRAs included), then overrides. Overrides win over everything.
The three mechanisms you'll lean on:
(keep)/(clear)- pass the incoming value through, or delete it.(clear)is how you take a preset's1girl, solooff a character without editing the preset._text- typed override, wins over the dropdown, accepts weights like(mole:1.2)._append- add to the incoming value rather than replace, skipping exact duplicates. Useful for1girl, solostyle values where you want to keep part of what's there.
gender is where the interesting vocabulary lives, because the shipped values are multi-tag: 1girl, solo, 1boy, 1girl, 2girls, androgynous, otoko no ko. On booru-trained models that leading count tag sets up composition as much as identity, so picking 2girls here pre-empts a fight with a solo focus you might set in scene. Which one wins is a prompting question, not a node question - but at least with this node the pair is visible side by side in the graph instead of buried in one string.
The inputs that matter
species is the one that earns its dropdown: human, elf, dark elf, demon girl, angel, vampire, fox girl, cat girl, wolf girl, bunny girl and friends. skin covers pale skin, tan, dark skin, blue skin, grey skin and the dark-skinned female variant. age is deliberately coarse - adult, young adult, mature female, old woman.
who and series are essentially free slots. For a real character you either type into who_text - hatsune miku for a booru model, or a sentence for something with an LLM text encoder - or, better, put it in the character preset file so it travels with the LoRA. There's a multiline extra for anything else.
Output: one char.
Install
ComfyUI Manager โ search kisekae (Registry name comfyui-kisekae), or:
cd ComfyUI/custom_nodes
git clone https://github.com/Kagejitsu/comfyui-kisekae
Restart. No Python dependencies to install, and no model downloads for the nodes themselves. Under kisekae in the add-node menu, prefixed ๐.
Common issues
who has no options. Expected - add them on Tansu's Dropdowns page (๐ Tansu in the top bar) if you want a value to be reusable across presets, or just type it. Tansu's ๏ผ dropdown button adds a value to the nodes' dropdowns via your vocab overlay; the shipped files are never modified.
A preset's identity is fighting mine. If both a Load Preset and this node set identity fields, remember a section node's preset pick is applied after the incoming character. Leave preset on (none) unless you genuinely want this node to reset identity.
Age/gender tags are showing up twice. Duplicates are removed by the Prompt node's dedupe (first one kept), so the rendered prompt should be clean. Kisekae Debug Prompt lists what it dropped, under "duplicates removed".
Nothing renders at all. Section nodes don't touch CLIP. You need a Kisekae Prompt at the end, with positive/negative wired into your CLIP Text Encode nodes.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| preset | COMBO | (none) | Replace the whole identity section with this preset's identity |
| who | COMBO | (keep) | (keep) passes the incoming value through; (clear) empties it |
| who_text | STRING | Typed text wins over the dropdown. (tag:1.2) weights work. | |
| who_append | BOOLEAN | false | append: add to the incoming value; replace: overwrite it |
| series | COMBO | (keep) | (keep) passes the incoming value through; (clear) empties it |
| series_text | STRING | Typed text wins over the dropdown. (tag:1.2) weights work. | |
| series_append | BOOLEAN | false | append: add to the incoming value; replace: overwrite it |
| gender | COMBO | (keep) | (keep) passes the incoming value through; (clear) empties it |
| gender_text | STRING | Typed text wins over the dropdown. (tag:1.2) weights work. | |
| gender_append | BOOLEAN | false | append: add to the incoming value; replace: overwrite it |
| age | COMBO | (keep) | (keep) passes the incoming value through; (clear) empties it |
| age_text | STRING | Typed text wins over the dropdown. (tag:1.2) weights work. | |
| age_append | BOOLEAN | false | append: add to the incoming value; replace: overwrite it |
| species | COMBO | (keep) | (keep) passes the incoming value through; (clear) empties it |
| species_text | STRING | Typed text wins over the dropdown. (tag:1.2) weights work. | |
| species_append | BOOLEAN | false | append: add to the incoming value; replace: overwrite it |
| skin | COMBO | (keep) | (keep) passes the incoming value through; (clear) empties it |
| skin_text | STRING | Typed text wins over the dropdown. (tag:1.2) weights work. | |
| skin_append | BOOLEAN | false | append: add to the incoming value; replace: overwrite it |
| extra | COMBO | (keep) | (keep) passes the incoming value through; (clear) empties it |
| extra_text | STRING | Typed text wins over the dropdown. (tag:1.2) weights work. | |
| extra_append | BOOLEAN | false | append: add to the incoming value; replace: overwrite it |
| charopt | KISEKAE_CHAR | Character from the previous node; empty starts a new one |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| char | KISEKAE_CHAR | โ |