New blog post to a newsletter draft with AI

When you publish a blog post, AI writes a short newsletter about it and saves it to your Gmail drafts.

Easy Saves ~3 hours/month Content & SocialBy Flowngn team

Works with n8n · Make · Zapier

How it works

Trigger: RSS — new post on your blog
  1. Watch your blog's RSS feed.
  2. AI writes a subject line, intro and 3 takeaways with a link to the post.
  3. Save it as a Gmail draft, ready to paste into your newsletter tool.

Diagram

RNew blog postRSS Feed TriggerWrite newsletterBasic LLM ChainClaude modelAnthropic Chat Mo…GSave as draftGmail
Trigger App AI

Build it

Pick your tool — same automation, step by step.

Copy and paste straight into an n8n canvas (Ctrl+V), or download and use Import from File. Then connect your own credentials and replace every YOUR_… placeholder. AI steps use a Claude model node — swap it for OpenAI, Gemini or Ollama if you prefer.

Workflow JSON
Show code (134 lines)
{
  "name": "New blog post to a newsletter draft with AI (Flowngn)",
  "nodes": [
    {
      "parameters": {
        "content": "## New blog post to a newsletter draft with AI\nWhen you publish a blog post, AI writes a short newsletter about it and saves it to your Gmail drafts.\n\n**Setup**\n1. Open each node and connect your own credentials.\n2. Replace every YOUR_… placeholder.\n3. Test once, then activate.\n\nFree template from Flowngn",
        "height": 260,
        "width": 340
      },
      "id": "2de5ad18-fc4b-47f3-a666-ffe96294bcaa",
      "name": "Setup notes",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -420,
        -60
      ]
    },
    {
      "parameters": {
        "pollTimes": {
          "item": [
            {
              "mode": "everyHour"
            }
          ]
        },
        "feedUrl": "https://YOUR_BLOG/rss.xml"
      },
      "id": "2de5ad18-fc4b-47f3-a666-ffe96294bcaa",
      "name": "New blog post",
      "type": "n8n-nodes-base.rssFeedReadTrigger",
      "typeVersion": 1,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=Turn this blog post into a short newsletter for YOUR_BRAND's subscribers, in the post's language.\nInclude: a catchy subject line on the first line as 'Subject: ...', a warm 2-sentence intro, 3 key takeaways as bullets, and a call to read the full post at {{ $json.link }}. Under 200 words. Don't add facts that aren't in the post.\n\nTitle: {{ $json.title }}\n\n{{ $json.contentSnippet || $json.content }}"
      },
      "id": "2de5ad18-fc4b-47f3-a666-ffe96294bcaa",
      "name": "Write newsletter",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "typeVersion": 1.5,
      "position": [
        300,
        0
      ]
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "claude-sonnet-5",
          "mode": "list"
        },
        "options": {}
      },
      "id": "2de5ad18-fc4b-47f3-a666-ffe96294bcaa",
      "name": "Claude model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "typeVersion": 1.3,
      "position": [
        300,
        220
      ]
    },
    {
      "parameters": {
        "resource": "draft",
        "operation": "create",
        "subject": "={{ ($json.text.match(/Subject:\\s*(.+)/) || [, $('New blog post').item.json.title])[1] }}",
        "message": "={{ $json.text.replace(/^.*Subject:.*\\n+/, '') }}",
        "options": {
          "sendTo": "you@yourcompany.com"
        }
      },
      "id": "2de5ad18-fc4b-47f3-a666-ffe96294bcaa",
      "name": "Save as draft",
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        600,
        0
      ]
    }
  ],
  "connections": {
    "New blog post": {
      "main": [
        [
          {
            "node": "Write newsletter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Write newsletter": {
      "main": [
        [
          {
            "node": "Save as draft",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Claude model": {
      "ai_languageModel": [
        [
          {
            "node": "Write newsletter",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "meta": {
    "templateCredsSetupCompleted": false
  },
  "tags": []
}

Open in the playground to edit →

Tips

  • Most blogs have a feed at /feed or /rss.xml.

Related flows