Nodes/Prompt Builder/Combine Prompt
ComfyUI Node

Combine Prompt

The Node That Turns Eight Dropdowns Into One Prompt

By zinigo-creations·Created 5 months ago·Updated 5 months ago· 1
Combine Prompt
    • positive_prompt
    • negative_prompt
    composition
    preset_character
    character
    action
    environment
    nsfw
    style_preset
    positive_prompt_text
    negative_prompt_textscore_6, score_5, score_4, source_pony, (worst quality:1.2), (low quality:1.2), (normal quality:1.2), lowres, bad anatomy, bad hands, signature, watermarks, ugly, imperfect eyes, skewed eyes, unnatural face, unnatural body, error, extra limb, missing limbs

    Combine Prompt is where the Prompt Builder pack finally pays out. Every other node in the pack - Style Preset, Character, Action, all of them - is a "section" that spits out one comma-joined string. This node is the merge point: it takes all seven sections, adds whatever custom text you type, and hands you a finished positive and negative prompt you can wire into a KSampler. It's the only node you'll definitely keep in the final graph, which is also why it's the one Google actually sends people to.

    How it works

    Despite the name, there's no AI and no API call here. Combine Prompt is a text joiner with a fixed, deliberate order. Reading the source, it concatenates your inputs in exactly this sequence:

    style_preset, composition, preset_character, character, action, environment, nsfw, positive_prompt_text
    

    That order isn't random. On the CLIP-encoded models this pack is aimed at (Pony V6, Illustrious, NoobAI), earlier tokens get stronger attention, so the style lands first on purpose - the README says Style Preset has a major influence on the final output, and the code backs that up. Any section left on None is skipped, and it cleans up stray double commas so you never get 1girl,, ,,night garbage.

    The inputs and outputs that matter

    Of the nine inputs, a beginner only really touches three:

    • The seven section inputs (style_preset, composition, preset_character, character, action, environment, nsfw) - these are just the string outputs of the other nodes in the pack, wired in by hand.
    • positive_prompt_text - your freeform escape hatch. It's appended last, which on CLIP models is the weakest-attention position, so don't expect a custom sentence to dominate a fully-loaded Character node.
    • negative_prompt_text - and here's the gotcha that will bite you. The shipped default is pure Pony DNA: score_6, score_5, score_4, source_pony, followed by a wall of quality and anatomy boilerplate. That formula makes sense on Pony V6 and its descendants, where the score_x vocabulary is actually trained in. On an Illustrious or NoobAI checkpoint those score tags mostly do nothing, and on a distilled model you run at CFG 1 the entire negative prompt does nothing at all - at CFG 1 ComfyUI doesn't even compute the unconditional pass. Swap the default for whatever your model family expects.

    Outputs are two strings: positive_prompt and negative_prompt. Each feeds into a CLIP Text Encode node, which converts them into conditioning for the KSampler.

    Install

    Same story as every node in this pack, and a rare pleasant one: there's no requirements.txt, no pip dependencies, and nothing to download. Python 3.10+ is all it needs.

    cd ComfyUI/custom_nodes
    git clone https://github.com/zinigo-creations/comfyui-prompt-builder
    

    Restart ComfyUI. Or, easier, use ComfyUI Manager - search for "Prompt Builder", install, restart. In a world where half of custom nodes drag in conflicting dependencies, this one just works.

    Common issues

    The most frequent mistake is leaving a section unwired and then staring at a prompt missing half your character. Every section node outputs a string - drag all seven into Combine Prompt. If your negative prompt looks wrong for your checkpoint, that's the Pony-default problem above, not a bug. And if you edit presets.json to customize the dropdowns, restart ComfyUI before expecting to see changes - the dropdowns are read when the node loads. One last honest note: this pack speaks Danbooru tags for the anime-SDXL lineage. If your pipeline is Flux or a 2026 LLM-encoded model, the tag vocabulary and () weights this whole approach leans on are the wrong tool, and no amount of combining will fix that.

    CategoryPrompt

    Inputs (9)

    NameTypeDefaultDescription
    compositionSTRING
    preset_characterSTRING
    characterSTRING
    actionSTRING
    environmentSTRING
    nsfwSTRING
    style_presetSTRING
    positive_prompt_textSTRING
    negative_prompt_textSTRINGscore_6, score_5, score_4, source_pony, (worst quality:1.2), (low quality:1.2), (normal quality:1.2), lowres, bad anatomy, bad hands, signature, watermarks, ugly, imperfect eyes, skewed eyes, unnatural face, unnatural body, error, extra limb, missing limbs

    Outputs (2)

    NameTypeDescription
    positive_promptSTRING
    negative_promptSTRING