π§© Easy Prompt Builder
Your prompt as eight shelves instead of one wall of text
- final_prompt
- prefix
- character
- clothing
- expression
- situation
- location
- lighting
- suffix
Let's be honest about how most ComfyUI prompts actually get written: as one long, unreadable paragraph that you're scared to touch because every comma is load-bearing. You want to change the lighting, so you hunt through 200 words to find the one lighting tag. You want to reuse your favorite outfit tags in another workflow, so you copy-paste the chunk and hope you grabbed the whole thing.
Easy Prompt Builder is from Comfy Cabinet, and it's a small, well-designed answer to that. It splits a prompt into eight named blocks - prefix, character, clothing, expression, situation, location, lighting, suffix - joins them together for your text encoder, and also hands you every block on its own output wire.
The nice part is that this isn't just tidy-as-therapy. The modular habit is one of the few prompting practices that's genuinely new and alive in 2026: on the current generation of LLM-encoded models your prompt is an instruction rather than a bag of tokens, so a structured, block-by-block prompt reads better to the encoder than a run-on sentence. Structured isn't a compromise you make for neatness; it's how the good prompting guides tell you to write anyway.
How it works
Each of the eight inputs is a multiline text field. When the node runs, it drops any block that's blank, then joins what's left with the separator - default is ", ", but you can set anything, and the escapes \n and \t become real newlines and tabs. No separator magic, no hidden concatenation logic: the output is exactly what you'd expect from gluing the blocks together.
Two extra behaviors are worth knowing about. If you pick a saved scene_preset from the dropdown, it pulls the block contents from that preset - but only for blocks you left blank on the node, so a typed value always wins. And if every block is empty, it falls back to the "active config" you last saved from the web dashboard, which is a nice safety net for a fresh node that's still unconfigured.
Presets are the real power feature. Through the pack's ποΈ Easy Config dashboard (the button injected into ComfyUI's top menu), you can save individual block fragments - your signature character, your go-to lighting - or save a whole Scene Preset that swaps in an entire known-good prompt setup. Selecting a Scene Preset on the canvas and hitting run is dramatically easier than recreating a workflow's prompt by hand, and it means "known good" stays known good.
The inputs and outputs that matter
There are eight inputs you'll actually type into: prefix, character, clothing, expression, situation, location, lighting, suffix. Plus separator and the scene_preset dropdown in the optional section.
The outputs are where this node earns its keep. final_prompt is what you feed your text encoder. But each block also comes out on its own wire - prefix, character, clothing, and so on - so you can route any single part of the prompt anywhere else in the graph. Want the character block feeding a separate regional conditioner while the rest goes to the main encode? That's a wire, not a parser. This is also the design choice that keeps it honest in an era where "convenience node" is sometimes code for "black box you can't debug" - it doesn't hide anything behind one opaque pipe, it exposes every piece.
Installing and configuring
It ships with the rest of the pack, so the install is the same one command:
cd ComfyUI/custom_nodes
git clone https://github.com/Zed93/Comfy-Cabinet.git
Restart ComfyUI afterwards (or install via ComfyUI Manager by searching "Comfy Cabinet"). The only dependency is aiohttp, which is already there for ComfyUI's own server. Then click Easy Config in the top menu, open the Easy Prompt Builder tool, fill the eight slots, and hit "Save Active Config to Node" - the data lands on the canvas node directly, no workflow reload required.
Where people get burned
The main gotcha is remembering that blank blocks are simply skipped. If you leave a block with just a stray space or a comma in it, that comma rides along into final_prompt, so keep empty blocks truly empty. Also note the node always re-runs (it forces itself to re-fire so saved configs take effect immediately), so if you're profiling a big workflow you'll see it execute even when nothing visibly changed - that's expected, not a bug. And since it's release-candidate software, if the Easy Config button doesn't show up after install, restart ComfyUI before you go hunting for deeper causes.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| prefix | STRING | β | |
| character | STRING | β | |
| clothing | STRING | β | |
| expression | STRING | β | |
| situation | STRING | β | |
| location | STRING | β | |
| lighting | STRING | β | |
| suffix | STRING | β | |
| separatoropt | STRING | , | β |
| scene_presetopt | COMBO | None / Custom / Active Config | 1 options: None / Custom / Active Config |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| final_prompt | STRING | β |
| prefix | STRING | β |
| character | STRING | β |
| clothing | STRING | β |
| expression | STRING | β |
| situation | STRING | β |
| location | STRING | β |
| lighting | STRING | β |
| suffix | STRING | β |