{
  "name": "Generate scalable e-commerce product images with GPT-4 and NanoBanana Pro",
  "nodes": [
    {
      "id": "d32f2efc-96d4-460c-acca-3d4271e96be3",
      "name": "Form Trigger (3 images)",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -624,
        -320
      ]
    },
    {
      "id": "b52765ea-f694-4a3d-9047-db35528a5a28",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        -384,
        -320
      ]
    },
    {
      "id": "5fc9d593-7d41-4a7e-a77c-a0ce436600f2",
      "name": "Error Response - Missing Files",
      "type": "n8n-nodes-base.set",
      "position": [
        -144,
        -64
      ]
    },
    {
      "id": "39315c75-3f8e-4fab-8b90-f6f2f565f27c",
      "name": "Normalize binary names",
      "type": "n8n-nodes-base.set",
      "position": [
        -144,
        -336
      ]
    },
    {
      "id": "d3d728e3-e8a5-4247-b410-52dbd14527f7",
      "name": "Split images",
      "type": "n8n-nodes-base.code",
      "position": [
        64,
        -336
      ]
    },
    {
      "id": "f44e2982-4e1e-4381-8057-b07c81d53bce",
      "name": "Upload file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        304,
        -576
      ]
    },
    {
      "id": "4b785c13-f071-4a76-b925-d938fc4e81d2",
      "name": "Analyze image",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        304,
        -64
      ]
    },
    {
      "id": "25da78a8-5dc2-4084-93fe-a60c346da99f",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        528,
        -352
      ]
    },
    {
      "id": "e9c90cf0-e7fb-4819-978e-a21be8b4b54b",
      "name": "Aggregate descriptions",
      "type": "n8n-nodes-base.code",
      "position": [
        752,
        -336
      ]
    },
    {
      "id": "62e6048c-75d7-44a0-becd-5081de7c2cba",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        912,
        -64
      ]
    },
    {
      "id": "9f06b5df-3e84-40b0-bf14-c53004137a0f",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1168,
        -64
      ]
    },
    {
      "id": "20269caf-083b-4244-8144-0d620f2c2d4c",
      "name": "NanoBanana: Create Image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1328,
        -336
      ]
    },
    {
      "id": "4172a90b-185d-4086-ab2f-f376c796e09d",
      "name": "Build Public Image URL",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        304,
        -336
      ]
    },
    {
      "id": "74d2fd99-39e5-4c8f-b543-eee7a5998625",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        1552,
        -336
      ]
    },
    {
      "id": "6fa18932-7a9c-4e12-a546-56a9d4c28e6b",
      "name": "Download Edited Image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1776,
        -336
      ]
    },
    {
      "id": "4a816d1f-6a14-4151-9847-979eb5871cc2",
      "name": "Append row in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2448,
        -336
      ]
    },
    {
      "id": "f36f01f2-14c1-4a9f-b81c-a04a7154cd54",
      "name": "Download Final PNG (binary)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2000,
        -336
      ]
    },
    {
      "id": "1a8f03bd-254e-4367-9a07-dd25337765d2",
      "name": "Upload file Nanobanana",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        2224,
        -336
      ]
    },
    {
      "id": "1ca249a0-6ac1-4512-93f8-63baa120180e",
      "name": "Note - Workflow Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -704,
        -768
      ],
      "parameters": {
        "width": 1376,
        "height": 888,
        "content": "## Step 1: Input Validation\n**Form Trigger** receives 3 images from user\n\n**If** node checks all 3 images exist\n- ✓ True: Continue to processing\n- ✗ False: Return error message\n\nFor each image in para"
      }
    },
    {
      "id": "654ea1aa-3071-4b11-823b-5c4040ec715d",
      "name": "Generate Image Prompt",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        976,
        -336
      ]
    },
    {
      "id": "199181e7-6836-458b-9bbc-dabc814b3225",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1488,
        -768
      ],
      "parameters": {
        "width": 720,
        "height": 880,
        "content": "## 🚀 AI Image Generation Workflow\n\nThis workflow generates studio-quality e-commerce product images from **exactly 3 reference photos** using AI vision and **NanoBanana Pro**.\n\n## 🔄 How it works\n\n1. A"
      }
    },
    {
      "id": "4ba76a94-7ad8-4abf-a301-733bcfb2aafe",
      "name": "Note - Workflow Overview1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        704,
        -768
      ],
      "parameters": {
        "width": 1936,
        "height": 888,
        "content": "## Step 2:  Image Generation\n**Aggregate descriptions** combines all 3 image descriptions\n\n**AI Agent** (GPT-4.1-mini) creates a fashion photoshoot prompt:\n- Uses image descriptions as input\n- Outputs"
      }
    }
  ],
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "Normalize binary names",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Error Response - Missing Files",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait": {
      "main": [
        [
          {
            "node": "Download Edited Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Aggregate descriptions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload file": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split images": {
      "main": [
        [
          {
            "node": "Upload file",
            "type": "main",
            "index": 0
          },
          {
            "node": "Analyze image",
            "type": "main",
            "index": 0
          },
          {
            "node": "Build Public Image URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analyze image": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Generate Image Prompt",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Download Edited Image": {
      "main": [
        [
          {
            "node": "Download Final PNG (binary)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Image Prompt": {
      "main": [
        [
          {
            "node": "NanoBanana: Create Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate descriptions": {
      "main": [
        [
          {
            "node": "Generate Image Prompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Public Image URL": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Normalize binary names": {
      "main": [
        [
          {
            "node": "Split images",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload file Nanobanana": {
      "main": [
        [
          {
            "node": "Append row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Form Trigger (3 images)": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "NanoBanana: Create Image": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Generate Image Prompt",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Download Final PNG (binary)": {
      "main": [
        [
          {
            "node": "Upload file Nanobanana",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}