A week of content ideas from your industry's news

Every Sunday, AI reads the week's industry news and posts 7 content ideas to your Slack channel.

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

Works with n8n · Make · Zapier

How it works

Trigger: Schedule — Sundays at 9:00
  1. Read your industry's news feed.
  2. Keep the last 7 days of headlines.
  3. AI suggests 7 posts with a hook and a format for each.
  4. Post the ideas to your content channel.

Diagram

Sundays 9:00Schedule TriggerRRead industry newsRSS Read{ }This week's headlin…CodeSuggest post ideasBasic LLM ChainClaude modelAnthropic Chat Mo…SPost to content cha…Slack
Trigger App Code AI

Code

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

This week's headlines · Code node
// Keeps the last 7 days of articles (max 25) as one block of text for the AI.
const WEEK = 7 * 24 * 60 * 60 * 1000;

const articles = $input.all()
  .map((item) => item.json)
  .filter((a) => Date.now() - new Date(a.isoDate || a.pubDate).getTime() < WEEK)
  .slice(0, 25)
  .map((a, i) => `${i + 1}. ${a.title}\n${(a.contentSnippet || "").slice(0, 200)}\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 (184 lines)
{
  "name": "A week of content ideas from your industry's news (Flowngn)",
  "nodes": [
    {
      "parameters": {
        "content": "## A week of content ideas from your industry's news\nEvery Sunday, AI reads the week's industry news and posts 7 content ideas to your Slack channel.\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-43e7-a88a-78a03103d350",
      "name": "Setup notes",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -420,
        -60
      ]
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 9 * * 0"
            }
          ]
        }
      },
      "id": "292cf932-28a7-43e7-a88a-78a03103d350",
      "name": "Sundays 9:00",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "url": "https://news.google.com/rss/search?q=YOUR_INDUSTRY&hl=en",
        "options": {}
      },
      "id": "292cf932-28a7-43e7-a88a-78a03103d350",
      "name": "Read industry news",
      "type": "n8n-nodes-base.rssFeedRead",
      "typeVersion": 1.1,
      "position": [
        300,
        0
      ]
    },
    {
      "parameters": {
        "jsCode": "// Keeps the last 7 days of articles (max 25) as one block of text for the AI.\nconst WEEK = 7 * 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() < WEEK)\n  .slice(0, 25)\n  .map((a, i) => `${i + 1}. ${a.title}\\n${(a.contentSnippet || \"\").slice(0, 200)}\\n${a.link}`);\n\nif (!articles.length) return [];\nreturn [{ json: { articles: articles.join(\"\\n\\n\") } }];"
      },
      "id": "292cf932-28a7-43e7-a88a-78a03103d350",
      "name": "This week's headlines",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        600,
        0
      ]
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=You plan content for YOUR_BRAND. Audience: YOUR_AUDIENCE. Platforms: YOUR_PLATFORMS.\n\nFrom this week's industry news, suggest 7 post ideas, one per day. For each: the hook (first line), the format (carousel, reel, short post, poll), and which headline inspired it with its link. Mix educational, opinion and practical posts. Skip tragedies and politics.\n\n{{ $json.articles }}"
      },
      "id": "292cf932-28a7-43e7-a88a-78a03103d350",
      "name": "Suggest post ideas",
      "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-43e7-a88a-78a03103d350",
      "name": "Claude model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "typeVersion": 1.3,
      "position": [
        900,
        220
      ]
    },
    {
      "parameters": {
        "select": "channel",
        "channelId": {
          "__rl": true,
          "value": "#content",
          "mode": "name"
        },
        "text": "=💡 Content ideas for this week\n\n{{ $json.text }}",
        "otherOptions": {}
      },
      "id": "292cf932-28a7-43e7-a88a-78a03103d350",
      "name": "Post to content channel",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.2,
      "position": [
        1200,
        0
      ]
    }
  ],
  "connections": {
    "Sundays 9:00": {
      "main": [
        [
          {
            "node": "Read industry news",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read industry news": {
      "main": [
        [
          {
            "node": "This week's headlines",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "This week's headlines": {
      "main": [
        [
          {
            "node": "Suggest post ideas",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Suggest post ideas": {
      "main": [
        [
          {
            "node": "Post to content channel",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Claude model": {
      "ai_languageModel": [
        [
          {
            "node": "Suggest post ideas",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "meta": {
    "templateCredsSetupCompleted": false
  },
  "tags": []
}

Open in the playground to edit →

Tips

  • Use Google News RSS with your industry keyword, or any blog's RSS feed.

Related flows