Nodes/comfyui-kpu-utils/KPU Wailustrious Character Builder
ComfyUI Node

KPU Wailustrious Character Builder

Build a Danbooru-Tag Character Without Typing a Single Tag

By kpucha·Created 7 months ago·Updated 7 months ago· 0
KPU Wailustrious Character Builder
    • character_description
    • character_type
    character_typegirl
    hair_colorblack
    hair_lengthlong hair
    hair_stylestraight hair
    eye_colorblue eyes
    eye_shape
    body_typeslim
    body_feature
    clothingschool uniform
    clothing_color
    accessories
    posestanding
    actionlooking at viewer
    expressionsmiling
    special_traits

    This is the pack's workhorse, and it's the node I'd tell a beginner to start with. KPU Wailustrious Character Builder turns fifteen dropdowns into one ready-to-use Danbooru-tag character description - no tag vocabulary memorized, no typo'd twintail instead of twintails, just pick and go.

    The reason it exists is that anime SDXL checkpoints (the Illustrious family - WAI, NoobAI, Hassaku) are trained on Danbooru tags, and tags beat sentences for controlling exactly what a character looks like. A correct tag like long hair, twintails, blue eyes resolves precisely; prose is a coin flip. This node encodes that whole convention for you. The code even says it: output is built in Danbooru tag format, "for compatibility and consistency" with those models.

    How it works

    It's pure string assembly, no GPU, no API, no key. You pick from curated enums - character_type (girl, boy, elf, demon, maid, magical girl, nun, witch), hair_color, hair_length, hair_style, eye_color, eye_shape, body_type, clothing, clothing_color, pose, action, expression - plus two free-text fields, body_feature and accessories, and an optional special_traits for anything custom. The node joins the non-empty ones into a comma-separated character_description string, doing the small bookkeeping along the way (it won't produce "long hair hair" when the tag already contains the word, and it skips the black hair repetition you'd otherwise get by hand).

    Two outputs come out: character_description (the tag string) and character_type (the type you selected, passed through separately). That second output exists so the pack's WailustriousMultiCharacterGenerator can count how many girls and boys are in a scene and emit the 1girl, 2girls style count token. The Character Builder deliberately does not add the count itself - single-character scenes don't need one, and the multi-char node owns that job.

    The inputs that matter

    For a beginner, honestly, most of them are self-explanatory dropdowns. The three to pay attention to:

    • character_type - the gender/type, returned separately so downstream counting works. Note only girl and boy get counted by the multi-char node; an elf or demon character is currently skipped in scene counting.
    • clothing and accessories - the highest-leverage tags for making a character read as "a character" rather than a floating head.
    • special_traits - your escape hatch. Want a maid with cat ears? Type cat ears here; it gets appended verbatim.

    Wiring it in

    The typical flow: Character Builder → WailustriousMultiCharacterGenerator (feed character_description into a character_N_desc slot and character_type into the matching character_N_type slot) → CLIP Text Encode → sampler. The prompts these produce are aimed at the "Wailustrious XL" line the pack targets - in practice that means any Illustrious-family checkpoint, most commonly WAI-illustrious-SDXL, eats them happily.

    Once you're generating, the family's settings apply: CLIP skip 2 (a Clip Set Last Layer at -2), CFG 5–7, Euler a sampler, 15–30 steps, and do not attach an external VAE - it's baked into the checkpoint. And a warning straight from WAI's own model page: keep the prompt reasonably short. Overlong quality-tag stacks and long negatives actually make Illustrious-family output blurrier.

    Installing

    Pack is comfyui-kpu-utils by kpucha - a young, Spanish-authored, hobby-scale project with almost no community footprint, so do the usual glance at the repo before you trust it (the code is benign: prompt assembly only). Install via Manager (search "comfyui-kpu-utils") or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/kpucha/comfyui-kpu-utils
    

    Restart, and it shows up under KPU Utils. Ignore the comfyui>=0.9.0 pip line in requirements - that package doesn't exist on PyPI; nothing else needs installing, and there are no model downloads.

    Gotchas

    • Free-text fields are free-text: a typo is a tag the model doesn't know, so if a tag isn't landing, double-check your spelling and prefer the dropdowns.
    • The output is just text. Until you wire it into a CLIP Text Encode node, it's a string going nowhere.
    • Single-character scenes are this node's happy place. The moment you want two characters interacting, skip to the Multi-Character node - WAI and friends are famously bad at keeping attributes attached to the right person without explicit prefixes.
    CategoryKPU Utils

    Inputs (15)

    NameTypeDefaultDescription
    character_typeCOMBOgirl8 options: girl, boy, elf, demon, maid, magical girl, +2
    hair_colorCOMBOblack14 options: black, white, brown, red, pink, purple, +8
    hair_lengthCOMBOlong hair5 options: very short hair, short hair, shoulder-length hair, long hair, very long hair
    hair_styleCOMBOstraight hair9 options: straight hair, wavy hair, curly hair, twintails, drill hair, side ponytail, +3
    eye_colorCOMBOblue eyes12 options: black eyes, white eyes, brown eyes, red eyes, pink eyes, purple eyes, +6
    eye_shapeCOMBO6 options: , large eyes, small eyes, cat eyes, fox eyes, sharp eyes
    body_typeCOMBOslim7 options: slim, slender, petite, curvy, busty, muscular, +1
    body_featureSTRING
    clothingCOMBOschool uniform11 options: school uniform, sailor uniform, maid outfit, dress, casual clothes, formal suit, +5
    clothing_colorCOMBO10 options: , white, black, blue, red, green, +4
    accessoriesSTRING
    poseCOMBOstanding8 options: standing, sitting, lying down, kneeling, floating, jumping, +2
    actionCOMBOlooking at viewer6 options: looking at viewer, looking away, profile, back view, from above, from below
    expressionCOMBOsmiling8 options: smiling, happy, neutral, serious, sad, embarrassed, +2
    special_traitsoptSTRING

    Outputs (2)

    NameTypeDescription
    character_descriptionSTRING
    character_typeSTRING