ComfyUI Node

Outfit Composer (kppb)

The node that stops you typing 'wearing a...' by hand

By artokun·Created 7 months ago·Updated 3 months ago· 29
Outfit Composer (kppb)
    • outfit
    topunset
    top_colorunset
    bottomunset
    bottom_colorunset
    shoesunset
    shoes_colorunset
    lingerie_topunset
    lingerie_top_colorunset
    lingerie_bottomunset
    lingerie_bottom_colorunset
    outerwearunset
    outerwear_colorunset
    accessory_1unset
    accessory_2unset
    accessory_3unset
    extra_outfit_details

    If you generate a lot of photoreal character shots, you've spent real hours typing "wearing a red crop top, high-waisted jeans, and ankle boots" and watching the model mangle one of the three items. Outfit Composer (kppb) takes that job away: pick a top, a bottom, shoes, maybe lingerie and outerwear, throw on up to three accessories, and it assembles a natural-language outfit description like "Wearing lace bralette, crop top, high-waisted jeans, ankle boots, and choker". Out comes prose Klein's LLM encoder actually reads well, instead of a comma-dumped tag list.

    How it works

    The node is pure composition logic - no models, no network. Each category has its own dropdown (top, bottom, shoes as required; lingerie, outerwear, accessories as optional), and the output is built by:

    • resolving any random selection to a concrete item per run,
    • prepending the color when you set one, so "Crop top" + red becomes "red crop top",
    • joining the pieces with commas and an Oxford-comma "and" into a single "Wearing …" sentence,
    • turning any remove selection into an explicit "without …" clause - handy when you specifically don't want a garment present,
    • deduplicating the three accessory slots so you can't double up on a choker.

    The inputs that matter

    The three required dropdowns are top, bottom, and shoes, each with a matching _color picker (~68 colors, from camel to metallic gold to plaid). The optional slots are where the outfit gets personality: lingerie_top / lingerie_bottom, outerwear, and accessory_1 / accessory_2 / accessory_3 (39 options, from baseball cap to body harness). extra_outfit_details appends free text if you want something the dropdowns can't say.

    Everything you set lands in one output: a single outfit STRING. Wire it straight into the Prompt Builder (kppb) node's outfit input and it becomes part of the full generation prompt. That's the intended pipeline: Outfit Composer for clothes, Prompt Builder for everything else.

    Installing and gotchas

    Install is the pack standard - ComfyUI Manager search "Photoreal Prompt Builder", or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/artokun/ComfyUI-Photoreal-Prompt-Builder.git comfyui-klein-photoreal-promptbuilder
    

    Restart and the node appears under conditioning/klein in the menu. No pip dependencies.

    Two things to know before you rely on it. First, the difference between unset and remove is real: unset means the category is ignored entirely, remove actively writes "without …" into the prompt - use the latter when the model keeps adding a bra under a crop top. Second, "random" rerolls on every queue run, so if you're hunting a specific look, set your choices explicitly or the outfit will drift between batches. And one honesty note: the clothing catalog leans heavily toward women's fashion, lingerie included - that's the pack's audience, not a bug.

    Categoryconditioning/klein

    Inputs (16)

    NameTypeDefaultDescription
    topCOMBOunset40 options: unset, random, remove, Band t-shirt, Blouse, Bodysuit, +34
    top_colorCOMBOunset68 options: unset, random, aqua, army green, baby blue, beige, +62
    bottomCOMBOunset41 options: unset, random, remove, Asymmetrical skirt, Bell bottoms, Biker shorts, +35
    bottom_colorCOMBOunset68 options: unset, random, aqua, army green, baby blue, beige, +62
    shoesCOMBOunset30 options: unset, random, remove, Ankle boots, Ballet flats, Barefoot, +24
    shoes_colorCOMBOunset68 options: unset, random, aqua, army green, baby blue, beige, +62
    lingerie_topoptCOMBOunset21 options: unset, random, remove, Babydoll top, Balconette bra, Bralette, +15
    lingerie_top_coloroptCOMBOunset68 options: unset, random, aqua, army green, baby blue, beige, +62
    lingerie_bottomoptCOMBOunset22 options: unset, random, remove, Bikini briefs, Bodystocking, Cheeky briefs, +16
    lingerie_bottom_coloroptCOMBOunset68 options: unset, random, aqua, army green, baby blue, beige, +62
    outerwearoptCOMBOunset30 options: unset, random, remove, Belted coat, Blazer, Bomber jacket, +24
    outerwear_coloroptCOMBOunset68 options: unset, random, aqua, army green, baby blue, beige, +62
    accessory_1optCOMBOunset39 options: unset, random, Anklet, Backpack, Bangles, Baseball cap, +33
    accessory_2optCOMBOunset39 options: unset, random, Anklet, Backpack, Bangles, Baseball cap, +33
    accessory_3optCOMBOunset39 options: unset, random, Anklet, Backpack, Bangles, Baseball cap, +33
    extra_outfit_detailsoptSTRING

    Outputs (1)

    NameTypeDescription
    outfitSTRING