Nano banana + Publication automatique

Avancé

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

Prérequis
  • 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
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
{
  "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
          }
        ]
      ]
    }
  }
}
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é - 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

Submagic + publication automatique
Utiliser Submagic, Postiz et OpenAI pour ajouter automatiquement des légendes aux vidéos et les publier sur Instagram et TikTok
If
Code
Wait
+
If
Code
Wait
21 NœudsAutomate With Marc
IA Multimodale
Assistant de conversion d'images en vidéo composable
Générer des vidéos à partir d'images via l'intégration Telegram, GPT-4.1 et Seedance/Veo3
If
Wait
Telegram
+
If
Wait
Telegram
22 NœudsAutomate With Marc
Création de contenu
Agent de clonage IA pour les Reels populaires d'Instagram + publication automatique
Créer et publier automatiquement des Reels Instagram avec des clones IA : du script à la publication (Heygen + Submagic + Blotato)
If
Wait
Http Request
+
If
Wait
Http Request
21 NœudsAutomate With Marc
Création de contenu
Utiliser Nano Banana pour générer des images pour le bulletin d'actualités et publier des tweets examinés manuellement sur X
Générer des images de bulletin d'actualités et publier des tweets approuvés manuellement sur X avec Nano Banana
If
Wait
Twitter
+
If
Wait
Twitter
25 NœudsSulieman Said
Réseaux sociaux
Usine de contenu LinkedIn (avec recherche OpenAI et génération d'images de marque)
Usine de contenu LinkedIn, intégrant la recherche OpenAI et la génération d'images de marque Replicate
If
Set
Code
+
If
Set
Code
23 NœudsOnur
Réseaux sociaux
Automatisation du développement de partenaires commerciaux avec Google Maps, GPT-4 et WhatsApp
Automatisation du développement de partenaires commerciaux avec Google Maps, GPT-4 et WhatsApp
If
Set
Code
+
If
Set
Code
64 NœudsKhairul Muhtadin
Chatbot IA
Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds20
Catégorie2
Types de nœuds8
Description de la difficulté

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

Auteur
Automate With Marc

Automate With Marc

@marconi

Automating 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

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34