{
  "id": "sywT2pKhyWK0seSM",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "The Recap AI - Nano Banana Influencer Ad Creative",
  "tags": [],
  "nodes": [
    {
      "id": "765aa3a3-7cce-4510-a342-c297d13e8c87",
      "name": "form_trigger",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        512,
        -192
      ],
      "parameters": {
        "options": {},
        "formTitle": "Influencer Ad Creative Generator",
        "formFields": {
          "values": [
            {
              "fieldType": "file",
              "fieldLabel": "Image",
              "multipleFiles": false,
              "requiredField": true
            }
          ]
        },
        "formDescription": "Select and upload an image of your product. "
      },
      "typeVersion": 2.2
    },
    {
      "id": "a66447f3-377e-498a-a925-f21a60fee7df",
      "name": "list_influencer_images",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1040,
        -192
      ],
      "parameters": {
        "filter": {
          "folderId": {
            "__rl": true,
            "mode": "id",
            "value": "1HTaxyt9ZIlf3faATFlN4ujlTZge9_yg-"
          }
        },
        "options": {},
        "resource": "fileFolder",
        "returnAll": true
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "0a5ddc7f-e7bf-4cec-8bf4-8fb107ca0676",
      "name": "iterate_influencer_images",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        512,
        32
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "96c2c161-08ba-4dc6-87e3-da1ac17154b6",
      "name": "download_influencer_image",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        784,
        96
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "options": {},
        "operation": "download"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "92609f61-eb3f-4eff-8f74-3392af805e3f",
      "name": "product_image_to_base64",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        784,
        -192
      ],
      "parameters": {
        "options": {},
        "operation": "binaryToPropery",
        "binaryPropertyName": "Image"
      },
      "typeVersion": 1
    },
    {
      "id": "be421a9d-d907-4a9d-8183-1ee15d325417",
      "name": "influencer_image_to_base_64",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        1040,
        96
      ],
      "parameters": {
        "options": {},
        "operation": "binaryToPropery"
      },
      "typeVersion": 1
    },
    {
      "id": "5a0d1500-72d5-4f6c-bd9e-caa43559c28e",
      "name": "generate_image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1280,
        96
      ],
      "parameters": {
        "url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-image-preview:generateContent",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"contents\": [{\n    \"parts\": [\n      { \"text\": \"Create an image where the cup/tumbler in image 1 is being held by the person in the 2nd image (like they are about to take a drink from the cup). The person should be sitting at a table at a cafe or coffee shop and is smiling warmly while looking at the camera. This is not a professional photo, it should feel like a friend is taking a picture of the person in the 2nd image. Only return the final generated image. The angle of the image should instead by slightly at an angle from the side (vary this angle).\" },\n      {\n        \"inline_data\": {\n          \"mime_type\": \"image/png\",\n          \"data\": \"{{ $node['product_image_to_base64'].json.data }}\"\n        }\n      },\n      {\n        \"inline_data\": {\n          \"mime_type\": \"image/jpeg\",\n          \"data\": \"{{ $node['influencer_image_to_base_64'].json.data }}\"\n        }\n      }\n    ]\n  }]\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "a784a2b9-42d4-4f69-9f0f-0c2b22db061f",
      "name": "get_image",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        1760,
        96
      ],
      "parameters": {
        "options": {},
        "operation": "toBinary",
        "sourceProperty": "image_result"
      },
      "typeVersion": 1.1
    },
    {
      "id": "f4bd7aed-8cc0-4c9a-9209-8a4af074e89f",
      "name": "upload_image",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        2016,
        192
      ],
      "parameters": {
        "name": "=Influencer Image #{{ $runIndex + 1 }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive",
          "cachedResultUrl": "https://drive.google.com/drive/my-drive",
          "cachedResultName": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "id",
          "value": "1ZatlrK3cMUHkeel-HTeCFYDf1mdBRAWj"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "f6d7116b-51f6-4a7a-9684-8b92320eed2f",
      "name": "set_result",
      "type": "n8n-nodes-base.set",
      "position": [
        1520,
        96
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "524da01b-f8b9-4c2c-9e28-319455903e4d",
              "name": "=image_result",
              "type": "string",
              "value": "={{ $json.candidates[0].content.parts.filter(item => item.inlineData).first().inlineData.data }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "392150b5-f890-4918-a6ad-ab51e75560fb",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        368,
        -400
      ],
      "parameters": {
        "width": 1936,
        "height": 832,
        "content": "## Nano Banana Ad Creative Generator\n\n### Setup\n1. Upload influencer reference images to the source Google Drive Folder\n2. Create a Google Drive destination folder for your output\n3. Upload an image of your product you want promoted by the reference influencer images\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "0e83dceb-8c84-4d51-b849-cb6c98dcdd8b",
  "connections": {
    "get_image": {
      "main": [
        [
          {
            "node": "upload_image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "set_result": {
      "main": [
        [
          {
            "node": "get_image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "form_trigger": {
      "main": [
        [
          {
            "node": "product_image_to_base64",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "upload_image": {
      "main": [
        [
          {
            "node": "iterate_influencer_images",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "generate_image": {
      "main": [
        [
          {
            "node": "set_result",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "list_influencer_images": {
      "main": [
        [
          {
            "node": "iterate_influencer_images",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "product_image_to_base64": {
      "main": [
        [
          {
            "node": "list_influencer_images",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "download_influencer_image": {
      "main": [
        [
          {
            "node": "influencer_image_to_base_64",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "iterate_influencer_images": {
      "main": [
        [],
        [
          {
            "node": "download_influencer_image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "influencer_image_to_base_64": {
      "main": [
        [
          {
            "node": "generate_image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}