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 →
{
"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
}
]
]
}
}
}
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 →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
AI Institutional Stock Valuation Engine with Risk Scoring & Scenario Targets
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
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
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
Bubu Telegram Companion. Uses httpRequest, openAi, errorTrigger, telegram. Webhook trigger; 31 nodes.