{
  "name": "☕ Morning AI Digest (RSS → Claude → Slack)",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 7
            }
          ]
        }
      },
      "id": "9d6b6d6d-442e-4306-bf5e-2e2a2f7689e1",
      "name": "Every morning at 7",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "url": "https://hnrss.org/newest?q=AI+OR+LLM+OR+MCP&points=50",
        "options": {}
      },
      "id": "87ed5305-d574-4976-b906-5301984ea53e",
      "name": "Read RSS feed",
      "type": "n8n-nodes-base.rssFeedRead",
      "typeVersion": 1.1,
      "position": [
        220,
        0
      ]
    },
    {
      "parameters": {
        "maxItems": 15
      },
      "id": "905155f9-e356-4f52-b8cc-99c69e16be7d",
      "name": "Keep top 15",
      "type": "n8n-nodes-base.limit",
      "typeVersion": 1,
      "position": [
        440,
        0
      ]
    },
    {
      "parameters": {
        "jsCode": "// Squash the RSS items into one numbered list the AI can read\nconst lines = $input.all().map((item, i) => {\n  const { title, link, contentSnippet } = item.json;\n  return `${i + 1}. ${title}\\n${(contentSnippet || '').slice(0, 300)}\\n${link}`;\n});\nreturn [{ json: { articles: lines.join('\\n\\n'), count: lines.length } }];"
      },
      "id": "5ec25e49-09b8-433f-bb99-94c78269329a",
      "name": "Build article list",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        660,
        0
      ]
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=You are my upbeat tech-news friend. From these {{ $json.count }} stories, pick the 5 most interesting for someone learning to build with AI (MCP, agents, automation, new tools).\n\nFor each: a punchy one-line headline, one sentence on why it matters, and the link. End with one \"try this today\" idea.\n\nFormat for Slack (use *bold*, no markdown headers).\n\nStories:\n{{ $json.articles }}"
      },
      "id": "6e1ba511-838d-4711-bc34-c7a2ef43362f",
      "name": "Summarize with Claude",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "typeVersion": 1.5,
      "position": [
        880,
        0
      ]
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "claude-opus-5"
        },
        "options": {
          "maxTokensToSample": 1500
        }
      },
      "id": "e59106b9-679d-4608-9084-c477331bc120",
      "name": "Claude",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "typeVersion": 1.3,
      "position": [
        880,
        220
      ]
    },
    {
      "parameters": {
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "name",
          "value": "#ai-digest"
        },
        "text": "=☕ *Your Morning AI Digest*\n\n{{ $json.text }}",
        "otherOptions": {}
      },
      "id": "2aab4af4-b3d7-4f2c-ada3-ad9764ffe223",
      "name": "Post to Slack",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.2,
      "position": [
        1100,
        0
      ]
    }
  ],
  "connections": {
    "Every morning at 7": {
      "main": [
        [
          {
            "node": "Read RSS feed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read RSS feed": {
      "main": [
        [
          {
            "node": "Keep top 15",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Keep top 15": {
      "main": [
        [
          {
            "node": "Build article list",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build article list": {
      "main": [
        [
          {
            "node": "Summarize with Claude",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Claude": {
      "ai_languageModel": [
        [
          {
            "node": "Summarize with Claude",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Summarize with Claude": {
      "main": [
        [
          {
            "node": "Post to Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "pinData": {}
}