Génération automatique de vidéos de produits avec Gemini, FAL et Google Workspace
Ceci est unContent Creation, Multimodal AIworkflow d'automatisation du domainecontenant 16 nœuds.Utilise principalement des nœuds comme Wait, Filter, GoogleDrive, HttpRequest, GoogleSheets. Utiliser Gemini, FAL et Google Workspace pour générer automatiquement des vidéo de produit
- •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
Nœuds utilisés (16)
Catégorie
{
"meta": {
"instanceId": "783d2046f405cc6ecb20ef185376ed1023323a3da628b9d8156b1fb75c75e037"
},
"nodes": [
{
"id": "06fc66f7-c12e-443c-bfdb-1339128e0dec",
"name": "Google Déclencheur Sheets",
"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": "Télécharger le fichier",
"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": "Extraire du fichier",
"type": "n8n-nodes-base.extractFromFile",
"position": [
688,
368
],
"parameters": {
"options": {},
"operation": "binaryToPropery"
},
"typeVersion": 1
},
{
"id": "8d2848d5-b2e5-49a7-9480-526ae86212b6",
"name": "Convertir en fichier",
"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": "Téléverser le fichier",
"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": "Mettre à jour la ligne dans la feuille",
"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": "Note adhésive — Aperçu",
"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": "Note adhésive — Configuration",
"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": "Note adhésive — Notes & Astuces",
"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": "Filtre",
"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": "Attente",
"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": "Créer une image produit avec modèle",
"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": "Créer une vidéo",
"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": "Obtenir le lien vidéo",
"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": "Télécharger la vidéo",
"type": "n8n-nodes-base.httpRequest",
"position": [
2336,
368
],
"parameters": {
"url": "={{ $json.video.url }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "306165a7-4320-4fcc-a03f-6cd424074c29",
"name": "Téléverser la vidéo",
"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
}
]
]
},
"06fc66f7-c12e-443c-bfdb-1339128e0dec": {
"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
}
]
]
}
}
}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
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.
Partager ce workflow