AutomationFlowsAI & RAG › Generate and Publish SEO Blog Posts to Wordpress with Gemini and Dall-e 3

Generate and Publish SEO Blog Posts to Wordpress with Gemini and Dall-e 3

ByMuhammad Adeel @aiadeel on n8n.io

This workflow receives a blog generation request via webhook, uses Google Gemini to write a full SEO-optimized post, generates a featured image with DALL-E 3, and automatically publishes the completed post to WordPress with a Telegram notification. A webhook receives the blog…

Webhook trigger★★★★☆ complexityAI-powered17 nodesGoogle GeminiOpenAIHTTP RequestWordPressTelegram
AI & RAG Trigger: Webhook Nodes: 17 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Googlegemini → HTTP Request 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
{
  "id": "sbuuDgN8a5N8JveGb3vHx",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Generate and publish SEO blog posts to WordPress using Gemini and DALL-E 3",
  "tags": [],
  "nodes": [
    {
      "id": "805441b4-81d3-4b1b-93dc-910dd28abf01",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        5200,
        2176
      ],
      "parameters": {
        "width": 480,
        "height": 832,
        "content": "## Generate and publish SEO blog posts to WordPress using Gemini and DALL-E 3\n\n### How it works\n\nThis workflow accepts a blog request via webhook, extracts the requested inputs, and uses Gemini to generate an SEO outline and full blog article. It then creates a featured image with DALL-E 3, downloads and uploads that image to WordPress media, publishes the completed post, and sends a Telegram notification when done.\n\n### Setup steps\n\n- Configure the webhook URL and define the expected request fields such as topic, keywords, audience, tone, or other blog parameters.\n- Add valid Google Gemini credentials for the outline and full-post generation nodes.\n- Add OpenAI credentials with access to DALL-E 3 for featured image generation.\n- Configure the WordPress site URL, authentication, media upload endpoint, and WordPress publishing credentials.\n- Configure Telegram bot credentials and the target chat ID for publication notifications.\n\n### Customization\n\nAdjust the Gemini prompts for outline structure, article length, tone, SEO requirements, and formatting. You can also customize the DALL-E image prompt, WordPress post status/categories/tags, and Telegram notification message."
      },
      "typeVersion": 1
    },
    {
      "id": "467cae5f-e63a-4f4e-a469-e4adfe37450c",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        5760,
        2176
      ],
      "parameters": {
        "color": 7,
        "width": 416,
        "height": 320,
        "content": "## Receive blog input\n\nEntry cluster that receives the incoming blog generation request and normalizes the request fields for the rest of the workflow."
      },
      "typeVersion": 1
    },
    {
      "id": "505b0e55-c2b3-41a6-923d-089986147554",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        6272,
        2208
      ],
      "parameters": {
        "color": 7,
        "width": 944,
        "height": 464,
        "content": "## Generate blog content\n\nUses Gemini to create an SEO outline, parses the outline, writes the full blog post, and stores the generated content for later publishing."
      },
      "typeVersion": 1
    },
    {
      "id": "2a2601bb-cb1f-4952-8cd1-d42555d6fffe",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        7248,
        2208
      ],
      "parameters": {
        "color": 7,
        "width": 624,
        "height": 304,
        "content": "## Create featured image\n\nGenerates a DALL-E 3 featured image, stores the returned image URL, and downloads the image binary for upload."
      },
      "typeVersion": 1
    },
    {
      "id": "c73d7083-13b3-4850-9832-eff81f2dacc3",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        7904,
        2176
      ],
      "parameters": {
        "color": 7,
        "width": 624,
        "height": 320,
        "content": "## Publish and notify\n\nUploads the downloaded image to WordPress media, publishes the blog post in WordPress, and sends a Telegram notification after publication."
      },
      "typeVersion": 1
    },
    {
      "id": "8add645f-43bc-4ac6-8836-01db7865af79",
      "name": "When Blog Request Received",
      "type": "n8n-nodes-base.webhook",
      "position": [
        5808,
        2336
      ],
      "parameters": {
        "path": "seo-blog-writer",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2
    },
    {
      "id": "e25fb9a4-865b-495b-a401-5626e15c176b",
      "name": "Set Blog Input Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        6032,
        2336
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "369ae1b8-decb-4003-aaab-a18309ff5f42",
      "name": "Gemini SEO Outline Generator",
      "type": "@n8n/n8n-nodes-langchain.googleGemini",
      "position": [
        6320,
        2336
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gemini-1.5-pro",
          "cachedResultName": "Gemini 1.5 Pro"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=You are an expert SEO content strategist. Create a blog post outline for the following keyword.\n\nKeyword: {{ $json.keyword }}\nTarget Audience: {{ $json.audience }}\n\nReturn ONLY a JSON object \u2014 no markdown, no backticks, pure JSON:\n{\"seo_title\": \"SEO title under 60 characters\",\"meta_description\": \"Meta description under 155 characters\",\"slug\": \"url-friendly-slug\",\"outline\": \"H2 and H3 heading structure as plain text\",\"image_prompt\": \"Detailed DALL-E 3 image generation prompt for a blog featured image. Photorealistic, professional, high quality, no text in image.\"}"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "14a55a01-553a-4494-a2a2-e749a2d8e71d",
      "name": "Set Parsed Outline Data",
      "type": "n8n-nodes-base.set",
      "position": [
        6592,
        2496
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "22b878d0-f54a-40fe-936b-228798ffc76e",
      "name": "Gemini Blog Writer",
      "type": "@n8n/n8n-nodes-langchain.googleGemini",
      "position": [
        6784,
        2336
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gemini-1.5-pro",
          "cachedResultName": "Gemini 1.5 Pro"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=You are a professional SEO blog writer. Write a complete blog post based on this outline.\n\nKeyword: {{ $json.keyword }}\nTarget Audience: {{ $json.audience }}\nSEO Title: {{ $json.outline_data.seo_title }}\nOutline: {{ $json.outline_data.outline }}\n\nRequirements:\n- Length: 900 to 1200 words\n- Format: valid HTML only using <h2>, <h3>, <p>, <ul>, <li> tags\n- Include keyword naturally 4 to 6 times\n- Write a compelling intro paragraph that hooks the reader\n- End with a strong conclusion and call-to-action\n- Tone: professional but approachable\n- Do NOT include the page title \u2014 start directly with body content HTML\n\nReturn ONLY raw HTML. No markdown, no backticks, no explanation."
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "576f346b-60ec-4ff0-9897-4d9e8d8a261a",
      "name": "Set Blog Content Data",
      "type": "n8n-nodes-base.set",
      "position": [
        7072,
        2480
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "dc69af5c-904f-447f-bf50-d51c7d67e062",
      "name": "Generate Image with DALL-E",
      "type": "n8n-nodes-base.openAi",
      "position": [
        7296,
        2336
      ],
      "parameters": {
        "prompt": "={{ $json.image_prompt }}",
        "options": {},
        "resource": "image",
        "requestOptions": {}
      },
      "typeVersion": 1
    },
    {
      "id": "7b15c3e8-4391-4408-8cbf-9718db10a7a8",
      "name": "Set DALL-E Image URL",
      "type": "n8n-nodes-base.set",
      "position": [
        7504,
        2336
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "47851939-0a9d-4673-8a95-7f0c9733a5db",
      "name": "Fetch DALL-E Image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        7728,
        2336
      ],
      "parameters": {
        "url": "={{ $json.image_url }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file"
            }
          }
        }
      },
      "typeVersion": 4
    },
    {
      "id": "1e634c17-f869-438c-a5a8-d49161a5e3d5",
      "name": "Post Image to WordPress",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        7952,
        2336
      ],
      "parameters": {
        "url": "=YOUR_WORDPRESS_SITE_URL/wp-json/wp/v2/media",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "binaryData",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Basic {{ Buffer.from('YOUR_WP_USERNAME:YOUR_WP_APP_PASSWORD').toString('base64') }}"
            },
            {
              "name": "Content-Disposition",
              "value": "=attachment; filename=\"{{ $('Set DALL-E Image URL').item.json.slug }}-featured.png\""
            },
            {
              "name": "Content-Type",
              "value": "image/png"
            }
          ]
        },
        "inputDataFieldName": "data"
      },
      "typeVersion": 4
    },
    {
      "id": "69f77a0b-1537-418d-bed9-ff2db51d6f6c",
      "name": "Publish Blog to WordPress",
      "type": "n8n-nodes-base.wordpress",
      "position": [
        8176,
        2336
      ],
      "parameters": {
        "additionalFields": {
          "slug": "={{ $('Set DALL-E Image URL').item.json.slug }}",
          "status": "publish",
          "content": "={{ $('Set DALL-E Image URL').item.json.blog_content }}"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e30381e5-64a9-428d-b052-3b1ec2d9cdef",
      "name": "Notify via Telegram",
      "type": "n8n-nodes-base.telegram",
      "position": [
        8384,
        2336
      ],
      "parameters": {
        "text": "=\u2705 Blog post published!\n\n\ud83d\udcdd {{ $('Set DALL-E Image URL').item.json.seo_title }}\n\ud83d\udd11 Keyword: {{ $('Set DALL-E Image URL').item.json.keyword }}\n\ud83d\udd17 {{ $json.link }}\n\nPowered by n8n + Gemini + DALL-E 3",
        "chatId": "YOUR_TELEGRAM_CHAT_ID",
        "additionalFields": {}
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "",
  "connections": {
    "Fetch DALL-E Image": {
      "main": [
        [
          {
            "node": "Post Image to WordPress",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gemini Blog Writer": {
      "main": [
        [
          {
            "node": "Set Blog Content Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set DALL-E Image URL": {
      "main": [
        [
          {
            "node": "Fetch DALL-E Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Blog Content Data": {
      "main": [
        [
          {
            "node": "Generate Image with DALL-E",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Blog Input Fields": {
      "main": [
        [
          {
            "node": "Gemini SEO Outline Generator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Post Image to WordPress": {
      "main": [
        [
          {
            "node": "Publish Blog to WordPress",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Parsed Outline Data": {
      "main": [
        [
          {
            "node": "Gemini Blog Writer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Publish Blog to WordPress": {
      "main": [
        [
          {
            "node": "Notify via Telegram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Image with DALL-E": {
      "main": [
        [
          {
            "node": "Set DALL-E Image URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When Blog Request Received": {
      "main": [
        [
          {
            "node": "Set Blog Input Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gemini SEO Outline Generator": {
      "main": [
        [
          {
            "node": "Set Parsed Outline Data",
            "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

This workflow receives a blog generation request via webhook, uses Google Gemini to write a full SEO-optimized post, generates a featured image with DALL-E 3, and automatically publishes the completed post to WordPress with a Telegram notification. A webhook receives the blog…

Source: https://n8n.io/workflows/16062/ — 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

AI Institutional Stock Valuation Engine with Risk Scoring & Scenario Targets

Google Sheets, XML, HTTP Request +3
AI & RAG

Overview This is a production-grade, fully automated stock analysis system built entirely in n8n. It combines institutional-level financial analysis, dual AI model consensus, and a self-improving back

Google Sheets, XML, HTTP Request +3
AI & RAG

A professional AI equity analysis automation built on n8n that transforms structured financial data and real-time news into disciplined, risk-adjusted price targets and actionable BUY/HOLD/SELL signal

Google Sheets, OpenAI, XML +3
AI & RAG

Listens for completed Fireflies transcripts, qualifies whether a proposal is needed using OpenAI, drafts structured proposal content, populates a Google Doc template, converts to PDF, and sends it to

HTTP Request, OpenAI, Google Drive +3
AI & RAG

Bubu Telegram Companion. Uses httpRequest, openAi, errorTrigger, telegram. Webhook trigger; 31 nodes.

HTTP Request, OpenAI, Error Trigger +1