Nano banana + Publication automatique
Ceci est unSocial Media, Multimodal AIworkflow d'automatisation du domainecontenant 20 nœuds.Utilise principalement des nœuds comme If, Wait, HttpRequest, GoogleSheets, Agent. Automatiser l'édition d'images et la publication sur Instagram avec Nano Banana et la génération de titres par GPT-5
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Informations d'identification Google Sheets API
- •Informations d'identification Google Drive API
- •Clé API OpenAI
Nœuds utilisés (20)
Catégorie
{
"id": "y3AF1pEsxHZOiRC0",
"meta": {
"instanceId": "1c7b08fed4406d546caf4a44e8b942ca317e7e207bb9a5701955a1a6e1ce1843",
"templateCredsSetupCompleted": true
},
"name": "Nano banana + Autopost",
"tags": [],
"nodes": [
{
"id": "b550bf52-81d7-44b7-8a56-6582a635870b",
"name": "Google Drive Trigger",
"type": "n8n-nodes-base.googleDriveTrigger",
"position": [
0,
0
],
"parameters": {
"event": "fileCreated",
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"triggerOn": "specificFolder",
"folderToWatch": {
"__rl": true,
"mode": "list",
"value": "YOUR_FOLDER_ID",
"cachedResultUrl": "YOUR_FOLDER_URL",
"cachedResultName": "Image Upload Folder"
}
},
"credentials": {},
"typeVersion": 1
},
{
"id": "63942884-b26a-48b2-8063-7b8c59494cf2",
"name": "Requête POST Nano Banana",
"type": "n8n-nodes-base.httpRequest",
"position": [
240,
0
],
"parameters": {
"url": "https://api.wavespeed.ai/api/v3/google/nano-banana/edit",
"method": "POST",
"options": {
"redirect": {
"redirect": {}
}
},
"jsonBody": "={\n \"enable_base64_output\": false,\n \"enable_sync_mode\": false,\n \"images\": [\n \"{{ $json.webContentLink }}\"\n ],\n \"output_format\": \"jpeg\",\n \"prompt\": \"Clean up and declutter this apartment unit: remove all mess, trash, and personal items while keeping the original furniture, layout, and design intact. Tidy up surfaces, straighten objects, and make the space look neat and inviting. Enhance the lighting to appear bright and natural, similar to professional real-estate photography, without altering the structure or style of the apartment.\"\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth"
},
"credentials": {},
"typeVersion": 4.2
},
{
"id": "6c3c8e4d-a5ea-4287-8d71-ed732bb3a719",
"name": "Attendre 15 secondes",
"type": "n8n-nodes-base.wait",
"position": [
400,
0
],
"webhookId": "319f45e0-26e7-457d-b5c5-560a8bba9f8b",
"parameters": {
"amount": 15
},
"typeVersion": 1.1
},
{
"id": "ff945721-7eaa-453e-a8aa-efd7abac7c6e",
"name": "Récupérer le résultat depuis Nano Banana Node",
"type": "n8n-nodes-base.httpRequest",
"position": [
656,
0
],
"parameters": {
"url": "=https://api.wavespeed.ai/api/v3/predictions/{{ $json.data.id }}/result",
"options": {
"redirect": {
"redirect": {}
}
},
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth"
},
"credentials": {},
"typeVersion": 4.2
},
{
"id": "4f98a56c-3eb9-4fdc-a606-29b1e10981e7",
"name": "Ajouter une ligne dans la feuille",
"type": "n8n-nodes-base.googleSheets",
"position": [
1152,
0
],
"parameters": {
"columns": {
"value": {
"Image URL": "={{ $json.data.outputs[0] }}",
"Timestamp": "={{ $now }}"
},
"schema": [
{
"id": "Image URL",
"type": "string",
"display": true,
"required": false,
"displayName": "Image URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Timestamp",
"type": "string",
"display": true,
"required": false,
"displayName": "Timestamp",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "YOUR_SHEET_NAME",
"cachedResultUrl": "YOUR_SHEET_URL",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "YOUR_SHEET_ID",
"cachedResultUrl": "YOUR_SHEET_URL",
"cachedResultName": "Editted Image Log"
}
},
"credentials": {},
"typeVersion": 4.7
},
{
"id": "0ecbc4d6-f6a8-49d3-9be7-e1d344f6ac6f",
"name": "Si",
"type": "n8n-nodes-base.if",
"position": [
864,
0
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "b84517df-a71f-4e28-b744-35bb1e55b85f",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.data.status }}",
"rightValue": "completed"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "8538e41c-39e3-4923-9167-cfe17c687cdc",
"name": "Attendre à nouveau 15 secondes",
"type": "n8n-nodes-base.wait",
"position": [
928,
176
],
"webhookId": "5e110e46-28c5-4144-9052-16821d0ea666",
"parameters": {
"amount": 15
},
"typeVersion": 1.1
},
{
"id": "2dbc81b2-7bcb-4fb5-81da-0cbe1b92d05b",
"name": "Téléverser vers Postiz",
"type": "n8n-nodes-base.httpRequest",
"position": [
1600,
0
],
"parameters": {
"url": "https://api.postiz.com/public/v1/upload",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "multipart-form-data",
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "file",
"parameterType": "formBinaryData",
"inputDataFieldName": "data"
}
]
},
"genericAuthType": "httpHeaderAuth"
},
"credentials": {},
"typeVersion": 4.2
},
{
"id": "c3184cf0-6101-48a7-9a44-4c800237f544",
"name": "Publier sur Instagram",
"type": "n8n-nodes-base.httpRequest",
"position": [
2432,
0
],
"parameters": {
"url": "https://api.postiz.com/public/v1/posts",
"method": "POST",
"options": {},
"jsonBody": "={\n \"type\": \"now\",\n \"shortLink\": false,\n \"date\": \"{{ new Date($now).toISOString() }}\",\n \"tags\": [],\n \"posts\": [\n {\n \"integration\": { \"id\": \"cmeku38qa00cpo90yfw4ai6lt\" },\n \"value\": [\n {\n \"content\": \"{{ $json.output }}\",\n \"image\": [\n {\n \"id\": \"{{ $node['Upload to Postiz'].json.id }}\",\n \"path\": \"{{ $node['Upload to Postiz'].json.path }}\"\n }\n ]\n }\n ],\n \"settings\": {\n \"post_type\": \"post\"\n }\n }\n ]\n}\n",
"sendBody": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth"
},
"credentials": {},
"typeVersion": 4.2
},
{
"id": "c46c1b35-4bf0-4c90-9881-efd520df4b2a",
"name": "Mettre à jour le journal",
"type": "n8n-nodes-base.googleSheets",
"position": [
1824,
0
],
"parameters": {
"columns": {
"value": {
"Status": "Uploaded to Postiz",
"Timestamp": "={{ $now }}",
"Video Name and Description": "={{ $('Google Drive Trigger').item.json.name }}"
},
"schema": [
{
"id": "Video Name and Description",
"type": "string",
"display": true,
"required": false,
"displayName": "Video Name and Description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Timestamp",
"type": "string",
"display": true,
"required": false,
"displayName": "Timestamp",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "YOUR_SHEET_NAME",
"cachedResultUrl": "YOUR_SHEET_URL",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "YOUR_SHEET_ID",
"cachedResultUrl": "YOUR_SHEET_URL",
"cachedResultName": "Logs of Captioned Videos to Publish"
}
},
"credentials": {},
"typeVersion": 4.7
},
{
"id": "cb42c1d0-795f-4605-93f3-e13f6944654b",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
2112,
208
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-5",
"cachedResultName": "gpt-5"
},
"options": {}
},
"credentials": {},
"typeVersion": 1.2
},
{
"id": "2e6dd8f6-460c-483e-a3d8-385d519ca7da",
"name": "Caption Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
2064,
0
],
"parameters": {
"text": "={{ $json['Video Name and Description'] }}",
"options": {
"systemMessage": "=You are an expert Instagram caption writer.\nYour task is to take the image prompt provided by the user and generate a short, engaging caption for Instagram or Tik-Tok Reels\n\nCaption Guidelines\n\n\nTone: friendly, impactful and exciting\n\n##Output Rules\nDo not use special characters like {} ! %$&*\nReturn only one final caption per request.\nDo not include explanations or formatting outside of the caption itself."
},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "3ab434fd-3256-4687-92fa-0246078c391c",
"name": "Note adhésive 4",
"type": "n8n-nodes-base.stickyNote",
"position": [
2032,
-288
],
"parameters": {
"color": 7,
"width": 288,
"height": 800,
"content": "Caption for IG"
},
"typeVersion": 1
},
{
"id": "58a237a0-8a4b-4c75-875d-833731a2c313",
"name": "Note adhésive 5",
"type": "n8n-nodes-base.stickyNote",
"position": [
2336,
-288
],
"parameters": {
"color": 2,
"width": 304,
"height": 800,
"content": "Post to IG"
},
"typeVersion": 1
},
{
"id": "1f080554-b4ef-42c9-8e6b-ecbeb78dc093",
"name": "Obtenir l'image",
"type": "n8n-nodes-base.httpRequest",
"position": [
1392,
0
],
"parameters": {
"url": "={{ $json['Image URL'] }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "dff121ad-7120-452e-a4ae-9e33a1dfc4b4",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
1360,
-288
],
"parameters": {
"color": 3,
"width": 656,
"height": 800,
"content": "Get Image and Upload"
},
"typeVersion": 1
},
{
"id": "d8d5a377-1a6f-4684-851a-5f51adaf10f3",
"name": "Note adhésive 1",
"type": "n8n-nodes-base.stickyNote",
"position": [
560,
-288
],
"parameters": {
"color": 4,
"width": 784,
"height": 800,
"content": "Get Results from Nano Banana"
},
"typeVersion": 1
},
{
"id": "801e4aaf-ce66-4c03-9fe8-9a0cab42d8ed",
"name": "Note adhésive 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-80,
-288
],
"parameters": {
"color": 5,
"height": 800,
"content": "Drive Trigger"
},
"typeVersion": 1
},
{
"id": "4c8622a9-d705-4444-93ed-513a4c033b80",
"name": "Note adhésive 3",
"type": "n8n-nodes-base.stickyNote",
"position": [
176,
-288
],
"parameters": {
"width": 368,
"height": 800,
"content": "Drive Trigger"
},
"typeVersion": 1
},
{
"id": "31820743-5d4d-4d93-9553-db353fbcc6ac",
"name": "Note adhésive 6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1056,
-368
],
"parameters": {
"color": 7,
"width": 848,
"height": 1536,
"content": "📸 Auto-Edit Google Drive Images with Nano Banana + Social Auto-Post\n\nDrop an image into Google Drive and let this workflow handle the rest: it auto-cleans and enhances the image with Google’s Nano Banana (via Wavespeed API), generates a catchy caption with GPT-5, and publishes directly to your connected social accounts using Postiz.\n\n👉 Watch step-by-step video tutorials of workflows like these on https://www.youtube.com/watch?v=4wk6PYgBtBM&list=PL05w1TE8X3bb1H9lXBqUy98zmTrrPP-s1\n\nWhat it does\n\nTriggers from Google Drive when a new image is uploaded\n\nSends the image to Nano Banana to declutter, brighten, and make it real-estate/photo-listing ready\n\nPolls for the edited result until it’s complete\n\nLogs the edited image URL into Google Sheets for tracking\n\nDownloads and uploads the edited image into Postiz media library\n\nGenerates an engaging caption with GPT-5 Caption Agent\n\nPublishes instantly to Instagram (can be extended to TikTok, LinkedIn, etc.)\n\nPerfect for\n\nReal-estate agents posting property shots\n\nEcommerce sellers updating product catalogs\n\nSocial media marketers needing fast, polished posts\n\nApps & Services\n\nGoogle Drive (Trigger)\n\nWavespeed API – Google Nano Banana (Image editing)\n\nGoogle Sheets (Logging)\n\nPostiz (Social scheduling/posting)\n\nOpenAI GPT-5 (Caption agent)\n\nSetup\n\nConnect your Google Drive and select the upload folder.\n\nAdd your Wavespeed API key for Nano Banana.\n\nConnect Google Sheets for logging.\n\nAdd Postiz API credentials and set the integration ID for your channel(s).\n\nEnter your OpenAI API key for GPT-5 captioning.\n\nCustomization\n\nAdjust the edit prompt for different use cases (e.g., product cleanup, lighting tweaks).\n\nChange Postiz post type to scheduled instead of “now.”\n\nAdd more Postiz posts for multi-platform publishing.\n\nInsert an approval loop (Slack/Email) before posting.\n\nLogs\n\nEdited Image Log (Sheets): stores final image URL + timestamp.\n\nPublishing Log (Sheets): tracks workflow status per asset.\n\nNotes\n\nSticky notes in the template explain each major block.\n\nReplace sample IDs with your own (folder IDs, sheet IDs, Postiz integration).\n\nKeep all API keys in n8n Credentials, not in node parameters."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "5b7201de-043e-4ae6-95d0-fb7a33290f68",
"connections": {
"0ecbc4d6-f6a8-49d3-9be7-e1d344f6ac6f": {
"main": [
[
{
"node": "4f98a56c-3eb9-4fdc-a606-29b1e10981e7",
"type": "main",
"index": 0
}
],
[
{
"node": "8538e41c-39e3-4923-9167-cfe17c687cdc",
"type": "main",
"index": 0
}
]
]
},
"1f080554-b4ef-42c9-8e6b-ecbeb78dc093": {
"main": [
[
{
"node": "2dbc81b2-7bcb-4fb5-81da-0cbe1b92d05b",
"type": "main",
"index": 0
}
]
]
},
"c46c1b35-4bf0-4c90-9881-efd520df4b2a": {
"main": [
[
{
"node": "2e6dd8f6-460c-483e-a3d8-385d519ca7da",
"type": "main",
"index": 0
}
]
]
},
"6c3c8e4d-a5ea-4287-8d71-ed732bb3a719": {
"main": [
[
{
"node": "ff945721-7eaa-453e-a8aa-efd7abac7c6e",
"type": "main",
"index": 0
}
]
]
},
"2e6dd8f6-460c-483e-a3d8-385d519ca7da": {
"main": [
[
{
"node": "c3184cf0-6101-48a7-9a44-4c800237f544",
"type": "main",
"index": 0
}
]
]
},
"2dbc81b2-7bcb-4fb5-81da-0cbe1b92d05b": {
"main": [
[
{
"node": "c46c1b35-4bf0-4c90-9881-efd520df4b2a",
"type": "main",
"index": 0
}
]
]
},
"cb42c1d0-795f-4605-93f3-e13f6944654b": {
"ai_languageModel": [
[
{
"node": "2e6dd8f6-460c-483e-a3d8-385d519ca7da",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"8538e41c-39e3-4923-9167-cfe17c687cdc": {
"main": [
[
{
"node": "ff945721-7eaa-453e-a8aa-efd7abac7c6e",
"type": "main",
"index": 0
}
]
]
},
"4f98a56c-3eb9-4fdc-a606-29b1e10981e7": {
"main": [
[
{
"node": "1f080554-b4ef-42c9-8e6b-ecbeb78dc093",
"type": "main",
"index": 0
}
]
]
},
"b550bf52-81d7-44b7-8a56-6582a635870b": {
"main": [
[
{
"node": "63942884-b26a-48b2-8063-7b8c59494cf2",
"type": "main",
"index": 0
}
]
]
},
"63942884-b26a-48b2-8063-7b8c59494cf2": {
"main": [
[
{
"node": "6c3c8e4d-a5ea-4287-8d71-ed732bb3a719",
"type": "main",
"index": 0
}
]
]
},
"ff945721-7eaa-453e-a8aa-efd7abac7c6e": {
"main": [
[
{
"node": "0ecbc4d6-f6a8-49d3-9be7-e1d344f6ac6f",
"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é - Réseaux sociaux, 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
Automate With Marc
@marconiAutomating Start-Up and Business processes. Helping non-techies understand and leverage Agentic AI with easy to understand step-by-step tutorials. Check out my educational content: https://www.youtube.com/@Automatewithmarc
Partager ce workflow