Fotografía de productos - Revisión
Este es unContent Creation, Multimodal AIflujo de automatización del dominio deautomatización que contiene 37 nodos.Utiliza principalmente nodos como Set, Merge, Switch, Webhook, Airtable. Usar Airtable y Gemini Nano Banana para crear fotografía de productos con estilo
- •Punto final de HTTP Webhook (n8n generará automáticamente)
- •Clave de API de Airtable
- •Pueden requerirse credenciales de autenticación para la API de destino
Nodos utilizados (37)
Categoría
{
"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": "Obtener trabajo",
"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": "Limpiar",
"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": "Dividir productos",
"type": "n8n-nodes-base.splitOut",
"position": [
-256,
512
],
"parameters": {
"options": {},
"fieldToSplitOut": "products"
},
"typeVersion": 1
},
{
"id": "0c3dfd3a-0871-4a7b-9252-6070289d8a9e",
"name": "Obtener productos",
"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": "Dividir plantillas",
"type": "n8n-nodes-base.splitOut",
"position": [
-304,
880
],
"parameters": {
"options": {},
"fieldToSplitOut": "templates"
},
"typeVersion": 1
},
{
"id": "bbfb9c8b-7356-4dcf-b028-9d9b320b4a76",
"name": "Obtener plantillas",
"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": "Editar productos",
"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": "Editar plantillas",
"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": "Iterar sobre plantillas",
"type": "n8n-nodes-base.splitInBatches",
"position": [
320,
1056
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "f0ccedc8-7f2d-43c2-a95b-6fcd25b4a638",
"name": "Dividir imágenes de referencia",
"type": "n8n-nodes-base.splitOut",
"position": [
512,
1056
],
"parameters": {
"options": {},
"fieldToSplitOut": "reference_images"
},
"typeVersion": 1
},
{
"id": "7c1bcb47-53f9-49f7-b113-e47fd343f257",
"name": "Obtener imagen de referencia",
"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": "Editar imagen de referencia",
"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": "Agregar",
"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": "Combinar datos de plantillas",
"type": "n8n-nodes-base.merge",
"position": [
544,
896
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition"
},
"typeVersion": 3.2
},
{
"id": "57503692-1718-4a0b-9571-876157d03c7d",
"name": "Todas las combinaciones",
"type": "n8n-nodes-base.merge",
"position": [
832,
320
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineAll"
},
"typeVersion": 3.2
},
{
"id": "21a21132-0aa5-4c93-988e-5619bdaf283a",
"name": "Descargar imagen de producto",
"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": "Generar con 1 referencia",
"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": "Generar con 2 referencias",
"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": "Generar con 3 referencias",
"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": "Fusionar",
"type": "n8n-nodes-base.merge",
"position": [
1600,
304
],
"parameters": {
"numberInputs": 3
},
"typeVersion": 3.2
},
{
"id": "535911c6-7163-4492-bb65-a6784e10f02f",
"name": "Extraer de archivo",
"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": "parámetros",
"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": "Actualizar estado del trabajo",
"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": "Actualizar estado del trabajo (completado)",
"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": "Nota adhesiva",
"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": "Nota adhesiva1",
"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": "Nota adhesiva2",
"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": "Nota adhesiva3",
"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": "Nota adhesiva4",
"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": "Nota adhesiva5",
"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": "Subir archivo adjunto",
"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": "Crear registro de resultado",
"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": "Recopilar variables",
"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": "Nota adhesiva6",
"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": "Descargar imagen de referencia",
"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": [
[]
]
}
}
}¿Cómo usar este flujo de trabajo?
Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.
¿En qué escenarios es adecuado este flujo de trabajo?
Avanzado - Creación de contenido, IA Multimodal
¿Es de pago?
Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.
Flujos de trabajo relacionados recomendados
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.
Compartir este flujo de trabajo