Nodes/Deno Custom Nodes/(Deno) Ideogram Director
ComfyUI Node

(Deno) Ideogram Director

Ideogram 4's JSON prompt format, drawn on a canvas instead of typed by hand

By Deno2026·Created 5 months ago·Updated a day ago· 157
(Deno) Ideogram Director
  • backdrop
  • prompt
  • width
  • height
  • seed
  • bboxes
width1024
height1024
seed0
high_level_description
background
style_modenone
aesthetics
lighting
medium
photo
art_style
import_modeAsk Before Replacing
caption_data
seed_locktrue
auto_savefalse
save_prefixIdeogram_Director
aspect_ratio1:1
include_aspect_ratiofalse
translate_outputEnglish
view_languageEnglish
translation_engineGoogle
libretranslate_url
import_json
input_width
input_height
input_megapixels
input_summary
input_background

Here's the thing nobody warns you about Ideogram 4: it doesn't prompt like any other model you own. It was trained on structured JSON captions - bounding boxes, hex color palettes, typed text elements - and plain natural-language prose underperforms badly. (Deno) Ideogram Director is a visual builder for exactly that format: you draw and edit bbox regions directly on the ComfyUI canvas, describe each region, and the node minifies the whole board into the JSON prompt Ideogram 4 actually wants. No hand-authoring JSON, no guessing the schema.

How it works

The board is your working surface. You set high_level_description (short whole-scene summary) and background, then place boxes on the canvas with their own descriptions. A style_mode of none, photo, or art adds a structured style block, with aesthetics, lighting, medium, photo, and art_style fields feeding whichever mode is active. The backdrop input is deliberately just a layout backdrop to trace over - it is not used for generation. Style and layout preset galleries give you starting points with lightweight previews.

Two features matter for real use. First, the Language view: you can read and edit board descriptions in your own language while the final output stays model-ready English - literal TEXT box words like signs and headlines are preserved exactly. translate_output and view_language control this, with Google as the default translation engine (or a custom LibreTranslate server). Second, import_json: you can feed in a JSON prompt from an upstream source - the README explicitly pairs this with the (Deno) Local LLM Loader - and import_mode decides whether it asks before replacing your existing board.

Outputs: prompt (the minified Ideogram JSON, wired into a positive CLIPTextEncode), plus width, height, seed, and bboxes (your drawn boxes as downstream BBOX data). There's also a seed_lock Fixed/Random control and optional auto_save with save_prefix for turning the latest generation into a saved file.

Why the format matters (and the filter thing)

Prompting Ideogram 4 through its documented JSON schema isn't just better quality - it's also the community's noted workaround when the model's trained-in safety filter objects to a prompt. The guard keys on prompt format rather than content, so a workflow that always emits structured JSON rarely trips it. Worth knowing if you run into a grey "refusal image" and wonder what broke.

Install and caveats

cd ComfyUI/custom_nodes
git clone https://github.com/Deno2026/comfyui-deno-custom-nodes.git
# restart ComfyUI

The node builds the prompt; it doesn't run Ideogram 4 itself - you need the Ideogram 4 weights (non-commercial license, so check the terms before any commercial use) and a ComfyUI path for the model. And set expectations on speed: Ideogram 4 is slow - roughly 3–4 minutes per image on consumer hardware - so this node is a composing tool, not a sketchpad for fast iteration. Build the board carefully, then generate. For quick exploration you'll probably still reach for something faster and come back here to compose the keeper.

CategoryDeno/Ideogram

Inputs (29)

NameTypeDefaultDescription
widthINT102464–16384Output image width passed downstream.
heightINT102464–16384Output image height passed downstream.
seedINT00–18446744073709550000Seed value passed downstream. The Director Fixed/Random control manages it.
high_level_descriptionSTRINGShort whole-scene summary used in the Ideogram JSON prompt.
backgroundSTRINGBackground or setting description used in the Ideogram JSON prompt.
style_modeCOMBOnoneChoose no style block, photo style, or art style.
aestheticsSTRINGGeneral visual mood or aesthetic notes for the style block.
lightingSTRINGLighting notes for the style block.
mediumSTRINGMedium/material notes for art-style prompts.
photoSTRINGPhotography notes used when Photo style is active.
art_styleSTRINGArt style notes used when Art style is active.
backdropoptIMAGEShown on the board as a layout backdrop to trace over. It is not used for generation.
import_modeoptCOMBOAsk Before ReplacingHow connected JSON should handle an existing board.
caption_dataoptSTRINGInternal saved board state managed by the editor. Do not edit it by hand.
seed_lockoptBOOLEANtrueSaved Fixed/Random seed state used by the Director UI.
auto_saveoptBOOLEANfalseSave the latest generated result automatically when enabled.
save_prefixoptSTRINGIdeogram_DirectorFilename prefix used by Save Image / Auto-save.
aspect_ratiooptSTRING1:1Ratio label derived from the selected output size.
include_aspect_ratiooptBOOLEANfalseAdvanced compatibility toggle. Normally off because width/height carry the real shape.
translate_outputoptCOMBOEnglishFinal prompt language mode. Board text can stay in your language while output becomes English.
view_languageoptCOMBOEnglishLanguage used to read and edit the board UI descriptions.
translation_engineoptCOMBOGoogleTranslation engine used when refreshing board language or final English output.
libretranslate_urloptSTRINGCustom LibreTranslate server URL, used only when the custom engine is selected.
import_jsonoptSTRINGOptional connected JSON prompt from an upstream LLM or Prompt Text node.
input_widthoptINT256–4096Optional connected output width. Snaps to a multiple of 16 and wins when width and height are both connected.
input_heightoptINT256–4096Optional connected output height. Snaps to a multiple of 16 and wins when width and height are both connected.
input_megapixelsoptFLOAT0.05–10Optional connected megapixel budget. Used with the current aspect ratio when width and height are not both connected.
input_summaryoptSTRINGOptional connected Summary override. It affects this execution only; the saved Director board value remains available when disconnected.
input_backgroundoptSTRINGOptional connected Background override. It affects this execution only; the saved Director board value remains available when disconnected.

Outputs (5)

NameTypeDescription
promptSTRINGMinified Ideogram JSON prompt to connect into positive CLIPTextEncode.
widthINTSelected output width in pixels.
heightINTSelected output height in pixels.
seedINTSelected seed value.
bboxesBBOX,BOUNDING_BOXDrawn board boxes as downstream BBOX data.