Dragos Structured Builder
Pick your whole scene from dropdowns instead of typing a prompt
- input_1
- PROMPT_VAR
Dragos Structured Builder is the headline node of the pack, and the reason most people install it. Instead of typing a prompt into a text box, you get a big list of dropdowns - camera, character, environment, style - and you pick your scene from them. It's the "easily build a scene by selecting what you want from a list" part of the README, and it's genuinely the closest thing to a friendly form-based UI you'll find in this corner of ComfyUI.
Why would you bother? Because prompt engineering in 2026 is really two skills: what to say, and how to structure it for the model's text encoder. The SDXL lineage wants booru tags, Pony wants score tags up front, Z-Image wants a prose "director's brief." This node doesn't care about any of that. It produces clean, structured scene data, and a separate step (an LLM) translates it into whatever format your model wants. You pick values; the node handles structure.
How it works
The node reads schema files from the pack's web/schema folder and turns each one into widgets. Every array in a schema becomes a dropdown, nested objects become group headers, plain strings become text fields, and a _static block renders as a fixed label. There's even a conditional system (_conditions in a schema) that hides or shows fields, and an "other" option on dropdowns that pops a text box for custom values.
Pick a category and the whole node repaints with that schema's controls. When you run the graph, it collects all the chosen values into a PROMPT_VAR - with name set to the category and the values as nested data.
The inputs that matter
category- the dropdown of schemas. Out of the box you get camera, environment, style, clothes, actions, character placement, male/female human/anthro/animal characters, plusCharacters/Eikopresets (a pre-filled Final Fantasy character).input_1(PROMPT_VAR) - where you feed in extra variables or objects to merge into the result.
The output is a single PROMPT_VAR carrying the whole scene fragment. A couple of the shipped schemas are extensions - actions.json, for instance, is tagged to merge into a character rather than stand alone, so you can bolt an action onto your character without scattering top-level keys.
Adding your own categories
This is the feature that makes the node yours. Drop a .json file into ComfyUI/custom_nodes/Dragos-SceneBuilder/web/schema (or edit the existing ones - they're plain JSON), then restart ComfyUI. The category list is scanned at server start, so a restart is mandatory. The schema format is easy to eyeball: _meta for display name and flags, then nested keys where arrays become dropdown choices.
Installing the pack
All five nodes come in one pack:
cd ComfyUI/custom_nodes
git clone https://github.com/drago87/Dragos-SceneBuilder
Then restart ComfyUI. ComfyUI Manager users can just search "Dragos Scene Builder". No pip dependencies and no models to download - this pack is pure Python plus some JSON and a bit of frontend JS.
Common gotchas
- New schemas don't show up until you restart. The category enum is built at startup. You'll edit a JSON file, check the node, and see nothing - restart, then look again.
- Dropdowns only. Everything comes from lists, so genuinely custom free text needs a Dragos Variable fed into
input_1. - The category list is generated from whatever's in the schema folder. If you mess up a JSON file's syntax, the node can quietly lose that category - worth keeping a backup of anything you edit.
- It's the front half of a two-stage pipeline. This node alone doesn't generate an image. It builds scene data that you then compile and hand to an LLM. If that's not the workflow you want, a plain prompt text box is simpler.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| category | COMBO | 16 options: Characters/Eiko, Characters/Eiko clothes, actions, artist, camera, character_female_animal, +10 | |
| input_1opt | PROMPT_VAR | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| PROMPT_VAR | PROMPT_VAR | — |