AI daily news digest

Every morning, AI summarises the latest articles from a news feed into one short email.

Medium Saves ~5 hours/month ProductivityBy Flowngn team

Works with n8n · Make · Zapier

How it works

Trigger: Schedule — every day at 7:00
  1. Read the latest items from an RSS feed (industry news, blogs, Google News).
  2. Keep articles from the last 24 hours.
  3. Ask an AI model for a 5-bullet summary with the most important links.
  4. Email the digest to yourself.

Diagram

Every day 7:00Schedule TriggerRRead news feedRSS Read{ }Last 24 hoursCodeSummarize newsBasic LLM ChainClaude modelAnthropic Chat Mo…GEmail digestGmail
Trigger App Code AI

Code

JavaScript used in the Code step — already included in the template below.

Last 24 hours · Code node
// Keeps the last 24 hours of articles (max 15) as one block of text for the AI.
const DAY = 24 * 60 * 60 * 1000;

const articles = $input.all()
  .map((item) => item.json)
  .filter((a) => Date.now() - new Date(a.isoDate || a.pubDate).getTime() < DAY)
  .slice(0, 15)
  .map((a, i) => `${i + 1}. ${a.title}\n${(a.contentSnippet || "").slice(0, 300)}\n${a.link}`);

if (!articles.length) return [];
return [{ json: { articles: articles.join("\n\n") } }];

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 (182 lines)
{
  "name": "AI daily news digest (Flowngn)",
  "nodes": [
    {
      "parameters": {
        "content": "## AI daily news digest\nEvery morning, AI summarises the latest articles from a news feed into one short email.\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": "292cf932-28a7-4640-ac3f-63835463a159",
      "name": "Setup notes",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -420,
        -60
      ]
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 7
            }
          ]
        }
      },
      "id": "292cf932-28a7-4640-ac3f-63835463a159",
      "name": "Every day 7:00",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "url": "https://news.google.com/rss/search?q=YOUR_TOPIC&hl=en",
        "options": {}
      },
      "id": "292cf932-28a7-4640-ac3f-63835463a159",
      "name": "Read news feed",
      "type": "n8n-nodes-base.rssFeedRead",
      "typeVersion": 1.1,
      "position": [
        300,
        0
      ]
    },
    {
      "parameters": {
        "jsCode": "// Keeps the last 24 hours of articles (max 15) as one block of text for the AI.\nconst DAY = 24 * 60 * 60 * 1000;\n\nconst articles = $input.all()\n  .map((item) => item.json)\n  .filter((a) => Date.now() - new Date(a.isoDate || a.pubDate).getTime() < DAY)\n  .slice(0, 15)\n  .map((a, i) => `${i + 1}. ${a.title}\\n${(a.contentSnippet || \"\").slice(0, 300)}\\n${a.link}`);\n\nif (!articles.length) return [];\nreturn [{ json: { articles: articles.join(\"\\n\\n\") } }];"
      },
      "id": "292cf932-28a7-4640-ac3f-63835463a159",
      "name": "Last 24 hours",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        600,
        0
      ]
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=Summarize today's most important news for a busy reader in 5 bullet points. Each bullet: one sentence plus the link. Skip duplicates and clickbait.\n\n{{ $json.articles }}"
      },
      "id": "292cf932-28a7-4640-ac3f-63835463a159",
      "name": "Summarize news",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "typeVersion": 1.5,
      "position": [
        900,
        0
      ]
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "claude-sonnet-5",
          "mode": "list"
        },
        "options": {}
      },
      "id": "292cf932-28a7-4640-ac3f-63835463a159",
      "name": "Claude model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "typeVersion": 1.3,
      "position": [
        900,
        220
      ]
    },
    {
      "parameters": {
        "sendTo": "you@yourcompany.com",
        "subject": "=☕ Your news digest — {{ $now.toFormat('d LLL') }}",
        "emailType": "text",
        "message": "={{ $json.text }}",
        "options": {
          "appendAttribution": false
        }
      },
      "id": "292cf932-28a7-4640-ac3f-63835463a159",
      "name": "Email digest",
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        1200,
        0
      ]
    }
  ],
  "connections": {
    "Every day 7:00": {
      "main": [
        [
          {
            "node": "Read news feed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read news feed": {
      "main": [
        [
          {
            "node": "Last 24 hours",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Last 24 hours": {
      "main": [
        [
          {
            "node": "Summarize news",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Summarize news": {
      "main": [
        [
          {
            "node": "Email digest",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Claude model": {
      "ai_languageModel": [
        [
          {
            "node": "Summarize news",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "meta": {
    "templateCredsSetupCompleted": false
  },
  "tags": []
}

Open in the playground to edit →

Tips

  • Google News offers RSS for any search: news.google.com/rss/search?q=your+topic

Related flows