{
  "config": {},
  "extra": {
    "ds": {
      "offset": [
        2369.2973576032905,
        789.884510833821
      ],
      "scale": 0.45120631112945375
    },
    "frontendVersion": "1.44.2",
    "workflowRendererVersion": "Vue-corrected"
  },
  "groups": [
    {
      "bounding": [
        700,
        -100,
        1000,
        800
      ],
      "color": "#3f789e",
      "flags": {},
      "id": 1,
      "title": "Prompt"
    },
    {
      "bounding": [
        -400.0678356141695,
        -240.14616075128353,
        1000,
        790
      ],
      "color": "#3f789e",
      "flags": {},
      "id": 2,
      "title": "Relight Product"
    },
    {
      "bounding": [
        1800,
        -250,
        1160,
        1240
      ],
      "color": "#3f789e",
      "flags": {},
      "id": 3,
      "title": "Generate Product Hero"
    }
  ],
  "id": "8717bda0-9453-44d4-964f-50ce6efe2c9b",
  "last_link_id": 9,
  "last_node_id": 9,
  "links": [
    [
      1,
      1,
      0,
      2,
      0,
      "IMAGE"
    ],
    [
      2,
      2,
      0,
      3,
      0,
      "IMAGE"
    ],
    [
      3,
      2,
      0,
      4,
      0,
      "IMAGE"
    ],
    [
      5,
      4,
      0,
      5,
      0,
      "STRING"
    ],
    [
      6,
      5,
      0,
      6,
      1,
      "STRING"
    ],
    [
      7,
      2,
      0,
      6,
      6,
      "IMAGE"
    ],
    [
      8,
      1,
      0,
      6,
      7,
      "IMAGE"
    ],
    [
      9,
      6,
      0,
      7,
      0,
      "VIDEO"
    ]
  ],
  "nodes": [
    {
      "flags": {},
      "id": 1,
      "inputs": [
        {
          "link": null,
          "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"
          }
        }
      ],
      "mode": 0,
      "order": 0,
      "outputs": [
        {
          "links": [
            1,
            8
          ],
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE"
        },
        {
          "links": null,
          "localized_name": "MASK",
          "name": "MASK",
          "type": "MASK"
        }
      ],
      "pos": [
        -900,
        -170
      ],
      "properties": {
        "Node name for S&R": "LoadImage"
      },
      "size": [
        400,
        470
      ],
      "type": "LoadImage",
      "widgets_values": [
        "297b75b409eb1c979be244cbea54e4d142d00390501e986aab2503d6ccbd8291.png",
        "image"
      ]
    },
    {
      "bgcolor": "#653",
      "color": "#432",
      "flags": {},
      "id": 2,
      "inputs": [
        {
          "link": 1,
          "localized_name": "images",
          "name": "images",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "files",
          "name": "files",
          "shape": 7,
          "type": "GEMINI_INPUT_FILES"
        },
        {
          "link": null,
          "localized_name": "prompt",
          "name": "prompt",
          "type": "STRING",
          "widget": {
            "name": "prompt"
          }
        },
        {
          "link": null,
          "localized_name": "model",
          "name": "model",
          "type": "COMBO",
          "widget": {
            "name": "model"
          }
        },
        {
          "link": null,
          "localized_name": "seed",
          "name": "seed",
          "type": "INT",
          "widget": {
            "name": "seed"
          }
        },
        {
          "link": null,
          "localized_name": "aspect_ratio",
          "name": "aspect_ratio",
          "type": "COMBO",
          "widget": {
            "name": "aspect_ratio"
          }
        },
        {
          "link": null,
          "localized_name": "resolution",
          "name": "resolution",
          "type": "COMBO",
          "widget": {
            "name": "resolution"
          }
        },
        {
          "link": null,
          "localized_name": "response_modalities",
          "name": "response_modalities",
          "type": "COMBO",
          "widget": {
            "name": "response_modalities"
          }
        },
        {
          "link": null,
          "localized_name": "system_prompt",
          "name": "system_prompt",
          "shape": 7,
          "type": "STRING",
          "widget": {
            "name": "system_prompt"
          }
        }
      ],
      "mode": 0,
      "order": 2,
      "outputs": [
        {
          "links": [
            2,
            3,
            7
          ],
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE"
        },
        {
          "links": null,
          "localized_name": "STRING",
          "name": "STRING",
          "type": "STRING"
        }
      ],
      "pos": [
        -350,
        -140
      ],
      "properties": {
        "Node name for S&R": "GeminiImage2Node"
      },
      "showAdvanced": false,
      "size": [
        400,
        624.21875
      ],
      "type": "GeminiImage2Node",
      "widgets_values": [
        "Using the uploaded product image as the strict product reference, create a polished e-commerce hero image.\n\nPreserve the product identity, shape, materials, colors, logo placement, label layout, and key packaging details. Do not invent a different product. Improve the scene around it: premium studio or lifestyle commerce lighting, clean surface, tasteful props, realistic shadows, subtle reflections, and clear space for marketplace use.\n\nMake the product the hero. Keep it sharp, readable, centered or slightly off-center with balanced negative space. Use a clean commercial look suitable for a product detail page, paid social ad, or brand store hero.\n\nAvoid fake text, changed logos, distorted packaging, duplicated products unless intentionally arranged as a neat product family, messy backgrounds, people holding the product unless visible in the source, watermarks, UI, captions, or random labels.",
        "Nano Banana 2 (Gemini 3.1 Flash Image)",
        210575785669093,
        "randomize",
        "9:16",
        "4K",
        "IMAGE",
        "You are an e-commerce product photography generator.\n\nYour job is to transform the uploaded product image into a clean commercial hero image while preserving product identity. The product must remain recognizably the same item with consistent geometry, materials, colors, markings, logos, and packaging structure.\n\nCreate a premium product-ad image only. Do not add UI, callouts, sale badges, fake labels, random text, watermarks, or unrelated objects. Keep the result realistic, brand-safe, and ready for online retail."
      ]
    },
    {
      "flags": {},
      "id": 3,
      "inputs": [
        {
          "link": 2,
          "localized_name": "images",
          "name": "images",
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "filename_prefix",
          "name": "filename_prefix",
          "type": "STRING",
          "widget": {
            "name": "filename_prefix"
          }
        }
      ],
      "mode": 0,
      "order": 3,
      "outputs": [],
      "pos": [
        150,
        -140
      ],
      "properties": {},
      "size": [
        370,
        470
      ],
      "type": "SaveImage",
      "widgets_values": [
        "commerce_hero_image"
      ]
    },
    {
      "bgcolor": "#653",
      "color": "#432",
      "flags": {},
      "id": 4,
      "inputs": [
        {
          "link": 3,
          "localized_name": "images",
          "name": "images",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "audio",
          "name": "audio",
          "shape": 7,
          "type": "AUDIO"
        },
        {
          "link": null,
          "localized_name": "video",
          "name": "video",
          "shape": 7,
          "type": "VIDEO"
        },
        {
          "link": null,
          "localized_name": "files",
          "name": "files",
          "shape": 7,
          "type": "GEMINI_INPUT_FILES"
        },
        {
          "link": null,
          "localized_name": "prompt",
          "name": "prompt",
          "type": "STRING",
          "widget": {
            "name": "prompt"
          }
        },
        {
          "link": null,
          "localized_name": "model",
          "name": "model",
          "type": "COMBO",
          "widget": {
            "name": "model"
          }
        },
        {
          "link": null,
          "localized_name": "seed",
          "name": "seed",
          "type": "INT",
          "widget": {
            "name": "seed"
          }
        },
        {
          "link": null,
          "localized_name": "system_prompt",
          "name": "system_prompt",
          "shape": 7,
          "type": "STRING",
          "widget": {
            "name": "system_prompt"
          }
        }
      ],
      "mode": 0,
      "order": 4,
      "outputs": [
        {
          "links": [
            5
          ],
          "localized_name": "STRING",
          "name": "STRING",
          "type": "STRING"
        }
      ],
      "pos": [
        750,
        0
      ],
      "properties": {
        "Node name for S&R": "GeminiNode"
      },
      "size": [
        400,
        570.3125
      ],
      "type": "GeminiNode",
      "widgets_values": [
        "Analyze the generated e-commerce hero image and write one concise Seedance 2.0 reference-to-video prompt for a premium product ad. Include product continuity, camera movement, lighting, surface reflections, prop motion, and constraints. The final video must preserve product identity and avoid fake text, changed logos, or distorted packaging. Return only the final prompt.",
        "gemini-3-1-flash-lite",
        196766286707190,
        "randomize",
        "You are a product-video prompt writer for e-commerce ads. Preserve the product exactly: shape, materials, colors, logo placement, label layout, and packaging details. Write a clean premium ad-video prompt with subtle camera motion, realistic lighting, and no invented branding. Return exactly one concise prompt, no markdown, no explanation."
      ]
    },
    {
      "flags": {
        "collapsed": false
      },
      "id": 5,
      "inputs": [
        {
          "link": 5,
          "localized_name": "source",
          "name": "source",
          "type": "*"
        }
      ],
      "mode": 0,
      "order": 5,
      "outputs": [
        {
          "links": [
            6
          ],
          "localized_name": "STRING",
          "name": "STRING",
          "type": "STRING"
        }
      ],
      "pos": [
        1250,
        0
      ],
      "properties": {
        "Node name for S&R": "PreviewAny"
      },
      "size": [
        370,
        540
      ],
      "type": "PreviewAny",
      "widgets_values": [
        null,
        null,
        null
      ]
    },
    {
      "bgcolor": "#653",
      "color": "#432",
      "flags": {},
      "id": 6,
      "inputs": [
        {
          "link": null,
          "localized_name": "model",
          "name": "model",
          "type": "COMFY_DYNAMICCOMBO_V3",
          "widget": {
            "name": "model"
          }
        },
        {
          "link": 6,
          "localized_name": "prompt",
          "name": "model.prompt",
          "type": "STRING",
          "widget": {
            "name": "model.prompt"
          }
        },
        {
          "link": null,
          "localized_name": "resolution",
          "name": "model.resolution",
          "type": "COMBO",
          "widget": {
            "name": "model.resolution"
          }
        },
        {
          "link": null,
          "localized_name": "ratio",
          "name": "model.ratio",
          "type": "COMBO",
          "widget": {
            "name": "model.ratio"
          }
        },
        {
          "link": null,
          "localized_name": "duration",
          "name": "model.duration",
          "type": "INT",
          "widget": {
            "name": "model.duration"
          }
        },
        {
          "link": null,
          "localized_name": "generate_audio",
          "name": "model.generate_audio",
          "type": "BOOLEAN",
          "widget": {
            "name": "model.generate_audio"
          }
        },
        {
          "label": "image_1",
          "link": 7,
          "localized_name": "model.reference_images.image_1",
          "name": "model.reference_images.image_1",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "label": "image_2",
          "link": 8,
          "localized_name": "model.reference_images.image_2",
          "name": "model.reference_images.image_2",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "label": "image_3",
          "link": null,
          "localized_name": "model.reference_images.image_3",
          "name": "model.reference_images.image_3",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "label": "video_1",
          "link": null,
          "localized_name": "model.reference_videos.video_1",
          "name": "model.reference_videos.video_1",
          "shape": 7,
          "type": "VIDEO"
        },
        {
          "label": "audio_1",
          "link": null,
          "localized_name": "model.reference_audios.audio_1",
          "name": "model.reference_audios.audio_1",
          "shape": 7,
          "type": "AUDIO"
        },
        {
          "label": "asset_1",
          "link": null,
          "localized_name": "model.reference_assets.asset_1",
          "name": "model.reference_assets.asset_1",
          "shape": 7,
          "type": "STRING"
        },
        {
          "link": null,
          "localized_name": "auto_downscale",
          "name": "model.auto_downscale",
          "shape": 7,
          "type": "BOOLEAN",
          "widget": {
            "name": "model.auto_downscale"
          }
        },
        {
          "link": null,
          "localized_name": "model.auto_upscale",
          "name": "model.auto_upscale",
          "shape": 7,
          "type": "BOOLEAN",
          "widget": {
            "name": "model.auto_upscale"
          }
        },
        {
          "link": null,
          "localized_name": "seed",
          "name": "seed",
          "type": "INT",
          "widget": {
            "name": "seed"
          }
        },
        {
          "link": null,
          "localized_name": "watermark",
          "name": "watermark",
          "type": "BOOLEAN",
          "widget": {
            "name": "watermark"
          }
        }
      ],
      "mode": 0,
      "order": 6,
      "outputs": [
        {
          "links": [
            9
          ],
          "localized_name": "VIDEO",
          "name": "VIDEO",
          "type": "VIDEO"
        }
      ],
      "pos": [
        1900,
        -150
      ],
      "properties": {
        "Node name for S&R": "ByteDance2ReferenceNode"
      },
      "showAdvanced": false,
      "size": [
        400,
        513.625
      ],
      "type": "ByteDance2ReferenceNode",
      "widgets_values": [
        "Seedance 2.0 Fast",
        "",
        "480p",
        "adaptive",
        7,
        true,
        false,
        false,
        2057367287,
        "randomize",
        false
      ]
    },
    {
      "flags": {},
      "id": 7,
      "inputs": [
        {
          "link": 9,
          "localized_name": "video",
          "name": "video",
          "type": "VIDEO"
        },
        {
          "link": null,
          "localized_name": "filename_prefix",
          "name": "filename_prefix",
          "type": "STRING",
          "widget": {
            "name": "filename_prefix"
          }
        },
        {
          "link": null,
          "localized_name": "format",
          "name": "format",
          "type": "COMBO",
          "widget": {
            "name": "format"
          }
        },
        {
          "link": null,
          "localized_name": "codec",
          "name": "codec",
          "type": "COMBO",
          "widget": {
            "name": "codec"
          }
        }
      ],
      "mode": 0,
      "order": 7,
      "outputs": [],
      "pos": [
        2400,
        -150
      ],
      "properties": {},
      "size": [
        520,
        1087.1875
      ],
      "type": "SaveVideo",
      "widgets_values": [
        "video/commerce_hero_video",
        "mp4",
        "h264"
      ]
    },
    {
      "bgcolor": "#000",
      "color": "#222",
      "flags": {},
      "id": 8,
      "inputs": [],
      "mode": 0,
      "order": 1,
      "outputs": [],
      "pos": [
        -1500,
        -170
      ],
      "properties": {},
      "size": [
        500,
        719.53125
      ],
      "title": "Commerce Hero Video",
      "type": "MarkdownNote",
      "widgets_values": [
        "Create e-commerce product images and video with **Commerce Hero Video**.\n\n## How It Works\n1. Upload a product image\n2. Nano Banana 2 creates a polished product hero image\n3. Gemini writes a concise product-ad motion prompt\n4. Seedance 2.0 generates a short product video using the hero image and original product as references\n5. The workflow saves both the hero image and final video\n\n## Tips\n- Use clear packshots or product photos\n- Avoid source images with heavy blur, glare, or cropped packaging\n- Product identity, labels, logos, shape, and materials should stay consistent\n- Use 16:9 for store hero banners, ads, and product detail videos\n\n## That's it.\n\nProduct image to commerce-ready hero video in ComfyUI with **Commerce Hero Video**."
      ]
    }
  ],
  "revision": 0,
  "version": 0.4
}