Zero Code AI Workflow Building for n8n Blogging Summary Automation

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.


Published: December 16, 2025
Updated: December 16, 2025

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

  1. In n8n: Workflows → Import → paste the JSON above.
  2. Replace placeholders in the “Create Notion Page” node:
    • NOTION_DB_ID—your database ID (no brackets)
    • SLACK_USER_ID—your Slack member ID
  3. Connect credentials: OpenAI, Notion OAuth, and Slack OAuth.
  4. Activate the workflow.
  5. 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.

Leave a Reply

Your email address will not be published. Required fields are marked *