Generador automático de videos de UGC

Avanzado

Este es unContent Creation, Multimodal AIflujo de automatización del dominio deautomatización que contiene 21 nodos.Utiliza principalmente nodos como If, Code, Wait, Webhook, GoogleDrive. Generación automática de videos de contenido generado por el usuario con Gemini Images y SORA 2

Requisitos previos
  • Punto final de HTTP Webhook (n8n generará 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
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "meta": {
    "instanceId": "db30e8ae4100235addbd4638770997b7ef11878d049073c888ba440ca84c55fc",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "7fae5006-335a-4721-a2ea-16dc02ecaedb",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -1120,
        96
      ],
      "webhookId": "YOUR_WEBHOOK_ID",
      "parameters": {
        "path": "create-ugc-video",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "lastNode"
      },
      "typeVersion": 2
    },
    {
      "id": "de4fb004-b472-48c0-85f4-dd6b47962a0c",
      "name": "Nano Banana",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -896,
        96
      ],
      "parameters": {
        "url": "=https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-image:generateContent?key={{ $json.body.geminiApiKey }}",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"contents\": [{\n    \"parts\": [{\n      \"text\": \"{{ $json.body.productPrompt }}\"\n    }]\n  }]\n}",
        "sendBody": true,
        "specifyBody": "json"
      },
      "typeVersion": 4.2
    },
    {
      "id": "977bca7d-e89f-4f80-9c9e-4fce547bd6dc",
      "name": "Extraer Imagen",
      "type": "n8n-nodes-base.code",
      "position": [
        -688,
        96
      ],
      "parameters": {
        "jsCode": "// Extract image from Nano Banana response\nconst data = $input.first().json;\nconst imageData = data.candidates[0].content.parts.find(p => p.inlineData);\n\nreturn {\n  imageBase64: imageData.inlineData.data,\n  productPrompt: $('Webhook').first().json.body.productPrompt,\n  videoPrompt: $('Webhook').first().json.body.videoPrompt,\n  openaiApiKey: $('Webhook').first().json.body.openaiApiKey\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "dac9378f-8080-435e-9574-296d4632c799",
      "name": "SORA 2",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -464,
        96
      ],
      "parameters": {
        "url": "https://api.openai.com/v1/videos",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"model\": \"sora-2\",\n  \"prompt\": \"{{ $json.videoPrompt }}\",\n  \"size\": \"720x1280\",\n  \"seconds\": \"8\"\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer {{ $json.openaiApiKey }}"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "61cda299-28ee-4e74-aac7-60aa52099dd1",
      "name": "Obtener Vídeo",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -192,
        96
      ],
      "parameters": {
        "url": "=https://api.openai.com/v1/videos/{{ $('SORA 2').item.json.id }}",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer {{ $('Extract Image').item.json.openaiApiKey }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "281e0b7f-d9ed-438e-a6fd-e144feeb8642",
      "name": "¿Vídeo Completado?",
      "type": "n8n-nodes-base.if",
      "position": [
        208,
        96
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json.status }}",
              "value2": "completed"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "08038d29-b87c-4348-ace9-e0f26326cbb4",
      "name": "Esperar y Reintentar",
      "type": "n8n-nodes-base.wait",
      "position": [
        -16,
        272
      ],
      "webhookId": "YOUR_WAIT_WEBHOOK_ID",
      "parameters": {
        "unit": "minutes",
        "amount": 1
      },
      "typeVersion": 1.1
    },
    {
      "id": "8c7878e6-d8fa-42d5-b253-db967e841e94",
      "name": "Añadir a Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        848,
        0
      ],
      "parameters": {
        "columns": {
          "value": {
            "Status": "={{ $json.status }}",
            "Created": "={{ new Date().toISOString() }}",
            "Product": "={{ $('Extract Image').item.json.productPrompt }}",
            "Video URL": "=={{ $('Upload file').item.json.webViewLink }}"
          },
          "schema": [
            {
              "id": "Product",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Product",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Video URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Video URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Created",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Created",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "YOUR_SHEET_URL",
          "cachedResultName": "All Videos"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_GOOGLE_SHEET_ID"
        }
      },
      "typeVersion": 4.4
    },
    {
      "id": "c15d9c80-ac8c-4e82-aa6a-417c9a157fe6",
      "name": "Descargar Archivo de Vídeo",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        416,
        0
      ],
      "parameters": {
        "url": "=https://api.openai.com/v1/videos/{{ $json.id }}/content",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file"
            }
          }
        },
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer {{ $('Webhook').first().json.body.openaiApiKey }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "7522e1c7-1765-4419-9656-d2e855986913",
      "name": "Subir archivo",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        624,
        0
      ],
      "parameters": {
        "name": "=={{ $json.id }}.mp4",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "root",
          "cachedResultName": "/ (Root folder)"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "o6YjNioFDdE0IV8W",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "96429180-f0a6-469b-a32b-67aa1ae49392",
      "name": "Nota Adhesiva",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1600,
        -64
      ],
      "parameters": {
        "width": 416,
        "height": 448,
        "content": "# UGC Video Generator Workflow\n\nGenerates product videos using Gemini (image) + SORA 2 (video). Accepts webhook with product/video prompts and API keys, polls for completion, stores in Google Drive, and logs to Google Sheets.\n\n**Required connectors:**\n- Google Sheets OAuth\n- Google Drive OAuth\n\n**Required API keys** (passed via webhook):\n- Gemini API key\n- OpenAI API key\n\n---\nCreated by [Daniel Shashko](https://www.linkedin.com/in/daniel-shashko/)"
      },
      "typeVersion": 1
    },
    {
      "id": "621ad50b-835a-4afe-808f-dc8e2a904111",
      "name": "Nota Adhesiva1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1152,
        -32
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Receives POST request with prompts and API keys\n"
      },
      "typeVersion": 1
    },
    {
      "id": "d28bf28b-13aa-4f85-9176-b3a2f2308ee9",
      "name": "Nota Adhesiva2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -928,
        -32
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Generates product image using Gemini AI from prompt"
      },
      "typeVersion": 1
    },
    {
      "id": "44258498-fac6-4fa4-96e4-f0ff518e9cf0",
      "name": "Nota Adhesiva3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -720,
        -32
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Extracts base64 image data from Gemini API response\n"
      },
      "typeVersion": 1
    },
    {
      "id": "5a2c6614-795e-495f-bb49-7152d7e9fb50",
      "name": "Nota Adhesiva4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -496,
        -32
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Creates video from prompt using OpenAI SORA model\n"
      },
      "typeVersion": 1
    },
    {
      "id": "e4e9b154-31cc-4118-8d76-fa3540c22aea",
      "name": "Nota Adhesiva5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -224,
        -32
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Checks SORA video generation status via API call\n"
      },
      "typeVersion": 1
    },
    {
      "id": "cbd4ada0-1dbb-41a5-97de-ab2852585cca",
      "name": "Nota Adhesiva6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        160,
        -32
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Determines if video rendering is finished or pending\n"
      },
      "typeVersion": 1
    },
    {
      "id": "86042fc7-7f4b-4306-86fb-4218bde7d5bb",
      "name": "Nota Adhesiva7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -208,
        336
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Pauses 1 minute then checks video status again"
      },
      "typeVersion": 1
    },
    {
      "id": "bc3c7746-3ebb-424f-aeb4-c78c341e81e6",
      "name": "Nota Adhesiva8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        384,
        -128
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Downloads completed video file from OpenAI API endpoint"
      },
      "typeVersion": 1
    },
    {
      "id": "7a315df7-736c-4cf4-98b3-8a2a417173d6",
      "name": "Nota Adhesiva9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        592,
        -128
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Saves video to Google Drive as MP4 file\n"
      },
      "typeVersion": 1
    },
    {
      "id": "2572eb1d-b20b-4fec-804e-d93e731b8e84",
      "name": "Nota Adhesiva10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        816,
        -128
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Logs video details: product, URL, status, timestamp"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "dac9378f-8080-435e-9574-296d4632c799": {
      "main": [
        [
          {
            "node": "61cda299-28ee-4e74-aac7-60aa52099dd1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7fae5006-335a-4721-a2ea-16dc02ecaedb": {
      "main": [
        [
          {
            "node": "de4fb004-b472-48c0-85f4-dd6b47962a0c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "61cda299-28ee-4e74-aac7-60aa52099dd1": {
      "main": [
        [
          {
            "node": "281e0b7f-d9ed-438e-a6fd-e144feeb8642",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "de4fb004-b472-48c0-85f4-dd6b47962a0c": {
      "main": [
        [
          {
            "node": "977bca7d-e89f-4f80-9c9e-4fce547bd6dc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7522e1c7-1765-4419-9656-d2e855986913": {
      "main": [
        [
          {
            "node": "8c7878e6-d8fa-42d5-b253-db967e841e94",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "08038d29-b87c-4348-ace9-e0f26326cbb4": {
      "main": [
        [
          {
            "node": "61cda299-28ee-4e74-aac7-60aa52099dd1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "977bca7d-e89f-4f80-9c9e-4fce547bd6dc": {
      "main": [
        [
          {
            "node": "dac9378f-8080-435e-9574-296d4632c799",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "281e0b7f-d9ed-438e-a6fd-e144feeb8642": {
      "main": [
        [
          {
            "node": "c15d9c80-ac8c-4e82-aa6a-417c9a157fe6",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "08038d29-b87c-4348-ace9-e0f26326cbb4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c15d9c80-ac8c-4e82-aa6a-417c9a157fe6": {
      "main": [
        [
          {
            "node": "7522e1c7-1765-4419-9656-d2e855986913",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿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

Creación y carga de videos impulsada por IA para Instagram, TikTok y YouTube
Creación y subida de videos impulsada por IA desde Google Drive a Instagram, TikTok y YouTube
If
Set
Code
+
If
Set
Code
53 NodosDevCode Journey
Creación de contenido
Automatización de videos cortos sin rostro usando OpenAI, RunwayML y ElevenLabs
Automatización de videos cortos sin rostro usando OpenAI, RunwayML y ElevenLabs: del guion a las redes sociales
Set
Code
Wait
+
Set
Code
Wait
56 NodosLeeWei
Creación de contenido
Automatizar la publicación de RSS a Medium con Groq, Gemini y sistema de aprobación de Slack
Automatizar el flujo de publicación de RSS a Medium con Groq, Gemini y sistema de aprobación de Slack
If
Set
Code
+
If
Set
Code
41 NodosObisDev
Creación de contenido
Automatización del seguimiento de días de puertas abiertas inmobiliarias con SignSnapHome, HubSpot y Twilio
Automatizar el seguimiento de días de puertas abiertas inmobiliarias con SignSnapHome, HubSpot y Twilio
If
Set
Code
+
If
Set
Code
32 NodosKaden Reese
Creación de contenido
WordPress Blog Automation Pro (Investigación profunda) v2.1 Marketplace
Usar GPT-4o, Perplexity AI y soporte multilingüe para automatizar la creación de blogs optimizados para SEO
If
Set
Xml
+
If
Set
Xml
125 NodosDaniel Ng
Creación de contenido
Generación por lotes de contenido SEO y creación de borradores de Webflow con imágenes de IA (plantilla)
Generación masiva de contenido SEO utilizando GPT, imágenes de Gemini y borradores de Webflow
If
Set
Code
+
If
Set
Code
54 NodosDahiana
Creación de contenido
Información del flujo de trabajo
Nivel de dificultad
Avanzado
Número de nodos21
Categoría2
Tipos de nodos8
Descripción de la dificultad

Adecuado para usuarios avanzados, flujos de trabajo complejos con 16+ nodos

Autor
Daniel Shashko

Daniel Shashko

@tomax

AI automation specialist and a marketing enthusiast. More than 6 years of experience in SEO/GEO. Senior SEO at Bright Data.

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34