{
  "id": "a28af853-973c-4250-af2a-5f984db2fa5e",
  "revision": 0,
  "last_node_id": 47,
  "last_link_id": 78,
  "nodes": [
    {
      "id": 14,
      "type": "KSamplerSelect",
      "pos": [
        6338.510073663436,
        937.0176541662897
      ],
      "size": [
        270,
        58
      ],
      "flags": {},
      "order": 0,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "SAMPLER",
          "type": "SAMPLER",
          "links": [
            12
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "KSamplerSelect",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": [
        "euler"
      ]
    },
    {
      "id": 12,
      "type": "SamplerCustomAdvanced",
      "pos": [
        6739.145408676732,
        811.0273660796245
      ],
      "size": [
        282.16169253636815,
        134.6880637616041
      ],
      "flags": {},
      "order": 28,
      "mode": 0,
      "inputs": [
        {
          "name": "noise",
          "type": "NOISE",
          "link": 10
        },
        {
          "name": "guider",
          "type": "GUIDER",
          "link": 11
        },
        {
          "name": "sampler",
          "type": "SAMPLER",
          "link": 12
        },
        {
          "name": "sigmas",
          "type": "SIGMAS",
          "link": 22
        },
        {
          "name": "latent_image",
          "type": "LATENT",
          "link": 9
        }
      ],
      "outputs": [
        {
          "name": "output",
          "type": "LATENT",
          "links": [
            13
          ]
        },
        {
          "name": "denoised_output",
          "type": "LATENT",
          "links": null
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "SamplerCustomAdvanced",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": []
    },
    {
      "id": 15,
      "type": "VAEDecode",
      "pos": [
        7080.245930009673,
        581.3880416586325
      ],
      "size": [
        140,
        46
      ],
      "flags": {},
      "order": 29,
      "mode": 0,
      "inputs": [
        {
          "name": "samples",
          "type": "LATENT",
          "link": 13
        },
        {
          "name": "vae",
          "type": "VAE",
          "link": 14
        }
      ],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            65
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "VAEDecode",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": []
    },
    {
      "id": 13,
      "type": "RandomNoise",
      "pos": [
        6387.508467291894,
        772.1125581589587
      ],
      "size": [
        270,
        82
      ],
      "flags": {},
      "order": 1,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "NOISE",
          "type": "NOISE",
          "links": [
            10
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "RandomNoise",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": [
        627981244912110,
        "randomize"
      ]
    },
    {
      "id": 9,
      "type": "CLIPTextEncode",
      "pos": [
        5346.124434390597,
        976.8594494002205
      ],
      "size": [
        400,
        200
      ],
      "flags": {
        "collapsed": true
      },
      "order": 15,
      "mode": 0,
      "inputs": [
        {
          "name": "clip",
          "type": "CLIP",
          "link": 25
        }
      ],
      "outputs": [
        {
          "name": "CONDITIONING",
          "type": "CONDITIONING",
          "links": [
            7
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "CLIPTextEncode",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": [
        ""
      ]
    },
    {
      "id": 7,
      "type": "CLIPLoader",
      "pos": [
        4693.592993081255,
        1035.175138162615
      ],
      "size": [
        394.7942846575397,
        121.2419847891988
      ],
      "flags": {},
      "order": 2,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "CLIP",
          "type": "CLIP",
          "links": [
            24,
            25
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "CLIPLoader",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": [
        "qwen3vl_8b_fp8_scaled.safetensors",
        "ideogram4",
        "default"
      ]
    },
    {
      "id": 16,
      "type": "VAELoader",
      "pos": [
        4723.37768908388,
        1254.3523370027942
      ],
      "size": [
        332.24469282754944,
        89.69875651615166
      ],
      "flags": {},
      "order": 3,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "VAE",
          "type": "VAE",
          "links": [
            14
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "VAELoader",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": [
        "flux2-vae.safetensors"
      ]
    },
    {
      "id": 8,
      "type": "ConditioningZeroOut",
      "pos": [
        5624.626524630309,
        990.8841175996499
      ],
      "size": [
        204.134765625,
        26
      ],
      "flags": {},
      "order": 21,
      "mode": 0,
      "inputs": [
        {
          "name": "conditioning",
          "type": "CONDITIONING",
          "link": 7
        }
      ],
      "outputs": [
        {
          "name": "CONDITIONING",
          "type": "CONDITIONING",
          "links": [
            5
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "ConditioningZeroOut",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": []
    },
    {
      "id": 28,
      "type": "LoadImage",
      "pos": [
        4575.58568121645,
        -359.9992191836151
      ],
      "size": [
        490.70284125867147,
        783.2282658027443
      ],
      "flags": {},
      "order": 4,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": []
        },
        {
          "name": "MASK",
          "type": "MASK",
          "links": null
        }
      ],
      "title": "Optional Reference Image",
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "LoadImage",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": [
        "imported-1779640141404-1779640141447.jpg",
        "image"
      ]
    },
    {
      "id": 22,
      "type": "CLIPLoader",
      "pos": [
        4442.828831813631,
        -642.498443478432
      ],
      "size": [
        394.7942846575397,
        121.2419847891988
      ],
      "flags": {},
      "order": 5,
      "mode": 0,
      "showAdvanced": false,
      "inputs": [],
      "outputs": [
        {
          "name": "CLIP",
          "type": "CLIP",
          "links": [
            26
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.21.0",
        "Node name for S&R": "CLIPLoader",
        "models": [
          {
            "name": "gemma4_e4b_it_fp8_scaled.safetensors",
            "url": "https://huggingface.co/Comfy-Org/gemma-4/resolve/main/text_encoders/gemma4_e4b_it_fp8_scaled.safetensors",
            "directory": "text_encoders"
          }
        ],
        "ue_properties": {
          "widget_ue_connectable": {},
          "version": "7.8",
          "input_ue_unconnectable": {}
        }
      },
      "widgets_values": [
        "gemma4_e4b_it_fp8_scaled.safetensors",
        "stable_diffusion",
        "default"
      ]
    },
    {
      "id": 2,
      "type": "UNETLoader",
      "pos": [
        4102.562501536455,
        586.2197398674165
      ],
      "size": [
        440.5389702472057,
        124.47625880466194
      ],
      "flags": {},
      "order": 6,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "links": [
            60
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "UNETLoader",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": [
        "ideogram\\ideogram4_fp8_scaled.safetensors",
        "default"
      ]
    },
    {
      "id": 3,
      "type": "UNETLoader",
      "pos": [
        4078.072943133638,
        817.6362253430019
      ],
      "size": [
        440.5389702472057,
        124.47625880466194
      ],
      "flags": {},
      "order": 7,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "links": [
            62
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "UNETLoader",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": [
        "ideogram\\ideogram4_unconditional_fp8_scaled.safetensors",
        "default"
      ]
    },
    {
      "id": 38,
      "type": "Ideogram4PromptBuilderKJ",
      "pos": [
        6891.245643047995,
        -566.2295796346436
      ],
      "size": [
        480,
        390
      ],
      "flags": {},
      "order": 23,
      "mode": 4,
      "inputs": [
        {
          "name": "image",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        },
        {
          "name": "import_json",
          "shape": 7,
          "type": "STRING",
          "link": 55
        },
        {
          "name": "bboxes",
          "shape": 7,
          "type": "BOUNDING_BOX",
          "link": null
        },
        {
          "name": "width",
          "type": "INT",
          "widget": {
            "name": "width"
          },
          "link": 57
        },
        {
          "name": "height",
          "type": "INT",
          "widget": {
            "name": "height"
          },
          "link": 58
        }
      ],
      "outputs": [
        {
          "name": "prompt",
          "type": "STRING",
          "links": []
        },
        {
          "name": "preview",
          "type": "IMAGE",
          "links": [
            56
          ]
        },
        {
          "name": "bboxes",
          "type": "BOUNDING_BOX",
          "links": null
        },
        {
          "name": "width",
          "type": "INT",
          "links": null
        },
        {
          "name": "height",
          "type": "INT",
          "links": null
        }
      ],
      "properties": {
        "cnr_id": "comfyui_fearnworksnodes",
        "ver": "0.1.2",
        "Node name for S&R": "Ideogram4PromptBuilderKJ",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        },
        "dockPinned": true,
        "dockGraph": {
          "x": -13.26262735082777,
          "y": 414.8033112553567,
          "w": 497,
          "h": 479
        },
        "docked": true,
        "dockMin": false,
        "textSize": 8,
        "boxOpacity": 0
      },
      "widgets_values": [
        768,
        1368,
        "A high-end commercial macro-photograph of a glowing frosted glass perfume bottle.",
        "perfectly smooth, seamless dark gray studio backdrop",
        "none",
        "",
        "",
        "",
        "",
        "",
        25,
        "when empty",
        ""
      ],
      "ideo": {
        "boxes": [],
        "palette": [],
        "importMode": "when empty",
        "dock": {
          "pinned": true,
          "graph": {
            "x": -13.26262735082777,
            "y": 414.8033112553567,
            "w": 497,
            "h": 479
          },
          "panelH": 150,
          "min": false
        }
      }
    },
    {
      "id": 39,
      "type": "PreviewImage",
      "pos": [
        7527.703360742153,
        -567.5185280876013
      ],
      "size": [
        439.8696097888742,
        763.3226162087474
      ],
      "flags": {},
      "order": 26,
      "mode": 4,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 56
        }
      ],
      "outputs": [],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "PreviewImage",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": []
    },
    {
      "id": 43,
      "type": "PreviewImage",
      "pos": [
        7398.241329188499,
        427.0783411132016
      ],
      "size": [
        844.5557963752481,
        567.366336999528
      ],
      "flags": {},
      "order": 30,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 65
        }
      ],
      "outputs": [],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "PreviewImage",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": []
    },
    {
      "id": 24,
      "type": "PreviewAny",
      "pos": [
        6075.501959190893,
        -517.9364875444164
      ],
      "size": [
        621.2030027685632,
        686.7053153829826
      ],
      "flags": {
        "collapsed": false
      },
      "order": 22,
      "mode": 0,
      "inputs": [
        {
          "name": "source",
          "type": "*",
          "link": 28
        }
      ],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": []
        }
      ],
      "title": "Preview Gemma JSON v10 — must start with {",
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.21.0",
        "Node name for S&R": "PreviewAny",
        "ue_properties": {
          "widget_ue_connectable": {},
          "version": "7.8",
          "input_ue_unconnectable": {}
        }
      },
      "widgets_values": [
        null,
        null,
        null
      ]
    },
    {
      "id": 41,
      "type": "LoraLoaderModelOnly",
      "pos": [
        4711.075657169534,
        786.1535129975318
      ],
      "size": [
        404.28719655493296,
        129.25982419207594
      ],
      "flags": {},
      "order": 18,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 62
        }
      ],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "links": [
            63
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "LoraLoaderModelOnly",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": [
        "zjourneyv2.safetensors",
        0.4
      ]
    },
    {
      "id": 40,
      "type": "LoraLoaderModelOnly",
      "pos": [
        4704.296371295784,
        566.7051113977323
      ],
      "size": [
        404.28719655493296,
        129.25982419207594
      ],
      "flags": {},
      "order": 17,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 60
        }
      ],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "links": [
            66
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "LoraLoaderModelOnly",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": [
        "zjourneyv2.safetensors",
        0.4
      ]
    },
    {
      "id": 44,
      "type": "CFGOverride",
      "pos": [
        5571.732911009755,
        364.99226862762697
      ],
      "size": [
        270,
        106
      ],
      "flags": {},
      "order": 25,
      "mode": 4,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 66
        }
      ],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "links": [
            67
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "CFGOverride",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": [
        3,
        0.7,
        1
      ]
    },
    {
      "id": 1,
      "type": "DualModelGuider",
      "pos": [
        5845.1705307746915,
        709.2760484763744
      ],
      "size": [
        426.7494303321746,
        191.53445643071313
      ],
      "flags": {
        "collapsed": false
      },
      "order": 27,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 67
        },
        {
          "name": "positive",
          "type": "CONDITIONING",
          "link": 4
        },
        {
          "name": "model_negative",
          "shape": 7,
          "type": "MODEL",
          "link": 63
        },
        {
          "name": "negative",
          "shape": 7,
          "type": "CONDITIONING",
          "link": 5
        }
      ],
      "outputs": [
        {
          "name": "GUIDER",
          "type": "GUIDER",
          "links": [
            11
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "DualModelGuider",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": [
        4
      ]
    },
    {
      "id": 4,
      "type": "CLIPTextEncode",
      "pos": [
        5272.236945974698,
        562.9493522832389
      ],
      "size": [
        440.962932238599,
        358.61255287913514
      ],
      "flags": {},
      "order": 24,
      "mode": 0,
      "inputs": [
        {
          "name": "clip",
          "type": "CLIP",
          "link": 24
        },
        {
          "name": "text",
          "type": "STRING",
          "widget": {
            "name": "text"
          },
          "link": 78
        }
      ],
      "outputs": [
        {
          "name": "CONDITIONING",
          "type": "CONDITIONING",
          "links": [
            4
          ]
        }
      ],
      "title": "TEXT ONLY",
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "CLIPTextEncode",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": [
        "{\n  \"high_level_description\": \"A 3-panel vertical comic book page featuring Character Leo. Character Leo is a 25-year-old man with messy black hair, wearing an olive green tactical jacket.\",\n  \"style_description\": {\n    \"aesthetics\": \"modern comic book art, graphic novel, dynamic camera angles, detailed ink outlines\",\n    \"lighting\": \"dramatic cinematic shadows, high contrast\",\n    \"medium\": \"illustration\",\n    \"art_style\": \"comic book\",\n    \"color_palette\": [\"#1A1A1A\", \"#FFFFFF\", \"#556B2F\", \"#FF4500\", \"#F5F5DC\"]\n  },\n  \"compositional_deconstruction\": {\n    \"background\": \"A white comic book page with thick black panel borders separating the scenes.\",\n    \"elements\": [\n      {\n        \"type\": \"obj\",\n        \"bbox\": [3, 4],\n        \"desc\": \"Panel 1: Wide shot. Character Leo stands in a dark, rainy cyberpunk alleyway, looking over his shoulder in suspense.\",\n        \"color_palette\": [\"#1A1A1A\", \"#556B2F\", \"#FFFFFF\"]\n      },\n      {\n        \"type\": \"obj\",\n        \"bbox\": [4-6],\n        \"desc\": \"Panel 2: Close-up. Character Leo's face, showing intense determination and sweat. A glowing red neon sign reflects in his eyes.\",\n        \"color_palette\": [\"#FF4500\", \"#F5F5DC\"]\n      },\n      {\n        \"type\": \"text\",\n        \"bbox\": [9-12],\n        \"text\": \"I FOUND IT.\",\n        \"desc\": \"A classic comic book speech bubble with bold black text on a white background, pointing toward Character Leo.\",\n        \"color_palette\": [\"#FFFFFF\", \"#1A1A1A\"]\n      },\n      {\n        \"type\": \"obj\",\n        \"bbox\": [4, 7],\n        \"desc\": \"Panel 3: Dutch angle action shot. Character Leo sprinting forward toward the camera, breaking through a wooden door, splinters flying everywhere.\",\n        \"color_palette\": [\"#556B2F\", \"#1A1A1A\"]\n      }\n    ]\n  }\n}"
      ]
    },
    {
      "id": 10,
      "type": "Ideogram4Scheduler",
      "pos": [
        6148.0311750524725,
        1094.7392175929408
      ],
      "size": [
        270,
        154
      ],
      "flags": {},
      "order": 19,
      "mode": 0,
      "inputs": [
        {
          "name": "width",
          "type": "INT",
          "widget": {
            "name": "width"
          },
          "link": 74
        },
        {
          "name": "height",
          "type": "INT",
          "widget": {
            "name": "height"
          },
          "link": 75
        }
      ],
      "outputs": [
        {
          "name": "SIGMAS",
          "type": "SIGMAS",
          "links": [
            22
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "Ideogram4Scheduler",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": [
        20,
        1024,
        1024,
        0,
        1.75
      ]
    },
    {
      "id": 26,
      "type": "Note",
      "pos": [
        1309.2852225922202,
        -386.89814847758817
      ],
      "size": [
        726.0705750741436,
        758.8356216891839
      ],
      "flags": {},
      "order": 8,
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "title": "TEXT",
      "properties": {
        "ue_properties": {
          "widget_ue_connectable": {},
          "version": "7.8",
          "input_ue_unconnectable": {}
        }
      },
      "widgets_values": [
        "<|turn>system\nYou are an Ideogram 4 JSON prompt writer inside ComfyUI.\n\nYour task is to convert USER BRIEF into one strong, production-ready Ideogram 4 JSON prompt.\n\nReturn only one valid JSON object.\nThe first character must be { and the last character must be }.\nNo markdown, no explanation, no notes, no code fence.\n\nUse exactly these top-level keys:\n1. \"high_level_description\"\n2. \"style_description\"\n3. \"compositional_deconstruction\"\n\nRules:\n- \"style_description\" must be an object.\n- \"background\" must be a string.\n- Use one \"elements\" array only.\n- Element \"type\" must be only \"obj\" or \"text\".\n- Every bbox must be exactly four integers in this order: [y_min, x_min, y_max, x_max].\n- All bbox values must be between 0 and 1000.\n- Every color_palette must be an array of 3 to 6 uppercase hex colors.\n- For realistic/product/portrait/lifestyle images, use style_description keys in this order:\n  \"aesthetics\", \"lighting\", \"photo\", \"medium\", \"color_palette\"\n- For graphic/stylized/thumbnail/poster/illustration images, use:\n  \"aesthetics\", \"lighting\", \"medium\", \"art_style\", \"color_palette\"\n\nImportant behavior:\n- Preserve important concrete details from USER BRIEF.\n- Do not simplify away important subject, material, orientation, environment, lighting, text, or composition details.\n- Use positive visual wording.\n- Use 1 to 4 important elements only.\n- Use broad clean bboxes.\n\nExact text rule:\n- Visible text is OFF by default.\n- Only create a text element when USER BRIEF contains:\n  TEXT_EXACT: ...\n  LABEL_TEXT: ...\n  HEADLINE_TEXT: ...\n  CAPTION_TEXT: ...\n- If exact text is not provided, do not create any text element.\n- Every text element must include:\n  \"type\", \"bbox\", \"text\", \"desc\", \"color_palette\"\n- Never invent text.\n\nProduct rule:\n- If USER BRIEF is a product shot, write a product-photography prompt, not a generic caption.\n- For a single product shot, create one single hero product.\n- Preserve product shape, material, orientation, cap/top, front face, label panel, liquid/refraction, reflections, and environment when given.\n- If exact label text is present, place it directly on the visible front label panel inside the product bbox.\n\nBefore output, silently verify:\n- valid JSON\n- correct schema\n- every text element has a non-empty \"text\" field\n- important details from USER BRIEF are preserved\n<turn|>\n<|turn>user\nUSER BRIEF:\nPhoto selfie. Create a realistic vertical photo collage of two selfies of the same girl, as if she is lying on a bed and filming herself with the front camera of her phone. Use the face, appearance, facial features, eye color, lip shape, hairstyle and general type of the girl strictly according to the uploaded photo reference, maintaining recognizability.\nImage format: vertical collage of 2 frames one above the other, without borders between photos, aspect ratio approximately 3:4. Both frames should look like real selfies taken in the same room, at the same time.\nScene: the girl is lying on her back on the bed, head on a pillow, the camera is located slightly above the face and directed downwards at a slight angle. In the background a soft white or light pillow and bedding with a cute repeating Hello Kitty / kawaii style print, small cartoon cats and pink details. On the right in the frame, a purple-pink neon light or nightlight is visible, creating soft purple/pink glow lighting. The room is darkened, evening atmosphere, cozy bedroom selfie aesthetic.\nAppearance and style:\na girl with loose shiny hair, hair is loose and lies on the shoulders and pillow. Glamorous makeup: even skin tone, well-groomed eyebrows, long eyelashes, black eyeliner, glowing eyeshadow in the inner corner of the eyes, light contouring, blush, glossy nude-pink lips. Skin is smooth but realistic, without plastic texture. On the neck is a thin chain with a paw-shaped pendant decorated with rhinestones. The girl is wearing a pink tight-fitting top with thin straps or a deep neckline, visible neckline, feminine glam look, but without excessive openness.\nFirst upper frame:\nthe girl looks straight into the camera with a calm, confident look. One hand is raised to the hair at the head, fingers lightly touching the hair. Nails are long, almond or coffin shape, light nude / french manicure. Face centered in frame, shoulders and top of top visible. Facial expression is neutral, lips slightly relaxed and glossy.\nSecond lower frame:\nthe same girl in the same pose and setting, but a slightly different angle. She looks to the side, not straight into the camera, looking to the right or sideways. One hand is raised to the face, the index finger gently touches the lower lip. The nails are the same long and light. Facial expression is thoughtful, glamorous, soft seductive but natural. The paw pendant and pink top are again clearly visible.\nLighting:\nsoft dimmed light from the phone in front, mixed with purple-pink lighting on the right. Light shadows on the face, realistic night shot, a little grain like a smartphone front camera, low light selfie, subtle digital noise, soft focus, not studio lighting.\nCamera and quality:\nrealistic selfie on a smartphone, front camera, slight wide-angle perspective, face close to camera, natural proportions, realistic skin, high detail, glossy lips, clear makeup, soft background focus. Instagram / Telegram selfie aesthetic, 2020s glam bedroom photo.\nImportant:\nkeep the individuality of the girl from the photo reference, do not change her face to another. Do not make the style cartoonish, 3D, anime or fashion editorial. The photo should look like a real home selfie taken on a phone.\n<turn|>\n<|turn>model"
      ],
      "color": "#432",
      "bgcolor": "#653"
    },
    {
      "id": 27,
      "type": "Note",
      "pos": [
        2085.3925888123304,
        -379.84944104326223
      ],
      "size": [
        773.9736845488792,
        721.2345739956952
      ],
      "flags": {},
      "order": 9,
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "title": "Image",
      "properties": {
        "ue_properties": {
          "widget_ue_connectable": {},
          "version": "7.8",
          "input_ue_unconnectable": {}
        }
      },
      "widgets_values": [
        "<|turn>system\nYou are a senior commercial art director and Ideogram 4 JSON compiler running inside ComfyUI.\n\nComfyUI controls canvas size. Do not add width, height, resolution, aspect_ratio, or pixel-size fields. Use Ideogram normalized bbox coordinates only.\n\nYour job is to convert USER BRIEF plus the optional connected image into ONE production-ready Ideogram 4 structured JSON caption.\n\nOUTPUT CONTRACT:\n- Output raw JSON only.\n- The first generated character must be { and the last generated character must be }.\n- No markdown, no code fences, no explanation, no preface, no notes.\n- Use valid JSON with double quotes, no comments, no trailing commas.\n- Output exactly these top-level keys in this order:\n  \"high_level_description\", \"style_description\", \"compositional_deconstruction\".\n\nSILENT METHOD:\n1. Identify the job type: photo, UGC, product photo, portrait, food, vehicle, architecture, interior, landscape, poster, thumbnail, logo/typography, illustration, 3D render, UI, abstract, or image-reference remake.\n2. Build the image around one clear hero idea.\n3. Choose a strong visual recipe: subject, action/pose, environment, camera/perspective, lighting, material/texture, color palette, and composition.\n4. Use broad layout boxes for important objects. Do not over-box every small detail.\n5. Add visible text only when explicitly authorized by the user.\n6. Keep the final JSON specific, vivid, commercial, and safe for a general audience.\n\nREFERENCE IMAGE RULE:\n- If a connected image is present and USER BRIEF says reference image, loaded image, similar to image, image reference, match style, preserve composition, or copy layout, analyze the image and preserve only the broad visual recipe: subject category, composition, crop, perspective, lighting direction, color mood, depth of field, materials, texture, and pose/action energy.\n- Do not copy exact faces, identities, logos, watermarks, signatures, copyrighted characters, celebrity likenesses, or exact text from the image.\n- If USER BRIEF does not ask to use the connected image, ignore the image and follow the text brief.\n\nTEXT LOCK:\n- Visible readable text is OFF by default.\n- Quoted words alone are NOT enough to create text.\n- Create \"text\" elements only when USER BRIEF explicitly uses one of these patterns:\n  TEXT_EXACT: phrase\n  TEXT_EXACT_1: phrase\n  TEXT_EXACT_2: phrase\n  text must read exactly \"phrase\"\n  label must read exactly \"phrase\"\n  title must read exactly \"phrase\"\n- If no exact text is authorized, do not create any text elements.\n- If the image contains a product, package, label, sign, poster, book, screen, box, or UI and no exact text is authorized, describe the visible surfaces as clean, blank, unmarked, and design-ready.\n- If exact text is authorized, create one text element per exact phrase and no extra text elements.\n- Preserve exact spelling, capitalization, punctuation, spaces, numbers, and symbols.\n- Text bboxes must be wide enough for horizontal words. The width must be at least 2.5 times the height.\n- For product labels, place the text on a clean reserved label area and describe it as the single readable phrase, printed on the surface, with surrounding surfaces blank.\n\nIDEOGRAM 4 SCHEMA:\n- \"style_description\" must be an object, never a string.\n- For photo/realistic/UGC/product photo/portrait/food/vehicle/architecture/interior:\n  key order is \"aesthetics\", \"lighting\", \"photo\", \"medium\", \"color_palette\".\n  \"medium\" should be \"photograph\".\n- For poster/thumbnail/logo/typography/illustration/anime/3D/UI/icon/sticker:\n  key order is \"aesthetics\", \"lighting\", \"medium\", \"art_style\", \"color_palette\".\n- Use exactly one of \"photo\" or \"art_style\", never both.\n- \"compositional_deconstruction\" must be an object with \"background\" first and \"elements\" second.\n- \"background\" must be a rich environment description string.\n- \"elements\" must be one array.\n- Allowed element types are only \"obj\" and \"text\".\n- Object element key order: \"type\", \"bbox\", \"desc\", \"color_palette\".\n- Text element key order: \"type\", \"bbox\", \"text\", \"desc\", \"color_palette\".\n- Every bbox must be exactly four integers in this order: [y_min, x_min, y_max, x_max].\n- All bbox values must be between 0 and 1000.\n- Every color_palette must be an array of uppercase \"#RRGGBB\" hex colors.\n\nQUALITY RULES:\n- Avoid weak generic phrases such as \"nice\", \"beautiful\", \"high quality\" alone. Replace them with concrete visual details.\n- Use the style fields for medium, lens/camera, lighting, rendering, material, color, and mood.\n- Use element descriptions for shape, pose, scale, orientation, texture, surface, reflection, placement, and interaction.\n- Keep descriptions dense but readable. Do not make the JSON bloated.\n- For product images: specify hero angle, material, silhouette, reflection, label area, surface, and background.\n- For portraits/UGC: use adult subject, safe neutral styling, natural expression, believable environment, realistic texture.\n- For thumbnails/posters: specify hero subject, title area, contrast, negative space, typography placement, and readability.\n\nBBOX PLANNER:\n- Centered hero subject: [120, 200, 880, 800]\n- Product hero center: [140, 290, 850, 710]\n- Product label text: [430, 330, 540, 670]\n- Left hero + right text: hero [120, 50, 900, 460], text [140, 500, 650, 950]\n- Right hero + left text: hero [120, 540, 900, 950], text [140, 50, 650, 500]\n- Top headline: [60, 100, 180, 900]\n- Bottom caption/CTA: [760, 130, 930, 870]\n- Portrait/UGC subject: [90, 170, 900, 830]\n- Foreground food/object: [180, 180, 850, 820]\n- Full background is described in \"background\", not as a separate element unless the user asks for a distinct background object.\n\nFINAL CHECK BEFORE OUTPUT:\n- JSON parses.\n- No extra keys.\n- No invented readable text.\n- No invalid bbox like [16], [8-11], or [17-20].\n- No \"subject\", \"title\", \"subtitle\", \"text_elements\", \"z_index\", \"layer\", \"foreground\", \"resolution\", \"width\", or \"height\" keys.\n- If exact text is authorized, the text bbox is wide and the object desc reserves a clean area for it.\n<turn|>\n<|turn>user\n<|image|>\nUSER BRIEF:\nCreate a similar original image from the loaded reference image. Preserve the broad composition, lighting, color mood, camera angle, material texture, and overall aesthetic. TEXT_EXACT: NONE\n\nReturn one valid Ideogram 4 JSON object only.\n<turn|>\n<|turn>model\n"
      ],
      "color": "#432",
      "bgcolor": "#653"
    },
    {
      "id": 45,
      "type": "Note",
      "pos": [
        2909.8162059951605,
        -376.7044800361641
      ],
      "size": [
        773.9736845488792,
        721.2345739956952
      ],
      "flags": {},
      "order": 10,
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "title": "Storyboard Horizontal",
      "properties": {
        "ue_properties": {
          "widget_ue_connectable": {},
          "version": "7.8",
          "input_ue_unconnectable": {}
        }
      },
      "widgets_values": [
        "<|turn>system\nYou are an Ideogram 4 storyboard JSON compiler inside ComfyUI.\n\nYour task is to convert USER BRIEF into ONE valid Ideogram 4 structured JSON prompt for a storyboard or comic-style multi-panel page.\n\nComfyUI controls image size and workflow settings. Do not mention resolution, aspect ratio, width, height, seed, sampler, or workflow nodes inside the JSON.\n\nReturn raw JSON only.\nThe first character must be { and the last character must be }.\nNo markdown, no explanation, no notes, no code fences, no status text.\n\nUSE EXACTLY THESE TOP-LEVEL KEYS:\n1. \"high_level_description\"\n2. \"style_description\"\n3. \"compositional_deconstruction\"\n\nSCHEMA RULES:\n- \"style_description\" must be an object.\n- \"background\" must be a string.\n- Use one \"elements\" array only.\n- Every element type must be only \"obj\" or \"text\".\n- Every bbox must be exactly four integers in this order:\n  [y_min, x_min, y_max, x_max]\n- All bbox values must be between 0 and 1000.\n- Every color_palette must be an array of 3 to 6 uppercase hex colors.\n- Do not create fields named text_elements, subject, title, subtitle, z_index, layer, foreground, negative_prompt, resolution, width, height, or aspect_ratio.\n- Object element key order:\n  \"type\", \"bbox\", \"desc\", \"color_palette\"\n- Text element key order:\n  \"type\", \"bbox\", \"text\", \"desc\", \"color_palette\"\n\nSTORYBOARD GOAL:\nCreate a clean storyboard page that clearly shows sequential story beats.\nThe page must read clearly from top to bottom, or left to right then top to bottom, depending on panel count.\nEach panel must be easy to read and must not overlap other panels.\n\nSTYLE MODE:\nFor storyboard/comic pages, use style_description keys in this order:\n\"aesthetics\", \"lighting\", \"medium\", \"art_style\", \"color_palette\"\n\nSet:\n- \"medium\" to \"illustration\"\n- \"art_style\" to a storyboard / comic / concept-art appropriate description based on USER BRIEF\n\nCHARACTER CONSISTENCY:\n- If recurring characters appear, define them once in \"high_level_description\" with short identity notes.\n- Then refer to them by the same names in each panel description.\n- Do not fully re-describe the same character in every panel.\n- Preserve wardrobe, silhouette, and role continuity unless USER BRIEF asks for a change.\n\nPANEL DESIGN RULES:\n- Build a page with 3 to 8 panels depending on USER BRIEF.\n- Use non-overlapping bboxes.\n- Leave visible gutters/borders between panels.\n- Describe each panel clearly with:\n  shot type + action + emotion + environment + continuity\n- Keep each panel desc compact and visual.\n- Do not overload a panel with too many actions.\n- Prefer simple readable staging over chaotic scenes.\n- If the user gives exact story beats, assign one beat per panel in order.\n- If the user gives only a short story, break it into logical sequential beats automatically.\n\nTEXT RULES:\n- Visible in-image text is OFF by default.\n- Only create text elements if USER BRIEF explicitly asks for visible text such as narration, caption, speech bubble words, title, or panel labels.\n- If exact visible text is requested, preserve exact spelling.\n- If no exact text is requested, do not create text elements.\n\nBACKGROUND RULE:\n- \"background\" should describe the storyboard page itself, such as a clean white page with black panel borders and gutters, or another page style requested by USER BRIEF.\n\nPANEL LAYOUT GUIDE:\nUse these as starting layouts.\n\nFor 3 vertical panels:\n- Panel 1: [40, 60, 300, 940]\n- Panel 2: [350, 60, 610, 940]\n- Panel 3: [660, 60, 920, 940]\n\nFor 4 panels (2x2):\n- Panel 1: [40, 60, 450, 470]\n- Panel 2: [40, 530, 450, 940]\n- Panel 3: [540, 60, 950, 470]\n- Panel 4: [540, 530, 950, 940]\n\nFor 6 panels (2 columns x 3 rows):\n- Panel 1: [40, 60, 290, 470]\n- Panel 2: [40, 530, 290, 940]\n- Panel 3: [350, 60, 600, 470]\n- Panel 4: [350, 530, 600, 940]\n- Panel 5: [660, 60, 910, 470]\n- Panel 6: [660, 530, 910, 940]\n\nFor 5 panels or 7–8 panels:\n- Create a logical non-overlapping grid with consistent gutters.\n- Keep reading order clear.\n\nSHOT LANGUAGE:\nUse clear cinematic language such as:\n- wide shot\n- medium shot\n- close-up\n- over-the-shoulder\n- low angle\n- high angle\n- insert shot\n- reaction shot\n\nQUALITY METHOD:\nSilently plan before output:\n1. Identify the story type.\n2. Extract recurring characters, setting, and key beats.\n3. Decide panel count.\n4. Choose a clean panel layout.\n5. Write one panel action per object element in order.\n6. Keep continuity clear.\n7. Output only valid JSON.\n\n<turn|>\n<|turn>user\nUSER BRIEF:\n[PASTE YOUR STORY OR STORYBOARD REQUEST HERE]\n\nReturn one valid JSON object only.\n<turn|>\n<|turn>model"
      ],
      "color": "#432",
      "bgcolor": "#653"
    },
    {
      "id": 46,
      "type": "Note",
      "pos": [
        3710.6967644969673,
        -376.80060578412093
      ],
      "size": [
        773.9736845488792,
        721.2345739956952
      ],
      "flags": {},
      "order": 11,
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "title": "Storyboard Vertical (1195x1673)",
      "properties": {
        "ue_properties": {
          "widget_ue_connectable": {},
          "version": "7.8",
          "input_ue_unconnectable": {}
        }
      },
      "widgets_values": [
        "<|turn>system\nYou are an Ideogram 4 storyboard JSON compiler inside ComfyUI.\n\nYour task is to convert USER BRIEF into ONE valid Ideogram 4 structured JSON prompt for a storyboard or comic-style multi-panel page.\n\nComfyUI controls image size and workflow settings. Do not mention resolution, aspect ratio, width, height, seed, sampler, or workflow nodes inside the JSON.\n\nReturn raw JSON only.\nThe first character must be { and the last character must be }.\nNo markdown, no explanation, no notes, no code fences, no status text.\n\nUSE EXACTLY THESE TOP-LEVEL KEYS:\n1. \"high_level_description\"\n2. \"style_description\"\n3. \"compositional_deconstruction\"\n\nSCHEMA RULES:\n- \"style_description\" must be an object.\n- \"background\" must be a string.\n- Use one \"elements\" array only.\n- Every element type must be only \"obj\" or \"text\".\n- Every bbox must be exactly four integers in this order:\n  [y_min, x_min, y_max, x_max]\n- All bbox values must be between 0 and 1000.\n- Every color_palette must be an array of 3 to 6 uppercase hex colors.\n- Do not create fields named text_elements, subject, title, subtitle, z_index, layer, foreground, negative_prompt, resolution, width, height, or aspect_ratio.\n- Object element key order:\n  \"type\", \"bbox\", \"desc\", \"color_palette\"\n- Text element key order:\n  \"type\", \"bbox\", \"text\", \"desc\", \"color_palette\"\n\nSTORYBOARD GOAL:\nCreate a clean storyboard page that clearly shows sequential story beats.\nThe page must read clearly from top to bottom, or left to right then top to bottom, depending on panel count.\nEach panel must be easy to read and must not overlap other panels.\n\nSTYLE MODE:\nFor storyboard/comic pages, use style_description keys in this order:\n\"aesthetics\", \"lighting\", \"medium\", \"art_style\", \"color_palette\"\n\nSet:\n- \"medium\" to \"illustration\"\n- \"art_style\" to a storyboard / comic / concept-art appropriate description based on USER BRIEF\n\nCHARACTER CONSISTENCY:\n- If recurring characters appear, define them once in \"high_level_description\" with short identity notes.\n- Then refer to them by the same names in each panel description.\n- Do not fully re-describe the same character in every panel.\n- Preserve wardrobe, silhouette, and role continuity unless USER BRIEF asks for a change.\n\nPANEL DESIGN RULES:\n- Build a page with 3 to 8 panels depending on USER BRIEF.\n- Use non-overlapping bboxes.\n- Leave visible gutters/borders between panels.\n- Describe each panel clearly with:\n  shot type + action + emotion + environment + continuity\n- Keep each panel desc compact and visual.\n- Do not overload a panel with too many actions.\n- Prefer simple readable staging over chaotic scenes.\n- If the user gives exact story beats, assign one beat per panel in order.\n- If the user gives only a short story, break it into logical sequential beats automatically.\n\nTEXT RULES:\n- Visible in-image text is OFF by default.\n- Only create text elements if USER BRIEF explicitly asks for visible text such as narration, caption, speech bubble words, title, or panel labels.\n- If exact visible text is requested, preserve exact spelling.\n- If no exact text is requested, do not create text elements.\n\nBACKGROUND RULE:\n- \"background\" should describe the storyboard page itself, such as a clean white page with black panel borders and gutters, or another page style requested by USER BRIEF.\n\nPANEL LAYOUT GUIDE:\nUse these as starting layouts.\n\nFor 3 vertical panels:\n- Panel 1: [40, 60, 300, 940]\n- Panel 2: [350, 60, 610, 940]\n- Panel 3: [660, 60, 920, 940]\n\nFor 4 panels (2x2):\n- Panel 1: [40, 60, 450, 470]\n- Panel 2: [40, 530, 450, 940]\n- Panel 3: [540, 60, 950, 470]\n- Panel 4: [540, 530, 950, 940]\n\nFor 6 panels (2 columns x 3 rows):\n- Panel 1: [40, 60, 290, 470]\n- Panel 2: [40, 530, 290, 940]\n- Panel 3: [350, 60, 600, 470]\n- Panel 4: [350, 530, 600, 940]\n- Panel 5: [660, 60, 910, 470]\n- Panel 6: [660, 530, 910, 940]\n\nFor 5 panels or 7–8 panels:\n- Create a logical non-overlapping grid with consistent gutters.\n- Keep reading order clear.\n\nSHOT LANGUAGE:\nUse clear cinematic language such as:\n- wide shot\n- medium shot\n- close-up\n- over-the-shoulder\n- low angle\n- high angle\n- insert shot\n- reaction shot\n\nQUALITY METHOD:\nSilently plan before output:\n1. Identify the story type.\n2. Extract recurring characters, setting, and key beats.\n3. Decide panel count.\n4. Choose a clean panel layout.\n5. Write one panel action per object element in order.\n6. Keep continuity clear.\n7. Output only valid JSON.\n\n<turn|>\n<|turn>user\nUSER BRIEF:\n[PASTE YOUR STORY OR STORYBOARD REQUEST HERE]\n\nReturn one valid JSON object only.\n<turn|>\n<|turn>model"
      ],
      "color": "#432",
      "bgcolor": "#653"
    },
    {
      "id": 33,
      "type": "ResolutionSelector",
      "pos": [
        5210.4599681224045,
        1054.0172837515702
      ],
      "size": [
        295.11478269072995,
        117.58845299963696
      ],
      "flags": {},
      "order": 12,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "width",
          "type": "INT",
          "links": [
            57,
            74,
            76
          ]
        },
        {
          "name": "height",
          "type": "INT",
          "links": [
            58,
            75,
            77
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "ResolutionSelector",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": [
        "16:9 (Widescreen)",
        1
      ]
    },
    {
      "id": 11,
      "type": "EmptyFlux2LatentImage",
      "pos": [
        5722.396949918116,
        1172.479311182489
      ],
      "size": [
        270,
        106
      ],
      "flags": {},
      "order": 20,
      "mode": 0,
      "inputs": [
        {
          "name": "width",
          "type": "INT",
          "widget": {
            "name": "width"
          },
          "link": 76
        },
        {
          "name": "height",
          "type": "INT",
          "widget": {
            "name": "height"
          },
          "link": 77
        }
      ],
      "outputs": [
        {
          "name": "LATENT",
          "type": "LATENT",
          "links": [
            9
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "EmptyFlux2LatentImage",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": [
        1024,
        1024,
        1
      ]
    },
    {
      "id": 32,
      "type": "PrimitiveInt",
      "pos": [
        5273.063436964746,
        1510.5605459367187
      ],
      "size": [
        270,
        82
      ],
      "flags": {},
      "order": 13,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "INT",
          "type": "INT",
          "links": []
        }
      ],
      "title": "Height",
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "PrimitiveInt",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": [
        1673,
        "fixed"
      ]
    },
    {
      "id": 31,
      "type": "PrimitiveInt",
      "pos": [
        5277.649480474422,
        1361.6902802912998
      ],
      "size": [
        270,
        82
      ],
      "flags": {},
      "order": 14,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "INT",
          "type": "INT",
          "links": []
        }
      ],
      "title": "Width",
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.24.1",
        "Node name for S&R": "PrimitiveInt",
        "ue_properties": {
          "widget_ue_connectable": {},
          "input_ue_unconnectable": {},
          "version": "7.8"
        }
      },
      "widgets_values": [
        1195,
        "fixed"
      ]
    },
    {
      "id": 23,
      "type": "TextGenerate",
      "pos": [
        5161.677166879219,
        -762.002851277706
      ],
      "size": [
        767.3590372639428,
        412
      ],
      "flags": {},
      "order": 16,
      "mode": 0,
      "showAdvanced": true,
      "inputs": [
        {
          "name": "clip",
          "type": "CLIP",
          "link": 26
        },
        {
          "name": "image",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        },
        {
          "name": "video",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        },
        {
          "name": "audio",
          "shape": 7,
          "type": "AUDIO",
          "link": null
        }
      ],
      "outputs": [
        {
          "name": "generated_text",
          "type": "STRING",
          "links": [
            28,
            55,
            78
          ]
        }
      ],
      "title": "Gemma 4 JSON Prompt Writer v10 TEXT ONLY",
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.21.0",
        "Node name for S&R": "TextGenerate",
        "ue_properties": {
          "widget_ue_connectable": {},
          "version": "7.8",
          "input_ue_unconnectable": {}
        }
      },
      "widgets_values": [
        "<|turn>system\nYou are an Ideogram 4 storyboard JSON compiler inside ComfyUI.\n\nYour task is to convert USER BRIEF into ONE valid Ideogram 4 structured JSON prompt for a storyboard or comic-style multi-panel page.\n\nComfyUI controls image size and workflow settings. Do not mention resolution, aspect ratio, width, height, seed, sampler, or workflow nodes inside the JSON.\n\nReturn raw JSON only.\nThe first character must be { and the last character must be }.\nNo markdown, no explanation, no notes, no code fences, no status text.\n\nUSE EXACTLY THESE TOP-LEVEL KEYS:\n1. \"high_level_description\"\n2. \"style_description\"\n3. \"compositional_deconstruction\"\n\nSCHEMA RULES:\n- \"style_description\" must be an object.\n- \"background\" must be a string.\n- Use one \"elements\" array only.\n- Every element type must be only \"obj\" or \"text\".\n- Every bbox must be exactly four integers in this order:\n  [y_min, x_min, y_max, x_max]\n- All bbox values must be between 0 and 1000.\n- Every color_palette must be an array of 3 to 6 uppercase hex colors.\n- Do not create fields named text_elements, subject, title, subtitle, z_index, layer, foreground, negative_prompt, resolution, width, height, or aspect_ratio.\n- Object element key order:\n  \"type\", \"bbox\", \"desc\", \"color_palette\"\n- Text element key order:\n  \"type\", \"bbox\", \"text\", \"desc\", \"color_palette\"\n\nSTORYBOARD GOAL:\nCreate a clean storyboard page that clearly shows sequential story beats.\nThe page must read clearly from top to bottom, or left to right then top to bottom, depending on panel count.\nEach panel must be easy to read and must not overlap other panels.\n\nSTYLE MODE:\nFor storyboard/comic pages, use style_description keys in this order:\n\"aesthetics\", \"lighting\", \"medium\", \"art_style\", \"color_palette\"\n\nSet:\n- \"medium\" to \"illustration\"\n- \"art_style\" to a storyboard / comic / concept-art appropriate description based on USER BRIEF\n\nCHARACTER CONSISTENCY:\n- If recurring characters appear, define them once in \"high_level_description\" with short identity notes.\n- Then refer to them by the same names in each panel description.\n- Do not fully re-describe the same character in every panel.\n- Preserve wardrobe, silhouette, and role continuity unless USER BRIEF asks for a change.\n\nPANEL DESIGN RULES:\n- Build a page with 3 to 8 panels depending on USER BRIEF.\n- Use non-overlapping bboxes.\n- Leave visible gutters/borders between panels.\n- Describe each panel clearly with:\n  shot type + action + emotion + environment + continuity\n- Keep each panel desc compact and visual.\n- Do not overload a panel with too many actions.\n- Prefer simple readable staging over chaotic scenes.\n- If the user gives exact story beats, assign one beat per panel in order.\n- If the user gives only a short story, break it into logical sequential beats automatically.\n\nTEXT RULES:\n- Visible in-image text is OFF by default.\n- Only create text elements if USER BRIEF explicitly asks for visible text such as narration, caption, speech bubble words, title, or panel labels.\n- If exact visible text is requested, preserve exact spelling.\n- If no exact text is requested, do not create text elements.\n\nBACKGROUND RULE:\n- \"background\" should describe the storyboard page itself, such as a clean white page with black panel borders and gutters, or another page style requested by USER BRIEF.\n\nPANEL LAYOUT GUIDE:\nUse these as starting layouts.\n\nFor 3 vertical panels:\n- Panel 1: [40, 60, 300, 940]\n- Panel 2: [350, 60, 610, 940]\n- Panel 3: [660, 60, 920, 940]\n\nFor 4 panels (2x2):\n- Panel 1: [40, 60, 450, 470]\n- Panel 2: [40, 530, 450, 940]\n- Panel 3: [540, 60, 950, 470]\n- Panel 4: [540, 530, 950, 940]\n\nFor 6 panels (2 columns x 3 rows):\n- Panel 1: [40, 60, 290, 470]\n- Panel 2: [40, 530, 290, 940]\n- Panel 3: [350, 60, 600, 470]\n- Panel 4: [350, 530, 600, 940]\n- Panel 5: [660, 60, 910, 470]\n- Panel 6: [660, 530, 910, 940]\n\nFor 5 panels or 7–8 panels:\n- Create a logical non-overlapping grid with consistent gutters.\n- Keep reading order clear.\n\nSHOT LANGUAGE:\nUse clear cinematic language such as:\n- wide shot\n- medium shot\n- close-up\n- over-the-shoulder\n- low angle\n- high angle\n- insert shot\n- reaction shot\n\nQUALITY METHOD:\nSilently plan before output:\n1. Identify the story type.\n2. Extract recurring characters, setting, and key beats.\n3. Decide panel count.\n4. Choose a clean panel layout.\n5. Write one panel action per object element in order.\n6. Keep continuity clear.\n7. Output only valid JSON.\n\n<turn|>\n<|turn>user\nUSER BRIEF: use my lora trigger word zjourney\nCreate a 6-panel realistic cinematic action storyboard.\n\nStory:\nCharacter Maya is an adult city courier carrying a small silver medical case through a rain-soaked downtown street at night. A sudden blackout hits the city, traffic stops, and Maya realizes the hospital across the river has lost power. She runs through the wet street, climbs over a stalled taxi, jumps across a narrow construction gap, slides under a closing security gate, reaches the hospital entrance, and hands the silver case to a doctor as emergency lights turn on.\n\nCharacters:\nMaya is an adult woman courier with short dark hair, a yellow rain jacket, dark cargo pants, black gloves, and a plain black backpack. Keep her outfit and silver medical case consistent in every panel.\nThe doctor is an adult hospital worker in a white coat, appearing only in the final panel.\n\nStyle:\nRealistic cinematic film storyboard, dramatic rainy night lighting, wet asphalt reflections, handheld action-camera feeling, high contrast, grounded urban realism, clear readable action, clean panel borders and gutters.\n\nPanel beats:\n1. Wide shot: Maya runs through a rainy downtown street during a sudden city blackout, gripping the silver medical case.\n2. Medium shot: Maya looks toward the dark hospital across the river, determined, rain hitting her yellow jacket.\n3. Low-angle action shot: Maya climbs over the hood of a stalled taxi, keeping the silver case close.\n4. Dynamic side shot: Maya jumps across a narrow construction gap between sidewalk barriers.\n5. Close action shot: Maya slides under a half-closing hospital security gate, silver case protected against her chest.\n6. Final heroic shot: Maya hands the silver medical case to the doctor at the hospital entrance as emergency lights glow behind them.\n\nVisible text:\nNone.\n\nReturn one valid JSON object only.\n<turn|>\n<|turn>model",
        2048,
        "on",
        0.15,
        12,
        0.75,
        0.02,
        1,
        0,
        0,
        false,
        false
      ]
    }
  ],
  "links": [
    [
      4,
      4,
      0,
      1,
      1,
      "CONDITIONING"
    ],
    [
      5,
      8,
      0,
      1,
      3,
      "CONDITIONING"
    ],
    [
      7,
      9,
      0,
      8,
      0,
      "CONDITIONING"
    ],
    [
      9,
      11,
      0,
      12,
      4,
      "LATENT"
    ],
    [
      10,
      13,
      0,
      12,
      0,
      "NOISE"
    ],
    [
      11,
      1,
      0,
      12,
      1,
      "GUIDER"
    ],
    [
      12,
      14,
      0,
      12,
      2,
      "SAMPLER"
    ],
    [
      13,
      12,
      0,
      15,
      0,
      "LATENT"
    ],
    [
      14,
      16,
      0,
      15,
      1,
      "VAE"
    ],
    [
      22,
      10,
      0,
      12,
      3,
      "SIGMAS"
    ],
    [
      24,
      7,
      0,
      4,
      0,
      "CLIP"
    ],
    [
      25,
      7,
      0,
      9,
      0,
      "CLIP"
    ],
    [
      26,
      22,
      0,
      23,
      0,
      "CLIP"
    ],
    [
      28,
      23,
      0,
      24,
      0,
      "STRING"
    ],
    [
      55,
      23,
      0,
      38,
      1,
      "STRING"
    ],
    [
      56,
      38,
      1,
      39,
      0,
      "IMAGE"
    ],
    [
      57,
      33,
      0,
      38,
      3,
      "INT"
    ],
    [
      58,
      33,
      1,
      38,
      4,
      "INT"
    ],
    [
      60,
      2,
      0,
      40,
      0,
      "MODEL"
    ],
    [
      62,
      3,
      0,
      41,
      0,
      "MODEL"
    ],
    [
      63,
      41,
      0,
      1,
      2,
      "MODEL"
    ],
    [
      65,
      15,
      0,
      43,
      0,
      "IMAGE"
    ],
    [
      66,
      40,
      0,
      44,
      0,
      "MODEL"
    ],
    [
      67,
      44,
      0,
      1,
      0,
      "MODEL"
    ],
    [
      74,
      33,
      0,
      10,
      0,
      "INT"
    ],
    [
      75,
      33,
      1,
      10,
      1,
      "INT"
    ],
    [
      76,
      33,
      0,
      11,
      0,
      "INT"
    ],
    [
      77,
      33,
      1,
      11,
      1,
      "INT"
    ],
    [
      78,
      23,
      0,
      4,
      1,
      "STRING"
    ]
  ],
  "groups": [],
  "config": {},
  "extra": {
    "ue_links": [],
    "ds": {
      "scale": 0.36856827197633774,
      "offset": [
        -2625.3149322039403,
        1685.2729598178134
      ]
    },
    "links_added_by_ue": [],
    "frontendVersion": "1.44.19",
    "VHS_latentpreview": false,
    "VHS_latentpreviewrate": 0,
    "VHS_MetadataImage": true,
    "VHS_KeepIntermediate": true
  },
  "version": 0.4
}