Affiliate/Ads disclaimer: Some links on this blog are affiliate/ads links to support this project going on, meaning I may earn a commission at no extra cost to you.
Zero Code AI Workflow Building for n8n Blogging Summary Automation
I’m Swain Leung, a solo-automation addict who talks to APIs more than to people.
Last Monday, 07:14 a.m., espresso in hand, I realize the n8n blog is dropping gold faster than I can read.
I want the juice—summarized, bilingual, archived, and slid into my Slack DM before I finish the crema.
Here’s how I let AI do the thinking while I do the sipping.
Business Need (human)
“Whenever n8n publishes a new blog post, I want to do
- Grab the full text
- Generate a 120-word English summary
- Translate that summary into Chinese
- Create a Notion database page with both texts
- Drop me a Slack DM with the Notion URL
Scene 1 – The Blank Page Panic
I open a blank chat and treat the AI like a junior architect who’s never heard of n8n.
I feed it the raw itch:
You are an n8n workflow architect. Convert the following plain requirement into a bullet-style data-flow diagram. Use only these node types: RSS Read, HTTP Request, OpenAI, Notion, Slack, IF, Set, Date & Time. Output format: - NodeName (nodeType) → nextNode - Add a one-line “purpose” comment for each node. Requirement: “Whenever n8n releases a new blog post, fetch the content, summarise it via OpenAI, translate the summary to Chinese via OpenAI, create a Notion page containing both languages, and send myself a Slack DM with the Notion URL.”
The AI fires back a skeletal subway map—each stop labeled, no track missing.
For the first time, the chaos in my head has coordinates.
Scene 2 – Giving the Skeleton Some Muscle
Skeletons don’t lift loads; parameters do.
I crank the detail dial:
Below is the data-flow diagram you just produced.
For every node write the exact parameters n8n needs (URL, model, token limit, database ID, etc.).
If a node needs an expression, write it in JavaScript template literal syntax {{$json...}}.
Return pure JSON with this structure:
{
"nodes": [
{
"name": "RSS Read",
"type": "n8n-nodes-base.rssRead",
"parameters": { ... },
"credentials": { ... }
}
...
],
"connections": { ... }
}
The reply looks like blueprints fresh from the printer—every screw, every wire.
I can almost smell the ozone.
Scene 3 – The Final Incantation
One last spell to turn blueprints into a living, breathing workflow:
You are an n8n workflow generator. Using the node specification above, emit a single valid n8n workflow JSON that can be imported directly. Rules: - Use generic credential names (OpenAI account, Notion OAuth, Slack OAuth). - Add “continueOnFail=false” on every node. - Insert a “Wait 3 s” node before Slack to avoid rate-limit. - Add one “NoOp Done” node at the end. Output only the JSON, no commentary.
The screen flickers, then—boom—an 1,800-line JSON beast ready to pounce.
Scene 4 – Import & Triumph
I copy the JSON, glide into n8n, and hit Import.
The canvas blooms with nodes like a time-lapse flower.
Three credential hooks later, I toggle “Active.”
Workflow lives.
{
"name": "n8n Blog ➜ Summary ➜ Notion ➜ Slack",
"nodes": [
{
"parameters": {
"url": "https://n8n.io/blog/rss/"
},
"id": "rss",
"name": "RSS Read",
"type": "n8n-nodes-base.rssFeedRead",
"typeVersion": 1,
"position": [250, 300]
},
{
"parameters": {
"url": "{{$json.link}}",
"responseFormat": "text",
"options": {}
},
"id": "fetch",
"name": "Get Full Article",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 2,
"position": [450, 300]
},
{
"parameters": {
"model": "gpt-4o-mini",
"messages": {
"chatMessages": [
{
"role": "user",
"message": "Summarise the following article in 120 words or less:\n\n{{$json.data}}"
}
]
},
"options": {
"maxTokens": 180
}
},
"id": "summarise",
"name": "Summarise EN",
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1,
"position": [650, 300],
"credentials": {
"openAiApi": {
"id": "OpenAI account",
"name": "OpenAI account"
}
}
},
{
"parameters": {
"model": "gpt-4o-mini",
"messages": {
"chatMessages": [
{
"role": "user",
"message": "Translate the following text into Chinese:\n\n{{$json.result}}"
}
]
}
},
"id": "translate",
"name": "Translate ZH",
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1,
"position": [850, 300],
"credentials": {
"openAiApi": {
"id": "OpenAI account",
"name": "OpenAI account"
}
}
},
{
"parameters": {
"databaseId": "NOTION_DB_ID",
"title": "{{$json.title}}",
"propertiesToSend": {
"mapping": [
{ "key": "Summary EN", "value": "{{$('Summarise EN').item.json.result}}" },
{ "key": "Summary ZH", "value": "{{$('Translate ZH').item.json.result}}" },
{ "key": "URL", "value": "{{$json.link}}" },
{ "key": "Published", "value": "{{$json.pubDate}}" }
]
}
},
"id": "notion",
"name": "Create Notion Page",
"type": "n8n-nodes-base.notion",
"typeVersion": 2,
"position": [1050, 300],
"credentials": {
"notionOAuth2Api": {
"id": "Notion OAuth",
"name": "Notion OAuth"
}
}
},
{
"parameters": {
"amount": 3,
"unit": "seconds"
},
"id": "wait",
"name": "Wait 3 s",
"type": "n8n-nodes-base.wait",
"typeVersion": 1,
"position": [1250, 300]
},
{
"parameters": {
"channel": "dm",
"user": "SLACK_USER_ID",
"text": "📄 New n8n blog summary ready: {{$('Create Notion Page').item.json.url}}"
},
"id": "slack",
"name": "Slack DM",
"type": "n8n-nodes-base.slack",
"typeVersion": 2,
"position": [1450, 300],
"credentials": {
"slackOAuth2Api": {
"id": "Slack OAuth",
"name": "Slack OAuth"
}
}
},
{
"parameters": {},
"id": "done",
"name": "NoOp Done",
"type": "n8n-nodes-base.noOp",
"typeVersion": 1,
"position": [1650, 300]
}
],
"connections": {
"RSS Read": {
"main": [
[
{
"node": "Get Full Article",
"type": "main",
"index": 0
}
]
]
},
"Get Full Article": {
"main": [
[
{
"node": "Summarise EN",
"type": "main",
"index": 0
}
]
]
},
"Summarise EN": {
"main": [
[
{
"node": "Translate ZH",
"type": "main",
"index": 0
}
]
]
},
"Translate ZH": {
"main": [
[
{
"node": "Create Notion Page",
"type": "main",
"index": 0
}
]
]
},
"Create Notion Page": {
"main": [
[
{
"node": "Wait 3 s",
"type": "main",
"index": 0
}
]
]
},
"Wait 3 s": {
"main": [
[
{
"node": "Slack DM",
"type": "main",
"index": 0
}
]
]
},
"Slack DM": {
"main": [
[
{
"node": "NoOp Done",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "1.0.0",
"meta": {
"templateCredsSetupCompleted": true
}
}
How to Use
- In n8n: Workflows → Import → paste the JSON above.
- Replace placeholders in the “Create Notion Page” node:
- NOTION_DB_ID—your database ID (no brackets)
- SLACK_USER_ID—your Slack member ID
- Connect credentials: OpenAI, Notion OAuth, and Slack OAuth.
- Activate the workflow.
- Done—every new n8n blog post will now auto-summarize, translate, archive, and ping you.
Scene 5 – The First Victory Ping
10:42 a.m.—my phone buzzes.
Slack DM:
📄 A new n8n blog summary is ready in my Notion.
I grin like a kid who just snuck an extra cookie.
The machine now summarizes faster than I can blink, translates while I refill my cup, and archives before I remember to bookmark.
All I did was ask—three times—and the AI built the bridge from craving to code.
And that, my friend, is how I turned a Monday-morning whim into a fully armed, fully operational automation—without writing a single line of human code.






