Nodes/comfyui-kisekae/๐Ÿ‘˜ Kisekae Identity
ComfyUI Node

๐Ÿ‘˜ Kisekae Identity

Who the character is, and why its dropdowns start empty

By KagejitsuยทCreated 11 days agoยทUpdated 10 days agoยท 0
๐Ÿ‘˜ Kisekae Identity
  • char
  • char
โ—„preset(none)โ–บ
โ—„who(keep)โ–บ
โ—„who_textโ–บ
โ—„who_appendfalseโ–บ
โ—„series(keep)โ–บ
โ—„series_textโ–บ
โ—„series_appendfalseโ–บ
โ—„gender(keep)โ–บ
โ—„gender_textโ–บ
โ—„gender_appendfalseโ–บ
โ—„age(keep)โ–บ
โ—„age_textโ–บ
โ—„age_appendfalseโ–บ
โ—„species(keep)โ–บ
โ—„species_textโ–บ
โ—„species_appendfalseโ–บ
โ—„skin(keep)โ–บ
โ—„skin_textโ–บ
โ—„skin_appendfalseโ–บ
โ—„extra(keep)โ–บ
โ—„extra_textโ–บ
โ—„extra_appendfalseโ–บ

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's 1girl, solo off 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 for 1girl, solo style 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.

Categorykisekae

Inputs (23)

NameTypeDefaultDescription
presetCOMBO(none)Replace the whole identity section with this preset's identity
whoCOMBO(keep)(keep) passes the incoming value through; (clear) empties it
who_textSTRINGTyped text wins over the dropdown. (tag:1.2) weights work.
who_appendBOOLEANfalseappend: add to the incoming value; replace: overwrite it
seriesCOMBO(keep)(keep) passes the incoming value through; (clear) empties it
series_textSTRINGTyped text wins over the dropdown. (tag:1.2) weights work.
series_appendBOOLEANfalseappend: add to the incoming value; replace: overwrite it
genderCOMBO(keep)(keep) passes the incoming value through; (clear) empties it
gender_textSTRINGTyped text wins over the dropdown. (tag:1.2) weights work.
gender_appendBOOLEANfalseappend: add to the incoming value; replace: overwrite it
ageCOMBO(keep)(keep) passes the incoming value through; (clear) empties it
age_textSTRINGTyped text wins over the dropdown. (tag:1.2) weights work.
age_appendBOOLEANfalseappend: add to the incoming value; replace: overwrite it
speciesCOMBO(keep)(keep) passes the incoming value through; (clear) empties it
species_textSTRINGTyped text wins over the dropdown. (tag:1.2) weights work.
species_appendBOOLEANfalseappend: add to the incoming value; replace: overwrite it
skinCOMBO(keep)(keep) passes the incoming value through; (clear) empties it
skin_textSTRINGTyped text wins over the dropdown. (tag:1.2) weights work.
skin_appendBOOLEANfalseappend: add to the incoming value; replace: overwrite it
extraCOMBO(keep)(keep) passes the incoming value through; (clear) empties it
extra_textSTRINGTyped text wins over the dropdown. (tag:1.2) weights work.
extra_appendBOOLEANfalseappend: add to the incoming value; replace: overwrite it
charoptKISEKAE_CHARCharacter from the previous node; empty starts a new one

Outputs (1)

NameTypeDescription
charKISEKAE_CHARโ€”