IAMCCS Ideogram Sheet Builder
The Ideogram 4 prompt builder that thinks in boxes
- image
- bboxes
- prompt
- preview
- bboxes
- width
- height
- current_sheet_json
- grid_columns
- grid_rows
- ideoboard_for_frame_v2
Ideogram 4 is a weird model to prompt, and that's not an accident. It was trained for its structured JSON format - the one with style_description and per-element bounding boxes - and people who just paste a plain sentence into it get a decent render and then wonder why it underperforms. The IAMCCS Ideogram Sheet Builder is this pack's answer: a front-end that builds that structured prompt for you, with an optional visual grid so you can place elements without hand-writing coordinate JSON.
Let's clear up the first thing you'd reasonably worry about: this node doesn't call the ideogram.ai API and needs no key. It's a pure string-and-geometry builder that lives entirely in your ComfyUI graph. You wire its prompt output into your local Ideogram 4 text encoder (the Kijai-style wrapper setup), and you're done.
How it works
The node assembles an Ideogram-style caption dictionary. Your high_level_description and background become the top-level prompt; aesthetics, lighting, and medium (or photo/art_style under the style combo) get folded into style_description. Any elements you define are written as normalized bounding boxes - coordinates as 0–1 fractions of width/height, which is exactly the range Ideogram 4 expects. If you'd rather not hand-type elements, drop a BOUNDING_BOX from another node into the bboxes input, or feed import_json a caption and set import_mode to "always" to force it over manual entries.
The grid is where the "sheet" in the name comes in. grid_columns and grid_rows (1–12 each) seed the initial box layout at your width/height, so you can plan a contact sheet of panels or a storyboard frame-by-frame and then edit each box in the UI. bg_brightness (0–100) nudges the background value.
The outputs that matter
prompt- the STRING you feed to the Ideogram 4 encoder. This is the whole point.preview- an IMAGE of the sheet so you can eyeball layout before generating.bboxes- the same geometry as a BOUNDING_BOX, useful if you're chaining into crop nodes.current_sheet_jsonandideoboard_for_frame_v2- the full sheet state as JSON; the second one feeds the newer FrameDesigner/IdeoInfo pipeline.
Install
It ships in IAMCCS-nodes, so:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
…then restart ComfyUI. Or just search IAMCCS in ComfyUI Manager. The pack itself has no requirements.txt and downloads nothing - you already have numpy/PIL/torch.
Gotchas
The class is flagged experimental in the source, so expect the occasional rough edge. The two things that trip people: this node only builds the prompt - you still need Ideogram 4 weights and a working encoder to actually generate - and if style is left as a raw string rather than the combo's dict, it degrades to none styling. If your boxes come out wrong, check that width/height are multiples of 16 and that your elements data isn't double-normalizing coordinates.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 102464–16384 | — |
| height | INT | 102464–16384 | — |
| high_level_description | STRING | — | |
| background | STRING | — | |
| style | COMBO | 3 options: [object Object], [object Object], [object Object] | |
| aesthetics | STRING | — | |
| lighting | STRING | — | |
| medium | STRING | — | |
| style_palette_data | STRING | — | |
| elements_data | STRING | — | |
| grid_columns | INT | 11–12 | — |
| grid_rows | INT | 11–12 | — |
| bg_brightness | INT | 250–100 | — |
| import_mode | COMBO | when empty | 2 options: when empty, always |
| imageopt | IMAGE | — | |
| import_jsonopt | STRING | — | |
| bboxesopt | BOUNDING_BOX | [object Object] | — |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |
| preview | IMAGE | — |
| bboxes | BOUNDING_BOX | — |
| width | INT | — |
| height | INT | — |
| current_sheet_json | STRING | — |
| grid_columns | INT | — |
| grid_rows | INT | — |
| ideoboard_for_frame_v2 | STRING | — |