ComfyUI Node

Prompt Builder

Same world engine, but you pick every slot

By zeeoale·Created about a year ago·Updated 2 months ago· 9
Prompt Builder
    • prompt
    json_name
    color_realm
    epochs_pick
    outfits_pick
    lighting_pick
    backgrounds_pick
    poses_pick
    expressions_pick
    camera_angles_pick
    atmospheres_pick
    objects_mode
    objects_pick
    accessories_mode
    accessories_pick
    use_enhancer
    enhancer_mode
    add_symbols
    seed0
    gender
    identity_profile
    lock_identityyes
    custom_intro
    horror_intensity
    sensuality_level
    lora_triggers
    subject_count
    lock_last_promptno
    multi_object_count1
    ollama_hosthttp://192.168.1.1:11434
    ollama_modelllama3.2

    Prompt Builder is the manual sibling of the pack's flagship Prompt Generator. Same world-JSON engine, same enhancer stack, same logging - but instead of one button that samples a random value per category, you get a dropdown per category and you decide what goes in each slot. If Prompt Generator is a slot machine, this is the build-a-prompt workshop next door.

    Why reach for it? Because the flagship's randomness is great until it isn't - you finally get an outfit you love and it keeps drawing you a different one. Prompt Builder lets you lock the categories that matter (outfits, lighting, background) to specific values and leave the rest on random, or take manual control of every single one. It's also where the pack's "reload JSON worlds without restarting" trick actually lives: a bundled web extension refreshes the dropdown options from a generated world_options.json, so newly added worlds show up without a ComfyUI restart.

    How it works

    At load time it scans every world in JSON_DATA/, unions all values across them per category, and builds those dropdowns. That's why the enums are enormous - 837 outfits, 675 backgrounds, 1,330 objects/accessories. Each category dropdown gives you none (skip it), random (let the sampler pick), or a specific value. The COLOR_REALM selector picks the palette within a world that defines realms. Then it runs the exact same assembly logic as the generator - gender, identity_profile, horror/sensuality levels, subject_count, multi_object_count - and optionally the same LLM enhancer (use_enhancer: none/ollama/llamacpp/openai/cohere/gemini) with an enhancer_mode system prompt.

    The inputs that matter

    Honestly, only a few. json_name selects the world, and per-category picks (epochs_pick, outfits_pick, lighting_pick, backgrounds_pick, poses_pick, expressions_pick, camera_angles_pick, atmospheres_pick) plus objects_mode/objects_pick and accessories_mode/accessories_pick are the whole point. Everything else mirrors the generator: color_realm, gender, identity_profile, lock_identity, horror_intensity, sensuality_level, lora_triggers, seed, lock_last_prompt, and the Ollama knobs.

    The same default landmine applies here: ollama_host defaults to http://192.168.1.1:11434 - the author's network, not yours. Point it at your local Ollama (http://127.0.0.1:11434) before you blame the node.

    Output

    A single prompt STRING. Same wiring story as the generator: feed it into a CLIPTextEncode (or CLIPTextEncodeSDXL) node - the builder doesn't encode for you. And because it shares the generator's logger, whatever it produces lands in logs/prompt_history.jsonl and shows up in the pack's Prompt Replay node.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/zeeoale/PromptCreatorNode
    

    restart, and you'll find "Prompt Builder" alongside the rest of the pack. No model downloads; the only pip deps are openai, google-generativeai, cohere (requirements.txt), plus requests that ComfyUI already bundles. Cloud enhancers need keys in api_keys.txt inside the pack folder; the node works fully with none.

    The honest take

    If the generator's whole-prompt random roll feels like fighting the pack, this is the antidote. It's still the same niche, personal-codebase experience - no community to speak of, author's own conventions baked into the worlds - but for "curate a look, randomize the rest" it's the one I'd reach for over the flagship. One catch: those massive dropdowns mean a lot of scrolling, and the specific values you see are pulled at load time, so world edits want that web-extension refresh (or a restart) to show up.

    CategoryPrompt Creator

    Inputs (30)

    NameTypeDefaultDescription
    json_nameCOMBO130 options: LoRa_Identity_Training.json, PFN_Astonished_Origin.json, PFN_Atomic_Nocturne.json, PFN_Bio_Baroque_Corrupted.json, PFN_Bio_Baroque_Luminescent.json, PFN_Bio_Baroque_Luminescent_V2.json, +124
    color_realmCOMBO3 options: none, auto, random
    epochs_pickCOMBO457 options: none, random, 1920s forbidden salon glamour, 1920s midnight salon, 1930s cinematic glamour, 1930s urban life, +451
    outfits_pickCOMBO837 options: none, random, Aged textured shawl with gold thread filigree, Antique slip dress under a loose knit shawl, edges slightly weathered, Architectural collar with rigid symmetry, Architectural high-neck ivory garment, +831
    lighting_pickCOMBO623 options: none, random, Backlight through thin haze, hair and shoulders separated with restrained halo, Backlit halo glow outlining crown silhouette, Backlit incense haze, strong frontal light shaping facial features, Backlit rim glow through mist, subtle halation, +617
    backgrounds_pickCOMBO675 options: none, random, Abandoned cathedral ruins, Abandoned subway covered in overgrowth, Abstract architectural void, quiet and clean, Abstract architectural void, quiet and heated, +669
    poses_pickCOMBO820 options: none, random, Adjusting glasses with one hand, wrist jewelry catching light, Aggressive seated position with sculptural stillness, Arms behind back, posture straight, restrained authority, Arms crossed with tension, specular lines tracing contours, +814
    expressions_pickCOMBO593 options: none, random, A faint melancholic stare, almost dreaming, Barely parted lips with serene composure, Blank and menacing, Calm and commanding gaze, +587
    camera_angles_pickCOMBO352 options: none, random, 35mm urban environmental perspective, 50mm balanced portrait with shallow depth of field, 50mm perspective with moderate depth of field, 85mm cinematic portrait framing, +346
    atmospheres_pickCOMBO599 options: none, random, A mix of danger and beauty, Absolute silence suspended in darkness, pressure held in negative space, Absolute silence within reflective darkness, Absolute silence, suspended in darkness, +593
    objects_modeCOMBO3 options: none, random, pick
    objects_pickCOMBO1330 options: none, 35mm analog rangefinder camera, A black lacquered chair merging into shadow, edges revealed by rim light, A collar resting beside a pearl necklace, A disposable cup with condensation, half-finished drink, A folded cloak or fabric bundle near the knees, +1324
    accessories_modeCOMBO3 options: none, random, pick
    accessories_pickCOMBO1330 options: none, 35mm analog rangefinder camera, A black lacquered chair merging into shadow, edges revealed by rim light, A collar resting beside a pearl necklace, A disposable cup with condensation, half-finished drink, A folded cloak or fabric bundle near the knees, +1324
    use_enhancerCOMBO6 options: none, ollama, llamacpp, openai, cohere, gemini
    enhancer_modeCOMBO80 options: LoRa_Training, standard, dark_ritual, dark_ritual_closeup, Mecha_Sanctum_V1_(Dark), Mecha_Sanctum_V2_(AngelCore), +74
    add_symbolsCOMBO2 options: no, yes
    seedINT0
    genderCOMBO8 options: neutral, female, 2 female, 3 female, female vampire, anime woman, +2
    identity_profileCOMBO13 options: none, Fallen_Helly, Helly_Identity, Classic_Muse, NeoTokyo_Muse, Mediterranean_Muse, +7
    lock_identityCOMBOyes2 options: no, yes
    custom_introSTRING
    horror_intensityCOMBO12 options: auto, 0, 1, 2, 3, 4, +6
    sensuality_levelCOMBO5 options: auto, 0, 1, 2, 3
    lora_triggersSTRING
    subject_countCOMBO3 options: 1, 2, 3
    lock_last_promptCOMBOno2 options: no, yes
    multi_object_countINT11–5
    ollama_hostSTRINGhttp://192.168.1.1:11434
    ollama_modelSTRINGllama3.2

    Outputs (1)

    NameTypeDescription
    promptSTRING