Nodes/IAMCCS-nodes/IAMCCS Ideogram Sheet Builder
ComfyUI Node

IAMCCS Ideogram Sheet Builder

The Ideogram 4 prompt builder that thinks in boxes

By IAMCCS·Created 12 months ago·Updated 4 days ago· 117
IAMCCS Ideogram Sheet Builder
  • image
  • bboxes
  • prompt
  • preview
  • bboxes
  • width
  • height
  • current_sheet_json
  • grid_columns
  • grid_rows
  • ideoboard_for_frame_v2
◄width1024►
◄height1024►
◄high_level_description►
◄background►
◄style▾►
◄aesthetics►
◄lighting►
◄medium►
◄style_palette_data►
◄elements_data►
◄grid_columns1►
◄grid_rows1►
◄bg_brightness25►
◄import_modewhen empty►
◄import_json►

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_json and ideoboard_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.

CategoryIAMCCS/Cine/Ideogram

Inputs (17)

NameTypeDefaultDescription
widthINT102464–16384—
heightINT102464–16384—
high_level_descriptionSTRING—
backgroundSTRING—
styleCOMBO3 options: [object Object], [object Object], [object Object]
aestheticsSTRING—
lightingSTRING—
mediumSTRING—
style_palette_dataSTRING—
elements_dataSTRING—
grid_columnsINT11–12—
grid_rowsINT11–12—
bg_brightnessINT250–100—
import_modeCOMBOwhen empty2 options: when empty, always
imageoptIMAGE—
import_jsonoptSTRING—
bboxesoptBOUNDING_BOX[object Object]—

Outputs (9)

NameTypeDescription
promptSTRING—
previewIMAGE—
bboxesBOUNDING_BOX—
widthINT—
heightINT—
current_sheet_jsonSTRING—
grid_columnsINT—
grid_rowsINT—
ideoboard_for_frame_v2STRING—