AutomationFlowsAI & RAG › Generate Newsletter Images with Nano Banana & Post Human-approved Tweets to X

Generate Newsletter Images with Nano Banana & Post Human-approved Tweets to X

BySuS @sulieman-said on n8n.io

A ready-to-use n8n workflow that turns new Google Sheets rows (title + summary) into brand-safe images using Nano Banana (via KIE.ai), writes the image URL back to your sheet, generates a tweet text, requests human approval in Telegram, and—on approval—posts to X (Twitter)…

Event trigger★★★★☆ complexityAI-powered25 nodesHTTP RequestOpenAI ChatGoogle Sheets TriggerGoogle SheetsTelegramTwitterAgent
AI & RAG Trigger: Event Nodes: 25 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #8655 — we link there as the canonical source.

This workflow follows the Agent → Google Sheets recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "4e4e1e95-613b-4f13-a44d-ffde7edce8ff",
      "name": "Image Gen (Nano Banana)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        608,
        704
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "38ea4e52-c5dc-4ffe-8880-5dbd5a82e239",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        64,
        800
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "2773185b-19d7-4c6b-95f3-3b225f02ee02",
      "name": "Wait1",
      "type": "n8n-nodes-base.wait",
      "position": [
        832,
        704
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "76cf0327-0251-434f-a0f2-c8253eafacd5",
      "name": "Get Image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1056,
        624
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "4288bcf7-b30d-4055-9f39-1e87558ff93a",
      "name": "Image created",
      "type": "n8n-nodes-base.if",
      "position": [
        1280,
        704
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "97cb9e63-1eb5-43e0-93a4-e438d1bba382",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -448,
        400
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "c5548a43-8e9a-4bb9-9d28-06a855e22033",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -32,
        384
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "48e99baf-a6a1-4ba2-a765-8703e0f5d7d7",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        464,
        416
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "da849ea0-2e81-4daf-853e-f5907dfea6e2",
      "name": "Google Sheets Trigger",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "position": [
        -368,
        704
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "1c8c8e1d-4fc7-4fe7-824a-78e29e08207a",
      "name": "post media",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        2064,
        1280
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "facaea24-1375-4e65-ab62-8ed01fad19b1",
      "name": "Add Image URL",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1472,
        448
      ],
      "parameters": {},
      "typeVersion": 4.7
    },
    {
      "id": "21e17eff-1ee9-4c5b-9b96-d60bc1573abe",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1920,
        944
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "d901aea2-cd2f-47b4-a97b-bc0c198db4db",
      "name": "Send Tweet text for approval",
      "type": "n8n-nodes-base.telegram",
      "position": [
        976,
        1296
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "e91f14a0-161a-4806-995e-d5a6236cd3fb",
      "name": "Send Tweet image for approval",
      "type": "n8n-nodes-base.telegram",
      "position": [
        752,
        1296
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "184a3c5b-2655-4f35-a1c0-4ada4df4195c",
      "name": "Approved",
      "type": "n8n-nodes-base.if",
      "position": [
        1280,
        1392
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "cfb48a9e-f290-43eb-a2b3-3ba0f16752c7",
      "name": "Tweet not approved",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1472,
        1552
      ],
      "parameters": {},
      "typeVersion": 4.7
    },
    {
      "id": "f7038b75-7d6b-40fe-b6aa-32ddc4e6569f",
      "name": "Download Image",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        304,
        1376
      ],
      "parameters": {},
      "retryOnFail": false,
      "typeVersion": 4.2
    },
    {
      "id": "49b19210-9915-4ae9-a5da-a3097e529111",
      "name": "Downlaod Image again",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        1888,
        1280
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "a64dd96f-24a0-472a-9455-e6fae5369810",
      "name": "Create Tweet",
      "type": "n8n-nodes-base.twitter",
      "position": [
        2240,
        1296
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "20bb76b6-6476-4fc5-b565-1820279675e1",
      "name": "Tweet Generator",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1920,
        736
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "fecae118-9e21-485f-a19c-c7220fa771a7",
      "name": "Prompt Generator",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        48,
        544
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "6144f543-5b3f-4991-831c-7b6d36a6e123",
      "name": "Tweet posted",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2432,
        1296
      ],
      "parameters": {},
      "typeVersion": 4.7
    },
    {
      "id": "8d711b2d-ede5-46e2-92c0-ebc228bb3458",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        256,
        1088
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "5f26e665-302e-4525-b7ec-704eb5d492dc",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1840,
        480
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "25cf6979-8f83-4c73-a2dd-345444b71efa",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1792,
        1104
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Wait1": {
      "main": [
        [
          {
            "node": "Get Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Approved": {
      "main": [
        [
          {
            "node": "Downlaod Image again",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Tweet not approved",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Image": {
      "main": [
        [
          {
            "node": "Image created",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "post media": {
      "main": [
        [
          {
            "node": "Create Tweet",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Create Tweet": {
      "main": [
        [
          {
            "node": "Tweet posted",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Image created": {
      "main": [
        [
          {
            "node": "Add Image URL",
            "type": "main",
            "index": 0
          },
          {
            "node": "Tweet Generator",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Image": {
      "main": [
        [
          {
            "node": "Send Tweet image for approval",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Tweet Generator": {
      "main": [
        [
          {
            "node": "Download Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prompt Generator": {
      "main": [
        [
          {
            "node": "Image Gen (Nano Banana)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Prompt Generator",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Tweet Generator",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Downlaod Image again": {
      "main": [
        [
          {
            "node": "post media",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Google Sheets Trigger": {
      "main": [
        [
          {
            "node": "Prompt Generator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Image Gen (Nano Banana)": {
      "main": [
        [
          {
            "node": "Wait1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Tweet text for approval": {
      "main": [
        [
          {
            "node": "Approved",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Tweet image for approval": {
      "main": [
        [
          {
            "node": "Send Tweet text for approval",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

A ready-to-use n8n workflow that turns new Google Sheets rows (title + summary) into brand-safe images using Nano Banana (via KIE.ai), writes the image URL back to your sheet, generates a tweet text, requests human approval in Telegram, and—on approval—posts to X (Twitter)…

Source: https://n8n.io/workflows/8655/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This automation is designed to help you generate AI-powered music tracks, cover art, and fully rendered music videos — all triggered from a simple Telegram chat and managed via Google Sheets.

OpenAI Chat, Memory Buffer Window, Output Parser Structured +11
AI & RAG

This workflow is designed for marketers, content creators, agencies, and solo founders who want to publish long‑form posts with visuals on autopilot using n8n and AI agents. ​

Tool Http Request, Agent, HTTP Request +27
AI & RAG

Generate AI viral videos with NanoBanana & VEO3, shared on socials via Blotato 2. Uses @blotato/n8n-nodes-blotato, googleSheets, lmChatOpenAi, toolThink. Event-driven trigger; 94 nodes.

@Blotato/N8N Nodes Blotato, Google Sheets, OpenAI Chat +9
AI & RAG

This workflow is for beauty salons who want consistent, high‑quality social media content without writing every post manually. It also suits agencies and automation builders who manage multiple beauty

Telegram, Google Sheets Trigger, Agent +26
AI & RAG

This template is designed for marketers, content creators, and e-commerce brands who want to automate the creation of professional ad videos at scale. It’s ideal for teams looking to generate consiste

Telegram, Telegram Trigger, Google Drive +8