Générateur automatisé de vidéos UGC

Avancé

Ceci est unContent Creation, Multimodal AIworkflow d'automatisation du domainecontenant 21 nœuds.Utilise principalement des nœuds comme If, Code, Wait, Webhook, GoogleDrive. Génération automatisée de vidéos de contenu généré par les utilisateurs avec Gemini Images et SORA 2

Prérequis
  • Point de terminaison HTTP Webhook (généré automatiquement par n8n)
  • Informations d'identification Google Drive API
  • Peut nécessiter les informations d'identification d'authentification de l'API cible
  • Informations d'identification Google Sheets API
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "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": "Extraire l'Image",
      "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": "Obtenir la Vidéo",
      "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": "Vidéo Terminée ?",
      "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": "Attendre et Réessayer",
      "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": "Ajouter à 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": "Télécharger le Fichier Vidéo",
      "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": "Téléverser le Fichier",
      "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": "Note Adhésive",
      "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": "Note Adhésive1",
      "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": "Note Adhésive2",
      "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": "Note Adhésive3",
      "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": "Note Adhésive4",
      "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": "Note Adhésive5",
      "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": "Note Adhésive6",
      "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": "Note Adhésive7",
      "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": "Note Adhésive8",
      "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": "Note Adhésive9",
      "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": "Note Adhésive10",
      "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
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Avancé - Création de contenu, IA Multimodale

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Workflows recommandés

Création et téléchargement de vidéos AI vers Instagram, TikTok et YouTube
Création de vidéos pilotée par l'IA depuis Google Drive, téléchargement sur Instagram, TikTok et YouTube
If
Set
Code
+
If
Set
Code
53 NœudsDevCode Journey
Création de contenu
Automatisation de courts métrages sans visage avec OpenAI, RunwayML et ElevenLabs
Automatisation de courts métrages sans visage : du script aux réseaux sociaux avec OpenAI, RunwayML et ElevenLabs
Set
Code
Wait
+
Set
Code
Wait
56 NœudsLeeWei
Création de contenu
Automatisation de la publication RSS vers Medium avec Groq, Gemini et un système d'approbation Slack
Automatisation du flux de publication de RSS vers Medium avec Groq, Gemini et le système d'approbation Slack
If
Set
Code
+
If
Set
Code
41 NœudsObisDev
Création de contenu
Suivi automatisé des journées portes ouvertes immobilières avec SignSnapHome, HubSpot et Twilio
Automatisation du suivi des journées portes ouvertes immobilières avec SignSnapHome, HubSpot et Twilio
If
Set
Code
+
If
Set
Code
32 NœudsKaden Reese
Création de contenu
Version professionnelle de l'automatisation de blog WordPress (recherche approfondie) v2.1 sur le marché
Automatisation de la création de blog optimisé pour le SEO avec GPT-4o, Perplexity AI et support multilingue
If
Set
Xml
+
If
Set
Xml
125 NœudsDaniel Ng
Création de contenu
Génération de masse de contenu SEO et création de brouillons Webflow avec images IA (modèle)
Génération de contenu SEO en masse avec GPT, images Gemini et brouillons Webflow
If
Set
Code
+
If
Set
Code
54 NœudsDahiana
Création de contenu
Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds21
Catégorie2
Types de nœuds8
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Auteur
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.

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34