Ideogram Studio
Draw your prompt on a canvas instead
- studio
- overrides
- caption
- extras
Ideogram 4 is the model that made text-in-image look effortless and then asked you to write its prompts as structured JSON. Not prose. A high_level_description, a style_description, and a compositional_deconstruction of bounding-boxed elements, each box [y0, x0, y1, x1] in a 0–1000 space. Hand-authoring that is a miserable way to work, and prose prompting underperforms badly on this model. Ideogram Studio is the pack's answer: drag boxes on a canvas, type into them, and get the exact wire-format caption out the other end.
It's the node everything else in this pack hangs off, and honestly the only one you strictly need.
What it actually is
Ideogram Studio is a full prompt editor embedded in a single ComfyUI node. The studio input isn't a socket you wire into - it's a socketless widget that mounts a Vue editor right on the node. Everything lives there: the resolution chip (aspect ratio × megapixels, or an exact W×H), the boxes, per-box descriptions and literal text, the style panel, even the colour palettes. Drag on empty canvas to add a box, drag a box to move it, drag a handle to resize. Ctrl/Shift-click to select several and move them as a group. Each box toggles between object and text - a text box carries the exact words the model should render, plus a description of how they should look.
Under the hood, when the graph runs, the node takes that editor state, merges in whatever's on the optional overrides input, and runs it through a canonical serializer. What comes out is minified JSON with strict key ordering - the model's actual wire format. Editor-only bits like box colours and links never leak into the prompt; muted boxes stay in the editor but drop out of the caption.
The two outputs and what to do with them
caption- aSTRINGof the finished JSON. Wire it straight into your Ideogram 4 sampler's prompt input. This is the whole point of the pack: you never see raw JSON, you never hand-edit it, and the node validates as it builds (empty required fields print warnings to your ComfyUI console).extras- a bundledIDEOGRAM_EXTRASobject. On its own it does nothing visible; feed it to the Ideogram Studio Extras node (same pack) and you get anoverlayimage, analphamask,width,height, and the boxes as nativeBOUNDING_BOXdata. Composite the overlay over your generation withImageCompositeMaskedusingalphaas the mask, and you can check whether the model actually placed things where you drew them. That feedback loop is the reason people say this model clicks.
The optional overrides input is where the automation lives - see the Ideogram Studio Override and Element Override nodes, or feed an LLM's output in to fill boxes for you. That's a real workflow people run: someone on r/StableDiffusion described exactly this setup, drawing boxes and letting a local Qwen model fill the descriptions.
Installing it
No pip dependencies, no model downloads. The frontend ships prebuilt and the Python side is written against ComfyUI's newer V3 backend API, so there's nothing to build:
cd ComfyUI/custom_nodes
git clone https://github.com/nynxz/ComfyUI-IdeogramHelper
Restart ComfyUI and look under the Ideogram category (ComfyUI Manager works too - search "ComfyUI-IdeogramHelper"). Because it targets the V3 comfy_api API, it wants a reasonably current ComfyUI; a stale install that predates it won't load the nodes. Keep in mind the model itself is separate - this pack only writes captions. You still need the Ideogram 4 checkpoint (fp8 or nf4) and its non-commercial licence is on you.
Where people get burned
The classic mistake is treating caption like a normal prompt string - pasting it into a CLIP Text Encode and expecting magic. It's JSON for the Ideogram sampler, not for SDXL. Second: if you set the resolution chip wrong, your overlay won't line up with the output, so pick the resolution the model actually renders at. Third: if the terminal shows [IdeogramStudio] warning: ... lines, read them - they're the serializer telling you which required field you left empty.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| studio | IDEOGRAM_STUDIO | — | |
| overridesopt | IDEOGRAM_OVERRIDE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| caption | STRING | — |
| extras | IDEOGRAM_EXTRAS | — |