Identity Forge Modifier
A scalpel for one element of a character
- character_json
Sometimes you don't want a whole theme - you want one thing to be weird. Sci-fi chrome shoes on an otherwise normal outfit. Glowing earrings. Iridescent skin. That's the entire job of Identity Forge Modifier: it prepends a custom descriptor to a single element (or a whole group) of a character without theming the rest of the image. It's the smallest node in the Identity Forge pack and probably the most immediately useful one once you've generated a character you half-like.
How it works
You type lines into a text box, one key: descriptor per line:
footwear: sci-fi chrome # only the shoes change
earrings: glowing # only the earrings
skin_tone: iridescent # only the skin
Clothing: weathered # the whole clothing group
The key is either a field name (the same labels you see on the Identity Forge node - footwear, skin_tone, hair_color, earrings, lips, nails…) for pin-point control, or a group header (Demographics, Body, Face, Hair, Makeup, Jewelry & Nails, Clothing, Setting & Shot) to tilt a whole category. Keys are case-insensitive; a field key beats a group key when both touch the same field. # comments and blank lines are ignored, unknown keys are skipped with a note.
The mechanic is simple and it's the right one: the descriptor is prepended right before the noun of that element's randomized value - "sci-fi chrome shoes" rather than "shoes, sci-fi chrome" - which is exactly how text-to-image models pick up textures and genres. The node emits character_json, which you wire into Identity Forge's archetype_json socket, or chain after an Archetype / Cosplayer via the optional upstream input. Because it only adds modifiers and never touches field locks, it's the one node that can't override the others.
The honest limitation
Modifiers only decorate values that are present. If the character rolled no earrings, earrings: glowing does nothing - the node styles an element, it doesn't force one into existence. The docs are explicit about this, and it's the thing people hit first: if your modifier seems dead, the element wasn't there to begin with. Lock the field on the Forge node (or set accessory_density up) if you need the thing to exist.
There's also a pre-filled comment block in the box showing you the syntax - every line is a comment by default, so an untouched node emits nothing and passes its upstream through. Delete the # on a line to activate it. Clear the box or mute the node to disable it entirely.
Install and gotchas
Same pack, same deal - zero dependencies, fully offline, no model downloads:
cd ComfyUI/custom_nodes
git clone https://github.com/EnragedAntelope/comfyui-identity-forge
Restart ComfyUI, or install via ComfyUI Manager (search "Identity Forge"). Needs ComfyUI 0.25.0+ for the V3 API the pack runs on. And the pack-wide update gotcha applies: a NoneType error or blank widget after an update means the node on your saved graph is stale - delete and re-add it.
A genuinely thin node, but that's the point. One descriptor on one element, no side effects, and it composes with everything else in the pack.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| style_modifiers | STRING | # Prepend a descriptor to ONE element (or a whole group). # One per line -> key: descriptor (delete the # to use a line) # key = a FIELD (footwear, skin_tone, hair_color, earrings, eye_color, ...) # or a GROUP (Body, Face, Hair, Makeup, Jewelry & Nails, Clothing, Setting & Shot) # Field names are the same labels shown on the Identity Forge node. # # THE ONE RULE: the descriptor goes IN FRONT of the value, it does not # replace it. So keep it to a 1-3 word adjective that reads naturally there. # good -> hair_color: living-flame (becomes 'living-flame auburn') # bad -> hair_style: nest of vipers (becomes 'nest of vipers messy bun') # # --- materials ------------------------------------------------------- # skin_tone: iridescent # skin_tone: cracked molten # skin_tone: carved marble # skin_tone: moss-and-lichen # hair_color: living-flame # eye_color: glowing # # --- genres (a whole group at once) ---------------------------------- # Clothing: cyberpunk neon # Clothing: baroque gilded # Clothing: post-apocalyptic weathered # footwear: anti-gravity hover # # --- whimsy ---------------------------------------------------------- # Makeup: galaxy-glitter # earrings: tiny caged # Setting & Shot: storm-lit | One 'key: descriptor' per line. The descriptor is prepended to the randomized value of that element. key = a FIELD (footwear, skin_tone, hair_color, earrings, eye_color, lips, nails, …) to change just that item, or a GROUP (Demographics, Body, Face, Hair, Makeup, Jewelry & Nails, Clothing, Setting & Shot) to tilt the whole group. Field names are exactly the labels on the Identity Forge node. Keys are case-insensitive; a field key wins over a group key. '#' lines and blanks are ignored; unknown keys are skipped. The descriptor is PREPENDED, never substituted, so keep it to a 1-3 word adjective that reads naturally in front of the value: 'hair_color: living-flame' becomes 'living-flame auburn', but 'hair_style: nest of vipers' becomes 'nest of vipers messy bun'. Example: footwear: sci-fi chrome The text box ships with a curated set of ideas, all commented out — delete a '#' to switch one on. Modifiers only decorate elements that are present — they do not force an absent item to appear. |
| upstreamopt | STRING | Optional: connect an Archetype / Cosplayer (or another Modifier) character_json here to stack presets. This node only adds modifiers, so it never overrides their field locks. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| character_json | STRING | — |