AI博客创建器(含Gemini、Replicate图片生成、Supabase发布和Slack)
高级
这是一个自动化工作流,包含 25 个节点。主要使用 If、Set、Code、Cron、Wait 等节点。 从新闻到发布的自动化博客创建,使用Gemini、Ideogram和Slack
前置要求
- •Slack Bot Token 或 Webhook URL
- •可能需要目标 API 的认证凭证
分类
未分类
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"id": "EmPnnzwJEHxMuJaw",
"meta": {
"instanceId": "bd69d47c91060511db2b31f757484463dd5af5fe7228f5cd6f51444aefa5ac55",
"templateCredsSetupCompleted": true
},
"name": "AI博客创建器(含Gemini、Replicate图片生成、Supabase发布和Slack)",
"tags": [],
"nodes": [
{
"id": "e45d33d9-2fc2-476c-b0ff-63d16b30111a",
"name": "获取行业趋势",
"type": "n8n-nodes-base.httpRequest",
"position": [
224,
-240
],
"parameters": {
"url": "https://newsapi.org/v2/everything?q=AI automation SaaS&sortBy=publishedAt&pageSize=10",
"options": {},
"authentication": "genericCredentialType",
"genericAuthType": "httpQueryAuth"
},
"credentials": {
"httpQueryAuth": {
"id": "XbH4j2OBjd3qNhPr",
"name": "newsapi"
}
},
"typeVersion": 3
},
{
"id": "2c641b4b-9ce0-472d-a970-714d6a630f0c",
"name": "发布到Supabase",
"type": "n8n-nodes-base.httpRequest",
"position": [
2496,
-240
],
"parameters": {
"url": "https://your.supabase.co/functions/v1/blog-api",
"method": "POST",
"options": {},
"sendBody": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "title",
"value": "={{ $json.title }}"
},
{
"name": "slug",
"value": "={{ $json.slug }}"
},
{
"name": "excerpt",
"value": "={{ $json.excerpt }}"
},
{
"name": "content",
"value": "={{ $json.content }}"
},
{
"name": "image_url",
"value": "={{ $json.image_url }}"
},
{
"name": "published",
"value": "true"
}
]
},
"genericAuthType": "httpHeaderAuth"
},
"credentials": {
"httpHeaderAuth": {
"id": "jaWa5lNkOeQCkOcg",
"name": "UTSLsuperbase"
}
},
"typeVersion": 3
},
{
"id": "17fcce85-bdf1-4c21-848a-3ce667e3aab5",
"name": "Slack通知",
"type": "n8n-nodes-base.slack",
"position": [
2720,
-240
],
"parameters": {
"text": "=✅ *New Blog Published!* \n*Title:* {{$json['title']}} \n*Slug:* {{$json['slug']}} \n*URL:* https://yoururl.com/blog/{{$json['slug']}}",
"channel": "#blog-automation",
"attachments": [],
"otherOptions": {}
},
"credentials": {
"slackApi": {
"id": "O5jKBGGMM6lHXuRS",
"name": "Slack account"
}
},
"typeVersion": 1
},
{
"id": "5ecb7538-6358-4d89-ac55-8e4539f8d42a",
"name": "消息模型",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
448,
-240
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemini-2.5-flash",
"cachedResultName": "models/gemini-2.5-flash"
},
"options": {},
"messages": {
"values": [
{
"content": "=Act as an AI market analyst. Based on these current trends and articles:\n\"{{ $json.articles }}\"\nGenerate 1 trending blog topic ideas relevant to SaaS, AI, Automation, and industry innovation that would benefit our company’s brand authority.\nReturn them in strict JSON with fields: title, description, keywords.\nno exta text, details etc. give me direct json output without pre and post text.\n"
}
]
}
},
"credentials": {
"googlePalmApi": {
"id": "ry9hnf20jfXpHAes",
"name": "Google Gemini(PaLM) Api account"
}
},
"typeVersion": 1
},
{
"id": "5da2d4ee-d7b0-441a-8523-067a17182c6a",
"name": "向模型发送消息1",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
800,
-240
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemini-2.5-flash",
"cachedResultName": "models/gemini-2.5-flash"
},
"options": {},
"messages": {
"values": [
{
"content": "=You are an expert SEO content strategist. Write a 1200–1500 word blog in Markdown on the topic:\n\"{{ $json.content.parts[0].text }}\"\n\nRequirements:\n- Use high-ranking keywords naturally.\n- Include an SEO title, meta description, and excerpt.\n- Use markdown headings, bullet points, and bold keywords.\n- Structure: Introduction → Insight → Case Studies → Conclusion → CTA.\nOutput JSON:\n{\n \"title\": \"...\",\n \"slug\": \"...\",\n \"excerpt\": \"...\",\n \"content\": \"...\",\n \"keywords\": \"...\",\n \"image_prompt\": \"...\"\n}\n"
}
]
}
},
"credentials": {
"googlePalmApi": {
"id": "ry9hnf20jfXpHAes",
"name": "Google Gemini(PaLM) Api account"
}
},
"typeVersion": 1
},
{
"id": "1369e40f-2008-4fb7-9123-d17b02a7d42d",
"name": "JavaScript 代码",
"type": "n8n-nodes-base.code",
"position": [
1152,
-240
],
"parameters": {
"jsCode": "// --- Ultra-Resilient Gemini Blog Cleaner ---\n// Works with Markdown fences, nested JSON, or plain text\n\nconst raw = $json.content?.parts?.[0]?.text || '';\nif (!raw) throw new Error('Gemini returned empty response.');\n\nlet text = raw.trim();\n\n// 1️⃣ Strip Markdown fences and language hints\ntext = text\n .replace(/```json/gi, '')\n .replace(/```/g, '')\n .replace(/^#+\\s+/gm, '')\n .trim();\n\n// 2️⃣ Find the innermost JSON block\nlet matches = text.match(/\\{[\\s\\S]*\\}/g);\nlet parsed = {};\n\nif (matches && matches.length) {\n // pick the deepest block (most nested)\n let jsonText = matches[matches.length - 1]\n .replace(/“|”/g, '\"')\n .replace(/‘|’/g, \"'\")\n .replace(/,\\s*([}\\]])/g, '$1')\n .replace(/'/g, '\"')\n .trim();\n\n try {\n parsed = JSON.parse(jsonText);\n } catch (err) {\n // attempt repair if invalid JSON\n let repaired = jsonText.replace(/([{,]\\s*)([A-Za-z0-9_]+)\\s*:/g, '$1\"$2\":');\n try {\n parsed = JSON.parse(repaired);\n } catch (err2) {\n parsed = {};\n }\n }\n}\n\n// 3️⃣ Regex fallback if still not parsed\nif (!parsed.title) {\n parsed.title = text.match(/\"title\"\\s*:\\s*\"([^\"]+)\"/i)?.[1]\n || text.match(/title\\s*[:\\-]\\s*(.+)/i)?.[1]?.trim()\n || '';\n}\nif (!parsed.slug) {\n parsed.slug = text.match(/\"slug\"\\s*:\\s*\"([^\"]+)\"/i)?.[1]\n || text.match(/slug\\s*[:\\-]\\s*(.+)/i)?.[1]?.trim()\n || '';\n}\nif (!parsed.excerpt) {\n parsed.excerpt = text.match(/\"excerpt\"\\s*:\\s*\"([^\"]+)\"/i)?.[1]\n || text.match(/excerpt\\s*[:\\-]\\s*(.+)/i)?.[1]?.trim()\n || '';\n}\nif (!parsed.content) {\n const contentMatch = text.match(/\"content\"\\s*:\\s*\"([\\s\\S]+)\"/i);\n parsed.content = contentMatch\n ? contentMatch[1]\n : text.match(/content\\s*[:\\-]\\s*([\\s\\S]+)/i)?.[1]?.trim()\n || '';\n}\nif (!parsed.keywords) {\n parsed.keywords = text.match(/\"keywords\"\\s*:\\s*\"([^\"]+)\"/i)?.[1]\n || text.match(/keywords?\\s*[:\\-]\\s*(.+)/i)?.[1]?.trim()\n || '';\n}\nif (!parsed.image_prompt) {\n parsed.image_prompt = text.match(/\"image_prompt\"\\s*:\\s*\"([^\"]+)\"/i)?.[1]\n || text.match(/image[_\\s]?prompt\\s*[:\\-]\\s*(.+)/i)?.[1]?.trim()\n || '';\n}\n\n// 4️⃣ Normalize and sanitize output\nparsed.title = parsed.title?.replace(/^[\"']|[\"']$/g, '') || 'Untitled Blog';\nparsed.slug =\n parsed.slug ||\n parsed.title.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');\nparsed.excerpt = parsed.excerpt?.replace(/^[\"']|[\"']$/g, '') || parsed.content.slice(0, 160);\nparsed.content = parsed.content?.replace(/^[\"']|[\"']$/g, '') || '';\nparsed.keywords = parsed.keywords?.replace(/^[\"']|[\"']$/g, '') || '';\nparsed.image_prompt =\n parsed.image_prompt?.replace(/^[\"']|[\"']$/g, '') || parsed.title;\n\n// 5️⃣ Output ready-to-use normalized data\nreturn [parsed];\n"
},
"typeVersion": 2
},
{
"id": "02a8a518-fb7d-4f13-b72d-25dcbacfb033",
"name": "等待",
"type": "n8n-nodes-base.wait",
"position": [
1824,
-240
],
"webhookId": "c8b9eb51-2818-4db7-9c66-3a17afb79adc",
"parameters": {
"amount": 20
},
"typeVersion": 1.1
},
{
"id": "e2f813a3-1808-44f7-9bae-842d8d6cecbc",
"name": "条件判断",
"type": "n8n-nodes-base.if",
"position": [
2048,
-240
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "31dea76b-5ba5-464c-a85f-cac7facabdfb",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "=succeeded"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "b300ab84-eeea-42ea-a609-6bff06da4846",
"name": "编辑字段",
"type": "n8n-nodes-base.set",
"position": [
2272,
-240
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "={\n \"title\": \"{{ $('Code in JavaScript').item.json.title }}\",\n \"slug\": \"{{ $('Code in JavaScript').item.json.slug }}\",\n \"excerpt\": \"{{ $('Code in JavaScript').item.json.excerpt }}\",\n \"content\": \"{{ $('Code in JavaScript').item.json.content }}\",\n \"image_url\": \"{{ $json.output }}\",\n \"published\": true\n}"
},
"typeVersion": 3.4
},
{
"id": "df01fb3f-d7dd-4d2b-9581-24df4472b3ea",
"name": "计划触发器",
"type": "n8n-nodes-base.cron",
"position": [
0,
-240
],
"parameters": {
"triggerTimes": {
"item": [
{
"hour": 10
}
]
}
},
"typeVersion": 1
},
{
"id": "03a19edc-7128-40d1-a936-7fa3bce230a2",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
-48,
-48
],
"parameters": {
"color": 4,
"width": 384,
"height": 512,
"content": "### 🌐 **获取行业趋势(HTTP请求 – NewsAPI)**"
},
"typeVersion": 1
},
{
"id": "dc40791a-0f73-45dd-8856-30d3ea8b88fe",
"name": "便签 1",
"type": "n8n-nodes-base.stickyNote",
"position": [
304,
-672
],
"parameters": {
"color": 5,
"width": 352,
"height": 416,
"content": "### 🤖 **向模型发送消息(Google Gemini)**"
},
"typeVersion": 1
},
{
"id": "b2863fad-0e3e-4f6d-a5e9-c083a37c7962",
"name": "便签 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
624,
-48
],
"parameters": {
"color": 5,
"width": 432,
"height": 416,
"content": "### ✍️ **向模型发送消息1(Google Gemini)**"
},
"typeVersion": 1
},
{
"id": "c024e432-6579-4846-bd85-3d1d6cc8c047",
"name": "便签 3",
"type": "n8n-nodes-base.stickyNote",
"position": [
864,
-672
],
"parameters": {
"color": 3,
"width": 400,
"height": 416,
"content": "### 🧹 **JavaScript代码**"
},
"typeVersion": 1
},
{
"id": "1792857d-0095-4aaf-93d3-3137a6f7c59d",
"name": "便签 4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1136,
-16
],
"parameters": {
"color": 4,
"width": 384,
"height": 432,
"content": "### 🖼️ **HTTP请求(Replicate – 生成图片)**"
},
"typeVersion": 1
},
{
"id": "35e16700-c40d-4e8b-abda-a55b193b7e1f",
"name": "HTTP请求1(Replicate轮询)",
"type": "n8n-nodes-base.httpRequest",
"position": [
1600,
-240
],
"parameters": {
"url": "={{ $json.urls.get }}",
"options": {},
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"id": "IaV5B30kamGSSZgF",
"name": "Bearer Auth account"
}
},
"typeVersion": 4.2
},
{
"id": "6c7dfb6f-4f83-4d65-bea0-56c12a7b5393",
"name": "HTTP请求(Replicate – 生成图片)",
"type": "n8n-nodes-base.httpRequest",
"position": [
1376,
-240
],
"parameters": {
"url": "https://api.replicate.com/v1/models/ideogram-ai/ideogram-v3-turbo/predictions",
"method": "POST",
"options": {},
"jsonBody": "={\n \"input\": {\n \"prompt\": \"{{ $json.image_prompt }}\",\n \"width\": 1024,\n \"height\": 1024\n }\n}\n",
"sendBody": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"id": "IaV5B30kamGSSZgF",
"name": "Bearer Auth account"
}
},
"typeVersion": 4.2
},
{
"id": "9a54a8e9-938b-4e24-8f50-6681b64e53d7",
"name": "便签 5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1744,
-32
],
"parameters": {
"width": 256,
"height": 368,
"content": "### ⏱️ **等待**"
},
"typeVersion": 1
},
{
"id": "e4691aa3-b13b-447a-9a13-86787ecacac6",
"name": "便签6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1456,
-656
],
"parameters": {
"color": 4,
"width": 352,
"height": 400,
"content": "### ⏳ **HTTP请求1(Replicate轮询)**"
},
"typeVersion": 1
},
{
"id": "a363eaf7-f137-4977-aec6-e714d761f3ff",
"name": "便签7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1888,
-592
],
"parameters": {
"width": 304,
"height": 336,
"content": "### ✅ **If**"
},
"typeVersion": 1
},
{
"id": "bdec9233-16ac-4054-b953-69e6351b9c50",
"name": "便签8",
"type": "n8n-nodes-base.stickyNote",
"position": [
2128,
-80
],
"parameters": {
"width": 304,
"height": 352,
"content": "### 🧩 **编辑字段(设置节点)**"
},
"typeVersion": 1
},
{
"id": "f00d7334-5237-4b3c-ac73-d07164ad5ab7",
"name": "便签9",
"type": "n8n-nodes-base.stickyNote",
"position": [
2272,
-720
],
"parameters": {
"color": 4,
"width": 432,
"height": 480,
"content": "### 🚀 **发布到Supabase(HTTP请求)**"
},
"typeVersion": 1
},
{
"id": "5fe82ef4-24c2-46ae-b0de-e6986bcb3668",
"name": "便签 10",
"type": "n8n-nodes-base.stickyNote",
"position": [
2704,
-80
],
"parameters": {
"color": 2,
"width": 336,
"height": 480,
"content": "### 💬 **Slack通知**"
},
"typeVersion": 1
},
{
"id": "b1208c9f-d79c-405a-8d1c-96d0a5ec7389",
"name": "便签11",
"type": "n8n-nodes-base.stickyNote",
"position": [
-240,
-816
],
"parameters": {
"width": 480,
"height": 336,
"content": "## 🧩 模板通用说明"
},
"typeVersion": 1
},
{
"id": "13f542b7-566c-429d-ba5d-45a63b7fd801",
"name": "便签 12",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1040,
-816
],
"parameters": {
"width": 784,
"height": 1696,
"content": "**AI博客创建器(含Gemini、Replicate图片生成、Supabase发布和Slack)** 是一个完全自动化的内容生成和发布工作流,专为现代营销和SaaS团队设计。"
},
"typeVersion": 1
}
],
"active": true,
"pinData": {},
"settings": {
"timezone": "Asia/Kolkata",
"callerPolicy": "workflowsFromSameOwner",
"errorWorkflow": "EmPnnzwJEHxMuJaw",
"executionOrder": "v1",
"saveExecutionProgress": true,
"saveDataErrorExecution": "all"
},
"versionId": "bc157604-a8a8-4745-a98d-d8b10da1b1ab",
"connections": {
"If": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
],
[
{
"node": "HTTP Request1 (Replicate Polling)",
"type": "main",
"index": 0
}
]
]
},
"Wait": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "Publish to Supabase",
"type": "main",
"index": 0
}
]
]
},
"Message a model": {
"main": [
[
{
"node": "Message a model1",
"type": "main",
"index": 0
}
]
]
},
"Message a model1": {
"main": [
[
{
"node": "Code in JavaScript",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Fetch Industry Trends",
"type": "main",
"index": 0
}
]
]
},
"Code in JavaScript": {
"main": [
[
{
"node": "HTTP Request (Replicate – Generate Image)",
"type": "main",
"index": 0
}
]
]
},
"Slack Notification": {
"main": [
[]
]
},
"Publish to Supabase": {
"main": [
[
{
"node": "Slack Notification",
"type": "main",
"index": 0
}
]
]
},
"Fetch Industry Trends": {
"main": [
[
{
"node": "Message a model",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request1 (Replicate Polling)": {
"main": [
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request (Replicate – Generate Image)": {
"main": [
[
{
"node": "HTTP Request1 (Replicate Polling)",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
这是一个高级难度的通用自动化工作流。适合高级用户,包含 16+ 个节点的复杂工作流
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
基于AI的Loom视频问答(Gemini-2.5和Slack通知)
基于AI的Loom视频问答:使用Gemini-2.5和Slack通知
If
Set
Code
+7
24 节点GiovanniSegar
AI
Instagram客户投诉转支持工单+SLA自动化
使用Claude AI、工单和SLA管理自动化Instagram投诉处理
If
Set
Cron
+7
31 节点Oneclick AI Squad
Ticket Management
Instagram影响者交付物和合同合规性自动化
使用Claude AI和Slack提醒自动化Instagram影响者合同合规性
If
Set
Code
+8
26 节点Oneclick AI Squad
Social Media
n8n-vapi潜在客户验证器最终版 V140525.8
使用OpenAI、Twilio和Vapi自动化潜在客户呼叫AI助手
If
Set
Code
+6
26 节点Țugui Dragoș
Sales
使用Groq、Gemini和Slack审批系统自动化RSS到Medium发布
通过Groq、Gemini和Slack审批系统实现RSS到Medium发布的自动化流程
If
Set
Code
+16
41 节点ObisDev
Content Creation
使用GPT-4o、Brevo和NocoDB自动化销售外联和响应管理
使用GPT-4o、Brevo和NocoDB自动化销售外联和响应管理
If
Set
Code
+13
77 节点Evervise
Lead Nurturing
工作流信息
难度等级
高级
节点数量25
分类-
节点类型9
作者
Parag Javale
@pollar-beerTech driven creative who turns ideas into impact. I blend storytelling, product strategy, and automation whether it’s hooky audio promos, smart LMS platforms, or AI driven workflows. I help businesses grab attention, streamline ops, and scale fast. Big on data, experiments, and building digital solutions that actually work.
外部链接
在 n8n.io 上查看 →
分享此工作流