Generación automática de videos de productos utilizando Gemini, FAL y Google Workspace
Este es unContent Creation, Multimodal AIflujo de automatización del dominio deautomatización que contiene 16 nodos.Utiliza principalmente nodos como Wait, Filter, GoogleDrive, HttpRequest, GoogleSheets. Usar Gemini, FAL y Google Workspace para generar videos de productos automáticamente
- •Credenciales de API de Google Drive
- •Pueden requerirse credenciales de autenticación para la API de destino
- •Credenciales de API de Google Sheets
Nodos utilizados (16)
Categoría
{
"meta": {
"instanceId": "783d2046f405cc6ecb20ef185376ed1023323a3da628b9d8156b1fb75c75e037"
},
"nodes": [
{
"id": "06fc66f7-c12e-443c-bfdb-1339128e0dec",
"name": "Hojas de Google Trigger",
"type": "n8n-nodes-base.googleSheetsTrigger",
"position": [
0,
368
],
"parameters": {
"event": "rowAdded",
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"sheetName": {
"__rl": true,
"mode": "id",
"value": "=xxxx"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "=xxxxxx"
}
},
"credentials": {
"googleSheetsTriggerOAuth2Api": {
"id": "yThtJbXk01Imf6iZ",
"name": "Google Sheets Trigger account"
}
},
"typeVersion": 1
},
{
"id": "4f833098-8f46-457f-9e47-5e273b831de4",
"name": "Descargar archivo",
"type": "n8n-nodes-base.googleDrive",
"position": [
464,
368
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "url",
"value": "={{ $json.link_image }}",
"__regex": "https:\\/\\/(?:drive|docs)\\.google\\.com(?:\\/.*|)\\/d\\/([0-9a-zA-Z\\-_]+)(?:\\/.*|)"
},
"options": {},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "7ksMk3zwMvT2CToN",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "27356824-4c60-47f8-9c25-846d2716bd25",
"name": "Extraer de archivo",
"type": "n8n-nodes-base.extractFromFile",
"position": [
688,
368
],
"parameters": {
"options": {},
"operation": "binaryToPropery"
},
"typeVersion": 1
},
{
"id": "8d2848d5-b2e5-49a7-9480-526ae86212b6",
"name": "Convertir a archivo",
"type": "n8n-nodes-base.convertToFile",
"position": [
1168,
368
],
"parameters": {
"options": {},
"operation": "toBinary",
"sourceProperty": "=candidates[0].content.parts[0].inlineData.data"
},
"typeVersion": 1.1
},
{
"id": "2491f22b-31e8-4190-91ce-b3ef4889ae14",
"name": "Subir archivo",
"type": "n8n-nodes-base.googleDrive",
"position": [
1424,
368
],
"parameters": {
"name": "={{ $now }}",
"driveId": {
"__rl": true,
"mode": "id",
"value": "=My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "id",
"value": "=xxxxx"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "7ksMk3zwMvT2CToN",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "dac990c2-64a1-4e13-b9d4-ffbeb890f90c",
"name": "Actualizar fila en hoja",
"type": "n8n-nodes-base.googleSheets",
"position": [
2816,
368
],
"parameters": {
"columns": {
"value": {
"STT": "={{ $('Google Sheets Trigger').item.json.STT }}",
"status": "finished",
"link_video": "={{ $json.webViewLink }}"
},
"schema": [
{
"id": "STT",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "STT",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "link_image",
"type": "string",
"display": true,
"required": false,
"displayName": "link_image",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "note",
"type": "string",
"display": true,
"required": false,
"displayName": "note",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "status",
"type": "string",
"display": true,
"required": false,
"displayName": "status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "link_video",
"type": "string",
"display": true,
"required": false,
"displayName": "link_video",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"STT"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1WCta4mwXQB0vY1Etre78IrVouruy6gRRe1mToswv6v8/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "=xxxx"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "urlO8dciDPm5B2zv",
"name": "Google Sheets account"
}
},
"typeVersion": 4.7
},
{
"id": "82b056de-b2ac-4575-95b0-6bf1a10f4549",
"name": "Nota adhesiva — Resumen",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"parameters": {
"color": 5,
"width": 680,
"height": 320,
"content": "## Workflow Overview\n**Purpose:** Auto-generate branded product/ad videos directly from Google Sheets rows.\n**Trigger:** A new row is added with an image link (Google Sheets Trigger - rowAdded).\n**Steps:**\n1) Download image from Google Drive → Extract base64.\n2) Call Gemini API to create an ad-style image variant.\n3) Convert & upload the generated image to Drive (images folder).\n4) Send the image to FAL (image-to-video) to create a short clip.\n5) Poll FAL response URL until status = completed, then download the video.\n6) Upload video to Drive (videos folder) and update the sheet with the video link.\n\n**Result:** A fully automated pipeline: a spreadsheet row → final video asset."
},
"typeVersion": 1
},
{
"id": "e93e737c-4712-46ed-9511-3a054cd34818",
"name": "Nota adhesiva — Configuración",
"type": "n8n-nodes-base.stickyNote",
"position": [
1120,
0
],
"parameters": {
"color": 3,
"width": 680,
"height": 280,
"content": "## Setup Checklist\n- APIs & Keys: Google Sheets, Google Drive, **Gemini API key**, **FAL API key** (use Credentials; do not hardcode).\n- Google Drive: set folder IDs in the two **Upload file** nodes (image/video destinations).\n- Sheet columns (minimum): `STT`, `link_image`, `link_video`, `status`, `note`.\n- Trigger: runs when a new row is added.\n- Quick Test: add a row with a valid `link_image` → image generated → video uploaded → `link_video` written back."
},
"typeVersion": 1
},
{
"id": "9d4202cd-993b-4f9c-b190-4058e827c9f9",
"name": "Nota adhesiva — Notas y consejos",
"type": "n8n-nodes-base.stickyNote",
"position": [
2208,
0
],
"parameters": {
"color": 4,
"width": 680,
"height": 300,
"content": "## Notes & Tips\n- Security: keep `x-goog-api-key` and FAL `Authorization` in Credentials (`{{$credentials...}}`).\n- Polling: FAL is async; poll `response_url` until `status == completed` before downloading the video.\n- Links: if an API needs a direct file URL, use Drive direct-download (`uc?export=download&id=<FILE_ID>`).\n- Prompts: tweak Gemini text for brand voice; change FAL `prompt` (e.g., replace \"slow moving\").\n- Error Handling: add `If` + `Wait` + retries; log failures to the sheet (`status`, `note`).\n- Scale: paste multiple rows to batch-generate creatives."
},
"typeVersion": 1
},
{
"id": "c1d73203-257e-4988-816d-393a3ca6fb6a",
"name": "Filtro",
"type": "n8n-nodes-base.filter",
"position": [
208,
368
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "ca5a2759-ec88-45a8-b037-58341ec5da2c",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "run"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "618d9398-d6f6-4b6a-8c8b-de030f213c49",
"name": "Esperar",
"type": "n8n-nodes-base.wait",
"position": [
1856,
368
],
"webhookId": "214d0cab-c68b-473d-8eba-cc1c11420c0a",
"parameters": {
"amount": 30
},
"typeVersion": 1.1
},
{
"id": "28ff8eda-a56e-4314-a980-b95ac06cb740",
"name": "Crear imagen de producto con modelo",
"type": "n8n-nodes-base.httpRequest",
"position": [
912,
368
],
"parameters": {
"url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-image-preview:generateContent",
"method": "POST",
"options": {
"redirect": {
"redirect": {}
}
},
"jsonBody": "={\n \"contents\": [\n {\n \"parts\": [\n {\n \"text\": \"Create a image with model and product attached to create ads videos with this require: {{ JSON.stringify($('Filter').item.json.note).slice(1,-1) }}\"\n },\n {\n \"inline_data\": {\n \"mime_type\": \"image/jpeg\",\n \"data\": \"{{ $json.data }}\"\n }\n }\n ]\n }\n ]\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "x-goog-api-key",
"value": "xxxxxx"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "f6cbccbc-9b32-40c2-9735-0915e44e684e",
"name": "Crear video",
"type": "n8n-nodes-base.httpRequest",
"position": [
1648,
368
],
"parameters": {
"url": "https://queue.fal.run/fal-ai/ltxv-13b-098-distilled/image-to-video",
"method": "POST",
"options": {},
"sendBody": true,
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "prompt",
"value": "=slow motion, {{ $('Filter').item.json.note }}"
},
{
"name": "image_url",
"value": "={{ $json.webContentLink }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Key xxxxx"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "0b700727-2e6b-4ce8-989d-ab18f1a5d887",
"name": "Obtener enlace de video",
"type": "n8n-nodes-base.httpRequest",
"position": [
2080,
368
],
"parameters": {
"url": "={{ $json.response_url }}",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Key xxxx"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "c5c00e9c-b56a-459b-a00c-151316707c4f",
"name": "Descargar video",
"type": "n8n-nodes-base.httpRequest",
"position": [
2336,
368
],
"parameters": {
"url": "={{ $json.video.url }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "306165a7-4320-4fcc-a03f-6cd424074c29",
"name": "Subir video",
"type": "n8n-nodes-base.googleDrive",
"position": [
2592,
368
],
"parameters": {
"name": "={{ $now }}",
"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": "=xxxx"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "7ksMk3zwMvT2CToN",
"name": "Google Drive account"
}
},
"typeVersion": 3
}
],
"pinData": {},
"connections": {
"618d9398-d6f6-4b6a-8c8b-de030f213c49": {
"main": [
[
{
"node": "0b700727-2e6b-4ce8-989d-ab18f1a5d887",
"type": "main",
"index": 0
}
]
]
},
"c1d73203-257e-4988-816d-393a3ca6fb6a": {
"main": [
[
{
"node": "4f833098-8f46-457f-9e47-5e273b831de4",
"type": "main",
"index": 0
}
]
]
},
"2491f22b-31e8-4190-91ce-b3ef4889ae14": {
"main": [
[
{
"node": "f6cbccbc-9b32-40c2-9735-0915e44e684e",
"type": "main",
"index": 0
}
]
]
},
"f6cbccbc-9b32-40c2-9735-0915e44e684e": {
"main": [
[
{
"node": "618d9398-d6f6-4b6a-8c8b-de030f213c49",
"type": "main",
"index": 0
}
]
]
},
"306165a7-4320-4fcc-a03f-6cd424074c29": {
"main": [
[
{
"node": "dac990c2-64a1-4e13-b9d4-ffbeb890f90c",
"type": "main",
"index": 0
}
]
]
},
"4f833098-8f46-457f-9e47-5e273b831de4": {
"main": [
[
{
"node": "27356824-4c60-47f8-9c25-846d2716bd25",
"type": "main",
"index": 0
}
]
]
},
"c5c00e9c-b56a-459b-a00c-151316707c4f": {
"main": [
[
{
"node": "306165a7-4320-4fcc-a03f-6cd424074c29",
"type": "main",
"index": 0
}
]
]
},
"0b700727-2e6b-4ce8-989d-ab18f1a5d887": {
"main": [
[
{
"node": "c5c00e9c-b56a-459b-a00c-151316707c4f",
"type": "main",
"index": 0
}
]
]
},
"8d2848d5-b2e5-49a7-9480-526ae86212b6": {
"main": [
[
{
"node": "2491f22b-31e8-4190-91ce-b3ef4889ae14",
"type": "main",
"index": 0
}
]
]
},
"27356824-4c60-47f8-9c25-846d2716bd25": {
"main": [
[
{
"node": "28ff8eda-a56e-4314-a980-b95ac06cb740",
"type": "main",
"index": 0
}
]
]
},
"Google Sheets Trigger": {
"main": [
[
{
"node": "c1d73203-257e-4988-816d-393a3ca6fb6a",
"type": "main",
"index": 0
}
]
]
},
"28ff8eda-a56e-4314-a980-b95ac06cb740": {
"main": [
[
{
"node": "8d2848d5-b2e5-49a7-9480-526ae86212b6",
"type": "main",
"index": 0
}
]
]
}
}
}¿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
Cong Nguyen
@cong-nguyenI’m a developer specialized in building web and mobile applications with AI integration and intelligent automation. With a solid background in data science, I help businesses build smarter digital solutions using cutting-edge technologies.
Compartir este flujo de trabajo