IAMCCS IdeoTranslate
Translate a plain LLM prompt into Ideogram 4's fussy JSON
- design_data_json
- ideoboard_package_json
- prompt_json_out
- translation_summary
- width
- height
Ideogram 4's structured JSON prompt format is powerful but it's a chore to write by hand, and if you're building prompts with an LLM you probably have a big flat blob of text, not a nicely nested style_description object. IAMCCS IdeoTranslate sits exactly in that gap: it takes a structured prompt JSON - the kind your LLM prompt builder emits - and turns it into the design data this pack's Ideogram nodes actually consume.
Again, no API, no key, no network call. It's a JSON-to-JSON transform running locally. The author's own description calls it a "bridge node," which is the right mental model: one end speaks LLM-structured prompt, the other end speaks IAMCCS ideoboard.
How it works
Feed prompt_json_in anything shaped like the default - a high_level_description, a style_description with aesthetics/lighting/photo/medium/color_palette, and a compositional_deconstruction with background and elements. The node normalizes that into a design dict, then applies three optional passes, each toggled by a boolean:
normalize_canvas_to_preset- snaps the canvas to a preset's proportions.auto_generate_text_boxes- creates text-element boxes so any copy in your prompt gets a real bounding box to live in.auto_palette_from_json- refreshes the scene color palette from the JSON'scolor_palette.
preset_override is the one knob you'll actually touch: auto lets the JSON decide, or you can force storyboard, poster, signage, screen_ui, or title_card. Handy when the same prompt text needs to be laid out as a poster in one branch and a storyboard panel in another - flip the combo, done.
Outputs
The four STRING outputs are all different views of the same design: design_data_json (the canonical IAMCCS design), ideoboard_package_json (the packaged form you hand to the Storyboard sheet node's ideotranslate_json input), prompt_json_out (back to Ideogram-style prompt JSON), and translation_summary (a readable summary of what changed). width/height report the normalized canvas.
Install & context
ComfyUI Manager → search IAMCCS, or clone the repo into custom_nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
Restart after. No extra dependencies, no model downloads.
The trap
If your LLM emits loosely-formed or free-text JSON, translation_summary is your friend - read it before wiring everything downstream. The node is defensive about missing fields but it can't invent a style_description that wasn't there; a minimal {"high_level_description": ...} will translate, but it'll translate to a pretty plain design. Start from the default JSON in the widget and you'll see the shape it wants.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt_json_in | STRING | { "high_level_description": "A cinematic frame", "style_description": { "aesthetics": "premium cinematic composition", "lighting": "controlled dramatic lighting", "photo": "35mm lens", "medium": "cinematic concept art", "color_palette": ["#1C2430", "#B86A3B", "#E9D7B9"] }, "compositional_deconstruction": { "background": "A controlled cinematic environment", "elements": [] } } | Structured JSON from the LLM Prompt Builder, prompt JSON, ideoboard package, or existing design_data. |
| preset_override | COMBO | 6 options: auto, storyboard, poster, signage, screen_ui, title_card | |
| normalize_canvas_to_preset | BOOLEAN | true | — |
| auto_generate_text_boxes | BOOLEAN | true | — |
| auto_palette_from_json | BOOLEAN | true | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| design_data_json | STRING | — |
| ideoboard_package_json | STRING | — |
| prompt_json_out | STRING | — |
| translation_summary | STRING | — |
| width | INT | — |
| height | INT | — |