Prompt Сonstructor
The style assembler that ties the pack together
- STRING
The heart of the pack. Prompt Сonstructor is the node that turns "I want something moody and cinematic" into actual comma-tags, and it's the hub the Clothes and Body nodes plug into.
First, the spelling: that's a Cyrillic С in "Сonstructor", not a Latin C. It's one of the pack's little tripwires - the node won't show up when you search "Prompt Constructor" in some frontends. Look under the "Prompt Worker" category, or search "Constructor" and check for the odd-looking C. (The comfy.icu page slug literally lost the character, hence "Prompt-onstructor".)
The inputs that matter
Five style dropdowns plus two optional text feeds:
- scene (8): atmospheric, suspenseful, horror, comedic, dramatic, romantic, party
- photography_style (14): black and white, fashion photography, macro, night, high/low contrast…
- Cinematography_Styles (19): film noir, dreamlike, dramatic shadows, jump cuts style…
- colors (37): a full palette including "cool colors", "fluorescent colors", "champagne colors"
- custom_list - a dropdown read from
custom_list.json(see the trap below) - clothes and body (STRING, optional) - wire the outputs of Prompt Clothes and Prompt Body here
How it works
It joins the chosen style tags in a fixed order - cinematography first, then scene, photography, colors, then your clothes and body strings, then custom - separated by commas. Order matters in tag-based prompting: on SDXL-lineage models (Illustrious, Pony, WAI) earlier tags get stronger attention. So the fixed order is a deliberate editorial choice: mood and light first, wardrobe later.
The custom_list trap
This is the gotcha that bites people. The dropdown loads from nodes/lists_of_types/custom_list.json, and that file currently ships with just ["Off", "custom"]. So if you pick "custom" from the dropdown, the node appends the literal word "custom" to your prompt. There are no prebuilt custom options - the README says you're meant to open the JSON and add your own entries ("the user can modify it in the file custom_list.json"). Until you do, "custom" in your prompt does nothing useful. Keep "Off" first and no trailing comma in the array, or json.load fails and the node disappears at startup.
Why reach for it
If you build many workflows and want a consistent "tone" block without retyping it, this is the quickest way to get one. The scene/photography/cinema split also maps nicely onto the modern advice about prompt structure: a block of concrete photographic referents ("film noir", "high contrast", "dramatic shadows") does more on current models than a pile of vague quality tags. The dropdowns are read from editable JSON, so your "moody film noir" template can become your house style in one file.
Install and wiring
Same pack, same story - no dependencies, no models, no key:
cd ComfyUI/custom_nodes
git clone https://github.com/lenskikh/ComfyUI-Prompt-Worker
Restart ComfyUI, or install via ComfyUI Manager (search "Prompt Worker" - the registry title is misspelled "Propmt Worker", so try both). Its STRING output feeds a Prompt Merger or the Prompt Worker cleaner, then on to encoding.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| scene | COMBO | 8 options: Off, atmospheric scene, suspenseful scene, horror scene, comedic scene, dramatic scene, +2 | |
| photography_style | COMBO | 14 options: Off, abstract photography, artistic photography, black and white, documentary photography, fashion photography, +8 | |
| Cinematography_Styles | COMBO | 19 options: Off, blockbuster style, dramatic shadows, dreamlike, dynamic shots, emotional, +13 | |
| colors | COMBO | 37 options: Off, amber colors, beige colors, bronze colors, burgundy colors, champagne colors, +31 | |
| custom_list | COMBO | 2 options: Off, custom | |
| clothesopt | STRING | — | |
| bodyopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |