Nodes/ComfyUI-mnemic-nodes/🧩 Ideogram 4 Prompt Builder w. String Inputs
ComfyUI Node

🧩 Ideogram 4 Prompt Builder w. String Inputs

Ideogram 4 Prompt Builder w. String Inputs β€” ComfyUI Node Guide

By MNeMoNiCuZΒ·Created 3 years agoΒ·Updated 23 days agoΒ· 105
🧩 Ideogram 4 Prompt Builder w. String Inputs
  • image
  • prompt
  • preview
  • bboxes
  • width
  • height
β—„width1024β–Ί
β—„height1024β–Ί
β—„high_level_descriptionβ–Ί
β—„backgroundβ–Ί
β—„stylenoneβ–Ί
β—„photoβ–Ί
β—„art_styleβ–Ί
β—„aestheticsβ–Ί
β—„lightingβ–Ί
β—„mediumβ–Ί
β—„import_jsonβ–Ί
β—„style_palette_dataβ–Ί
β—„elements_dataβ–Ί

Ideogram 4 is a strange model to prompt: it was trained exclusively on structured JSON captions, not natural-language sentences, so typing a normal descriptive prompt at it badly underperforms what the model can actually do. Bounding boxes, hex colors, typed in-image text, per-region descriptions - that's the vocabulary it understands, and hand-writing raw JSON for that is exactly the kind of tedious that gets automated fast. Kijai's KJNodes shipped a visual prompt-builder node for it within a day of the weights landing in June 2026, letting you draw boxes on a canvas instead of typing coordinates by hand. This node is mnemic's take on the same idea, explicitly adapted from that KJNodes builder, with one addition: every region you draw gets its own string input pin, so a region's description can be overridden by something wired in from elsewhere in your graph - a wildcard, an LLM node, a loop variable - instead of only ever being typed manually into the canvas UI.

Worth knowing before you reach for it: Ideogram 4 shipped under a non-commercial license, and the ecosystem around it settled fast into a narrow niche - graphic design layouts, posters, banner text, anything where exact placement of legible text is the actual deliverable - while general-purpose image generation moved on to faster, easier-to-prompt models. If what you want is "a nice picture," this is more setup than it's worth. If what you want is precise, per-region control over composition and in-image text with regions that can overlap and carry their own styling, it's genuinely the best open option for that specific job.

What you're actually setting: width and height define both the output aspect ratio and the pixel grid your bounding boxes are measured against - they need to be multiples of 16, which the tooltip states directly. Everything else is optional and mostly about what gets described where: high_level_description is a one-line overview of the whole scene (leave blank to omit it from the JSON entirely), background covers the scene backdrop, and style picks between no style block, a photo descriptor, or an art_style descriptor - whichever you choose determines which of the photo/art_style text fields actually gets used. aesthetics, lighting, and medium are free-text style descriptors that get omitted from the output whenever left blank, so you only pay for what you fill in. image lets you drop a reference image in as the editor's canvas background so you can trace composition against it. import_json will load a full caption JSON into the editor on run - but the tooltip is specific that the output always reflects whatever's currently in the editor, never the raw imported string, so it's a starting point to edit from, not a passthrough. style_palette_data and elements_data are the editor's own internal state (your drawn regions and any color palette) - you don't hand-author these, the node UI manages them for you.

Outputs: prompt is the finished JSON caption string - this is what an actual Ideogram 4 execution node downstream needs to consume; this node only builds the prompt, it doesn't call any API or run any generation itself. preview gives you an IMAGE render of your bounding-box layout for a sanity check before you commit GPU time to it. bboxes exposes the raw box data as its own typed output if something downstream wants it directly rather than parsed back out of the JSON, and width/height pass your canvas dimensions straight through for convenience.

Getting it installed is the same as every node in this pack: ComfyUI Manager search for "ComfyUI-mnemic-nodes," or git clone https://github.com/MNeMoNiCuZ/ComfyUI-mnemic-nodes into custom_nodes and restart. No model download here - this node is pure prompt construction, the actual Ideogram 4 weights (or API call) live entirely outside it.

Common trip-ups: forgetting width/height aren't multiples of 16 and getting a rejected or reshaped request downstream. Expecting import_json to be a straight passthrough - it isn't; edit after import if you want the change to actually show up in prompt. And leaving style on a value whose matching text field (photo or art_style) is empty, which just quietly omits that block rather than erroring out.

Category⚑ MNeMiC Nodes

Inputs (14)

NameTypeDefaultDescription
widthINT102464–16384Canvas aspect width (also the pixel grid the bbox is measured in). Ideogram 4 needs multiples of 16.
heightINT102464–16384Canvas aspect height (also the pixel grid the bbox is measured in). Ideogram 4 needs multiples of 16.
high_level_descriptionoptSTRINGOptional one-line overview of the whole image (blank = omitted).
backgroundoptSTRINGRequired scene background description.
styleoptCOMBOnoneStyle block: none omits it, photo/art_style pick which style key is emitted.
photooptSTRINGPhoto style descriptor (used when style = photo).
art_styleoptSTRINGArt style descriptor (used when style = art_style).
aestheticsoptSTRINGStyle descriptor (blank = omitted).
lightingoptSTRINGStyle descriptor (blank = omitted).
mediumoptSTRINGStyle descriptor (blank = omitted).
imageoptIMAGEOptional reference image shown as the editor background (and behind the preview).
import_jsonoptSTRINGOptional: a full caption JSON. When connected, it loads into the editor on run; the output always reflects the editor, never the raw input.
style_palette_dataoptSTRINGSerialized style color palette from the editor (managed by the node UI).
elements_dataoptSTRINGSerialized regions from the editor (managed by the node UI).

Outputs (5)

NameTypeDescription
promptSTRINGβ€”
previewIMAGEβ€”
bboxesBOUNDING_BOXβ€”
widthINTβ€”
heightINTβ€”