Produktfotografie - Überprüfung
Dies ist ein Content Creation, Multimodal AI-Bereich Automatisierungsworkflow mit 37 Nodes. Hauptsächlich werden Set, Merge, Switch, Webhook, Airtable und andere Nodes verwendet. Erstellen Sie stilisierte Produktfotografie mit Airtable und Gemini Nano Banana
- •HTTP Webhook-Endpunkt (wird von n8n automatisch generiert)
- •Airtable API Key
- •Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
Verwendete Nodes (37)
Kategorie
{
"id": "6PKg5iRas6OJzsXR",
"meta": {
"instanceId": "fc8c505a7d97c0ad5142b508476a4b135c5d385dc29af946d69365fb9717edee",
"templateCredsSetupCompleted": true
},
"name": "Product photography - review",
"tags": [],
"nodes": [
{
"id": "9d581fc1-2b21-41f2-b61f-e1b2984eba34",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
-544,
-48
],
"webhookId": "736029f4-2d85-409f-8841-1ca9a010e385",
"parameters": {
"path": "736029f4-2d85-409f-8841-1ca9a010e385",
"options": {}
},
"typeVersion": 2.1
},
{
"id": "0cf73e67-9194-4fb8-af9c-05604e337d40",
"name": "Job abrufen",
"type": "n8n-nodes-base.airtable",
"position": [
0,
-48
],
"parameters": {
"id": "={{ $('Webhook').item.json.query.recordId }}",
"base": {
"__rl": true,
"mode": "id",
"value": "={{ $json.airtableBaseId }}"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblN7ikAWki5s5jcd",
"cachedResultUrl": "https://airtable.com/app3umoCF1t88Mg0q/tblN7ikAWki5s5jcd",
"cachedResultName": "Jobs"
},
"options": {}
},
"credentials": {
"airtableTokenApi": {
"id": "N8Xyxqz7hb8XrETy",
"name": "Airtable account"
}
},
"typeVersion": 2.1
},
{
"id": "0a022036-95d0-4409-8a61-60afe3c767eb",
"name": "Bereinigen",
"type": "n8n-nodes-base.set",
"position": [
368,
-48
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "a3ccbf23-1cbe-4c72-a98f-2739d9ff86bb",
"name": "products",
"type": "array",
"value": "={{ $json[\"Product Images\"] }}"
},
{
"id": "393ff00d-6976-4e2f-894a-e8faac20df59",
"name": "templates",
"type": "array",
"value": "={{ $json.Templates }}"
},
{
"id": "531d603d-168e-484d-9543-a002d57b64f6",
"name": "job_id",
"type": "string",
"value": "={{ $json.id }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "1e5d84ca-72c4-462f-b5a8-68861652eb65",
"name": "Produkte aufteilen",
"type": "n8n-nodes-base.splitOut",
"position": [
-256,
512
],
"parameters": {
"options": {},
"fieldToSplitOut": "products"
},
"typeVersion": 1
},
{
"id": "0c3dfd3a-0871-4a7b-9252-6070289d8a9e",
"name": "Produkte abrufen",
"type": "n8n-nodes-base.airtable",
"position": [
-48,
512
],
"parameters": {
"id": "={{ $json.products }}",
"base": {
"__rl": true,
"mode": "id",
"value": "={{ $('parameters').item.json.airtableBaseId }}"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblZeNi5MVPOEj7Hp",
"cachedResultUrl": "https://airtable.com/app3umoCF1t88Mg0q/tblZeNi5MVPOEj7Hp",
"cachedResultName": "Product Images"
},
"options": {}
},
"credentials": {
"airtableTokenApi": {
"id": "N8Xyxqz7hb8XrETy",
"name": "Airtable account"
}
},
"typeVersion": 2.1
},
{
"id": "a3487dd1-d051-447e-8f38-dd4150ad4a9e",
"name": "Vorlagen aufteilen",
"type": "n8n-nodes-base.splitOut",
"position": [
-304,
880
],
"parameters": {
"options": {},
"fieldToSplitOut": "templates"
},
"typeVersion": 1
},
{
"id": "bbfb9c8b-7356-4dcf-b028-9d9b320b4a76",
"name": "Vorlagen abrufen",
"type": "n8n-nodes-base.airtable",
"position": [
-96,
880
],
"parameters": {
"id": "={{ $json.templates }}",
"base": {
"__rl": true,
"mode": "id",
"value": "={{ $('parameters').item.json.airtableBaseId }}"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblGJpUnqFpLMlVFe",
"cachedResultUrl": "https://airtable.com/app3umoCF1t88Mg0q/tblGJpUnqFpLMlVFe",
"cachedResultName": "Templates"
},
"options": {}
},
"credentials": {
"airtableTokenApi": {
"id": "N8Xyxqz7hb8XrETy",
"name": "Airtable account"
}
},
"typeVersion": 2.1
},
{
"id": "a161d2a7-1487-4676-9a01-b34a9d5de3f3",
"name": "Produkte bearbeiten",
"type": "n8n-nodes-base.set",
"position": [
160,
512
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "01aa86b1-9db5-4e37-85b3-bc9310086a34",
"name": "product_id",
"type": "string",
"value": "={{ $json.id }}"
},
{
"id": "1683c450-7ce9-4f4d-bbe7-aa3adec0268e",
"name": "product_image_url",
"type": "string",
"value": "={{ $json.Image[0].url }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "0c2ea55a-6403-4cc6-9d5b-cc0923a0c700",
"name": "Vorlagen bearbeiten",
"type": "n8n-nodes-base.set",
"position": [
112,
880
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "30c708da-5ecd-47f5-8464-491c2fe57dac",
"name": "template_id",
"type": "string",
"value": "={{ $json.id }}"
},
{
"id": "00dad2c3-d89f-4cb2-b6a1-0b5c2a059ed3",
"name": "prompt",
"type": "string",
"value": "={{ $json[\"Text Prompt\"] }}"
},
{
"id": "066fe522-da75-479e-891a-83bc7382bd04",
"name": "reference_images",
"type": "array",
"value": "={{ $json[\"Reference Images\"] }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "0be8b4ac-5135-49bf-902f-898ea1fc292f",
"name": "Über Vorlagen iterieren",
"type": "n8n-nodes-base.splitInBatches",
"position": [
320,
1056
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "f0ccedc8-7f2d-43c2-a95b-6fcd25b4a638",
"name": "Referenzbilder aufteilen",
"type": "n8n-nodes-base.splitOut",
"position": [
512,
1056
],
"parameters": {
"options": {},
"fieldToSplitOut": "reference_images"
},
"typeVersion": 1
},
{
"id": "7c1bcb47-53f9-49f7-b113-e47fd343f257",
"name": "Referenzbild abrufen",
"type": "n8n-nodes-base.airtable",
"position": [
720,
1056
],
"parameters": {
"id": "={{ $json.reference_images }}",
"base": {
"__rl": true,
"mode": "id",
"value": "={{ $('parameters').item.json.airtableBaseId }}"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tbl4STKAfNWhTsJjl",
"cachedResultUrl": "https://airtable.com/app3umoCF1t88Mg0q/tbl4STKAfNWhTsJjl",
"cachedResultName": "Reference Images"
},
"options": {}
},
"credentials": {
"airtableTokenApi": {
"id": "N8Xyxqz7hb8XrETy",
"name": "Airtable account"
}
},
"typeVersion": 2.1
},
{
"id": "84a1f3a1-f07c-4b96-8230-8f6ac5b3aa09",
"name": "Referenzbild bearbeiten",
"type": "n8n-nodes-base.set",
"position": [
928,
1056
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "04e74aef-d137-46e3-b3dc-8c7df312a082",
"name": "image_id",
"type": "string",
"value": "={{ $json.id }}"
},
{
"id": "9a1d608a-6899-4e8f-a176-49aecee80071",
"name": "image_url",
"type": "string",
"value": "={{ $json.Image[0].url }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "aa125477-4571-4f0e-8048-ede5399e1dc8",
"name": "Aggregieren",
"type": "n8n-nodes-base.aggregate",
"position": [
1344,
1056
],
"parameters": {
"options": {
"includeBinaries": true
},
"aggregate": "aggregateAllItemData",
"destinationFieldName": "reference_images"
},
"typeVersion": 1
},
{
"id": "aea3c143-19d0-4e78-ac42-77169a9aee23",
"name": "Vorlagendaten zusammenführen",
"type": "n8n-nodes-base.merge",
"position": [
544,
896
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition"
},
"typeVersion": 3.2
},
{
"id": "57503692-1718-4a0b-9571-876157d03c7d",
"name": "Alle Kombinationen",
"type": "n8n-nodes-base.merge",
"position": [
832,
320
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineAll"
},
"typeVersion": 3.2
},
{
"id": "21a21132-0aa5-4c93-988e-5619bdaf283a",
"name": "Produktbild herunterladen",
"type": "n8n-nodes-base.httpRequest",
"position": [
368,
512
],
"parameters": {
"url": "={{ $json.product_image_url }}",
"options": {
"response": {
"response": {
"responseFormat": "file",
"outputPropertyName": "product_data"
}
}
}
},
"typeVersion": 4.2
},
{
"id": "85fb61ce-6ad2-4459-b7fa-8d364e1b20de",
"name": "Switch",
"type": "n8n-nodes-base.switch",
"position": [
1040,
304
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "1",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "8211d8e0-11b2-418c-9841-4895024a6b68",
"operator": {
"type": "array",
"operation": "lengthEquals",
"rightType": "number"
},
"leftValue": "={{ $json.reference_images }}",
"rightValue": 1
}
]
},
"renameOutput": true
},
{
"outputKey": "2",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "398d3cf3-4956-47fa-bee6-57d9a7918cfd",
"operator": {
"type": "array",
"operation": "lengthEquals",
"rightType": "number"
},
"leftValue": "={{ $json.reference_images }}",
"rightValue": 2
}
]
},
"renameOutput": true
},
{
"outputKey": "3",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "f60c5fb0-725d-4978-b0ce-bb5ca877cff8",
"operator": {
"type": "array",
"operation": "lengthGte",
"rightType": "number"
},
"leftValue": "={{ $json.reference_images }}",
"rightValue": 3
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.3
},
{
"id": "d39bb48d-cc1f-4a25-90b8-8954a25cbbe7",
"name": "Mit 1 Referenz generieren",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
1328,
128
],
"parameters": {
"images": {
"values": [
{
"binaryPropertyName": "product_data"
},
{}
]
},
"prompt": "={{ $json.prompt }}",
"options": {
"binaryPropertyOutput": "edited"
},
"resource": "image",
"operation": "edit"
},
"credentials": {
"googlePalmApi": {
"id": "ybwzU4ruTo49PRfX",
"name": "Google Gemini vadim.ai.lab"
}
},
"typeVersion": 1
},
{
"id": "5e05fb1a-349a-47db-ba61-5eda06ad21a4",
"name": "Mit 2 Referenzen generieren",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
1328,
320
],
"parameters": {
"images": {
"values": [
{
"binaryPropertyName": "product_data"
},
{},
{
"binaryPropertyName": "data_1"
}
]
},
"prompt": "={{ $json.prompt }}",
"options": {
"binaryPropertyOutput": "edited"
},
"resource": "image",
"operation": "edit"
},
"credentials": {
"googlePalmApi": {
"id": "ybwzU4ruTo49PRfX",
"name": "Google Gemini vadim.ai.lab"
}
},
"typeVersion": 1
},
{
"id": "e2e5fa21-2410-4d2b-b5fb-0098aaefcfe8",
"name": "Mit 3 Referenzen generieren",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
1328,
512
],
"parameters": {
"images": {
"values": [
{
"binaryPropertyName": "product_data"
},
{},
{
"binaryPropertyName": "data_1"
},
{
"binaryPropertyName": "data_2"
}
]
},
"prompt": "={{ $json.prompt }}",
"options": {
"binaryPropertyOutput": "edited"
},
"resource": "image",
"operation": "edit"
},
"credentials": {
"googlePalmApi": {
"id": "ybwzU4ruTo49PRfX",
"name": "Google Gemini vadim.ai.lab"
}
},
"typeVersion": 1
},
{
"id": "cd75753a-af60-4cfa-8df4-20e66024dfe7",
"name": "Zusammenführen",
"type": "n8n-nodes-base.merge",
"position": [
1600,
304
],
"parameters": {
"numberInputs": 3
},
"typeVersion": 3.2
},
{
"id": "535911c6-7163-4492-bb65-a6784e10f02f",
"name": "Aus Datei extrahieren",
"type": "n8n-nodes-base.extractFromFile",
"position": [
1872,
320
],
"parameters": {
"options": {
"encoding": "utf8",
"keepSource": "json"
},
"operation": "binaryToPropery",
"destinationKey": "output_base64",
"binaryPropertyName": "edited"
},
"typeVersion": 1
},
{
"id": "8d0504da-1d78-4162-b661-7fb8af37e8e5",
"name": "Parameter",
"type": "n8n-nodes-base.set",
"position": [
-288,
-48
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "c7691548-c717-4a29-b983-5a394f2a7ad2",
"name": "airtableBaseId",
"type": "string",
"value": "app3umoCF1t88Mg0q"
},
{
"id": "4282bb3a-8ab7-4742-99bd-2a3343bfe62c",
"name": "airtableResultImageFieldId",
"type": "string",
"value": "fldzhCsleyyBrPyKj"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "1f4e2221-0180-4e9c-939b-3ca229dda498",
"name": "Jobstatus aktualisieren",
"type": "n8n-nodes-base.airtable",
"position": [
192,
-208
],
"parameters": {
"base": {
"__rl": true,
"mode": "id",
"value": "={{ $('parameters').item.json.airtableBaseId }}"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblN7ikAWki5s5jcd",
"cachedResultUrl": "https://airtable.com/app3umoCF1t88Mg0q/tblN7ikAWki5s5jcd",
"cachedResultName": "Jobs"
},
"columns": {
"value": {
"id": "={{ $json.id }}",
"Status": "In progress"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "id",
"defaultMatch": true
},
{
"id": "Name",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Product Images",
"type": "array",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Product Images",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Templates",
"type": "array",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Templates",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Created Time",
"type": "dateTime",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Created Time",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "options",
"display": true,
"options": [
{
"name": "Created",
"value": "Created"
},
{
"name": "In progress",
"value": "In progress"
},
{
"name": "Done",
"value": "Done"
}
],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Results",
"type": "array",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Results",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Generate",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "Generate",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update"
},
"credentials": {
"airtableTokenApi": {
"id": "N8Xyxqz7hb8XrETy",
"name": "Airtable account"
}
},
"typeVersion": 2.1
},
{
"id": "2795c78d-39e0-453e-8013-103c792122ff",
"name": "Jobstatus aktualisieren (abgeschlossen)",
"type": "n8n-nodes-base.airtable",
"position": [
2704,
320
],
"parameters": {
"base": {
"__rl": true,
"mode": "id",
"value": "={{ $('parameters').item.json.airtableBaseId }}"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblN7ikAWki5s5jcd",
"cachedResultUrl": "https://airtable.com/app3umoCF1t88Mg0q/tblN7ikAWki5s5jcd",
"cachedResultName": "Jobs"
},
"columns": {
"value": {
"id": "={{ $('Get Job').item.json.id }}",
"Status": "Done"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "id",
"defaultMatch": true
},
{
"id": "Name",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Product Images",
"type": "array",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Product Images",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Templates",
"type": "array",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Templates",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Created Time",
"type": "dateTime",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Created Time",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "options",
"display": true,
"options": [
{
"name": "Created",
"value": "Created"
},
{
"name": "In progress",
"value": "In progress"
},
{
"name": "Done",
"value": "Done"
}
],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Results",
"type": "array",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Results",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Generate",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "Generate",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update"
},
"credentials": {
"airtableTokenApi": {
"id": "N8Xyxqz7hb8XrETy",
"name": "Airtable account"
}
},
"typeVersion": 2.1
},
{
"id": "e6711f0b-f985-46a9-9adf-0408ec0c062d",
"name": "Haftnotiz",
"type": "n8n-nodes-base.stickyNote",
"position": [
1824,
176
],
"parameters": {
"color": 6,
"width": 1072,
"height": 336,
"content": "## Step 4. Create new Result records in Airtable\n- For each generated image, create new Result record\n- Upload generated image and attach it to its Result record via HTTP node\n- Set Job's status to 'done' "
},
"typeVersion": 1
},
{
"id": "566017ed-7968-4ba5-b930-88e6c542a5b4",
"name": "Haftnotiz1",
"type": "n8n-nodes-base.stickyNote",
"position": [
784,
0
],
"parameters": {
"color": 6,
"width": 960,
"height": 672,
"content": "## Step 3. Generate new product images\n- Create all combinations of original images and templates\n- Pick generation node based on the number of reference images (up to 3)\n- Generate new product images"
},
"typeVersion": 1
},
{
"id": "0a3f8a80-d670-41ec-af49-cd8d5711cd3f",
"name": "Haftnotiz2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-336,
768
],
"parameters": {
"color": 6,
"width": 1856,
"height": 496,
"content": "## Step 2b. Get templates with reference images\n- Fetch Template records specified in Job (each template contains a **prompt** and one or several **reference images**)\n- For each template, download reference images (in the loop)"
},
"typeVersion": 1
},
{
"id": "73da7bc0-d36a-4c69-96bd-116876e1025b",
"name": "Haftnotiz3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-288,
400
],
"parameters": {
"color": 6,
"width": 816,
"height": 288,
"content": "## Step 2a. Get original product image\n- Fetch Product records specified in Job\n- Download product images"
},
"typeVersion": 1
},
{
"id": "f324e87b-1821-4c92-8c67-3276fa79fcb4",
"name": "Haftnotiz4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-352,
-192
],
"parameters": {
"color": 5,
"width": 224,
"height": 304,
"content": "## Configure\n➤ set Airtable base ID\n➤ set Airtable field ID for generated images"
},
"typeVersion": 1
},
{
"id": "4b0b80c7-8f71-4032-83bb-3df0042e449b",
"name": "Haftnotiz5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-32,
-320
],
"parameters": {
"color": 6,
"width": 528,
"height": 432,
"content": "## Step 1. Fetch Job record by ID\nAlso set Job's status to 'in progress' in Airtable"
},
"typeVersion": 1
},
{
"id": "c4c76af6-3023-40cd-b27f-d4a144edff6b",
"name": "Anhang hochladen",
"type": "n8n-nodes-base.httpRequest",
"position": [
2496,
320
],
"parameters": {
"url": "=https://content.airtable.com/v0/{{ $('parameters').item.json.airtableBaseId }}/{{ $json.id }}/{{ $('parameters').item.json.airtableResultImageFieldId }}/uploadAttachment",
"method": "POST",
"options": {},
"sendBody": true,
"authentication": "predefinedCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "contentType",
"value": "={{ $('Collect variables').item.json.mimeType }}"
},
{
"name": "file",
"value": "={{ $('Collect variables').item.json.outputBase64 }}"
},
{
"name": "filename",
"value": "image.png"
}
]
},
"nodeCredentialType": "airtableTokenApi"
},
"credentials": {
"airtableTokenApi": {
"id": "N8Xyxqz7hb8XrETy",
"name": "Airtable account"
}
},
"typeVersion": 4.2
},
{
"id": "fb2d292d-f389-4761-8fac-8a02bd81366f",
"name": "Ergebnisdatensatz erstellen",
"type": "n8n-nodes-base.airtable",
"position": [
2288,
320
],
"parameters": {
"base": {
"__rl": true,
"mode": "id",
"value": "={{ $('parameters').item.json.airtableBaseId }}"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblSoB3qTeeKXjsov",
"cachedResultUrl": "https://airtable.com/app3umoCF1t88Mg0q/tblSoB3qTeeKXjsov",
"cachedResultName": "Results"
},
"columns": {
"value": {
"Jobs": "=[\"{{ $json.jobId }}\"]",
"Status": "Pending",
"Template": "=[\"{{ $json.templateId }}\"]",
"Timestamp": "={{ $now }}",
"Product Image": "=[\"{{ $json.productId }}\"]"
},
"schema": [
{
"id": "ID",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Generated Image",
"type": "array",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Generated Image",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Jobs",
"type": "array",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Jobs",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Product Image",
"type": "array",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Product Image",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Template",
"type": "array",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Template",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Timestamp",
"type": "dateTime",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Timestamp",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "options",
"display": true,
"options": [
{
"name": "Pending",
"value": "Pending"
},
{
"name": "Approved",
"value": "Approved"
},
{
"name": "Rejected",
"value": "Rejected"
},
{
"name": "",
"value": ""
}
],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Notes",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Notes",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"id": "N8Xyxqz7hb8XrETy",
"name": "Airtable account"
}
},
"typeVersion": 2.1
},
{
"id": "7b9cf6ec-84ae-45b4-9b7d-ea46fdf2c48e",
"name": "Variablen sammeln",
"type": "n8n-nodes-base.set",
"position": [
2080,
320
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "3e057dd9-283b-4722-bd2e-23f725f5137f",
"name": "outputBase64",
"type": "string",
"value": "={{ $json.output_base64 }}"
},
{
"id": "b4c377ad-ed0d-42fa-85ca-f08416751595",
"name": "mimeType",
"type": "string",
"value": "={{ $json.mimeType }}"
},
{
"id": "8da67ef3-319b-486e-8f0c-1cd6db274a56",
"name": "templateId",
"type": "string",
"value": "={{ $('All combinations').item.json.template_id }}"
},
{
"id": "3f4967da-e951-4408-9684-ff1c5463d9c3",
"name": "productId",
"type": "string",
"value": "={{ $('All combinations').item.json.product_id }}"
},
{
"id": "990586ac-cd48-4ed6-be37-62472176bfc6",
"name": "jobId",
"type": "string",
"value": "={{ $('Get Job').item.json.id }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "3d346e31-2372-4261-b596-291c71b2f629",
"name": "Haftnotiz6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1248,
208
],
"parameters": {
"width": 768,
"height": 752,
"content": "## AI Product Photography using Airtable and Gemini (Nano Banana)\n\nThis workflow automates the process of generating stylized product photos for e-commerce by combining real product shots with creative templates. It enables the creation of a complete set of images for an SKU from a single product photo and a set of reusable templates. The workflow uses Google Gemini (Nano Banana) for image editing and Airtable as the data source.\n\n### Airtable tables\n\nThis workflow expects the following Airtable table setup:\n- **\"Product Images\"** - contains original product photos, one per record.\n- **\"Reference Images\"** - contains reference images for templates, one per record.\n- **\"Templates\"** - contains reusable generation templates. Each template includes a text prompt and up to three reference images.\n- **\"Jobs\"** - contains batch generation jobs. Each job references multiple product images and multiple templates.\n- **\"Results\"** - contains the generated outputs. Each result includes a generated image, references to the job, product image, and template, and a status field (pending, approved, rejected).\n\n\nThe workflow is triggered by a webhook that receives a job ID from Airtable.\n\n### Requirements\n1. Airtable Personal Access Token\n2. Google Gemini API key\n\n### Setup\n1. Ensure all required Airtable tables exist.\n2. Configure parameters in the **parameters** node:\n - Set Airtable Base ID\n - Set ID of the attachment field in the \"Results\" table (where the generated images will be uploaded) \n4. Configure credentials for all Airtable nodes.\n5. Set Google Gemini API key for the \"Generate...\" nodes.\n"
},
"typeVersion": 1
},
{
"id": "bacc0136-0fcf-4f69-8417-d9ba848085ef",
"name": "Referenzbild herunterladen",
"type": "n8n-nodes-base.httpRequest",
"position": [
1136,
1056
],
"parameters": {
"url": "={{ $json.image_url }}",
"options": {}
},
"typeVersion": 4.2
}
],
"active": false,
"pinData": {
"Clean up": [
{
"json": {
"job_id": "recJV3zfx8GVv1Hzf",
"products": [
"recfkmrLLZZiqGRdW"
],
"templates": [
"recUzp3aSes2n9EUC"
]
}
}
]
},
"settings": {
"executionOrder": "v1"
},
"versionId": "9d566c64-537d-4b89-bcdf-f6abec5cd490",
"connections": {
"cd75753a-af60-4cfa-8df4-20e66024dfe7": {
"main": [
[
{
"node": "535911c6-7163-4492-bb65-a6784e10f02f",
"type": "main",
"index": 0
}
]
]
},
"85fb61ce-6ad2-4459-b7fa-8d364e1b20de": {
"main": [
[
{
"node": "d39bb48d-cc1f-4a25-90b8-8954a25cbbe7",
"type": "main",
"index": 0
}
],
[
{
"node": "5e05fb1a-349a-47db-ba61-5eda06ad21a4",
"type": "main",
"index": 0
}
],
[
{
"node": "e2e5fa21-2410-4d2b-b5fb-0098aaefcfe8",
"type": "main",
"index": 0
}
]
]
},
"0cf73e67-9194-4fb8-af9c-05604e337d40": {
"main": [
[
{
"node": "1f4e2221-0180-4e9c-939b-3ca229dda498",
"type": "main",
"index": 0
},
{
"node": "0a022036-95d0-4409-8a61-60afe3c767eb",
"type": "main",
"index": 0
}
]
]
},
"9d581fc1-2b21-41f2-b61f-e1b2984eba34": {
"main": [
[
{
"node": "8d0504da-1d78-4162-b661-7fb8af37e8e5",
"type": "main",
"index": 0
}
]
]
},
"0a022036-95d0-4409-8a61-60afe3c767eb": {
"main": [
[
{
"node": "1e5d84ca-72c4-462f-b5a8-68861652eb65",
"type": "main",
"index": 0
},
{
"node": "a3487dd1-d051-447e-8f38-dd4150ad4a9e",
"type": "main",
"index": 0
}
]
]
},
"aa125477-4571-4f0e-8048-ede5399e1dc8": {
"main": [
[
{
"node": "0be8b4ac-5135-49bf-902f-898ea1fc292f",
"type": "main",
"index": 0
}
]
]
},
"8d0504da-1d78-4162-b661-7fb8af37e8e5": {
"main": [
[
{
"node": "0cf73e67-9194-4fb8-af9c-05604e337d40",
"type": "main",
"index": 0
}
]
]
},
"0c3dfd3a-0871-4a7b-9252-6070289d8a9e": {
"main": [
[
{
"node": "a161d2a7-1487-4676-9a01-b34a9d5de3f3",
"type": "main",
"index": 0
}
]
]
},
"a161d2a7-1487-4676-9a01-b34a9d5de3f3": {
"main": [
[
{
"node": "21a21132-0aa5-4c93-988e-5619bdaf283a",
"type": "main",
"index": 0
}
]
]
},
"bbfb9c8b-7356-4dcf-b028-9d9b320b4a76": {
"main": [
[
{
"node": "0c2ea55a-6403-4cc6-9d5b-cc0923a0c700",
"type": "main",
"index": 0
}
]
]
},
"0c2ea55a-6403-4cc6-9d5b-cc0923a0c700": {
"main": [
[
{
"node": "0be8b4ac-5135-49bf-902f-898ea1fc292f",
"type": "main",
"index": 0
},
{
"node": "aea3c143-19d0-4e78-ac42-77169a9aee23",
"type": "main",
"index": 0
}
]
]
},
"1e5d84ca-72c4-462f-b5a8-68861652eb65": {
"main": [
[
{
"node": "0c3dfd3a-0871-4a7b-9252-6070289d8a9e",
"type": "main",
"index": 0
}
]
]
},
"a3487dd1-d051-447e-8f38-dd4150ad4a9e": {
"main": [
[
{
"node": "bbfb9c8b-7356-4dcf-b028-9d9b320b4a76",
"type": "main",
"index": 0
}
]
]
},
"57503692-1718-4a0b-9571-876157d03c7d": {
"main": [
[
{
"node": "85fb61ce-6ad2-4459-b7fa-8d364e1b20de",
"type": "main",
"index": 0
}
]
]
},
"7b9cf6ec-84ae-45b4-9b7d-ea46fdf2c48e": {
"main": [
[
{
"node": "fb2d292d-f389-4761-8fac-8a02bd81366f",
"type": "main",
"index": 0
}
]
]
},
"535911c6-7163-4492-bb65-a6784e10f02f": {
"main": [
[
{
"node": "7b9cf6ec-84ae-45b4-9b7d-ea46fdf2c48e",
"type": "main",
"index": 0
}
]
]
},
"1f4e2221-0180-4e9c-939b-3ca229dda498": {
"main": [
[]
]
},
"c4c76af6-3023-40cd-b27f-d4a144edff6b": {
"main": [
[
{
"node": "2795c78d-39e0-453e-8013-103c792122ff",
"type": "main",
"index": 0
}
]
]
},
"d39bb48d-cc1f-4a25-90b8-8954a25cbbe7": {
"main": [
[
{
"node": "cd75753a-af60-4cfa-8df4-20e66024dfe7",
"type": "main",
"index": 0
}
]
]
},
"7c1bcb47-53f9-49f7-b113-e47fd343f257": {
"main": [
[
{
"node": "84a1f3a1-f07c-4b96-8230-8f6ac5b3aa09",
"type": "main",
"index": 0
}
]
]
},
"0be8b4ac-5135-49bf-902f-898ea1fc292f": {
"main": [
[
{
"node": "aea3c143-19d0-4e78-ac42-77169a9aee23",
"type": "main",
"index": 1
}
],
[
{
"node": "f0ccedc8-7f2d-43c2-a95b-6fcd25b4a638",
"type": "main",
"index": 0
}
]
]
},
"fb2d292d-f389-4761-8fac-8a02bd81366f": {
"main": [
[
{
"node": "c4c76af6-3023-40cd-b27f-d4a144edff6b",
"type": "main",
"index": 0
}
]
]
},
"84a1f3a1-f07c-4b96-8230-8f6ac5b3aa09": {
"main": [
[
{
"node": "bacc0136-0fcf-4f69-8417-d9ba848085ef",
"type": "main",
"index": 0
}
]
]
},
"5e05fb1a-349a-47db-ba61-5eda06ad21a4": {
"main": [
[
{
"node": "cd75753a-af60-4cfa-8df4-20e66024dfe7",
"type": "main",
"index": 1
}
]
]
},
"e2e5fa21-2410-4d2b-b5fb-0098aaefcfe8": {
"main": [
[
{
"node": "cd75753a-af60-4cfa-8df4-20e66024dfe7",
"type": "main",
"index": 2
}
]
]
},
"aea3c143-19d0-4e78-ac42-77169a9aee23": {
"main": [
[
{
"node": "57503692-1718-4a0b-9571-876157d03c7d",
"type": "main",
"index": 1
}
]
]
},
"21a21132-0aa5-4c93-988e-5619bdaf283a": {
"main": [
[
{
"node": "57503692-1718-4a0b-9571-876157d03c7d",
"type": "main",
"index": 0
}
]
]
},
"f0ccedc8-7f2d-43c2-a95b-6fcd25b4a638": {
"main": [
[
{
"node": "7c1bcb47-53f9-49f7-b113-e47fd343f257",
"type": "main",
"index": 0
}
]
]
},
"bacc0136-0fcf-4f69-8417-d9ba848085ef": {
"main": [
[
{
"node": "aa125477-4571-4f0e-8048-ede5399e1dc8",
"type": "main",
"index": 0
}
]
]
},
"2795c78d-39e0-453e-8013-103c792122ff": {
"main": [
[]
]
}
}
}Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Experte - Content-Erstellung, Multimodales KI
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
Vadim
@coderikI help businesses implement innovative AI/ML solutions, redesign existing systems to cut costs and boost reliability, and conduct applied R&D. I specialize in AI automation, agents, LLMs, Generative AI and Computer Vision. Need help customizing workflows? Just find me on Upwork.
Diesen Workflow teilen