{
  "config": {},
  "extra": {
    "VHS_KeepIntermediate": true,
    "VHS_MetadataImage": true,
    "VHS_latentpreview": false,
    "VHS_latentpreviewrate": 0,
    "ds": {
      "offset": [
        -12217.463532297625,
        -159.29895968199293
      ],
      "scale": 0.8404357701300693
    },
    "frontendVersion": "1.39.19",
    "workflowRendererVersion": "LG"
  },
  "groups": [],
  "id": "c28dc1c5-217d-4ee0-8baf-1929aaf5162e",
  "last_link_id": 29,
  "last_node_id": 18,
  "links": [
    [
      10,
      3,
      0,
      9,
      0,
      "IMAGE"
    ],
    [
      13,
      11,
      0,
      14,
      0,
      "STRING"
    ],
    [
      15,
      15,
      0,
      14,
      1,
      "STRING"
    ],
    [
      16,
      17,
      0,
      16,
      1,
      "INT"
    ],
    [
      17,
      17,
      1,
      16,
      2,
      "INT"
    ],
    [
      18,
      1,
      0,
      17,
      0,
      "IMAGE"
    ],
    [
      19,
      2,
      0,
      16,
      0,
      "IMAGE"
    ],
    [
      24,
      18,
      0,
      3,
      0,
      "IMAGE"
    ],
    [
      27,
      1,
      0,
      18,
      0,
      "IMAGE"
    ],
    [
      28,
      16,
      0,
      18,
      1,
      "IMAGE"
    ],
    [
      29,
      14,
      0,
      3,
      2,
      "STRING"
    ]
  ],
  "nodes": [
    {
      "flags": {
        "collapsed": false
      },
      "id": 18,
      "inputs": [
        {
          "link": 27,
          "name": "image1",
          "type": "IMAGE"
        },
        {
          "link": 28,
          "name": "image2",
          "type": "IMAGE"
        }
      ],
      "mode": 0,
      "order": 7,
      "outputs": [
        {
          "links": [
            24
          ],
          "name": "IMAGE",
          "type": "IMAGE"
        }
      ],
      "pos": [
        13173.13786277583,
        470
      ],
      "properties": {
        "Node name for S&R": "ImageBatch",
        "cnr_id": "comfy-core",
        "enableTabs": false,
        "hasSecondTab": false,
        "secondTabOffset": 80,
        "secondTabText": "Send Back",
        "secondTabWidth": 65,
        "tabWidth": 65,
        "tabXOffset": 10,
        "ver": "0.3.76"
      },
      "size": [
        186.8621372241705,
        54.07495555706066
      ],
      "type": "ImageBatch",
      "widgets_values": []
    },
    {
      "flags": {},
      "id": 2,
      "inputs": [],
      "mode": 0,
      "order": 0,
      "outputs": [
        {
          "links": [
            19
          ],
          "name": "IMAGE",
          "type": "IMAGE"
        },
        {
          "links": null,
          "name": "MASK",
          "type": "MASK"
        }
      ],
      "pos": [
        12500,
        930
      ],
      "properties": {
        "Node name for S&R": "LoadImage",
        "cnr_id": "comfy-core",
        "enableTabs": false,
        "hasSecondTab": false,
        "secondTabOffset": 80,
        "secondTabText": "Send Back",
        "secondTabWidth": 65,
        "tabWidth": 65,
        "tabXOffset": 10,
        "ver": "0.3.76"
      },
      "size": [
        277.7486114575398,
        401.9161721263047
      ],
      "title": "Load Product Image",
      "type": "LoadImage",
      "widgets_values": [
        "comfy_gpu.png",
        "image"
      ]
    },
    {
      "flags": {},
      "id": 1,
      "inputs": [],
      "mode": 0,
      "order": 1,
      "outputs": [
        {
          "links": [
            18,
            27
          ],
          "name": "IMAGE",
          "type": "IMAGE"
        },
        {
          "links": null,
          "name": "MASK",
          "type": "MASK"
        }
      ],
      "pos": [
        12500.645333985722,
        463.0647416496788
      ],
      "properties": {
        "Node name for S&R": "LoadImage",
        "cnr_id": "comfy-core",
        "enableTabs": false,
        "hasSecondTab": false,
        "secondTabOffset": 80,
        "secondTabText": "Send Back",
        "secondTabWidth": 65,
        "tabWidth": 65,
        "tabXOffset": 10,
        "ver": "0.3.76"
      },
      "size": [
        268.375511297599,
        386.8404557997061
      ],
      "title": "Load Ad Image",
      "type": "LoadImage",
      "widgets_values": [
        "reference_ad.png",
        "image"
      ]
    },
    {
      "flags": {
        "collapsed": true
      },
      "id": 17,
      "inputs": [
        {
          "link": 18,
          "name": "image",
          "type": "IMAGE"
        }
      ],
      "mode": 0,
      "order": 4,
      "outputs": [
        {
          "links": [
            16
          ],
          "name": "width",
          "type": "INT"
        },
        {
          "links": [
            17
          ],
          "name": "height",
          "type": "INT"
        },
        {
          "links": null,
          "name": "batch_size",
          "type": "INT"
        }
      ],
      "pos": [
        12840,
        470
      ],
      "properties": {
        "Node name for S&R": "GetImageSize",
        "cnr_id": "comfy-core",
        "enableTabs": false,
        "hasSecondTab": false,
        "secondTabOffset": 80,
        "secondTabText": "Send Back",
        "secondTabWidth": 65,
        "tabWidth": 65,
        "tabXOffset": 10,
        "ver": "0.3.76"
      },
      "size": [
        220,
        136
      ],
      "type": "GetImageSize",
      "widgets_values": []
    },
    {
      "flags": {
        "collapsed": true
      },
      "id": 16,
      "inputs": [
        {
          "link": 19,
          "name": "image",
          "type": "IMAGE"
        },
        {
          "link": 16,
          "name": "target_width",
          "type": "INT",
          "widget": {
            "name": "target_width"
          }
        },
        {
          "link": 17,
          "name": "target_height",
          "type": "INT",
          "widget": {
            "name": "target_height"
          }
        }
      ],
      "mode": 0,
      "order": 6,
      "outputs": [
        {
          "links": [
            28
          ],
          "name": "IMAGE",
          "type": "IMAGE"
        }
      ],
      "pos": [
        12840,
        540
      ],
      "properties": {
        "Node name for S&R": "ResizeAndPadImage",
        "cnr_id": "comfy-core",
        "enableTabs": false,
        "hasSecondTab": false,
        "secondTabOffset": 80,
        "secondTabText": "Send Back",
        "secondTabWidth": 65,
        "tabWidth": 65,
        "tabXOffset": 10,
        "ver": "0.3.76"
      },
      "size": [
        210,
        122
      ],
      "type": "ResizeAndPadImage",
      "widgets_values": [
        512,
        512,
        "white",
        "area"
      ]
    },
    {
      "flags": {
        "collapsed": true
      },
      "id": 11,
      "inputs": [],
      "mode": 0,
      "order": 2,
      "outputs": [
        {
          "links": [
            13
          ],
          "name": "STRING",
          "type": "STRING"
        }
      ],
      "pos": [
        12840,
        740
      ],
      "properties": {
        "Node name for S&R": "PrimitiveStringMultiline",
        "cnr_id": "comfy-core",
        "enableTabs": false,
        "hasSecondTab": false,
        "secondTabOffset": 80,
        "secondTabText": "Send Back",
        "secondTabWidth": 65,
        "tabWidth": 65,
        "tabXOffset": 10,
        "ver": "0.3.76"
      },
      "size": [
        210,
        110
      ],
      "title": "Prompt Template",
      "type": "PrimitiveStringMultiline",
      "widgets_values": [
        "Objective: Create a composite commercial image by synthesizing layout inputs with subject inputs. Target Product: {user_input}\n\n1. Inputs\nReference Input 1 (Style & Layout): Acts as the strict structural blueprint. This dictates composition, graphic elements, lighting direction, and text layout.\n\nReference Input 2 (Subject): Provides the primary subject matter (product shape, texture, branding).\n\n2. Execution Instructions\nPhase A: Scene & Design Analysis\nEnvironmental Scan: Analyze the perspective, depth, and lighting environment of [Input 1].\n\nDNA Deconstruction: Identify font styles, graphic shapes, and specific noise/grain levels.\n\nPhase B: Object Replacement\nRemoval: Remove the main product currently featured in [Input 1].\n\nInsertion: Insert the product isolated from [Input 2] into the exact focal point and scale defined by the original layout.\n\nPhase C: Text Modification (Content & Style)\nCondition Check: Analyze [Input 1] for existing Copy text elements (excluding text physically on the product).\n\nIf Copy Text Exists: Replace the existing copy with text relevant to the target product. You must replicate the exact font, weight, kerning, and drop-shadows of the original.\n\nIf No Copy Text Exists: Strictly do not generate any text. Preserve the negative space exactly as it appears in [Input 1].\n\nPhase D: Harmonize & Finish\nLighting: Adjust lighting, cast shadows, and reflections on the inserted product to match the environment.\n\nTexture: Apply the original image's texture (film grain, halftone, print artifacts) to the new elements to ensure a cohesive \"print ad\" look.\n\n3. Final Output\nAspect Ratio: Must match Input 1.\n\nQuality: A seamless, professional advertisement where the design layout is preserved, but the subject and color story are synthesized according to the user's preference."
      ]
    },
    {
      "flags": {
        "collapsed": false
      },
      "id": 14,
      "inputs": [
        {
          "link": 13,
          "name": "string",
          "type": "STRING",
          "widget": {
            "name": "string"
          }
        },
        {
          "link": 15,
          "name": "replace",
          "type": "STRING",
          "widget": {
            "name": "replace"
          }
        }
      ],
      "mode": 0,
      "order": 5,
      "outputs": [
        {
          "links": [
            29
          ],
          "name": "STRING",
          "type": "STRING"
        }
      ],
      "pos": [
        13150,
        690
      ],
      "properties": {
        "Node name for S&R": "RegexReplace",
        "cnr_id": "comfy-core",
        "enableTabs": false,
        "hasSecondTab": false,
        "secondTabOffset": 80,
        "secondTabText": "Send Back",
        "secondTabWidth": 65,
        "tabWidth": 65,
        "tabXOffset": 10,
        "ver": "0.3.76"
      },
      "size": [
        210,
        292
      ],
      "type": "RegexReplace",
      "widgets_values": [
        "",
        "{user_input}",
        "",
        true,
        false,
        false,
        0
      ]
    },
    {
      "bgcolor": "#353",
      "color": "#232",
      "flags": {},
      "id": 15,
      "inputs": [],
      "mode": 0,
      "order": 3,
      "outputs": [
        {
          "links": [
            15
          ],
          "name": "STRING",
          "type": "STRING"
        }
      ],
      "pos": [
        12830,
        820
      ],
      "properties": {
        "Node name for S&R": "PrimitiveStringMultiline",
        "cnr_id": "comfy-core",
        "enableTabs": false,
        "hasSecondTab": false,
        "secondTabOffset": 80,
        "secondTabText": "Send Back",
        "secondTabWidth": 65,
        "tabWidth": 65,
        "tabXOffset": 10,
        "ver": "0.3.76"
      },
      "size": [
        289.7916666666667,
        319.58333333333337
      ],
      "title": "Describe the Product and Ad Copy",
      "type": "PrimitiveStringMultiline",
      "widgets_values": [
        "A ComfyUI branded RTX PRO 6000. This ad is promoting Comfy Cloud. The header 1 says \"The Comfy Cloud\". The smaller copy should inform that Comfy Cloud switched to Blackwell RTX 6000 Pros, which are approimately twice as fast as A100s. They also have 96GB of VRAM and 180GB of RAM, which will unlock much heavier workflows such as video upscaling."
      ]
    },
    {
      "flags": {},
      "id": 9,
      "inputs": [
        {
          "link": 10,
          "name": "images",
          "type": "IMAGE"
        }
      ],
      "mode": 0,
      "order": 9,
      "outputs": [],
      "pos": [
        13960,
        470
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "enableTabs": false,
        "hasSecondTab": false,
        "secondTabOffset": 80,
        "secondTabText": "Send Back",
        "secondTabWidth": 65,
        "tabWidth": 65,
        "tabXOffset": 10,
        "ver": "0.3.76"
      },
      "size": [
        540,
        890
      ],
      "type": "SaveImage",
      "widgets_values": [
        "ComfyUI"
      ]
    },
    {
      "bgcolor": "#653",
      "color": "#432",
      "flags": {},
      "id": 3,
      "inputs": [
        {
          "link": 24,
          "name": "images",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "link": null,
          "name": "files",
          "shape": 7,
          "type": "GEMINI_INPUT_FILES"
        },
        {
          "link": 29,
          "name": "prompt",
          "type": "STRING",
          "widget": {
            "name": "prompt"
          }
        }
      ],
      "mode": 0,
      "order": 8,
      "outputs": [
        {
          "links": [
            10
          ],
          "name": "IMAGE",
          "type": "IMAGE"
        },
        {
          "links": null,
          "name": "STRING",
          "type": "STRING"
        }
      ],
      "pos": [
        13550,
        470
      ],
      "properties": {
        "Node name for S&R": "GeminiImage2Node",
        "cnr_id": "comfy-core",
        "enableTabs": false,
        "hasSecondTab": false,
        "secondTabOffset": 80,
        "secondTabText": "Send Back",
        "secondTabWidth": 65,
        "tabWidth": 65,
        "tabXOffset": 10,
        "ver": "0.3.76"
      },
      "size": [
        384.2057291666667,
        373.33333333333337
      ],
      "type": "GeminiImage2Node",
      "widgets_values": [
        "",
        "gemini-3-pro-image-preview",
        611482562925396,
        "randomize",
        "auto",
        "4K",
        "IMAGE+TEXT",
        "You are an expert image-generation engine. You must ALWAYS produce an image.\nInterpret all user input—regardless of format, intent, or abstraction—as literal visual directives for image composition.\nIf a prompt is conversational or lacks specific visual details, you must creatively invent a concrete visual scenario that depicts the concept.\nPrioritize generating the visual representation above any text, formatting, or conversational requests."
      ]
    }
  ],
  "revision": 0,
  "version": 0.4
}