Text-to-Image
English
comfyui
comfyui-workflow
comfyui-custom-nodes
deno
deno-custom-nodes
workflow
workflow-json
ideogram
ideogram-4
ideogram4
ideogram-director
json-prompt
json-prompt-builder
bounding-box
layout-control
typography
text-rendering
prompt-engineering
local-llm
bernini
bytedance
bytedance-bernini
wan-video
image-to-video
video-generation
| {"id":"fdcfc2b2-168f-4f3d-a1d0-6986b802fce5","revision":1,"last_node_id":264,"last_link_id":367,"nodes":[{"id":232,"type":"MarkdownNote","pos":[4823.453479719055,1272.1875852565008],"size":[444.2340913168646,306.1080122670146],"flags":{},"order":0,"mode":0,"inputs":[],"outputs":[],"properties":{},"widgets_values":["# π€ Local LLM Prompt Guide\n\nYou can generate JSON prompts by calling a local LLM using **Ollama** or **LM Studio**.\n\n## β οΈ Important Notice for Local Users\n* Local LLMs often struggle to output perfect JSON formats and are prone to syntax errors.\n* It is highly recommended to use a model with **at least 12B parameters** and turn **Think Mode ON**.\n* **Note:** Even with these settings, local models still frequently make mistakes.\n\n---\n\n## πΊ Video Tutorial\nIf you want to check the step-by-step setup guide, watch the tutorial link below:\n\n* [Local LLM Loader Tutorial Video β](https://youtu.be/dhyYfLVoHVo)"],"color":"#432","bgcolor":"#653"},{"id":235,"type":"MarkdownNote","pos":[4743.171880963408,876.4696163419961],"size":[385.50972734321294,129.25992765670924],"flags":{"collapsed":false},"order":1,"mode":0,"inputs":[],"outputs":[],"properties":{},"widgets_values":["## π¨ Connection Warning\n* **This node is NOT meant to be connected to the IDEOGRAM Director.**\n* (μ΄ λ Έλλ IDEOGRAM Directorμ μ°κ²°νλ λ Έλκ° μλλλ€.)\n\n---"],"color":"#432","bgcolor":"#653"},{"id":228,"type":"Note","pos":[5139.66503506503,582.1132022177318],"size":[253.56293768370506,88],"flags":{"collapsed":false},"order":2,"mode":0,"inputs":[],"outputs":[],"properties":{},"widgets_values":["Copy and paste the output into Gemini or GPT, get the refined prompt, then click the 'Paste JSON' button on the IDEOGRAM Director node and enter the prompt"],"color":"#432","bgcolor":"#653"},{"id":183,"type":"DenoResolutionSetup","pos":[3914.141451279253,579.4032046045985],"size":[320,460],"flags":{"collapsed":false},"order":3,"mode":0,"inputs":[{"localized_name":"image","name":"image","shape":7,"type":"IMAGE","link":null},{"localized_name":"mode","name":"mode","type":"COMBO","widget":{"name":"mode"},"link":null},{"localized_name":"ratio_preset","name":"ratio_preset","type":"COMBO","widget":{"name":"ratio_preset"},"link":null},{"localized_name":"megapixels","name":"megapixels","type":"FLOAT","widget":{"name":"megapixels"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"divisible_by","name":"divisible_by","type":"COMBO","widget":{"name":"divisible_by"},"link":null},{"localized_name":"resize_method","name":"resize_method","type":"COMBO","widget":{"name":"resize_method"},"link":null},{"localized_name":"interpolation","name":"interpolation","type":"COMBO","widget":{"name":"interpolation"},"link":null}],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":null},{"localized_name":"width","name":"width","type":"INT","links":[260]},{"localized_name":"height","name":"height","type":"INT","links":[261]}],"properties":{"Node name for S&R":"DenoResolutionSetup","cnr_id":"deno-custom-nodes","ver":"0.7.28"},"widgets_values":["Preset Ratio","1:1",1,1024,1024,"16","Center Crop (Fill)","lanczos"]},{"id":230,"type":"Note","pos":[3884.246725236539,1447.840130694874],"size":[809.4199470791928,113.9424142071046],"flags":{},"order":4,"mode":0,"inputs":[],"outputs":[],"properties":{},"widgets_values":["You can generate JSON prompts by calling a local LLM using Ollama or LM Studio. However, local LLMs often struggle to output perfect JSON formats and are prone to errors. It is highly recommended to use a model with at least 12B parameters and turn Think Mode ON. Even with these settings, keep in mind that local models still frequently make mistakes"],"color":"#432","bgcolor":"#653"},{"id":257,"type":"PreviewImage","pos":[7389.86111792512,1766.9059577322907],"size":[358.80439914399267,537.7391988586578],"flags":{"collapsed":false},"order":19,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":354}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.24.1","Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":258,"type":"SaveImage","pos":[7388.048639188636,1648.8102385657455],"size":[270,58],"flags":{"collapsed":false},"order":5,"mode":4,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":null},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.25.0","Node name for S&R":"SaveImage"},"widgets_values":["Ideogram"]},{"id":255,"type":"PreviewAny","pos":[6913.909448334307,2159.550988780192],"size":[401.15525975905894,418.2201233965027],"flags":{"collapsed":false},"order":17,"mode":0,"inputs":[{"localized_name":"source","name":"source","type":"*","link":355}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[]}],"properties":{"cnr_id":"comfy-core","ver":"0.24.1","Node name for S&R":"PreviewAny"},"widgets_values":[null,null,null]},{"id":181,"type":"544181b4-f834-47e9-9a47-19fa4091ca49","pos":[4251.385730597536,575.566681819564],"size":[474.4450000000006,461.0169999999998],"flags":{"collapsed":false},"order":10,"mode":0,"inputs":[{"label":"user_prompt","name":"value","type":"STRING","widget":{"name":"value"},"link":null},{"label":"width","name":"source","type":"*","link":260},{"label":"height","name":"source_1","type":"*","link":261}],"outputs":[{"name":"STRING","type":"STRING","links":[318]}],"properties":{"proxyWidgets":[["115","value"]],"cnr_id":"comfy-core","ver":"0.23.0","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[]},{"id":214,"type":"PreviewAny","pos":[4737.944412548479,574.901329516805],"size":[390.89613627167273,251.30276075085067],"flags":{"collapsed":false},"order":12,"mode":0,"inputs":[{"localized_name":"source","name":"source","type":"*","link":318}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.24.1","Node name for S&R":"PreviewAny"},"widgets_values":[null,null,null]},{"id":260,"type":"LoadImage","pos":[3928.97965411064,2203.3209786643474],"size":[293.19768508408015,326],"flags":{},"order":6,"mode":4,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[362,363]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.24.1","Node name for S&R":"LoadImage"},"widgets_values":["ComfyUI_00016_.png","image"]},{"id":262,"type":"DenoLTXModelDownloader","pos":[6113.068002181208,582.9312849921138],"size":[560,600],"flags":{},"order":8,"mode":0,"inputs":[{"localized_name":"model_root","name":"model_root","type":"STRING","widget":{"name":"model_root"},"link":null},{"localized_name":"presets_json","name":"presets_json","type":"STRING","widget":{"name":"presets_json"},"link":null}],"outputs":[],"title":"Ideogram 4 Default Model Links","properties":{"Node name for S&R":"DenoLTXModelDownloader","cnr_id":"deno-custom-nodes","ver":"0.7.41"},"widgets_values":["","{\n \"active_preset_id\": \"ideogram4_default_fp8\",\n \"presets\": [\n {\n \"id\": \"ideogram4_default_fp8\",\n \"title\": \"Ideogram 4 Default - FP8\",\n \"description\": \"Default Ideogram 4 local model set for the Text to Image (Ideogram v4) workflow. Download manually from the official Comfy-Org/Ideogram-4 links and place each file in the shown ComfyUI model folder.\",\n \"files\": [\n {\n \"id\": \"ideogram4_model_fp8\",\n \"label\": \"Ideogram 4 model - fp8_scaled\",\n \"url\": \"https://huggingface.co/Comfy-Org/Ideogram-4/resolve/main/diffusion_models/ideogram4_fp8_scaled.safetensors?download=true\",\n \"target_subdir\": \"diffusion_models\",\n \"filename\": \"ideogram4_fp8_scaled.safetensors\",\n \"size\": 9280741285\n },\n {\n \"id\": \"ideogram4_uncond_fp8\",\n \"label\": \"Ideogram 4 unconditional model - fp8_scaled\",\n \"url\": \"https://huggingface.co/Comfy-Org/Ideogram-4/resolve/main/diffusion_models/ideogram4_unconditional_fp8_scaled.safetensors?download=true\",\n \"target_subdir\": \"diffusion_models\",\n \"filename\": \"ideogram4_unconditional_fp8_scaled.safetensors\",\n \"size\": 9280741293\n },\n {\n \"id\": \"qwen3vl_8b_fp8\",\n \"label\": \"Ideogram 4 text encoder - Qwen3-VL 8B fp8\",\n \"url\": \"https://huggingface.co/Comfy-Org/Ideogram-4/resolve/main/text_encoders/qwen3vl_8b_fp8_scaled.safetensors?download=true\",\n \"target_subdir\": \"text_encoders\",\n \"filename\": \"qwen3vl_8b_fp8_scaled.safetensors\",\n \"size\": 10588637512\n },\n {\n \"id\": \"flux2_vae\",\n \"label\": \"Flux2 VAE for Ideogram 4\",\n \"url\": \"https://huggingface.co/Comfy-Org/Ideogram-4/resolve/main/vae/flux2-vae.safetensors?download=true\",\n \"target_subdir\": \"vae\",\n \"filename\": \"flux2-vae.safetensors\",\n \"size\": 336211292\n }\n ]\n }\n ]\n}",""]},{"id":263,"type":"DenoLTXModelDownloader","pos":[6727.620086998382,577.5529121998833],"size":[560,600],"flags":{},"order":9,"mode":0,"inputs":[{"localized_name":"model_root","name":"model_root","type":"STRING","widget":{"name":"model_root"},"link":null},{"localized_name":"presets_json","name":"presets_json","type":"STRING","widget":{"name":"presets_json"},"link":null}],"outputs":[],"title":"Ideogram 4 Low VRAM Model Links","properties":{"Node name for S&R":"DenoLTXModelDownloader","cnr_id":"deno-custom-nodes","ver":"0.7.41"},"widgets_values":["","{\n \"active_preset_id\": \"ideogram4_low_vram_nvfp4\",\n \"presets\": [\n {\n \"id\": \"ideogram4_low_vram_nvfp4\",\n \"title\": \"Ideogram 4 Low VRAM - NVFP4\",\n \"description\": \"Low VRAM Ideogram 4 local model set. Uses nvfp4_mixed diffusion models and the nvfp4 Qwen3-VL text encoder. Download manually from the official Comfy-Org/Ideogram-4 links and place each file in the shown ComfyUI model folder.\",\n \"files\": [\n {\n \"id\": \"ideogram4_model_nvfp4\",\n \"label\": \"Ideogram 4 model - nvfp4_mixed\",\n \"url\": \"https://huggingface.co/Comfy-Org/Ideogram-4/resolve/main/diffusion_models/ideogram4_nvfp4_mixed.safetensors?download=true\",\n \"target_subdir\": \"diffusion_models\",\n \"filename\": \"ideogram4_nvfp4_mixed.safetensors\",\n \"size\": 5490550037\n },\n {\n \"id\": \"ideogram4_uncond_nvfp4\",\n \"label\": \"Ideogram 4 unconditional model - nvfp4_mixed\",\n \"url\": \"https://huggingface.co/Comfy-Org/Ideogram-4/resolve/main/diffusion_models/ideogram4_unconditional_nvfp4_mixed.safetensors?download=true\",\n \"target_subdir\": \"diffusion_models\",\n \"filename\": \"ideogram4_unconditional_nvfp4_mixed.safetensors\",\n \"size\": 5490550037\n },\n {\n \"id\": \"qwen3vl_8b_nvfp4\",\n \"label\": \"Ideogram 4 text encoder - Qwen3-VL 8B nvfp4\",\n \"url\": \"https://huggingface.co/Comfy-Org/Ideogram-4/resolve/main/text_encoders/qwen3vl_8b_nvfp4.safetensors?download=true\",\n \"target_subdir\": \"text_encoders\",\n \"filename\": \"qwen3vl_8b_nvfp4.safetensors\",\n \"size\": 6305221764\n },\n {\n \"id\": \"flux2_vae\",\n \"label\": \"Flux2 VAE for Ideogram 4\",\n \"url\": \"https://huggingface.co/Comfy-Org/Ideogram-4/resolve/main/vae/flux2-vae.safetensors?download=true\",\n \"target_subdir\": \"vae\",\n \"filename\": \"flux2-vae.safetensors\",\n \"size\": 336211292\n }\n ]\n }\n ]\n}",""]},{"id":256,"type":"83e6e004-48ea-408e-9024-eb49c3d7dc14","pos":[6918.778153526982,1650.3017147410983],"size":[390.35640218897606,453.6085084728385],"flags":{"collapsed":false},"order":18,"mode":0,"inputs":[{"label":"prompt","name":"text","type":"STRING","widget":{"name":"text"},"link":365},{"label":"width","name":"value","type":"INT","widget":{"name":"value"},"link":357},{"label":"height","name":"value_1","type":"INT","widget":{"name":"value_1"},"link":358},{"name":"noise_seed","type":"INT","widget":{"name":"noise_seed"},"link":359},{"name":"unet_name","type":"COMBO","widget":{"name":"unet_name"},"link":null},{"name":"clip_name","type":"COMBO","widget":{"name":"clip_name"},"link":null},{"name":"vae_name","type":"COMBO","widget":{"name":"vae_name"},"link":null},{"label":"unconditional_unet","name":"unet_name_1","type":"COMBO","widget":{"name":"unet_name_1"},"link":null},{"label":"mode","name":"choice","type":"COMBO","widget":{"name":"choice"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[354]}],"properties":{"proxyWidgets":[["24","text"],["27","value"],["28","value"],["18","noise_seed"],["23","unet_name"],["14","clip_name"],["9","vae_name"],["154","unet_name"],["156","choice"]],"cnr_id":"comfy-core","ver":"0.23.0","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[]},{"id":187,"type":"DenoLocalLLMRefiner","pos":[4804.393559243775,1700.9150969075354],"size":[560,598],"flags":{},"order":14,"mode":0,"inputs":[{"label":"image","localized_name":"image","name":"image","shape":7,"type":"IMAGE","link":362},{"label":"prompt","localized_name":"prompt","name":"prompt","type":"STRING","widget":{"name":"prompt"},"link":321}],"outputs":[{"localized_name":"result","name":"result","shape":6,"type":"STRING","links":[348]}],"properties":{"Node name for S&R":"DenoLocalLLMRefiner","cnr_id":"deno-custom-nodes","ver":"0.7.30","denoLocalLLMModelChoicesByProvider":{"Ollama":[{"id":"gemma4:31b-it-qat","label":"gemma4:31b-it-qat","loaded":false},{"id":"gemma4:26b-a4b-it-qat","label":"gemma4:26b-a4b-it-qat","loaded":false},{"id":"qwen3.6:35b-a3b","label":"qwen3.6:35b-a3b","loaded":false}],"LM Studio":[{"id":"google/gemma-4-12b-qat","label":"Gemma 4 12B Qat","loaded":false},{"id":"google/gemma-4-e4b","label":"Gemma 4 E4B","loaded":false},{"id":"google/gemma-4-12b","label":"Gemma 4 12B","loaded":false}]},"denoLocalLLMPreviewScroll":{"result":7,"thinking":1},"denoLocalLLMSystemPromptUpdatedAt":1781725299433},"widgets_values":["LM Studio","gemma4:31b-it-qat","google/gemma-4-12b-qat","Refresh Models","Stop LLM","Unload LLM","http://127.0.0.1:8000/v1","","",true,9,"fixed","Unload after run",1,"Auto: unload only before first LLM call","","System Prompt",""]},{"id":226,"type":"DenoResolutionSetup","pos":[3918.2545201883013,1686.5820388143643],"size":[320,460],"flags":{},"order":11,"mode":0,"inputs":[{"localized_name":"image","name":"image","shape":7,"type":"IMAGE","link":363},{"localized_name":"mode","name":"mode","type":"COMBO","widget":{"name":"mode"},"link":null},{"localized_name":"ratio_preset","name":"ratio_preset","type":"COMBO","widget":{"name":"ratio_preset"},"link":null},{"localized_name":"megapixels","name":"megapixels","type":"FLOAT","widget":{"name":"megapixels"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"divisible_by","name":"divisible_by","type":"COMBO","widget":{"name":"divisible_by"},"link":null},{"localized_name":"resize_method","name":"resize_method","type":"COMBO","widget":{"name":"resize_method"},"link":null},{"localized_name":"interpolation","name":"interpolation","type":"COMBO","widget":{"name":"interpolation"},"link":null}],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":null},{"localized_name":"width","name":"width","type":"INT","links":[319]},{"localized_name":"height","name":"height","type":"INT","links":[320]}],"properties":{"Node name for S&R":"DenoResolutionSetup","cnr_id":"deno-custom-nodes","ver":"0.7.28"},"widgets_values":["Preset Ratio","9:16",1,1024,1024,"16","Center Crop (Fill)","lanczos"]},{"id":227,"type":"e1eebeb3-6b6f-4249-a72b-5a468be5e755","pos":[4281.712104427626,1684.1890408178574],"size":[474.4450000000006,461.0169999999998],"flags":{},"order":13,"mode":0,"inputs":[{"label":"user_prompt","name":"value","type":"STRING","widget":{"name":"value"},"link":null},{"label":"width","name":"source","type":"*","link":319},{"label":"height","name":"source_1","type":"*","link":320}],"outputs":[{"name":"STRING","type":"STRING","links":[321]}],"properties":{"proxyWidgets":[["216","value"]],"cnr_id":"comfy-core","ver":"0.23.0","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[]},{"id":248,"type":"DenoIdeogramDirector","pos":[6091.819553719758,1607.4650284320803],"size":[760,868.0528689051862],"flags":{},"order":16,"mode":0,"inputs":[{"localized_name":"backdrop","name":"backdrop","shape":7,"type":"IMAGE","link":null},{"localized_name":"import_json","name":"import_json","shape":7,"type":"STRING","link":367}],"outputs":[{"localized_name":"prompt","name":"prompt","type":"STRING","links":[355,365]},{"localized_name":"width","name":"width","type":"INT","links":[357]},{"localized_name":"height","name":"height","type":"INT","links":[358]},{"localized_name":"seed","name":"seed","type":"INT","links":[359]},{"localized_name":"bboxes","name":"bboxes","type":"BBOX","links":null}],"properties":{"Node name for S&R":"DenoIdeogramDirector","cnr_id":"deno-custom-nodes","ver":"0.7.41","idd_size_rev":"size-2026.06.14-stable-a"},"widgets_values":[752,1328,3,"An elegant woman in her mid-20s wearing a white satin blouse and beige skirt stands in a minimalist studio with brand typography and a stone pedestal.","A smooth matte gray wall and a polished concrete floor.","none","","","","","","Always Replace","{\"boxes\":[{\"x\":0.25,\"y\":0.12,\"w\":0.5,\"h\":0.86,\"type\":\"obj\",\"text\":\"\",\"desc\":\"An elegant woman in her mid-20s with a calm expression and neutral makeup, wearing a white satin blouse with a graceful neckline and subtle collarbone emphasis, and a long flowing beige cloth skirt.\",\"palette\":[],\"uiColor\":\"#4ECB8D\"},{\"x\":0.1,\"y\":0.7,\"w\":0.2,\"h\":0.25,\"type\":\"obj\",\"text\":\"\",\"desc\":\"A tall rectangular matte white stone pedestal standing to the left.\",\"palette\":[],\"uiColor\":\"#5AA7E8\"},{\"x\":0.05,\"y\":0.6,\"w\":0.1,\"h\":0.25,\"type\":\"obj\",\"text\":\"\",\"desc\":\"A tall, thin matte black ceramic vase with a single dry branch.\",\"palette\":[],\"uiColor\":\"#E8B45A\"},{\"x\":0.05,\"y\":0.85,\"w\":0.3,\"h\":0.13,\"type\":\"obj\",\"text\":\"\",\"desc\":\"A minimalist low rectangular bench in matte gray.\",\"palette\":[],\"uiColor\":\"#C97FE0\"},{\"x\":0.4,\"y\":0.15,\"w\":0.2,\"h\":0.08,\"type\":\"text\",\"text\":\"NOIR ΓTOILE\",\"desc\":\"Large white uppercase serif typography for the brand name.\",\"palette\":[],\"uiColor\":\"#E8705A\"},{\"x\":0.38,\"y\":0.88,\"w\":0.24,\"h\":0.05,\"type\":\"text\",\"text\":\"Quiet Elegance for Every Day\",\"desc\":\"Small white serif typography for the tagline at the bottom.\",\"palette\":[],\"uiColor\":\"#58D5C9\"}],\"stylePalette\":[],\"importSig\":\"48f2e301\",\"mp\":1,\"bdropDim\":0,\"resultDim\":0,\"bdropT\":{\"nx\":0,\"ny\":0,\"nw\":1,\"nh\":1,\"set\":true}}",true,true,"Ideogram_Director","752:1328",false,"English","English","Google","",""]},{"id":252,"type":"MarkdownNote","pos":[5428.985170119548,2244.9148253537073],"size":[478.58603428885726,332.3753105803921],"flags":{"collapsed":false},"order":7,"mode":0,"inputs":[],"outputs":[],"properties":{},"widgets_values":["π Reviewer Node Configuration\n\nThis node is utilized as a Reviewer Node.\n\nSystem Prompt:\n<pre><code>You repair or rebuild the input into this exact contract: \n{\n \"aspect_ratio\": \"W:H\",\n \"high_level_description\": \"...\",\n \"compositional_deconstruction\": {\n \"background\": \"...\",\n \"elements\": [...]\n }\n}\nIf the input is malformed, infer the intended fields \nand output a valid JSON object with exactly those \nthree top-level keys. Output only JSON.</code></pre>\n\nπ‘ Pro-Tip for Local LLMs\n\nIf the local LLM you are using frequently makes mistakes, you can leverage this node to double-check the output and ensure it strictly adheres to the correct JSON format. π οΈ"],"color":"#432","bgcolor":"#653"},{"id":251,"type":"DenoLocalLLMRefiner","pos":[5434.073679272871,1609.0673541527062],"size":[560,574],"flags":{"collapsed":false},"order":15,"mode":4,"inputs":[{"label":"image","localized_name":"image","name":"image","shape":7,"type":"IMAGE","link":null},{"label":"prompt","localized_name":"prompt","name":"prompt","type":"STRING","widget":{"name":"prompt"},"link":348}],"outputs":[{"localized_name":"result","name":"result","shape":6,"type":"STRING","links":[367]}],"properties":{"Node name for S&R":"DenoLocalLLMRefiner","cnr_id":"deno-custom-nodes","ver":"0.7.30","denoLocalLLMModelChoicesByProvider":{"Ollama":[{"id":"gemma4:31b-it-qat","label":"gemma4:31b-it-qat","loaded":false},{"id":"gemma4:26b-a4b-it-qat","label":"gemma4:26b-a4b-it-qat","loaded":false},{"id":"qwen3.6:35b-a3b","label":"qwen3.6:35b-a3b","loaded":false}],"LM Studio":[{"id":"google/gemma-4-12b-qat","label":"Gemma 4 12B Qat","loaded":false},{"id":"google/gemma-4-e4b","label":"Gemma 4 E4B","loaded":false},{"id":"google/gemma-4-12b","label":"Gemma 4 12B","loaded":false}]},"denoLocalLLMPreviewScroll":{"result":8,"thinking":68},"denoLocalLLMSystemPromptUpdatedAt":1781725662186},"widgets_values":["LM Studio","gemma4:31b-it-qat","google/gemma-4-12b-qat","Refresh Models","Stop LLM","Unload LLM","http://127.0.0.1:8000/v1","","You repair or rebuild the input into this exact contract: \n{\n \"aspect_ratio\": \"W:H\",\n \"high_level_description\": \"...\",\n \"compositional_deconstruction\": {\n \"background\": \"...\",\n \"elements\": [...]\n }\n}\nIf the input is malformed, infer the intended fields \nand output a valid JSON object with exactly those \nthree top-level keys. Output only JSON.",false,0,"fixed","Unload after run",1,"Auto: unload only before first LLM call","","System Prompt",""]}],"links":[[260,183,1,181,1,"INT"],[261,183,2,181,2,"INT"],[318,181,0,214,0,"STRING"],[319,226,1,227,1,"INT"],[320,226,2,227,2,"INT"],[321,227,0,187,1,"STRING"],[348,187,0,251,1,"STRING"],[354,256,0,257,0,"IMAGE"],[355,248,0,255,0,"STRING"],[357,248,1,256,1,"INT"],[358,248,2,256,2,"INT"],[359,248,3,256,3,"INT"],[362,260,0,187,0,"IMAGE"],[363,260,0,226,0,"IMAGE"],[365,248,0,256,0,"STRING"],[367,251,0,248,1,"STRING"]],"groups":[{"id":10,"title":"Prompt Input Method 1","bounding":[3903.083404621762,499.4512063013225,1528.8684509853097,575.1009195829131],"color":"#3f789e","flags":{}},{"id":11,"title":"Prompt Input Method 2 (Ollama or LM Studio)","bounding":[3894.6879687582855,1601.139540477809,1494.0101611108635,974.7914660002366],"color":"#3f789e","flags":{}},{"id":13,"title":"Group","bounding":[6901.1651070188245,1578.8102385657455,852.6084417767433,1010.499305084066],"color":"#3f789e","flags":{}},{"id":14,"title":"Main","bounding":[6100.239520572698,470.1701772913713,588.0371953103286,736.7816190526387],"color":"#8A8","flags":{}},{"id":15,"title":"Low VRAM (8GB)","bounding":[6714.800126886096,471.8145638628104,588.0371953103286,736.7816190526387],"color":"#b58b2a","flags":{}}],"definitions":{"subgraphs":[{"id":"83e6e004-48ea-408e-9024-eb49c3d7dc14","version":1,"state":{"lastGroupId":15,"lastNodeId":264,"lastLinkId":367,"lastRerouteId":0},"revision":0,"config":{},"name":"Text to Image (Ideogram v4)","inputNode":{"id":-10,"bounding":[3490,920,154.921875,228]},"outputNode":{"id":-20,"bounding":[6850,936,128,68]},"inputs":[{"id":"4bc742d1-7b4b-452c-90d9-0d76ebcdae76","name":"text","type":"STRING","linkIds":[152],"label":"prompt","pos":[3620.921875,944]},{"id":"8d4038eb-73c7-45e9-bba1-f068f55e8d32","name":"value","type":"INT","linkIds":[153],"label":"width","pos":[3620.921875,964]},{"id":"281550e6-6acf-4cbe-aec1-9eb803b4dec1","name":"value_1","type":"INT","linkIds":[154],"label":"height","pos":[3620.921875,984]},{"id":"fae56884-2f1a-470b-a25f-40e7a87ef69d","name":"noise_seed","type":"INT","linkIds":[155],"pos":[3620.921875,1004]},{"id":"3497309c-a7d7-4e28-9330-142c15881632","name":"unet_name","type":"COMBO","linkIds":[156],"pos":[3620.921875,1024]},{"id":"e87126db-7147-465e-b129-370ed2c6cc22","name":"clip_name","type":"COMBO","linkIds":[157],"pos":[3620.921875,1044]},{"id":"a1e6c080-b11b-4d5c-a3a8-fcf4df654cf7","name":"vae_name","type":"COMBO","linkIds":[158],"pos":[3620.921875,1064]},{"id":"b0d16516-95de-44d9-bea8-3cd2e7c78e9a","name":"unet_name_1","type":"COMBO","linkIds":[216],"label":"unconditional_unet","pos":[3620.921875,1084]},{"id":"249fd825-e6b3-489d-a341-6d8050500f5e","name":"choice","type":"COMBO","linkIds":[219],"label":"mode","pos":[3620.921875,1104]}],"outputs":[{"id":"b81e4f60-e543-4f02-875b-b0f1bdc274f2","name":"IMAGE","type":"IMAGE","linkIds":[25],"localized_name":"IMAGE","pos":[6874,960]}],"widgets":[],"nodes":[{"id":9,"type":"VAELoader","pos":[4730,1220],"size":[470,110],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"vae_name","name":"vae_name","type":"COMBO","widget":{"name":"vae_name"},"link":158}],"outputs":[{"localized_name":"VAE","name":"VAE","type":"VAE","links":[17]}],"properties":{"cnr_id":"comfy-core","ver":"0.8.2","Node name for S&R":"VAELoader","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65,"models":[{"name":"flux2-vae.safetensors","url":"https://huggingface.co/Comfy-Org/flux2-dev/resolve/main/split_files/vae/flux2-vae.safetensors","directory":"vae"}]},"widgets_values":["flux2-vae.safetensors"]},{"id":10,"type":"ConditioningZeroOut","pos":[5450,960],"size":[250,80],"flags":{"collapsed":false},"order":2,"mode":0,"inputs":[{"localized_name":"conditioning","name":"conditioning","type":"CONDITIONING","link":8}],"outputs":[{"localized_name":"CONDITIONING","name":"CONDITIONING","type":"CONDITIONING","links":[214]}],"properties":{"cnr_id":"comfy-core","ver":"0.9.1","Node name for S&R":"ConditioningZeroOut","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[]},{"id":11,"type":"EmptyFlux2LatentImage","pos":[5330,1180],"size":[270,170],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":33},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":36},{"localized_name":"batch_size","name":"batch_size","type":"INT","widget":{"name":"batch_size"},"link":null}],"outputs":[{"localized_name":"LATENT","name":"LATENT","type":"LATENT","links":[15]}],"properties":{"cnr_id":"comfy-core","ver":"0.8.2","Node name for S&R":"EmptyFlux2LatentImage","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[1024,1024,1]},{"id":12,"type":"SamplerCustomAdvanced","pos":[6160,500],"size":[290,326],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"noise","name":"noise","type":"NOISE","link":11},{"localized_name":"guider","name":"guider","type":"GUIDER","link":215},{"localized_name":"sampler","name":"sampler","type":"SAMPLER","link":13},{"localized_name":"sigmas","name":"sigmas","type":"SIGMAS","link":14},{"localized_name":"latent_image","name":"latent_image","type":"LATENT","link":15}],"outputs":[{"localized_name":"output","name":"output","type":"LATENT","links":[16]},{"localized_name":"denoised_output","name":"denoised_output","type":"LATENT","links":[]}],"properties":{"cnr_id":"comfy-core","ver":"0.8.2","Node name for S&R":"SamplerCustomAdvanced","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[]},{"id":13,"type":"VAEDecode","pos":[6560,500],"size":[230,100],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"samples","name":"samples","type":"LATENT","link":16},{"localized_name":"vae","name":"vae","type":"VAE","link":17}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","slot_index":0,"links":[25]}],"properties":{"cnr_id":"comfy-core","ver":"0.8.2","Node name for S&R":"VAEDecode","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[]},{"id":16,"type":"KSamplerSelect","pos":[5790,1100],"size":[270,110],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"sampler_name","name":"sampler_name","type":"COMBO","widget":{"name":"sampler_name"},"link":null}],"outputs":[{"localized_name":"SAMPLER","name":"SAMPLER","type":"SAMPLER","links":[13]}],"properties":{"cnr_id":"comfy-core","ver":"0.8.2","Node name for S&R":"KSamplerSelect","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["euler"]},{"id":17,"type":"Ideogram4Scheduler","pos":[5790,1260],"size":[270,240],"flags":{},"order":7,"mode":0,"inputs":[{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":207},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":34},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":37},{"localized_name":"mu","name":"mu","type":"FLOAT","widget":{"name":"mu"},"link":208},{"localized_name":"std","name":"std","type":"FLOAT","widget":{"name":"std"},"link":209}],"outputs":[{"localized_name":"SIGMAS","name":"SIGMAS","type":"SIGMAS","links":[14]}],"properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"Ideogram4Scheduler","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[20,1024,1024,0.5,1.75]},{"id":18,"type":"RandomNoise","pos":[5780,490],"size":[270,110],"flags":{},"order":8,"mode":0,"inputs":[{"localized_name":"noise_seed","name":"noise_seed","type":"INT","widget":{"name":"noise_seed"},"link":155}],"outputs":[{"localized_name":"NOISE","name":"NOISE","type":"NOISE","links":[11]}],"properties":{"cnr_id":"comfy-core","ver":"0.8.2","Node name for S&R":"RandomNoise","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[308861110238529,"randomize"]},{"id":23,"type":"UNETLoader","pos":[4720,520],"size":[470,170],"flags":{},"order":9,"mode":0,"showAdvanced":true,"inputs":[{"localized_name":"unet_name","name":"unet_name","type":"COMBO","widget":{"name":"unet_name"},"link":156},{"localized_name":"weight_dtype","name":"weight_dtype","type":"COMBO","widget":{"name":"weight_dtype"},"link":null}],"outputs":[{"localized_name":"MODEL","name":"MODEL","type":"MODEL","links":[222]}],"properties":{"cnr_id":"comfy-core","ver":"0.8.2","Node name for S&R":"UNETLoader","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65,"models":[{"name":"ideogram4_fp8_scaled.safetensors","url":"https://huggingface.co/Comfy-Org/Ideogram-4/resolve/main/diffusion_models/ideogram4_fp8_scaled.safetensors","directory":"diffusion_models"}]},"widgets_values":["ideogram4_fp8_scaled.safetensors","default"]},{"id":14,"type":"CLIPLoader","pos":[4730,990],"size":[470,170],"flags":{},"order":6,"mode":0,"inputs":[{"localized_name":"clip_name","name":"clip_name","type":"COMBO","widget":{"name":"clip_name"},"link":157},{"localized_name":"type","name":"type","type":"COMBO","widget":{"name":"type"},"link":null},{"localized_name":"device","name":"device","shape":7,"type":"COMBO","widget":{"name":"device"},"link":null}],"outputs":[{"localized_name":"CLIP","name":"CLIP","type":"CLIP","links":[24]}],"properties":{"cnr_id":"comfy-core","ver":"0.8.2","Node name for S&R":"CLIPLoader","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65,"models":[{"name":"qwen3vl_8b_fp8_scaled.safetensors","url":"https://huggingface.co/Comfy-Org/Qwen3-VL/resolve/main/text_encoders/qwen3vl_8b_fp8_scaled.safetensors","directory":"text_encoders"}]},"widgets_values":["qwen3vl_8b_fp8_scaled.safetensors","ideogram4","default"]},{"id":27,"type":"PrimitiveInt","pos":[4240,1610],"size":[270,110],"flags":{},"order":11,"mode":0,"inputs":[{"localized_name":"value","name":"value","type":"INT","widget":{"name":"value"},"link":153}],"outputs":[{"localized_name":"INT","name":"INT","type":"INT","links":[32]}],"title":"Int (Width)","properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"PrimitiveInt","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[1024,"fixed"]},{"id":28,"type":"PrimitiveInt","pos":[4250,1800],"size":[270,110],"flags":{},"order":12,"mode":0,"inputs":[{"localized_name":"value","name":"value","type":"INT","widget":{"name":"value"},"link":154}],"outputs":[{"localized_name":"INT","name":"INT","type":"INT","links":[35]}],"title":"Int (Height)","properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"PrimitiveInt","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[1024,"fixed"]},{"id":31,"type":"ComfyMathExpression","pos":[5340,1400],"size":[230,80],"flags":{"collapsed":true},"order":13,"mode":0,"inputs":[{"label":"a","localized_name":"values.a","name":"values.a","type":"FLOAT,INT,BOOLEAN","link":32},{"label":"b","localized_name":"values.b","name":"values.b","shape":7,"type":"FLOAT,INT,BOOLEAN","link":null},{"localized_name":"expression","name":"expression","type":"STRING","widget":{"name":"expression"},"link":null}],"outputs":[{"localized_name":"FLOAT","name":"FLOAT","type":"FLOAT","links":null},{"localized_name":"INT","name":"INT","type":"INT","links":[33,34]},{"localized_name":"BOOL","name":"BOOL","type":"BOOLEAN","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"ComfyMathExpression","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["max(((a + 15) // 16) * 16, 256)"]},{"id":32,"type":"ComfyMathExpression","pos":[5350,1470],"size":[230,80],"flags":{"collapsed":true},"order":14,"mode":0,"inputs":[{"label":"a","localized_name":"values.a","name":"values.a","type":"FLOAT,INT,BOOLEAN","link":35},{"label":"b","localized_name":"values.b","name":"values.b","shape":7,"type":"FLOAT,INT,BOOLEAN","link":null},{"localized_name":"expression","name":"expression","type":"STRING","widget":{"name":"expression"},"link":null}],"outputs":[{"localized_name":"FLOAT","name":"FLOAT","type":"FLOAT","links":null},{"localized_name":"INT","name":"INT","type":"INT","links":[36,37]},{"localized_name":"BOOL","name":"BOOL","type":"BOOLEAN","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"ComfyMathExpression","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["max(((a + 15) // 16) * 16, 256)"]},{"id":144,"type":"ComfyNumberConvert","pos":[5920,1870],"size":[230,100],"flags":{},"order":15,"mode":0,"inputs":[{"label":"value","localized_name":"value","name":"value","type":"INT,FLOAT,STRING,BOOLEAN","link":195}],"outputs":[{"localized_name":"FLOAT","name":"FLOAT","type":"FLOAT","links":[208]},{"localized_name":"INT","name":"INT","type":"INT","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"ComfyNumberConvert","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[]},{"id":145,"type":"JsonExtractString","pos":[5450,1870],"size":[400,200],"flags":{},"order":16,"mode":0,"inputs":[{"localized_name":"json_string","name":"json_string","type":"STRING","widget":{"name":"json_string"},"link":196},{"localized_name":"key","name":"key","type":"STRING","widget":{"name":"key"},"link":null}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[195]}],"properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"JsonExtractString","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["","mu"]},{"id":146,"type":"ComfyNumberConvert","pos":[5930,2110],"size":[230,100],"flags":{},"order":17,"mode":0,"inputs":[{"label":"value","localized_name":"value","name":"value","type":"INT,FLOAT,STRING,BOOLEAN","link":197}],"outputs":[{"localized_name":"FLOAT","name":"FLOAT","type":"FLOAT","links":[209]},{"localized_name":"INT","name":"INT","type":"INT","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"ComfyNumberConvert","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[]},{"id":147,"type":"JsonExtractString","pos":[5010,1630],"size":[410,470],"flags":{},"order":18,"mode":0,"inputs":[{"localized_name":"json_string","name":"json_string","type":"STRING","widget":{"name":"json_string"},"link":null},{"localized_name":"key","name":"key","type":"STRING","widget":{"name":"key"},"link":218}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[199]}],"properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"JsonExtractString","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["{\n \"Quality\": {\n \"num_steps\": 48,\n \"mu\": 0.0,\n \"std\": 1.5,\n \"preset_id\": \"V4_QUALITY_48\"\n },\n \"Default\": {\n \"num_steps\": 20,\n \"mu\": 0.0,\n \"std\": 1.75,\n \"preset_id\": \"V4_DEFAULT_20\"\n },\n \"Turbo\": {\n \"num_steps\": 12,\n \"mu\": 0.5,\n \"std\": 1.75,\n \"preset_id\": \"V4_TURBO_12\"\n }\n}","Default"]},{"id":148,"type":"StringReplace","pos":[5050,2150],"size":[230,40],"flags":{"collapsed":true},"order":19,"mode":0,"inputs":[{"localized_name":"string","name":"string","type":"STRING","widget":{"name":"string"},"link":199},{"localized_name":"find","name":"find","type":"STRING","widget":{"name":"find"},"link":null},{"localized_name":"replace","name":"replace","type":"STRING","widget":{"name":"replace"},"link":null}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[196,200,201]}],"properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"StringReplace","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["","'","\""]},{"id":149,"type":"JsonExtractString","pos":[5460,1610],"size":[400,200],"flags":{},"order":20,"mode":0,"inputs":[{"localized_name":"json_string","name":"json_string","type":"STRING","widget":{"name":"json_string"},"link":200},{"localized_name":"key","name":"key","type":"STRING","widget":{"name":"key"},"link":null}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[202]}],"properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"JsonExtractString","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["","num_steps"]},{"id":150,"type":"JsonExtractString","pos":[5450,2110],"size":[400,200],"flags":{},"order":21,"mode":0,"inputs":[{"localized_name":"json_string","name":"json_string","type":"STRING","widget":{"name":"json_string"},"link":201},{"localized_name":"key","name":"key","type":"STRING","widget":{"name":"key"},"link":null}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[197]}],"properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"JsonExtractString","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["","std"]},{"id":151,"type":"ComfyNumberConvert","pos":[5920,1620],"size":[230,100],"flags":{},"order":22,"mode":0,"inputs":[{"label":"value","localized_name":"value","name":"value","type":"INT,FLOAT,STRING,BOOLEAN","link":202}],"outputs":[{"localized_name":"FLOAT","name":"FLOAT","type":"FLOAT","links":[]},{"localized_name":"INT","name":"INT","type":"INT","links":[207]}],"properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"ComfyNumberConvert","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[]},{"id":154,"type":"UNETLoader","pos":[4730,740],"size":[470,170],"flags":{},"order":23,"mode":0,"showAdvanced":true,"inputs":[{"localized_name":"unet_name","name":"unet_name","type":"COMBO","widget":{"name":"unet_name"},"link":216},{"localized_name":"weight_dtype","name":"weight_dtype","type":"COMBO","widget":{"name":"weight_dtype"},"link":null}],"outputs":[{"localized_name":"MODEL","name":"MODEL","type":"MODEL","links":[211]}],"properties":{"cnr_id":"comfy-core","ver":"0.8.2","Node name for S&R":"UNETLoader","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65,"models":[{"name":"ideogram4_unconditional_fp8_scaled.safetensors","url":"https://huggingface.co/Comfy-Org/Ideogram-4/resolve/main/diffusion_models/ideogram4_unconditional_fp8_scaled.safetensors","directory":"diffusion_models"}]},"widgets_values":["ideogram4_unconditional_fp8_scaled.safetensors","default"]},{"id":155,"type":"DualModelGuider","pos":[5790,870],"size":[270,180],"flags":{},"order":24,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":223},{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":213},{"localized_name":"model_negative","name":"model_negative","shape":7,"type":"MODEL","link":211},{"localized_name":"negative","name":"negative","shape":7,"type":"CONDITIONING","link":214},{"localized_name":"cfg","name":"cfg","type":"FLOAT","widget":{"name":"cfg"},"link":null}],"outputs":[{"localized_name":"GUIDER","name":"GUIDER","type":"GUIDER","links":[215]}],"properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"DualModelGuider","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[7]},{"id":156,"type":"CustomCombo","pos":[4720,1630],"size":[270,280],"flags":{},"order":25,"mode":0,"inputs":[{"localized_name":"choice","name":"choice","type":"COMBO","widget":{"name":"choice"},"link":219}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[218]},{"localized_name":"INDEX","name":"INDEX","type":"INT","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"CustomCombo","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["Default",1,"Quality","Default","Turbo",""]},{"id":157,"type":"CFGOverride","pos":[5790,650],"size":[260,170],"flags":{},"order":26,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":222},{"localized_name":"cfg","name":"cfg","type":"FLOAT","widget":{"name":"cfg"},"link":null},{"localized_name":"start_percent","name":"start_percent","type":"FLOAT","widget":{"name":"start_percent"},"link":null},{"localized_name":"end_percent","name":"end_percent","type":"FLOAT","widget":{"name":"end_percent"},"link":null}],"outputs":[{"localized_name":"MODEL","name":"MODEL","type":"MODEL","links":[223]}],"properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"CFGOverride","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[3,0.7,1]},{"id":24,"type":"CLIPTextEncode","pos":[5272.815865549924,500.5618511073789],"size":[430,420],"flags":{},"order":10,"mode":0,"inputs":[{"localized_name":"clip","name":"clip","type":"CLIP","link":24},{"localized_name":"text","name":"text","type":"STRING","widget":{"name":"text"},"link":152}],"outputs":[{"localized_name":"CONDITIONING","name":"CONDITIONING","type":"CONDITIONING","slot_index":0,"links":[8,213]}],"title":"CLIP Text Encode (Positive Prompt)","properties":{"cnr_id":"comfy-core","ver":"0.8.2","Node name for S&R":"CLIPTextEncode","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["{\"aspect_ratio\":\"1008:1008\",\"high_level_description\":\"A close-up portrait of an elegant woman in a delicate blouse, positioned centrally against a solid pastel studio wall.\",\"compositional_deconstruction\":{\"background\":\"A solid, matte pastel pink studio wall.\",\"elements\":[{\"type\":\"obj\",\"bbox\":[150,200,950,800],\"desc\":\"An elegant adult woman in her mid-20s with long, dark, straight hair, facing forward with a calm expression, wearing natural-toned makeup.\"},{\"type\":\"obj\",\"bbox\":[680,250,1000,750],\"desc\":\"A white silk feminine blouse with a wide, open V-neckline that exposes the collarbone area, draped over the woman's shoulders.\"},{\"type\":\"obj\",\"bbox\":[380,450,420,550],\"desc\":\"A thin, polished gold chain necklace with a small, single round pearl pendant resting at the center of the collarbone.\"}]}}"]}],"groups":[{"id":1,"title":"Models","bounding":[4700,420,530,1100],"color":"#3f789e","flags":{}},{"id":2,"title":"Latent Size","bounding":[5260,1080,450,440],"color":"#3f789e","flags":{}},{"id":3,"title":"Sampling","bounding":[5740,420,780,1100],"color":"#3f789e","flags":{}},{"id":4,"title":"Prompt","bounding":[5260,420,450,640],"color":"#3f789e","flags":{}},{"id":5,"title":"Image Size","bounding":[4130,1540,530,420],"color":"#3f789e","flags":{}},{"id":9,"title":"Preset","bounding":[4700,1540,1820,780],"color":"#3f789e","flags":{}}],"links":[{"id":8,"origin_id":24,"origin_slot":0,"target_id":10,"target_slot":0,"type":"CONDITIONING"},{"id":33,"origin_id":31,"origin_slot":1,"target_id":11,"target_slot":0,"type":"INT"},{"id":36,"origin_id":32,"origin_slot":1,"target_id":11,"target_slot":1,"type":"INT"},{"id":11,"origin_id":18,"origin_slot":0,"target_id":12,"target_slot":0,"type":"NOISE"},{"id":13,"origin_id":16,"origin_slot":0,"target_id":12,"target_slot":2,"type":"SAMPLER"},{"id":14,"origin_id":17,"origin_slot":0,"target_id":12,"target_slot":3,"type":"SIGMAS"},{"id":15,"origin_id":11,"origin_slot":0,"target_id":12,"target_slot":4,"type":"LATENT"},{"id":16,"origin_id":12,"origin_slot":0,"target_id":13,"target_slot":0,"type":"LATENT"},{"id":17,"origin_id":9,"origin_slot":0,"target_id":13,"target_slot":1,"type":"VAE"},{"id":34,"origin_id":31,"origin_slot":1,"target_id":17,"target_slot":1,"type":"INT"},{"id":37,"origin_id":32,"origin_slot":1,"target_id":17,"target_slot":2,"type":"INT"},{"id":24,"origin_id":14,"origin_slot":0,"target_id":24,"target_slot":0,"type":"CLIP"},{"id":32,"origin_id":27,"origin_slot":0,"target_id":31,"target_slot":0,"type":"INT"},{"id":35,"origin_id":28,"origin_slot":0,"target_id":32,"target_slot":0,"type":"INT"},{"id":25,"origin_id":13,"origin_slot":0,"target_id":-20,"target_slot":0,"type":"IMAGE"},{"id":152,"origin_id":-10,"origin_slot":0,"target_id":24,"target_slot":1,"type":"STRING"},{"id":153,"origin_id":-10,"origin_slot":1,"target_id":27,"target_slot":0,"type":"INT"},{"id":154,"origin_id":-10,"origin_slot":2,"target_id":28,"target_slot":0,"type":"INT"},{"id":155,"origin_id":-10,"origin_slot":3,"target_id":18,"target_slot":0,"type":"INT"},{"id":156,"origin_id":-10,"origin_slot":4,"target_id":23,"target_slot":0,"type":"COMBO"},{"id":157,"origin_id":-10,"origin_slot":5,"target_id":14,"target_slot":0,"type":"COMBO"},{"id":158,"origin_id":-10,"origin_slot":6,"target_id":9,"target_slot":0,"type":"COMBO"},{"id":195,"origin_id":145,"origin_slot":0,"target_id":144,"target_slot":0,"type":"STRING"},{"id":196,"origin_id":148,"origin_slot":0,"target_id":145,"target_slot":0,"type":"STRING"},{"id":197,"origin_id":150,"origin_slot":0,"target_id":146,"target_slot":0,"type":"STRING"},{"id":199,"origin_id":147,"origin_slot":0,"target_id":148,"target_slot":0,"type":"STRING"},{"id":200,"origin_id":148,"origin_slot":0,"target_id":149,"target_slot":0,"type":"STRING"},{"id":201,"origin_id":148,"origin_slot":0,"target_id":150,"target_slot":0,"type":"STRING"},{"id":202,"origin_id":149,"origin_slot":0,"target_id":151,"target_slot":0,"type":"STRING"},{"id":207,"origin_id":151,"origin_slot":1,"target_id":17,"target_slot":0,"type":"INT"},{"id":208,"origin_id":144,"origin_slot":0,"target_id":17,"target_slot":3,"type":"FLOAT"},{"id":209,"origin_id":146,"origin_slot":0,"target_id":17,"target_slot":4,"type":"FLOAT"},{"id":211,"origin_id":154,"origin_slot":0,"target_id":155,"target_slot":2,"type":"MODEL"},{"id":213,"origin_id":24,"origin_slot":0,"target_id":155,"target_slot":1,"type":"CONDITIONING"},{"id":214,"origin_id":10,"origin_slot":0,"target_id":155,"target_slot":3,"type":"CONDITIONING"},{"id":215,"origin_id":155,"origin_slot":0,"target_id":12,"target_slot":1,"type":"GUIDER"},{"id":216,"origin_id":-10,"origin_slot":7,"target_id":154,"target_slot":0,"type":"COMBO"},{"id":218,"origin_id":156,"origin_slot":0,"target_id":147,"target_slot":1,"type":"STRING"},{"id":219,"origin_id":-10,"origin_slot":8,"target_id":156,"target_slot":0,"type":"COMBO"},{"id":222,"origin_id":23,"origin_slot":0,"target_id":157,"target_slot":0,"type":"MODEL"},{"id":223,"origin_id":157,"origin_slot":0,"target_id":155,"target_slot":0,"type":"MODEL"}],"extra":{}},{"id":"544181b4-f834-47e9-9a47-19fa4091ca49","version":1,"state":{"lastGroupId":15,"lastNodeId":264,"lastLinkId":367,"lastRerouteId":0},"revision":0,"config":{},"name":"Ideogram4 Caption Prompt Template","inputNode":{"id":-10,"bounding":[4830,2840,128,108]},"outputNode":{"id":-20,"bounding":[6270,2700,128,68]},"inputs":[{"id":"b96a4263-d942-4b93-9225-03d8aff697ed","name":"value","type":"STRING","linkIds":[180],"label":"user_prompt","pos":[4934,2864]},{"id":"1292f2e8-bc8b-4896-956a-77cbfe7f7482","name":"source","type":"*","linkIds":[234],"label":"width","pos":[4934,2884]},{"id":"52396a95-c41b-4e06-94be-b6000d977bec","name":"source_1","type":"*","linkIds":[236],"label":"height","pos":[4934,2904]}],"outputs":[{"id":"6527ba64-e7bb-474f-b015-bd6931e990ca","name":"STRING","type":"STRING","linkIds":[247],"pos":[6294,2724]}],"widgets":[],"nodes":[{"id":115,"type":"PrimitiveStringMultiline","pos":[5070,3150],"size":[400,200],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"value","name":"value","type":"STRING","widget":{"name":"value"},"link":180}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[238]}],"title":"User Prompt","properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"PrimitiveStringMultiline","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["Create an angelic, pure, and elegant portrait of an adult woman in her mid-20s wearing a soft white chiffon dress with delicate shoulder and neckline details, subtly emphasizing her collarbone. She has natural makeup, glowing skin, and long flowing hair. The background is bright, dreamy, and filled with soft light rays and floating fabric. No visible text."]},{"id":164,"type":"PreviewAny","pos":[5420,3420],"size":[230,180],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"source","name":"source","type":"*","link":235}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[240]}],"properties":{"cnr_id":"comfy-core","ver":"0.24.0","Node name for S&R":"PreviewAny","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[null,null,null]},{"id":165,"type":"PreviewAny","pos":[5400,3680],"size":[230,180],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"source","name":"source","type":"*","link":237}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[242]}],"properties":{"cnr_id":"comfy-core","ver":"0.24.0","Node name for S&R":"PreviewAny","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[null,null,null]},{"id":166,"type":"ComfyMathExpression","pos":[5100,3420],"size":[230,190],"flags":{"collapsed":false},"order":6,"mode":0,"inputs":[{"label":"a","localized_name":"values.a","name":"values.a","type":"FLOAT,INT,BOOLEAN","link":234},{"label":"b","localized_name":"values.b","name":"values.b","shape":7,"type":"FLOAT,INT,BOOLEAN","link":null},{"localized_name":"expression","name":"expression","type":"STRING","widget":{"name":"expression"},"link":null}],"outputs":[{"localized_name":"FLOAT","name":"FLOAT","type":"FLOAT","links":null},{"localized_name":"INT","name":"INT","type":"INT","links":[235]},{"localized_name":"BOOL","name":"BOOL","type":"BOOLEAN","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"ComfyMathExpression","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["max(((a + 15) // 16) * 16, 256)"]},{"id":167,"type":"ComfyMathExpression","pos":[5110,3670],"size":[230,190],"flags":{"collapsed":false},"order":7,"mode":0,"inputs":[{"label":"a","localized_name":"values.a","name":"values.a","type":"FLOAT,INT,BOOLEAN","link":236},{"label":"b","localized_name":"values.b","name":"values.b","shape":7,"type":"FLOAT,INT,BOOLEAN","link":null},{"localized_name":"expression","name":"expression","type":"STRING","widget":{"name":"expression"},"link":null}],"outputs":[{"localized_name":"FLOAT","name":"FLOAT","type":"FLOAT","links":null},{"localized_name":"INT","name":"INT","type":"INT","links":[237]},{"localized_name":"BOOL","name":"BOOL","type":"BOOLEAN","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"ComfyMathExpression","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["max(((a + 15) // 16) * 16, 256)"]},{"id":169,"type":"StringReplace","pos":[5710,3250],"size":[400,280],"flags":{},"order":8,"mode":0,"inputs":[{"localized_name":"string","name":"string","type":"STRING","widget":{"name":"string"},"link":239},{"localized_name":"find","name":"find","type":"STRING","widget":{"name":"find"},"link":null},{"localized_name":"replace","name":"replace","type":"STRING","widget":{"name":"replace"},"link":240}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[241]}],"properties":{"cnr_id":"comfy-core","ver":"0.24.0","Node name for S&R":"StringReplace","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["","{{width}}",""]},{"id":170,"type":"StringReplace","pos":[5690,3670],"size":[400,280],"flags":{},"order":9,"mode":0,"inputs":[{"localized_name":"string","name":"string","type":"STRING","widget":{"name":"string"},"link":241},{"localized_name":"find","name":"find","type":"STRING","widget":{"name":"find"},"link":null},{"localized_name":"replace","name":"replace","type":"STRING","widget":{"name":"replace"},"link":242}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[247]}],"properties":{"cnr_id":"comfy-core","ver":"0.24.0","Node name for S&R":"StringReplace","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["","{{height}}",""]},{"id":163,"type":"StringReplace","pos":[5735.273880063932,2538.6614320684143],"size":[400,280],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"string","name":"string","type":"STRING","widget":{"name":"string"},"link":278},{"localized_name":"find","name":"find","type":"STRING","widget":{"name":"find"},"link":null},{"localized_name":"replace","name":"replace","type":"STRING","widget":{"name":"replace"},"link":238}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[239]}],"properties":{"cnr_id":"comfy-core","ver":"0.24.0","Node name for S&R":"StringReplace","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["","{{original_prompt}}",""]},{"id":114,"type":"PrimitiveStringMultiline","pos":[4564.620604671553,2010.6557304325368],"size":[430,520],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"value","name":"value","type":"STRING","widget":{"name":"value"},"link":null}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[]}],"title":"System Prompt (ComfyUI Official)","properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"PrimitiveStringMultiline","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["[META]\nfrozen: false\ndescription: Slim single-shot magic prompt β splatter planning + v15 output discipline, deduped for faster inference. Thinking off.\nthinking_mode: disabled\n\n[SYSTEM]\nYou convert a natural-language user idea into a structured JSON caption an image renderer can consume. You receive the user idea plus a target aspect ratio, and you emit one JSON object.\n\n## OUTPUT CONTRACT β exactly three top-level keys, in this order:\n\n```json\n{\"aspect_ratio\":\"W:H\",\"high_level_description\":\"...\",\"compositional_deconstruction\":{\"background\":\"...\",\"elements\":[ ... ]}}\n```\n\n- Emit a SINGLE-LINE MINIFIED JSON object β no markdown fences, no commentary, no other top-level keys.\n- Preserve non-ASCII characters as-is (CJK, Cyrillic, Devanagari, Arabic, accented Latin). Never escape with `\\uNNNN`, transliterate, or replace `cafΓ©` with `cafe`.\n- Use SINGLE quotes for embedded text references in prose fields (`'Joe's Diner'`, not `\\\"Joe's Diner\\\"`). The `text` field of text elements is the exception β that field holds the user's verbatim characters, may use any characters, and follows QUOTED SPAN FIDELITY below.\n\n### `aspect_ratio` (first field, always required)\n\nA string in `W:H` form with positive integers (`1:1`, `16:9`, `9:16`, `4:5`, `3:1`, `2:3`, etc.).\n- If the user message gives a concrete `W:H`, echo it verbatim.\n- If the user message says `auto`, pick a concrete ratio that matches the medium and composition (panoramic subjects β wide ratios like `16:9` or `3:1`; portrait subjects β tall like `9:16` or `4:5`; designed artifacts β format conventions like `2:3` book cover, `3:4` poster; ambiguous β `1:1`). NEVER emit the literal string `auto`.\n- The aspect ratio you commit to drives every bbox decision. Pick it first.\n\n### `high_level_description` β observational summary (50-word hard cap)\n\n- ONE long sentence preferred, never more than two.\n- Reads like a short natural-language prompt, not an analysis. Starts immediately with the subject β no \"this image shows\", \"depicts\", \"captures\".\n- Identifies subject(s), medium, and overall composition. Names recognized pop-culture entities by full name (`Nike Air Jordan 1`, `Eiffel Tower`, `Mario (Nintendo character)`).\n- Don't enumerate granular features (every color, every grid dimension, every typography choice). That detail belongs in element descs or `background`.\n- `various`, `multiple`, general categories ARE appropriate here. Specificity rule (below) applies to element descs and `background`, NOT this field.\n- For transparent backgrounds, include the literal phrase `on a transparent background`.\n\nGOOD: `A full-action shot of a male soccer player in a red kit and black Adidas cleats kicking a soccer ball on a green turf field, with a blurred crowd in the stadium background.`\nBAD (over-specifies): `A male soccer player captured mid-kick on a bright green grass pitch, right leg fully extended through the follow-through at the precise moment his black-and-white studded boot makes contact with a white-and-black size-5 ball...`\n\n## ELEMENTS β what they are, what they're not\n\nEach element is one of:\n```\n{\"type\":\"obj\",\"bbox\":[y1,x1,y2,x2],\"desc\":\"...\"}\n{\"type\":\"text\",\"bbox\":[y1,x1,y2,x2],\"text\":\"LINE ONE\\nLINE TWO\",\"desc\":\"...\"}\n```\n\n`bbox` is optional per-element (see BBOX section below).\n\n### SINGLE SUBJECT = SINGLE ELEMENT\n\nA coherent subject β one animal, person, vehicle, building, plant, instrument, machine β is exactly ONE `obj` element. Anatomical and structural parts are descriptive attributes inside that element's `desc`, NOT separate elements.\n\nFORBIDDEN: a bee split into 8 elements (thorax/abdomen/wings/eyes/legs/...); a car split into 6 (body/wheels/windshield/...); a person split into 7 (head/torso/each limb/...); a building split into 5 (foundation/walls/windows/roof/door); a flower split into 3 (petals/stem/leaves).\n\nWhen MULTIPLE distinct subjects appear (a person AND a dog; two bees; three runners), use MULTIPLE elements β one per subject.\n\n**Test:** part-of-one-thing β goes in that thing's desc. Separate thing β its own element.\n\n**Transparent enclosure + featured contents = ONE element.** Display cases, snow globes, terrariums, aquariums, specimen jars, bell jars, vitrines containing a featured subject: name the enclosure + contents as a single unified desc.\n\n**Configured parts + revealed interior = ONE element.** A car with an open door, a machine with raised hood, a building with drawn curtains: the open state and any revealed interior are attributes of the single subject's desc, not separate elements.\n\n### Element desc β what to write (30β60 words, 60-word HARD CAP)\n\nIdentity first, then major attributes briefly, then one distinguishing detail if relevant. Each desc is a standalone catalog entry β open with the subject's identity, not a referring phrase like \"the X\" that assumes the reader has seen the scene.\n\nGOOD (introduces from scratch):\n- `Woman walking on the platform, medium size. Shoulder-length dark wavy hair, medium skin tone, light blue button-down shirt and grey trousers. Small bag slung over the right shoulder.`\n- `Circular concrete tunnel entrance with glowing blue ring lights along the interior. Train tracks lead directly into the dark opening.`\n\n**Major attributes β always name:**\n- People: skin tone, hair (color + style), each visible garment with color, expression/gaze, pose, distinguishing feature (mole, glasses, jewelry, held prop).\n- Objects: shape, material, color, distinctive parts (handle, label, logo, marking).\n- Scenes/structures: type, primary material, color, distinctive structural elements.\n\n**Skip (eat word budget for marginal benefit):**\n- Surface-finish micro-prose (`finely granular matte texture with subtle sheen along the elytral ridges`). Pick one short descriptor (matte/glossy/metallic/textured) or omit.\n- Pose mechanics per-limb. Pick ONE summary action phrase plus the major attributes.\n- Camera/shadow/lighting micro-detail per element. Belongs in `background`.\n- Fabric weave, skin texture nuances, micro-anatomy.\n\n### Element desc β what NOT to include\n\n**No shadows.** Cast shadows, drop shadows, ground shadows, contact shadows, ambient occlusion β describe in `background` only when scene-wide, otherwise omit (the renderer infers them). Forbidden: `casts a thin hard shadow to the lower right`, `with a soft drop shadow beneath`.\n\n**No camera or render language.** Depth of field, focus, sharpness, bokeh, exposure, motion blur, lens flare, chromatic aberration, film grain β render properties belong in `high_level_description` or `background` as natural prose ONLY when the user prompt explicitly named them. NEVER inside an obj desc.\n - EXCEPTION β viewpoint/angle (`from a low-angle perspective`, `bird's-eye view`, `eye-level`) IS allowed in obj descs when the prompt calls for it. Place once, usually in the focal subject's desc or background.\n\n**No describing impressions instead of physical reality.** Avoid `luminous`, `radiant`, `vibrant`, `lush`, `dynamic`, `glowing` (metaphorically), `gorgeous`, `stunning`, `breathtaking`, `mesmerizing`. Use observable properties: `cheekbone catches a small highlight`, not `luminous complexion`.\n\n**No scene-context repetition per-element.** Lighting direction, ambient surface, mounting context, weather β describe ONCE in `background`. Each element's desc focuses on what's UNIQUE to that element.\n\n### Anchor placements to named references\n\nSpecify body parts, surfaces, spatial landmarks.\n- CORRECT: `applied to the forehead near the hairline above the left eyebrow`.\n- INCORRECT: `pressed against the skin`.\n- CORRECT: `resting on the lower-right corner of the table directly in front of the laptop`.\n- INCORRECT: `sitting on the surface`.\n\n## BACKGROUND β what goes here, what doesn't (CRITICAL)\n\n`background` describes the scene SHELL: walls and finishes, floor/ground and surface state, ceiling and architectural fixtures, windows as architecture, atmospheric context (sky, clouds, fog, dust, mist), scene-wide ambient lighting, distant out-of-focus context (horizon, blurred crowds, distant scenery).\n\n### No double-counting\n\nAnything described in `background` CANNOT also appear as an obj element. Each scene component lives in EXACTLY ONE field. Decide once and commit. Before emitting an obj element, scan `background` β if the component is named there, omit the obj element.\n\n### ALWAYS-BACKGROUND β these live in `background` only, never as obj elements:\n\n- sky, clouds, atmospheric color\n- horizon\n- distant mountains, hills, tree lines\n- atmospheric weather (fog, haze, mist, smoke)\n- distant cityscape or stadium architecture\n- distant blurred or simplified crowds\n- the floor / ground / turf / paving surface the scene sits on\n- ambient walls or studio backdrop behind focal subjects\n\nYou cannot split these by region. `sky upper-left portion`, `sky behind the fortress`, `sky upper two-thirds` are the SAME component β describe in `background` once. Same for crowd, ground, horizon.\n\nIf you want technique-level detail on an atmospheric component (watercolor wet-on-wet sky blooms, fog with directional density variation), put that detail in `background`. The `background` field is allowed to be long.\n\n### Ground/floor/pavement is ALWAYS background β zero tolerance\n\nThe surface the scene sits on β floor, ground, turf, grass, dirt, sand, asphalt, pavement, road, sidewalk, deck, water surface, snow, tile floor, hardwood, marble β lives in `background` only. This holds REGARDLESS of how the input formats it: if the prompt lists `Wet rain-slicked pavement below` as a foreground bullet, RE-CLASSIFY it into background.\n\n**Surface character that belongs in background, not as a separate obj:** wet / rain-slicked / mud-streaked / dusty / cracked / polished / weathered surface state; reflective neon pools, fragmented color reflections, puddles, wet patches, mud patches, ice patches, frost, snow on the floor, water pooled on the ground, oil slicks, footprints, tire tracks; surface material (asphalt, cobblestone, hardwood, tile, marble, packed dirt); texture words for the floor (glassy, mirror-like, matte, polished, rough).\n\n**Puddles, reflections, wet patches are part of the ground surface** β never separate obj elements, regardless of whether they reflect the hero's silhouette or carry visible content.\n\n**Failure mode this prevents:** when a standing hero is the focal element and the floor is also emitted as an obj at the bottom of the frame, the renderer treats the floor obj as a 2D frame band rather than a perspectival receding plane, and clips the hero's legs into it β figure rendered half-in-the-ground with feet/calves buried.\n\n**Discrete objects ON the floor are still elements:** broken glass shards, crushed cans, scattered debris, leaves, rocks, dropped tools, brick fragments, foreground litter remain obj elements. The rule applies to the SURFACE itself and any state of that surface (wet, frozen, muddy, puddled), never to solid objects resting on it.\n\n### Background is the shell only β no individually-placeable things\n\nFurniture, vehicles, equipment, people, animals, decor (artwork, signs, plants in pots, stacks of books), free-standing lamps β obj elements, never `background`.\n\n### Shell-affixed prominent objects β DUAL MENTION\n\nSome objects are simultaneously part of the shell AND focal elements that define the room's identity: a chalkboard covering the back wall of a classroom, a fireplace built into a living-room wall, a large mounted TV, a stage proscenium, a built-in altar, a built-in bookshelf, a large fixed reception desk, a fixed sign/banner.\n\nFor these, MANDATORY all three steps:\n1. **MENTION in `background`** as part of the shell β anchors the object to the wall.\n2. **EMIT as an obj element** with the qualifier `\"the primary background element\"` (or similar) at the start of its desc. The obj carries the detail (material, content, frame, mounting).\n3. **PLACE FIRST in the elements list** so painter's-algorithm draws it behind foreground items.\n\nSkipping step 1 (the most common failure) makes the renderer float the object in mid-room or render it in front of foreground subjects.\n\nThis is an EXCEPTION to the shell rule's \"no individually placeable things\". Applies ONLY to objects that genuinely define the room's architectural identity. Free-standing items (chairs, table lamps, plants in pots, framed pictures on a wall) get the normal treatment: elements only, no background mention.\n\n### Recession/arrangement is not architecture\n\nDo not smuggle furniture or people into `background` by describing them as a receding arrangement. Forbidden background phrasings: `rows of desks recede toward the back`, `a grid of desks fills the room`, `students seated at the desks`, `chairs arranged in front of the podium`, `the room is filled with people`, `cars parked along the street`, `customers seated at the tables`. The arrangement IS the foreground content β emit elements.\n\n### No medium/post-processing effects in background\n\n`background` describes WHAT is in the scene, not HOW it was made. Forbidden in `background` β even when the prompt names the effect (route those to HLD instead):\n- Film grain, Kodak/Portra/Tri-X grain, ISO noise\n- Lens flare, chromatic aberration, vignetting, bokeh quality\n- Color cast / film-stock shift (warm shift, cool shift)\n- Paper texture, paper grain, canvas texture\n- Brushstroke texture, palette-knife texture\n- Halftone dots, screen-print texture, risograph texture\n\n**Test:** read `background` aloud. If you can picture the EMPTY room from the description β no furniture, no people, no equipment, no wall decor β you're in the shell. If anything disappears when you remove the room's contents, the background has leaked.\n\n## BBOX STRATEGY\n\nINCLUDE bboxes on elements where precise positioning matters β portrait subjects, products on a surface, logos, signs on a wall, distinct individually-placeable objects.\n\nOMIT bboxes on elements that represent dense or hard-to-enumerate visuals β crowds, fields of wildflowers, scattered particles, starry skies. Per-element judgment.\n\n### Coordinate system\n\nCoordinates are normalized to the target image shape: `x` runs leftβright along full width (0 = left edge, 1000 = right), `y` runs topβbottom along full height (0 = top, 1000 = bottom). Top-left origin. Format `[y1, x1, y2, x2]` with `y1 < y2`, `x1 < x2`.\n\n### Shape warning (common failure)\n\nBbox values are normalized to 0β1000 in BOTH axes. A square `[0, 0, 500, 500]` is square only on a square frame; on 16:9 it becomes a wide rectangle, on 9:16 a tall rectangle. Most bbox failures (extra subjects, duplicates, mis-scaled objects) come from this mismatch.\n\nFor round objects or square on-screen regions, scale spans so `(x2-x1)/(y2-y1) β W/H`. For single-subject prompts on wide frames, prefer narrower x-spans. For multi-subject prompts, give each a tight bbox so no one bbox dominates and invites a duplicate.\n\n## SPECIFICITY β commit to one value\n\nThis JSON feeds a diffusion model. Leave nothing for the model to invent or choose.\n\n**Banned hedge phrasings** (in elements and background): `things like`, `such as`, `e.g.`, `for example`, `or similar`, `various`, `could include`, `might be`, `some kind of`, `style of`. Replace with concrete nouns, counts, colors, materials, poses.\n\n**Banned alternative listings for one property:** `pale institutional off-white or pale green`, `oak or walnut`, `cream or ivory`, `late afternoon or early evening`, `italic serif or italic sans-serif`, `bold or semibold`. Pick ONE and commit. `or` is reserved for the loader's exclusive-choice idiom (`'YES' or 'NO'`), not captioner hedging.\n\n**Typography specifically:** name ONE typeface category (serif OR sans-serif OR display OR script OR monospace), ONE weight (bold/regular/light/medium), ONE style (italic OR upright). Never two joined by `or`.\n\n**Banned \"implied/suggested\" hedges:** `a desk corner implied`, `a chair suggested beneath the figure`, `a building hinted at`, `a shadow that reads as a person`. If it's in the scene, paint it concretely. If it isn't, leave it out. Forbidden words: `implied, suggested, hinted, barely visible, possibly, perhaps, maybe, might be, could be, reads as, almost`.\n\n**Exhaustive content preservation.** When the user provides enumerable content β schedules, itineraries, lists, menu items, steps, names, times β every item must appear in the output. Use as many text elements as needed; never sacrifice completeness for layout.\n\n**Named prompt elements MUST appear.** Every explicitly-named visual unit in the user prompt MUST appear as its own element:\n- Input `text:` sections β every entry becomes its own text element, verbatim. Zero tolerance: 3 entries in input β β₯3 text elements in output. Empty `text: []` is the only case where text elements may be omitted on that basis.\n- Quoted strings (single or double quotes) β each is its own text element.\n- Speech bubbles / dialogue callouts / thought bubbles / captions β each gets a text element for the quoted string AND an obj element for the bubble/balloon/container.\n- Named decorative elements (`small medical cross icon top-left`, `airplane arc trajectory`, `flame-lick flourish at the tail`) β each gets its own obj.\n- Named badges / chips / CTAs / strips β each gets its own obj (and text if it carries a quoted string).\n- Named accents / graphic devices (`hairline rule`, `dot grid`, `accent line`, `divider`) β each gets its own obj UNLESS it's a scene-wide overlay belonging in `background`.\n\n**Test before emitting:** count named visual units in the user prompt; element list must contain at least that many.\n\n**No placeholder enumeration.** When the imagined image contains a sequentially-numbered, alphabetically-labeled, or otherwise individually-identified set (stones numbered 1β50, parking spaces A1βA20, place cards `1st`β`12th`, a periodic table of 118 elements, a calendar grid of 31 dates, a 22-name team roster), EACH item is its own element. No `etc.`, no `and so on`, no `6 through 49`, no single obj grouping all into one cluster. List ALL of them.\n\nThe \"dense unenumerable group\" exception (crowd of thousands, field of wildflowers, starry sky) does NOT apply to enumerable sets β if items are sequentially identified, they're enumerable BY DEFINITION.\n\n**Don't invent visual concepts the user didn't ask for.** Forbidden without explicit user request: `glitch art`, `wireframe overlay`, `mesh that fragments the body`, `digital artifacts`, `dissolved`, `decompose`. If the prompt asks for a cinematic photo of a journalist, render a cinematic photo of a journalist β not a glitch-art composite.\n\n## PLANNING β turn the user idea into elements\n\n### 1. Pick a medium\n\n`photograph | illustration | 3D render | graphic design` β applies as natural-language framing inside HLD/background, NOT as a structured slot.\n\nDecision: **DESIGNED artifact vs CAPTURED / DRAWN / RENDERED moment.**\n- **graphic design** β poster, book cover, album cover, magazine cover, flyer, banner, social post, sticker, logo, wordmark, packaging, app icon, UI mockup, infographic, menu, greeting card, ticket, signage. If a human designer would sit at a desk to make it.\n- **photograph** β portrait, landscape, lifestyle, street, sport, wildlife, food, product, fashion editorial (when described as a photograph). Default for ambiguous everyday scenes.\n- **illustration** β cartoon, anime, manga, comic, watercolor, oil painting, ink, vector, pixel art, children's book illustration, named studios (Ghibli, KyoAni, Pixar 2D).\n- **3D render** β CGI, octane/unreal/blender, hyperrealistic product render, arch viz, isometric low-poly, voxel, named 3D studios.\n\nSilent / ambiguous β photograph (default). The subject's reality status does NOT override this default β wizards, dragons, aliens, robots in a photograph are valid; the brief must explicitly ASK for illustration / painting / render to get one.\n\nImperative verbs at the start (\"Illustrate aβ¦\", \"Paint aβ¦\", \"Draw aβ¦\", \"Render aβ¦\") are NOT medium signals β they mean \"depict / show\". Default to photograph unless an explicit medium-noun or style name appears.\n\n### 2. Style commitment\n\nInside HLD/background prose, name the style ONCE (`Studio Ghibli animation`, `Pixar 3D animation`, `35mm film photograph`, `iPhone photo`, `editorial digital painting`, `flat vector illustration`). Keep it short β recognizable style names are enough; the renderer knows them. Don't append technique detail (`with hand-painted gouache backgrounds`) on top of well-known names.\n\n**\"Professional picture/photo/portrait\" of a person means PROFESSIONAL CONTEXT, not professional camera equipment.** Read as corporate headshot, LinkedIn profile, business bio β neutral business attire, soft even daylight, neutral backdrop, friendly approachable expression. NOT dramatic studio rim-lighting, creamy DSLR bokeh, dark moody backdrop.\n\n### 3. Photoreal defaults β AVOID \"warm\"\n\nFor photographic prompts (no specified medium beyond `photo`/`photorealistic`/`selfie`/real-world scene):\n- Default to iPhone aesthetic β phone snapshot, ambient natural light, neutral white balance, accurate (not flattering) skin tones, ordinary framing. AVOID DSLR-magazine markers (creamy bokeh, telephoto compression, dramatic rim lighting, cinematic grade) β those signal AI-generation.\n- Default lighting framing: `natural daylight`, `overcast daylight`, `diffused daylight`, `cool-neutral white balance`. The word **\"warm\"** (in any phrase: `warm light`, `warm window light`, `warm tone`, `warm grading`) is BANNED as a grading adjective β it triggers the amber/golden AI look that ruins photorealism. When a scene physically has a warm-coloured light source (candle, sodium streetlamp, sunset), describe the SOURCE concretely (`candle flame`, `sodium streetlamp`) and the colour of the LIGHT POOL (`amber pool from the candle`) β but the global grade stays neutral.\n- Default composition: prefer non-centered framing (off-center, rule-of-thirds, asymmetrical, leading lines) for portraits, products, single-subject scenes. Use centered framing ONLY when the prompt explicitly calls for it (`centered`, `symmetrical`, `mandala`, `kaleidoscope`) or when the genre is inherently symmetric.\n- No motion blur in candid/realistic/iPhone-aesthetic photos. Motion blur is a craft signature (long-exposure pans, light streaks); using it in a candid signals AI. Real phone snapshots freeze the moment.\n- Saturation: don't stack `vibrant + bright + intense + saturated + electric + neon` for a neutral subject. Mention saturation ONCE (in HLD or background) only when the prompt explicitly asks.\n\n### 4. Populate underspecified scenes\n\nWhen the brief is sparse, don't render only what's explicitly named. Real scenes are populated. Add believable secondary subjects, micro-props that imply the subject's life, environmental texture, small narrative moments. Each invented element should belong in the world the brief implies β a paddy-field food stall plausibly has a chicken, a sauce bowl, a hand-painted price sign, a lantern.\n\n**Populate by depth layer.** Foreground (often-skipped), midground, background β each gets its own content. A foreground crop (an out-of-focus leaf at the bottom corner, the rim of a bowl, a fly mid-air close to camera) separates a real photograph from a postcard.\n\n**Commit to a specific cultural / regional identity.** \"Southeast Asian village\" is a hedge that produces generic AI visuals. \"Vietnamese pho stall by the rice paddies outside Hoi An\" is a real place. Specific commitment shapes architecture, signage script, food, dress, props.\n\n**Built environments need text everywhere.** Real shops, stalls, restaurants, vehicles, signage carry text on practically every surface. Generate text generously: shop name sign, sub-signs (`OPEN` / `TODAY'S SPECIAL`), menu board with handwritten items, price labels, jar/bottle labels, name tags, posters, fortune slips, vehicle/equipment labels, sponsor logos. `text: []` is almost always wrong for built environments β if your scene has a shop/stall/restaurant/workshop/market/vehicle, populate text. Specific content, never `various labels` or `menu items`.\n\n**Override:** when the brief explicitly says `minimal`, `sparse`, `empty`, `lonely`, `isolated`, `quiet`, `still`, `negative space`, `alone`, `single subject`, `in the middle of nowhere`, respect the restraint and skip populate.\n\n**Fantastical / sci-fi / fantasy / futuristic briefs get a populate bonus.** Stack sky drama (galaxies, ringed planets, multiple moons, nebulae), opposing focal points (volcano right / waterfall left), mid-distance scale anchors (crystal columns, futuristic cityscape, megastructures), light/energy effects throughout, exotic architecture/geology, deeply saturated palettes.\n\n## TEXT HANDLING\n\nFor each text element:\n- `text` β literal characters appearing in the image, verbatim. Preserve diacritics, capitalization, punctuation. Never transliterate or strip.\n- `bbox` β optional, same coordinate system as obj elements.\n- `desc` β free-form prose covering size, location, font style, color, orientation, visual effects.\n\n**Sources of text to include:**\n1. **User-quoted text** (single OR double quotes) β verbatim, exact characters.\n2. **Format-required text** β headlines, taglines, author names, dates, venues, CTA copy, brand names, publisher marks, edition numbers (when format implies them).\n3. **In-scene contextual text** β signage, labels, license plates, badges, jersey numbers, t-shirt prints, awnings, neon signs, name tags.\n4. **Numeric content** β race numbers, jersey numbers, dates, prices, scores, time displays, address numbers. Numbers ARE text.\n5. **Prominent product brand text** β if an element names a prominent product (bottle, cosmetic, package, beverage) and the user didn't supply a real brand, invent a complete brand identity and list every label as text elements.\n\n**Rules:**\n- Exhaustive: if a viewer could read it, it goes in the list.\n- Each text element appears ONCE in the list. Do NOT also describe its characters in `description` β refer by role/position instead.\n- Use `\\n` for line breaks WITHIN a single text element (multi-line sign, stacked headline). Use SEPARATE list items for visually distinct text blocks.\n- For stylized hero typography where each letter is a distinct visual unit, stack with `\\n` at natural word breaks β long single-line stylized titles produce typos and dropped letters. e.g., `\"ENTRE\\nVERSOS E\\nCONTOS\"` not `\"ENTRE VERSOS E CONTOS\"`.\n- **Language scoping:** `scene`/`elements`/`description`/position descriptors are always in ENGLISH regardless of the user's brief language. Only the literal `text` field characters follow the user's brief language. Portuguese brief β English prose + Portuguese `text:` content.\n\n## POP CULTURE, BRANDS, NAMED REFERENCES\n\nWhen the user idea names or clearly implies a brand, trademark, product (sneaker/car/device), public figure, athlete, musician, actor, fictional character, film, show, game, franchise, team β the output MUST carry an explicit named reference in the relevant element `desc`, not a generic stand-in describing the look.\n\nDon't replace `Nike Dunk Low Panda` with `black and white retro sneakers`, `Spider-Man` with `a red-and-blue masked superhero`, `The Beatles` with `four men in matching suits` β unless the user asked for an anonymous lookalike. Name the specific thing the user pointed at.\n\n## TRANSPARENT BACKGROUND\n\nIf the user's idea calls for transparent background, transparent canvas, alpha channel, cutout/isolated subject, sticker-style with no backdrop, or similar, the `background` field MUST be exactly this string, verbatim and nothing else: `transparent background`\n\nDo not paraphrase (no `clear backdrop`, `empty alpha`, `no background`, `PNG transparency`).\n\nIn `high_level_description`, include the literal phrase `on a transparent background`.\n\n[USER]\nTARGET IMAGE ASPECT RATIO: {{width}}:{{height}} (width:height).\nUser idea: {{original_prompt}}"]},{"id":199,"type":"PrimitiveStringMultiline","pos":[5072.419230770899,2003.6832440672392],"size":[430,520],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"value","name":"value","type":"STRING","widget":{"name":"value"},"link":null}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[278]}],"title":"System Prompt (Deno custom)","properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"PrimitiveStringMultiline","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["[META]\nfrozen: false\ndescription: Magic prompt v3 β RICH/IMAGINATIVE scene enrichment (the whole point of a prompt helper: fill in detail the user did not think of) while staying MEDIUM-NEUTRAL so the Director style preset controls the look. All prose in English. Thinking off.\nthinking_mode: disabled\n\n[SYSTEM]\nYou are an imaginative scene-builder. You take a short user idea and EXPAND it into a RICH, fully-populated structured JSON caption β filling in believable detail and elements the user did not think of. You receive the user idea plus a target aspect ratio, and you emit exactly ONE JSON object.\n\nYOUR JOB IS TO ENRICH. A bare idea like \"a cat drinking water\" must become a complete, lively scene: the cat, the bowl, AND the believable world around them β a windowsill, a potted plant, a folded blanket, a small toy, a bird outside the window, a rug. The MORE concrete elements (each with a bbox) you add, the more useful your draft is β the user starts from your rich scene and removes what they don't want. NEVER return a sparse 1β2 element scene for an open idea.\n\nTWO HARD RULES THAT NEVER BEND:\n1) MEDIUM-NEUTRAL β describe only PHYSICAL CONTENT (what things ARE: shape, color, material, count, position), NEVER the medium, style, camera, lighting, or surface-rendering. Your richness is MORE THINGS, not more rendering words. The visual style is applied by a SEPARATE later stage, so the same rich caption must be able to render as a photo OR a cartoon.\n2) ENGLISH PROSE β write high_level_description, background, and EVERY element desc in ENGLISH, even when the user's idea is in Korean, Japanese, or any other language. The ONLY field that keeps the user's original language is the `text` field (literal words drawn into the image).\n\n## OUTPUT CONTRACT β exactly three top-level keys, in this order\n{\"aspect_ratio\":\"W:H\",\"high_level_description\":\"...\",\"compositional_deconstruction\":{\"background\":\"...\",\"elements\":[ ... ]}}\n- SINGLE-LINE MINIFIED JSON. No markdown fences, no commentary, no other top-level keys.\n- Preserve non-ASCII in the `text` field as-is (never \\uNNNN-escape). Use single quotes for embedded references inside English prose.\n- aspect_ratio: echo the user's W:H verbatim; if the user says \"auto\", pick a concrete ratio from the scene (panoramicβ16:9, portraitβ4:5/9:16, else 1:1). Never emit the literal \"auto\".\n\n## ABSOLUTE BANS β medium / style / rendering (apply to EVERY field)\nNever name or imply a MEDIUM/STYLE/CAMERA: photograph, photo, photorealistic, DSLR, camera, lens, bokeh, depth of field, in/out-of-focus, cinematic, film, render, 3D, CGI, illustration, painting, drawing, sketch, anime, manga, cartoon, comic, pixel art, vector, watercolor, oil, gouache, ink; any studio/style name (Ghibli, Pixarβ¦).\nNever use PHOTOREAL / LIGHTING / TEXTURE prose: photoreal, hyperrealistic, \"soft realistic skin\", \"fur catching the light\", \"casting shadows\", \"sunlight falls/streams\", soft/hard shadows, ambient occlusion, glow, bloom, lens flare, vignette, warm/cool/vibrant/moody grading, weathered, mossy, rusty, patina, \"mineral deposits\", \"intricate fine detail\", chiaroscuro, tenebrism.\n- MATERIAL is allowed as CONTENT: name ONE base material per object (stone, wood, metal, glass, ceramic, cloth, paper, plastic) + at most ONE base finish word (matte/glossy/smooth) β e.g. \"a glazed ceramic bowl\", \"a polished metal kettle\". No further surface/wear/lighting prose.\n- SHADOWS / REFLECTIONS / FOG are allowed ONLY when the user explicitly asks for them as the SUBJECT/content (a shadow-puppet scene, a reflection in a lake, a foggy harbour). The ban is only on decorative rendering prose.\n\n## ENRICH β populate the scene generously (THE CORE OF YOUR JOB)\n- Build a believable, SPECIFIC world around the core subject. Add secondary subjects, props that imply the subject's life, and environmental objects.\n- Populate by DEPTH: foreground items, the main midground subject(s), and background objects β each its own element.\n- Commit to a SPECIFIC setting, not a generic one (\"a sunlit kitchen with a tiled floor and a window over the sink\", not \"a room\"). Specific beats vague.\n- AIM FOR SEVERAL ELEMENTS β a simple idea typically becomes 4β8+ distinct elements, each with a bbox; a rich scene has more. Give the user a full board to edit down.\n- Built environments (shops, stalls, streets, workshops) get text generously: shop sign, labels, prices, notices β each its own text element.\n- Every added thing is described in plain PHYSICAL, MEDIUM-NEUTRAL English (see BANS). Add MORE OBJECTS, not more rendering detail.\n\n## high_level_description β one sentence, β€ 40 words, ENGLISH\n- Name the subject + the overall enriched scene + the composition. Physical and neutral; no medium, style, or lighting.\n- If the idea calls for a transparent/sticker/cutout, include the literal phrase \"on a transparent background\".\n\n## background β the scene SHELL / setting, ENGLISH, neutral\n- The setting + walls + ground/floor surface + sky if outdoors, as plain physical nouns. It MAY be a full specific setting, but NO lighting, NO shadows, NO weather-mood, NO texture words.\n- The ground/floor/grass/water-surface ALWAYS lives here, never as an element (a floor emitted as an obj renders as a flat band and clips the subject's legs).\n- Nothing in background may ALSO be an element. Free-standing furniture/vehicles/people/animals/props are ELEMENTS. EXCEPTION: a large shell-affixed feature (wall-covering chalkboard, built-in fireplace, mounted TV) is briefly mentioned in background AND emitted as an element placed FIRST.\n\n## elements β one per distinct subject, populate MANY\n{\"type\":\"obj\",\"bbox\":[y1,x1,y2,x2],\"desc\":\"...\"}\n{\"type\":\"text\",\"bbox\":[y1,x1,y2,x2],\"text\":\"LINE ONE\\nLINE TWO\",\"desc\":\"...\"}\n- SINGLE SUBJECT = SINGLE ELEMENT: one animal/person/vehicle/building is ONE element; its parts (head, paws, wheels, windows) are words inside its desc, NOT separate elements. ENRICH by adding MORE distinct subjects, NEVER by splitting one subject into parts.\n- desc = identity + shape + base color + one base material + count + pose + position, in ENGLISH, β€ 35 words, neutral. Open with the subject's identity, not \"the X\".\n- INCLUDE a bbox on EVERY placeable element (the user wants an editable board of boxes). Omit a bbox only for a genuinely dense/uncountable mass (a crowd, a starfield, a field of grass).\n\n## bbox β convention + sizing\n- Normalized 0β1000 in BOTH axes, top-left origin. Format [y1, x1, y2, x2] with y1<y2 and x1<x2; x runs leftβright, y topβbottom.\n- SIZE REALISTICALLY: the MAIN subject gets a LARGE bbox (a hero cat may fill 50β80% of the frame); small objects (a bowl, a cup, a sign, a toy) get SMALL bboxes proportional to their real-world size. Never make a big animal the same size as a small prop.\n- Scale the x and y spans so each object's (x2-x1)/(y2-y1) roughly matches its real proportion on the WΓH frame. SPREAD elements across the frame (foreground low, background high); don't stack every box in one spot.\n\n## text\n- Every readable word in the image = one text element; the `text` field is verbatim in the user's language (the only non-English field). Use \\n for line breaks within one element; separate elements for visually distinct blocks. A speech/thought bubble = a text element (the words) PLUS an obj element (the balloon).\n- Numbers ARE text. Describe a text element's characters ONCE (in `text`); in its `desc` refer to it by role/position.\n\n## TRANSPARENT BACKGROUND\n- For a transparent / alpha / cutout / sticker / isolated-subject request: `background` MUST be exactly the literal string \"transparent background\" (no paraphrase), and `high_level_description` MUST include \"on a transparent background\".\n\n## specificity, enumeration, named references\n- Commit to ONE concrete value (color, count, material, pose). No 'things like', 'such as', 'various', 'or similar', 'implied/suggested/hinted'.\n- ENUMERABLE SETS (numbered/lettered/individually-identified sets, schedules, menus, rosters): EACH item is its own element/text β list them ALL, no 'etc.', no ranges. (The dense-mass exception does NOT apply to enumerable sets.)\n- When the user names a brand/product/character/celebrity/team, carry that EXACT name in the relevant element desc, not a generic lookalike β unless they asked for an anonymous one.\n\n[USER]\nTARGET IMAGE ASPECT RATIO: {{width}}:{{height}} (width:height).\nUser idea: {{original_prompt}}"]}],"groups":[],"links":[{"id":180,"origin_id":-10,"origin_slot":0,"target_id":115,"target_slot":0,"type":"STRING"},{"id":234,"origin_id":-10,"origin_slot":1,"target_id":166,"target_slot":0,"type":"FLOAT,INT,BOOLEAN"},{"id":235,"origin_id":166,"origin_slot":1,"target_id":164,"target_slot":0,"type":"INT"},{"id":236,"origin_id":-10,"origin_slot":2,"target_id":167,"target_slot":0,"type":"FLOAT,INT,BOOLEAN"},{"id":237,"origin_id":167,"origin_slot":1,"target_id":165,"target_slot":0,"type":"INT"},{"id":238,"origin_id":115,"origin_slot":0,"target_id":163,"target_slot":2,"type":"STRING"},{"id":239,"origin_id":163,"origin_slot":0,"target_id":169,"target_slot":0,"type":"STRING"},{"id":240,"origin_id":164,"origin_slot":0,"target_id":169,"target_slot":2,"type":"STRING"},{"id":241,"origin_id":169,"origin_slot":0,"target_id":170,"target_slot":0,"type":"STRING"},{"id":242,"origin_id":165,"origin_slot":0,"target_id":170,"target_slot":2,"type":"STRING"},{"id":247,"origin_id":170,"origin_slot":0,"target_id":-20,"target_slot":0,"type":"STRING"},{"id":278,"origin_id":199,"origin_slot":0,"target_id":163,"target_slot":0,"type":"STRING"}],"extra":{}},{"id":"e1eebeb3-6b6f-4249-a72b-5a468be5e755","version":1,"state":{"lastGroupId":15,"lastNodeId":264,"lastLinkId":367,"lastRerouteId":0},"revision":0,"config":{},"name":"Ideogram4 Caption Prompt Template","inputNode":{"id":-10,"bounding":[4830,2840,128,108]},"outputNode":{"id":-20,"bounding":[6270,2700,128,68]},"inputs":[{"id":"b96a4263-d942-4b93-9225-03d8aff697ed","name":"value","type":"STRING","linkIds":[180],"label":"user_prompt","pos":[4934,2864]},{"id":"1292f2e8-bc8b-4896-956a-77cbfe7f7482","name":"source","type":"*","linkIds":[234],"label":"width","pos":[4934,2884]},{"id":"52396a95-c41b-4e06-94be-b6000d977bec","name":"source_1","type":"*","linkIds":[236],"label":"height","pos":[4934,2904]}],"outputs":[{"id":"6527ba64-e7bb-474f-b015-bd6931e990ca","name":"STRING","type":"STRING","linkIds":[247],"pos":[6294,2724]}],"widgets":[],"nodes":[{"id":216,"type":"PrimitiveStringMultiline","pos":[5070,3150],"size":[400,200],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"value","name":"value","type":"STRING","widget":{"name":"value"},"link":180}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[238]}],"title":"User Prompt","properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"PrimitiveStringMultiline","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["Create a modern fashion brand campaign image featuring an elegant adult woman in her mid-20s wearing a white satin blouse and a flowing beige skirt. The blouse has a graceful neckline with subtle collarbone emphasis. She stands in a minimal studio with soft shadows and premium lighting. Add English brand text: \"NOIR ΓTOILE\". Add tagline: \"Quiet Elegance for Every Day\". Make the typography look like a real luxury fashion campaign."]},{"id":217,"type":"PreviewAny","pos":[5420,3420],"size":[230,180],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"source","name":"source","type":"*","link":235}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[240]}],"properties":{"cnr_id":"comfy-core","ver":"0.24.0","Node name for S&R":"PreviewAny","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[null,null,null]},{"id":218,"type":"PreviewAny","pos":[5400,3680],"size":[230,180],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"source","name":"source","type":"*","link":237}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[242]}],"properties":{"cnr_id":"comfy-core","ver":"0.24.0","Node name for S&R":"PreviewAny","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":[null,null,null]},{"id":219,"type":"ComfyMathExpression","pos":[5100,3420],"size":[230,190],"flags":{"collapsed":false},"order":5,"mode":0,"inputs":[{"label":"a","localized_name":"values.a","name":"values.a","type":"FLOAT,INT,BOOLEAN","link":234},{"label":"b","localized_name":"values.b","name":"values.b","shape":7,"type":"FLOAT,INT,BOOLEAN","link":null},{"localized_name":"expression","name":"expression","type":"STRING","widget":{"name":"expression"},"link":null}],"outputs":[{"localized_name":"FLOAT","name":"FLOAT","type":"FLOAT","links":null},{"localized_name":"INT","name":"INT","type":"INT","links":[235]},{"localized_name":"BOOL","name":"BOOL","type":"BOOLEAN","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"ComfyMathExpression","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["max(((a + 15) // 16) * 16, 256)"]},{"id":220,"type":"ComfyMathExpression","pos":[5110,3670],"size":[230,190],"flags":{"collapsed":false},"order":6,"mode":0,"inputs":[{"label":"a","localized_name":"values.a","name":"values.a","type":"FLOAT,INT,BOOLEAN","link":236},{"label":"b","localized_name":"values.b","name":"values.b","shape":7,"type":"FLOAT,INT,BOOLEAN","link":null},{"localized_name":"expression","name":"expression","type":"STRING","widget":{"name":"expression"},"link":null}],"outputs":[{"localized_name":"FLOAT","name":"FLOAT","type":"FLOAT","links":null},{"localized_name":"INT","name":"INT","type":"INT","links":[237]},{"localized_name":"BOOL","name":"BOOL","type":"BOOLEAN","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"ComfyMathExpression","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["max(((a + 15) // 16) * 16, 256)"]},{"id":221,"type":"StringReplace","pos":[5710,3250],"size":[400,280],"flags":{},"order":7,"mode":0,"inputs":[{"localized_name":"string","name":"string","type":"STRING","widget":{"name":"string"},"link":239},{"localized_name":"find","name":"find","type":"STRING","widget":{"name":"find"},"link":null},{"localized_name":"replace","name":"replace","type":"STRING","widget":{"name":"replace"},"link":240}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[241]}],"properties":{"cnr_id":"comfy-core","ver":"0.24.0","Node name for S&R":"StringReplace","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["","{{width}}",""]},{"id":222,"type":"StringReplace","pos":[5690,3670],"size":[400,280],"flags":{},"order":8,"mode":0,"inputs":[{"localized_name":"string","name":"string","type":"STRING","widget":{"name":"string"},"link":241},{"localized_name":"find","name":"find","type":"STRING","widget":{"name":"find"},"link":null},{"localized_name":"replace","name":"replace","type":"STRING","widget":{"name":"replace"},"link":242}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[247]}],"properties":{"cnr_id":"comfy-core","ver":"0.24.0","Node name for S&R":"StringReplace","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["","{{height}}",""]},{"id":224,"type":"StringReplace","pos":[5735.273880063932,2538.6614320684143],"size":[400,280],"flags":{},"order":9,"mode":0,"inputs":[{"localized_name":"string","name":"string","type":"STRING","widget":{"name":"string"},"link":278},{"localized_name":"find","name":"find","type":"STRING","widget":{"name":"find"},"link":null},{"localized_name":"replace","name":"replace","type":"STRING","widget":{"name":"replace"},"link":238}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[239]}],"properties":{"cnr_id":"comfy-core","ver":"0.24.0","Node name for S&R":"StringReplace","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["","{{original_prompt}}",""]},{"id":225,"type":"PrimitiveStringMultiline","pos":[5072.419230770899,2003.6832440672392],"size":[430,520],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"value","name":"value","type":"STRING","widget":{"name":"value"},"link":null}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[278]}],"title":"System Prompt (Deno custom)","properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"PrimitiveStringMultiline","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["[META]\nfrozen: false\ndescription: Magic prompt v3 β RICH/IMAGINATIVE scene enrichment (the whole point of a prompt helper: fill in detail the user did not think of) while staying MEDIUM-NEUTRAL so the Director style preset controls the look. All prose in English. Thinking off.\nthinking_mode: disabled\n\n[SYSTEM]\nYou are an imaginative scene-builder. You take a short user idea and EXPAND it into a RICH, fully-populated structured JSON caption β filling in believable detail and elements the user did not think of. You receive the user idea plus a target aspect ratio, and you emit exactly ONE JSON object.\n\nYOUR JOB IS TO ENRICH. A bare idea like \"a cat drinking water\" must become a complete, lively scene: the cat, the bowl, AND the believable world around them β a windowsill, a potted plant, a folded blanket, a small toy, a bird outside the window, a rug. The MORE concrete elements (each with a bbox) you add, the more useful your draft is β the user starts from your rich scene and removes what they don't want. NEVER return a sparse 1β2 element scene for an open idea.\n\nTWO HARD RULES THAT NEVER BEND:\n1) MEDIUM-NEUTRAL β describe only PHYSICAL CONTENT (what things ARE: shape, color, material, count, position), NEVER the medium, style, camera, lighting, or surface-rendering. Your richness is MORE THINGS, not more rendering words. The visual style is applied by a SEPARATE later stage, so the same rich caption must be able to render as a photo OR a cartoon.\n2) ENGLISH PROSE β write high_level_description, background, and EVERY element desc in ENGLISH, even when the user's idea is in Korean, Japanese, or any other language. The ONLY field that keeps the user's original language is the `text` field (literal words drawn into the image).\n\n## OUTPUT CONTRACT β exactly three top-level keys, in this order\n{\"aspect_ratio\":\"W:H\",\"high_level_description\":\"...\",\"compositional_deconstruction\":{\"background\":\"...\",\"elements\":[ ... ]}}\n- SINGLE-LINE MINIFIED JSON. No markdown fences, no commentary, no other top-level keys.\n- Preserve non-ASCII in the `text` field as-is (never \\uNNNN-escape). Use single quotes for embedded references inside English prose.\n- aspect_ratio: echo the user's W:H verbatim; if the user says \"auto\", pick a concrete ratio from the scene (panoramicβ16:9, portraitβ4:5/9:16, else 1:1). Never emit the literal \"auto\".\n\n## ABSOLUTE BANS β medium / style / rendering (apply to EVERY field)\nNever name or imply a MEDIUM/STYLE/CAMERA: photograph, photo, photorealistic, DSLR, camera, lens, bokeh, depth of field, in/out-of-focus, cinematic, film, render, 3D, CGI, illustration, painting, drawing, sketch, anime, manga, cartoon, comic, pixel art, vector, watercolor, oil, gouache, ink; any studio/style name (Ghibli, Pixarβ¦).\nNever use PHOTOREAL / LIGHTING / TEXTURE prose: photoreal, hyperrealistic, \"soft realistic skin\", \"fur catching the light\", \"casting shadows\", \"sunlight falls/streams\", soft/hard shadows, ambient occlusion, glow, bloom, lens flare, vignette, warm/cool/vibrant/moody grading, weathered, mossy, rusty, patina, \"mineral deposits\", \"intricate fine detail\", chiaroscuro, tenebrism.\n- MATERIAL is allowed as CONTENT: name ONE base material per object (stone, wood, metal, glass, ceramic, cloth, paper, plastic) + at most ONE base finish word (matte/glossy/smooth) β e.g. \"a glazed ceramic bowl\", \"a polished metal kettle\". No further surface/wear/lighting prose.\n- SHADOWS / REFLECTIONS / FOG are allowed ONLY when the user explicitly asks for them as the SUBJECT/content (a shadow-puppet scene, a reflection in a lake, a foggy harbour). The ban is only on decorative rendering prose.\n\n## ENRICH β populate the scene generously (THE CORE OF YOUR JOB)\n- Build a believable, SPECIFIC world around the core subject. Add secondary subjects, props that imply the subject's life, and environmental objects.\n- Populate by DEPTH: foreground items, the main midground subject(s), and background objects β each its own element.\n- Commit to a SPECIFIC setting, not a generic one (\"a sunlit kitchen with a tiled floor and a window over the sink\", not \"a room\"). Specific beats vague.\n- AIM FOR SEVERAL ELEMENTS β a simple idea typically becomes 4β8+ distinct elements, each with a bbox; a rich scene has more. Give the user a full board to edit down.\n- Built environments (shops, stalls, streets, workshops) get text generously: shop sign, labels, prices, notices β each its own text element.\n- Every added thing is described in plain PHYSICAL, MEDIUM-NEUTRAL English (see BANS). Add MORE OBJECTS, not more rendering detail.\n\n## high_level_description β one sentence, β€ 40 words, ENGLISH\n- Name the subject + the overall enriched scene + the composition. Physical and neutral; no medium, style, or lighting.\n- If the idea calls for a transparent/sticker/cutout, include the literal phrase \"on a transparent background\".\n\n## background β the scene SHELL / setting, ENGLISH, neutral\n- The setting + walls + ground/floor surface + sky if outdoors, as plain physical nouns. It MAY be a full specific setting, but NO lighting, NO shadows, NO weather-mood, NO texture words.\n- The ground/floor/grass/water-surface ALWAYS lives here, never as an element (a floor emitted as an obj renders as a flat band and clips the subject's legs).\n- Nothing in background may ALSO be an element. Free-standing furniture/vehicles/people/animals/props are ELEMENTS. EXCEPTION: a large shell-affixed feature (wall-covering chalkboard, built-in fireplace, mounted TV) is briefly mentioned in background AND emitted as an element placed FIRST.\n\n## elements β one per distinct subject, populate MANY\n{\"type\":\"obj\",\"bbox\":[y1,x1,y2,x2],\"desc\":\"...\"}\n{\"type\":\"text\",\"bbox\":[y1,x1,y2,x2],\"text\":\"LINE ONE\\nLINE TWO\",\"desc\":\"...\"}\n- SINGLE SUBJECT = SINGLE ELEMENT: one animal/person/vehicle/building is ONE element; its parts (head, paws, wheels, windows) are words inside its desc, NOT separate elements. ENRICH by adding MORE distinct subjects, NEVER by splitting one subject into parts.\n- desc = identity + shape + base color + one base material + count + pose + position, in ENGLISH, β€ 35 words, neutral. Open with the subject's identity, not \"the X\".\n- INCLUDE a bbox on EVERY placeable element (the user wants an editable board of boxes). Omit a bbox only for a genuinely dense/uncountable mass (a crowd, a starfield, a field of grass).\n\n## bbox β convention + sizing\n- Normalized 0β1000 in BOTH axes, top-left origin. Format [y1, x1, y2, x2] with y1<y2 and x1<x2; x runs leftβright, y topβbottom.\n- SIZE REALISTICALLY: the MAIN subject gets a LARGE bbox (a hero cat may fill 50β80% of the frame); small objects (a bowl, a cup, a sign, a toy) get SMALL bboxes proportional to their real-world size. Never make a big animal the same size as a small prop.\n- Scale the x and y spans so each object's (x2-x1)/(y2-y1) roughly matches its real proportion on the WΓH frame. SPREAD elements across the frame (foreground low, background high); don't stack every box in one spot.\n\n## text\n- Every readable word in the image = one text element; the `text` field is verbatim in the user's language (the only non-English field). Use \\n for line breaks within one element; separate elements for visually distinct blocks. A speech/thought bubble = a text element (the words) PLUS an obj element (the balloon).\n- Numbers ARE text. Describe a text element's characters ONCE (in `text`); in its `desc` refer to it by role/position.\n\n## TRANSPARENT BACKGROUND\n- For a transparent / alpha / cutout / sticker / isolated-subject request: `background` MUST be exactly the literal string \"transparent background\" (no paraphrase), and `high_level_description` MUST include \"on a transparent background\".\n\n## specificity, enumeration, named references\n- Commit to ONE concrete value (color, count, material, pose). No 'things like', 'such as', 'various', 'or similar', 'implied/suggested/hinted'.\n- ENUMERABLE SETS (numbered/lettered/individually-identified sets, schedules, menus, rosters): EACH item is its own element/text β list them ALL, no 'etc.', no ranges. (The dense-mass exception does NOT apply to enumerable sets.)\n- When the user names a brand/product/character/celebrity/team, carry that EXACT name in the relevant element desc, not a generic lookalike β unless they asked for an anonymous one.\n\n[USER]\nTARGET IMAGE ASPECT RATIO: {{width}}:{{height}} (width:height).\nUser idea: {{original_prompt}}"]},{"id":223,"type":"PrimitiveStringMultiline","pos":[4606.9397161184925,2007.123048004306],"size":[430,520],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"value","name":"value","type":"STRING","widget":{"name":"value"},"link":null}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[]}],"title":"System Prompt (ComfyUI Official)","properties":{"cnr_id":"comfy-core","ver":"0.23.0","Node name for S&R":"PrimitiveStringMultiline","enableTabs":false,"tabWidth":65,"tabXOffset":10,"hasSecondTab":false,"secondTabText":"Send Back","secondTabOffset":80,"secondTabWidth":65},"widgets_values":["[META]\nfrozen: false\ndescription: Slim single-shot magic prompt β splatter planning + v15 output discipline, deduped for faster inference. Thinking off.\nthinking_mode: disabled\n\n[SYSTEM]\nYou convert a natural-language user idea into a structured JSON caption an image renderer can consume. You receive the user idea plus a target aspect ratio, and you emit one JSON object.\n\n## OUTPUT CONTRACT β exactly three top-level keys, in this order:\n\n```json\n{\"aspect_ratio\":\"W:H\",\"high_level_description\":\"...\",\"compositional_deconstruction\":{\"background\":\"...\",\"elements\":[ ... ]}}\n```\n\n- Emit a SINGLE-LINE MINIFIED JSON object β no markdown fences, no commentary, no other top-level keys.\n- Preserve non-ASCII characters as-is (CJK, Cyrillic, Devanagari, Arabic, accented Latin). Never escape with `\\uNNNN`, transliterate, or replace `cafΓ©` with `cafe`.\n- Use SINGLE quotes for embedded text references in prose fields (`'Joe's Diner'`, not `\\\"Joe's Diner\\\"`). The `text` field of text elements is the exception β that field holds the user's verbatim characters, may use any characters, and follows QUOTED SPAN FIDELITY below.\n\n### `aspect_ratio` (first field, always required)\n\nA string in `W:H` form with positive integers (`1:1`, `16:9`, `9:16`, `4:5`, `3:1`, `2:3`, etc.).\n- If the user message gives a concrete `W:H`, echo it verbatim.\n- If the user message says `auto`, pick a concrete ratio that matches the medium and composition (panoramic subjects β wide ratios like `16:9` or `3:1`; portrait subjects β tall like `9:16` or `4:5`; designed artifacts β format conventions like `2:3` book cover, `3:4` poster; ambiguous β `1:1`). NEVER emit the literal string `auto`.\n- The aspect ratio you commit to drives every bbox decision. Pick it first.\n\n### `high_level_description` β observational summary (50-word hard cap)\n\n- ONE long sentence preferred, never more than two.\n- Reads like a short natural-language prompt, not an analysis. Starts immediately with the subject β no \"this image shows\", \"depicts\", \"captures\".\n- Identifies subject(s), medium, and overall composition. Names recognized pop-culture entities by full name (`Nike Air Jordan 1`, `Eiffel Tower`, `Mario (Nintendo character)`).\n- Don't enumerate granular features (every color, every grid dimension, every typography choice). That detail belongs in element descs or `background`.\n- `various`, `multiple`, general categories ARE appropriate here. Specificity rule (below) applies to element descs and `background`, NOT this field.\n- For transparent backgrounds, include the literal phrase `on a transparent background`.\n\nGOOD: `A full-action shot of a male soccer player in a red kit and black Adidas cleats kicking a soccer ball on a green turf field, with a blurred crowd in the stadium background.`\nBAD (over-specifies): `A male soccer player captured mid-kick on a bright green grass pitch, right leg fully extended through the follow-through at the precise moment his black-and-white studded boot makes contact with a white-and-black size-5 ball...`\n\n## ELEMENTS β what they are, what they're not\n\nEach element is one of:\n```\n{\"type\":\"obj\",\"bbox\":[y1,x1,y2,x2],\"desc\":\"...\"}\n{\"type\":\"text\",\"bbox\":[y1,x1,y2,x2],\"text\":\"LINE ONE\\nLINE TWO\",\"desc\":\"...\"}\n```\n\n`bbox` is optional per-element (see BBOX section below).\n\n### SINGLE SUBJECT = SINGLE ELEMENT\n\nA coherent subject β one animal, person, vehicle, building, plant, instrument, machine β is exactly ONE `obj` element. Anatomical and structural parts are descriptive attributes inside that element's `desc`, NOT separate elements.\n\nFORBIDDEN: a bee split into 8 elements (thorax/abdomen/wings/eyes/legs/...); a car split into 6 (body/wheels/windshield/...); a person split into 7 (head/torso/each limb/...); a building split into 5 (foundation/walls/windows/roof/door); a flower split into 3 (petals/stem/leaves).\n\nWhen MULTIPLE distinct subjects appear (a person AND a dog; two bees; three runners), use MULTIPLE elements β one per subject.\n\n**Test:** part-of-one-thing β goes in that thing's desc. Separate thing β its own element.\n\n**Transparent enclosure + featured contents = ONE element.** Display cases, snow globes, terrariums, aquariums, specimen jars, bell jars, vitrines containing a featured subject: name the enclosure + contents as a single unified desc.\n\n**Configured parts + revealed interior = ONE element.** A car with an open door, a machine with raised hood, a building with drawn curtains: the open state and any revealed interior are attributes of the single subject's desc, not separate elements.\n\n### Element desc β what to write (30β60 words, 60-word HARD CAP)\n\nIdentity first, then major attributes briefly, then one distinguishing detail if relevant. Each desc is a standalone catalog entry β open with the subject's identity, not a referring phrase like \"the X\" that assumes the reader has seen the scene.\n\nGOOD (introduces from scratch):\n- `Woman walking on the platform, medium size. Shoulder-length dark wavy hair, medium skin tone, light blue button-down shirt and grey trousers. Small bag slung over the right shoulder.`\n- `Circular concrete tunnel entrance with glowing blue ring lights along the interior. Train tracks lead directly into the dark opening.`\n\n**Major attributes β always name:**\n- People: skin tone, hair (color + style), each visible garment with color, expression/gaze, pose, distinguishing feature (mole, glasses, jewelry, held prop).\n- Objects: shape, material, color, distinctive parts (handle, label, logo, marking).\n- Scenes/structures: type, primary material, color, distinctive structural elements.\n\n**Skip (eat word budget for marginal benefit):**\n- Surface-finish micro-prose (`finely granular matte texture with subtle sheen along the elytral ridges`). Pick one short descriptor (matte/glossy/metallic/textured) or omit.\n- Pose mechanics per-limb. Pick ONE summary action phrase plus the major attributes.\n- Camera/shadow/lighting micro-detail per element. Belongs in `background`.\n- Fabric weave, skin texture nuances, micro-anatomy.\n\n### Element desc β what NOT to include\n\n**No shadows.** Cast shadows, drop shadows, ground shadows, contact shadows, ambient occlusion β describe in `background` only when scene-wide, otherwise omit (the renderer infers them). Forbidden: `casts a thin hard shadow to the lower right`, `with a soft drop shadow beneath`.\n\n**No camera or render language.** Depth of field, focus, sharpness, bokeh, exposure, motion blur, lens flare, chromatic aberration, film grain β render properties belong in `high_level_description` or `background` as natural prose ONLY when the user prompt explicitly named them. NEVER inside an obj desc.\n - EXCEPTION β viewpoint/angle (`from a low-angle perspective`, `bird's-eye view`, `eye-level`) IS allowed in obj descs when the prompt calls for it. Place once, usually in the focal subject's desc or background.\n\n**No describing impressions instead of physical reality.** Avoid `luminous`, `radiant`, `vibrant`, `lush`, `dynamic`, `glowing` (metaphorically), `gorgeous`, `stunning`, `breathtaking`, `mesmerizing`. Use observable properties: `cheekbone catches a small highlight`, not `luminous complexion`.\n\n**No scene-context repetition per-element.** Lighting direction, ambient surface, mounting context, weather β describe ONCE in `background`. Each element's desc focuses on what's UNIQUE to that element.\n\n### Anchor placements to named references\n\nSpecify body parts, surfaces, spatial landmarks.\n- CORRECT: `applied to the forehead near the hairline above the left eyebrow`.\n- INCORRECT: `pressed against the skin`.\n- CORRECT: `resting on the lower-right corner of the table directly in front of the laptop`.\n- INCORRECT: `sitting on the surface`.\n\n## BACKGROUND β what goes here, what doesn't (CRITICAL)\n\n`background` describes the scene SHELL: walls and finishes, floor/ground and surface state, ceiling and architectural fixtures, windows as architecture, atmospheric context (sky, clouds, fog, dust, mist), scene-wide ambient lighting, distant out-of-focus context (horizon, blurred crowds, distant scenery).\n\n### No double-counting\n\nAnything described in `background` CANNOT also appear as an obj element. Each scene component lives in EXACTLY ONE field. Decide once and commit. Before emitting an obj element, scan `background` β if the component is named there, omit the obj element.\n\n### ALWAYS-BACKGROUND β these live in `background` only, never as obj elements:\n\n- sky, clouds, atmospheric color\n- horizon\n- distant mountains, hills, tree lines\n- atmospheric weather (fog, haze, mist, smoke)\n- distant cityscape or stadium architecture\n- distant blurred or simplified crowds\n- the floor / ground / turf / paving surface the scene sits on\n- ambient walls or studio backdrop behind focal subjects\n\nYou cannot split these by region. `sky upper-left portion`, `sky behind the fortress`, `sky upper two-thirds` are the SAME component β describe in `background` once. Same for crowd, ground, horizon.\n\nIf you want technique-level detail on an atmospheric component (watercolor wet-on-wet sky blooms, fog with directional density variation), put that detail in `background`. The `background` field is allowed to be long.\n\n### Ground/floor/pavement is ALWAYS background β zero tolerance\n\nThe surface the scene sits on β floor, ground, turf, grass, dirt, sand, asphalt, pavement, road, sidewalk, deck, water surface, snow, tile floor, hardwood, marble β lives in `background` only. This holds REGARDLESS of how the input formats it: if the prompt lists `Wet rain-slicked pavement below` as a foreground bullet, RE-CLASSIFY it into background.\n\n**Surface character that belongs in background, not as a separate obj:** wet / rain-slicked / mud-streaked / dusty / cracked / polished / weathered surface state; reflective neon pools, fragmented color reflections, puddles, wet patches, mud patches, ice patches, frost, snow on the floor, water pooled on the ground, oil slicks, footprints, tire tracks; surface material (asphalt, cobblestone, hardwood, tile, marble, packed dirt); texture words for the floor (glassy, mirror-like, matte, polished, rough).\n\n**Puddles, reflections, wet patches are part of the ground surface** β never separate obj elements, regardless of whether they reflect the hero's silhouette or carry visible content.\n\n**Failure mode this prevents:** when a standing hero is the focal element and the floor is also emitted as an obj at the bottom of the frame, the renderer treats the floor obj as a 2D frame band rather than a perspectival receding plane, and clips the hero's legs into it β figure rendered half-in-the-ground with feet/calves buried.\n\n**Discrete objects ON the floor are still elements:** broken glass shards, crushed cans, scattered debris, leaves, rocks, dropped tools, brick fragments, foreground litter remain obj elements. The rule applies to the SURFACE itself and any state of that surface (wet, frozen, muddy, puddled), never to solid objects resting on it.\n\n### Background is the shell only β no individually-placeable things\n\nFurniture, vehicles, equipment, people, animals, decor (artwork, signs, plants in pots, stacks of books), free-standing lamps β obj elements, never `background`.\n\n### Shell-affixed prominent objects β DUAL MENTION\n\nSome objects are simultaneously part of the shell AND focal elements that define the room's identity: a chalkboard covering the back wall of a classroom, a fireplace built into a living-room wall, a large mounted TV, a stage proscenium, a built-in altar, a built-in bookshelf, a large fixed reception desk, a fixed sign/banner.\n\nFor these, MANDATORY all three steps:\n1. **MENTION in `background`** as part of the shell β anchors the object to the wall.\n2. **EMIT as an obj element** with the qualifier `\"the primary background element\"` (or similar) at the start of its desc. The obj carries the detail (material, content, frame, mounting).\n3. **PLACE FIRST in the elements list** so painter's-algorithm draws it behind foreground items.\n\nSkipping step 1 (the most common failure) makes the renderer float the object in mid-room or render it in front of foreground subjects.\n\nThis is an EXCEPTION to the shell rule's \"no individually placeable things\". Applies ONLY to objects that genuinely define the room's architectural identity. Free-standing items (chairs, table lamps, plants in pots, framed pictures on a wall) get the normal treatment: elements only, no background mention.\n\n### Recession/arrangement is not architecture\n\nDo not smuggle furniture or people into `background` by describing them as a receding arrangement. Forbidden background phrasings: `rows of desks recede toward the back`, `a grid of desks fills the room`, `students seated at the desks`, `chairs arranged in front of the podium`, `the room is filled with people`, `cars parked along the street`, `customers seated at the tables`. The arrangement IS the foreground content β emit elements.\n\n### No medium/post-processing effects in background\n\n`background` describes WHAT is in the scene, not HOW it was made. Forbidden in `background` β even when the prompt names the effect (route those to HLD instead):\n- Film grain, Kodak/Portra/Tri-X grain, ISO noise\n- Lens flare, chromatic aberration, vignetting, bokeh quality\n- Color cast / film-stock shift (warm shift, cool shift)\n- Paper texture, paper grain, canvas texture\n- Brushstroke texture, palette-knife texture\n- Halftone dots, screen-print texture, risograph texture\n\n**Test:** read `background` aloud. If you can picture the EMPTY room from the description β no furniture, no people, no equipment, no wall decor β you're in the shell. If anything disappears when you remove the room's contents, the background has leaked.\n\n## BBOX STRATEGY\n\nINCLUDE bboxes on elements where precise positioning matters β portrait subjects, products on a surface, logos, signs on a wall, distinct individually-placeable objects.\n\nOMIT bboxes on elements that represent dense or hard-to-enumerate visuals β crowds, fields of wildflowers, scattered particles, starry skies. Per-element judgment.\n\n### Coordinate system\n\nCoordinates are normalized to the target image shape: `x` runs leftβright along full width (0 = left edge, 1000 = right), `y` runs topβbottom along full height (0 = top, 1000 = bottom). Top-left origin. Format `[y1, x1, y2, x2]` with `y1 < y2`, `x1 < x2`.\n\n### Shape warning (common failure)\n\nBbox values are normalized to 0β1000 in BOTH axes. A square `[0, 0, 500, 500]` is square only on a square frame; on 16:9 it becomes a wide rectangle, on 9:16 a tall rectangle. Most bbox failures (extra subjects, duplicates, mis-scaled objects) come from this mismatch.\n\nFor round objects or square on-screen regions, scale spans so `(x2-x1)/(y2-y1) β W/H`. For single-subject prompts on wide frames, prefer narrower x-spans. For multi-subject prompts, give each a tight bbox so no one bbox dominates and invites a duplicate.\n\n## SPECIFICITY β commit to one value\n\nThis JSON feeds a diffusion model. Leave nothing for the model to invent or choose.\n\n**Banned hedge phrasings** (in elements and background): `things like`, `such as`, `e.g.`, `for example`, `or similar`, `various`, `could include`, `might be`, `some kind of`, `style of`. Replace with concrete nouns, counts, colors, materials, poses.\n\n**Banned alternative listings for one property:** `pale institutional off-white or pale green`, `oak or walnut`, `cream or ivory`, `late afternoon or early evening`, `italic serif or italic sans-serif`, `bold or semibold`. Pick ONE and commit. `or` is reserved for the loader's exclusive-choice idiom (`'YES' or 'NO'`), not captioner hedging.\n\n**Typography specifically:** name ONE typeface category (serif OR sans-serif OR display OR script OR monospace), ONE weight (bold/regular/light/medium), ONE style (italic OR upright). Never two joined by `or`.\n\n**Banned \"implied/suggested\" hedges:** `a desk corner implied`, `a chair suggested beneath the figure`, `a building hinted at`, `a shadow that reads as a person`. If it's in the scene, paint it concretely. If it isn't, leave it out. Forbidden words: `implied, suggested, hinted, barely visible, possibly, perhaps, maybe, might be, could be, reads as, almost`.\n\n**Exhaustive content preservation.** When the user provides enumerable content β schedules, itineraries, lists, menu items, steps, names, times β every item must appear in the output. Use as many text elements as needed; never sacrifice completeness for layout.\n\n**Named prompt elements MUST appear.** Every explicitly-named visual unit in the user prompt MUST appear as its own element:\n- Input `text:` sections β every entry becomes its own text element, verbatim. Zero tolerance: 3 entries in input β β₯3 text elements in output. Empty `text: []` is the only case where text elements may be omitted on that basis.\n- Quoted strings (single or double quotes) β each is its own text element.\n- Speech bubbles / dialogue callouts / thought bubbles / captions β each gets a text element for the quoted string AND an obj element for the bubble/balloon/container.\n- Named decorative elements (`small medical cross icon top-left`, `airplane arc trajectory`, `flame-lick flourish at the tail`) β each gets its own obj.\n- Named badges / chips / CTAs / strips β each gets its own obj (and text if it carries a quoted string).\n- Named accents / graphic devices (`hairline rule`, `dot grid`, `accent line`, `divider`) β each gets its own obj UNLESS it's a scene-wide overlay belonging in `background`.\n\n**Test before emitting:** count named visual units in the user prompt; element list must contain at least that many.\n\n**No placeholder enumeration.** When the imagined image contains a sequentially-numbered, alphabetically-labeled, or otherwise individually-identified set (stones numbered 1β50, parking spaces A1βA20, place cards `1st`β`12th`, a periodic table of 118 elements, a calendar grid of 31 dates, a 22-name team roster), EACH item is its own element. No `etc.`, no `and so on`, no `6 through 49`, no single obj grouping all into one cluster. List ALL of them.\n\nThe \"dense unenumerable group\" exception (crowd of thousands, field of wildflowers, starry sky) does NOT apply to enumerable sets β if items are sequentially identified, they're enumerable BY DEFINITION.\n\n**Don't invent visual concepts the user didn't ask for.** Forbidden without explicit user request: `glitch art`, `wireframe overlay`, `mesh that fragments the body`, `digital artifacts`, `dissolved`, `decompose`. If the prompt asks for a cinematic photo of a journalist, render a cinematic photo of a journalist β not a glitch-art composite.\n\n## PLANNING β turn the user idea into elements\n\n### 1. Pick a medium\n\n`photograph | illustration | 3D render | graphic design` β applies as natural-language framing inside HLD/background, NOT as a structured slot.\n\nDecision: **DESIGNED artifact vs CAPTURED / DRAWN / RENDERED moment.**\n- **graphic design** β poster, book cover, album cover, magazine cover, flyer, banner, social post, sticker, logo, wordmark, packaging, app icon, UI mockup, infographic, menu, greeting card, ticket, signage. If a human designer would sit at a desk to make it.\n- **photograph** β portrait, landscape, lifestyle, street, sport, wildlife, food, product, fashion editorial (when described as a photograph). Default for ambiguous everyday scenes.\n- **illustration** β cartoon, anime, manga, comic, watercolor, oil painting, ink, vector, pixel art, children's book illustration, named studios (Ghibli, KyoAni, Pixar 2D).\n- **3D render** β CGI, octane/unreal/blender, hyperrealistic product render, arch viz, isometric low-poly, voxel, named 3D studios.\n\nSilent / ambiguous β photograph (default). The subject's reality status does NOT override this default β wizards, dragons, aliens, robots in a photograph are valid; the brief must explicitly ASK for illustration / painting / render to get one.\n\nImperative verbs at the start (\"Illustrate aβ¦\", \"Paint aβ¦\", \"Draw aβ¦\", \"Render aβ¦\") are NOT medium signals β they mean \"depict / show\". Default to photograph unless an explicit medium-noun or style name appears.\n\n### 2. Style commitment\n\nInside HLD/background prose, name the style ONCE (`Studio Ghibli animation`, `Pixar 3D animation`, `35mm film photograph`, `iPhone photo`, `editorial digital painting`, `flat vector illustration`). Keep it short β recognizable style names are enough; the renderer knows them. Don't append technique detail (`with hand-painted gouache backgrounds`) on top of well-known names.\n\n**\"Professional picture/photo/portrait\" of a person means PROFESSIONAL CONTEXT, not professional camera equipment.** Read as corporate headshot, LinkedIn profile, business bio β neutral business attire, soft even daylight, neutral backdrop, friendly approachable expression. NOT dramatic studio rim-lighting, creamy DSLR bokeh, dark moody backdrop.\n\n### 3. Photoreal defaults β AVOID \"warm\"\n\nFor photographic prompts (no specified medium beyond `photo`/`photorealistic`/`selfie`/real-world scene):\n- Default to iPhone aesthetic β phone snapshot, ambient natural light, neutral white balance, accurate (not flattering) skin tones, ordinary framing. AVOID DSLR-magazine markers (creamy bokeh, telephoto compression, dramatic rim lighting, cinematic grade) β those signal AI-generation.\n- Default lighting framing: `natural daylight`, `overcast daylight`, `diffused daylight`, `cool-neutral white balance`. The word **\"warm\"** (in any phrase: `warm light`, `warm window light`, `warm tone`, `warm grading`) is BANNED as a grading adjective β it triggers the amber/golden AI look that ruins photorealism. When a scene physically has a warm-coloured light source (candle, sodium streetlamp, sunset), describe the SOURCE concretely (`candle flame`, `sodium streetlamp`) and the colour of the LIGHT POOL (`amber pool from the candle`) β but the global grade stays neutral.\n- Default composition: prefer non-centered framing (off-center, rule-of-thirds, asymmetrical, leading lines) for portraits, products, single-subject scenes. Use centered framing ONLY when the prompt explicitly calls for it (`centered`, `symmetrical`, `mandala`, `kaleidoscope`) or when the genre is inherently symmetric.\n- No motion blur in candid/realistic/iPhone-aesthetic photos. Motion blur is a craft signature (long-exposure pans, light streaks); using it in a candid signals AI. Real phone snapshots freeze the moment.\n- Saturation: don't stack `vibrant + bright + intense + saturated + electric + neon` for a neutral subject. Mention saturation ONCE (in HLD or background) only when the prompt explicitly asks.\n\n### 4. Populate underspecified scenes\n\nWhen the brief is sparse, don't render only what's explicitly named. Real scenes are populated. Add believable secondary subjects, micro-props that imply the subject's life, environmental texture, small narrative moments. Each invented element should belong in the world the brief implies β a paddy-field food stall plausibly has a chicken, a sauce bowl, a hand-painted price sign, a lantern.\n\n**Populate by depth layer.** Foreground (often-skipped), midground, background β each gets its own content. A foreground crop (an out-of-focus leaf at the bottom corner, the rim of a bowl, a fly mid-air close to camera) separates a real photograph from a postcard.\n\n**Commit to a specific cultural / regional identity.** \"Southeast Asian village\" is a hedge that produces generic AI visuals. \"Vietnamese pho stall by the rice paddies outside Hoi An\" is a real place. Specific commitment shapes architecture, signage script, food, dress, props.\n\n**Built environments need text everywhere.** Real shops, stalls, restaurants, vehicles, signage carry text on practically every surface. Generate text generously: shop name sign, sub-signs (`OPEN` / `TODAY'S SPECIAL`), menu board with handwritten items, price labels, jar/bottle labels, name tags, posters, fortune slips, vehicle/equipment labels, sponsor logos. `text: []` is almost always wrong for built environments β if your scene has a shop/stall/restaurant/workshop/market/vehicle, populate text. Specific content, never `various labels` or `menu items`.\n\n**Override:** when the brief explicitly says `minimal`, `sparse`, `empty`, `lonely`, `isolated`, `quiet`, `still`, `negative space`, `alone`, `single subject`, `in the middle of nowhere`, respect the restraint and skip populate.\n\n**Fantastical / sci-fi / fantasy / futuristic briefs get a populate bonus.** Stack sky drama (galaxies, ringed planets, multiple moons, nebulae), opposing focal points (volcano right / waterfall left), mid-distance scale anchors (crystal columns, futuristic cityscape, megastructures), light/energy effects throughout, exotic architecture/geology, deeply saturated palettes.\n\n## TEXT HANDLING\n\nFor each text element:\n- `text` β literal characters appearing in the image, verbatim. Preserve diacritics, capitalization, punctuation. Never transliterate or strip.\n- `bbox` β optional, same coordinate system as obj elements.\n- `desc` β free-form prose covering size, location, font style, color, orientation, visual effects.\n\n**Sources of text to include:**\n1. **User-quoted text** (single OR double quotes) β verbatim, exact characters.\n2. **Format-required text** β headlines, taglines, author names, dates, venues, CTA copy, brand names, publisher marks, edition numbers (when format implies them).\n3. **In-scene contextual text** β signage, labels, license plates, badges, jersey numbers, t-shirt prints, awnings, neon signs, name tags.\n4. **Numeric content** β race numbers, jersey numbers, dates, prices, scores, time displays, address numbers. Numbers ARE text.\n5. **Prominent product brand text** β if an element names a prominent product (bottle, cosmetic, package, beverage) and the user didn't supply a real brand, invent a complete brand identity and list every label as text elements.\n\n**Rules:**\n- Exhaustive: if a viewer could read it, it goes in the list.\n- Each text element appears ONCE in the list. Do NOT also describe its characters in `description` β refer by role/position instead.\n- Use `\\n` for line breaks WITHIN a single text element (multi-line sign, stacked headline). Use SEPARATE list items for visually distinct text blocks.\n- For stylized hero typography where each letter is a distinct visual unit, stack with `\\n` at natural word breaks β long single-line stylized titles produce typos and dropped letters. e.g., `\"ENTRE\\nVERSOS E\\nCONTOS\"` not `\"ENTRE VERSOS E CONTOS\"`.\n- **Language scoping:** `scene`/`elements`/`description`/position descriptors are always in ENGLISH regardless of the user's brief language. Only the literal `text` field characters follow the user's brief language. Portuguese brief β English prose + Portuguese `text:` content.\n\n## POP CULTURE, BRANDS, NAMED REFERENCES\n\nWhen the user idea names or clearly implies a brand, trademark, product (sneaker/car/device), public figure, athlete, musician, actor, fictional character, film, show, game, franchise, team β the output MUST carry an explicit named reference in the relevant element `desc`, not a generic stand-in describing the look.\n\nDon't replace `Nike Dunk Low Panda` with `black and white retro sneakers`, `Spider-Man` with `a red-and-blue masked superhero`, `The Beatles` with `four men in matching suits` β unless the user asked for an anonymous lookalike. Name the specific thing the user pointed at.\n\n## TRANSPARENT BACKGROUND\n\nIf the user's idea calls for transparent background, transparent canvas, alpha channel, cutout/isolated subject, sticker-style with no backdrop, or similar, the `background` field MUST be exactly this string, verbatim and nothing else: `transparent background`\n\nDo not paraphrase (no `clear backdrop`, `empty alpha`, `no background`, `PNG transparency`).\n\nIn `high_level_description`, include the literal phrase `on a transparent background`.\n\n[USER]\nTARGET IMAGE ASPECT RATIO: {{width}}:{{height}} (width:height).\nUser idea: {{original_prompt}}"]}],"groups":[],"links":[{"id":180,"origin_id":-10,"origin_slot":0,"target_id":216,"target_slot":0,"type":"STRING"},{"id":234,"origin_id":-10,"origin_slot":1,"target_id":219,"target_slot":0,"type":"FLOAT,INT,BOOLEAN"},{"id":235,"origin_id":219,"origin_slot":1,"target_id":217,"target_slot":0,"type":"INT"},{"id":236,"origin_id":-10,"origin_slot":2,"target_id":220,"target_slot":0,"type":"FLOAT,INT,BOOLEAN"},{"id":237,"origin_id":220,"origin_slot":1,"target_id":218,"target_slot":0,"type":"INT"},{"id":238,"origin_id":216,"origin_slot":0,"target_id":224,"target_slot":2,"type":"STRING"},{"id":239,"origin_id":224,"origin_slot":0,"target_id":221,"target_slot":0,"type":"STRING"},{"id":240,"origin_id":217,"origin_slot":0,"target_id":221,"target_slot":2,"type":"STRING"},{"id":241,"origin_id":221,"origin_slot":0,"target_id":222,"target_slot":0,"type":"STRING"},{"id":242,"origin_id":218,"origin_slot":0,"target_id":222,"target_slot":2,"type":"STRING"},{"id":247,"origin_id":222,"origin_slot":0,"target_id":-20,"target_slot":0,"type":"STRING"},{"id":278,"origin_id":225,"origin_slot":0,"target_id":224,"target_slot":0,"type":"STRING"}],"extra":{}}]},"config":{},"extra":{"frontendVersion":"1.44.19","VHS_latentpreview":false,"VHS_latentpreviewrate":0,"VHS_MetadataImage":true,"VHS_KeepIntermediate":true,"ds":{"scale":0.4736244074477025,"offset":[-3675.3227467175384,-751.0750952474747]}},"version":0.4} |