{
  "name": "Send automated weekly news digest from Google News to Discord",
  "nodes": [
    {
      "id": "2329283c-ce3a-4412-ac45-573850ce65e7",
      "name": "Sticky Note13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3600,
        -736
      ],
      "parameters": {
        "width": 816,
        "height": 336,
        "content": "## Need more advanced automation solutions? Contact us for custom enterprise workflows!\n\n# Growth-AI.fr\n\n## https://www.linkedin.com/in/allanvaccarizi/\n## https://www.linkedin.com/in/hugo-marinier-%F0"
      }
    },
    {
      "id": "81f896e8-b323-4acd-bdd8-d2e44d104eb8",
      "name": "Sticky Note16",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2752,
        -768
      ],
      "parameters": {
        "width": 1024,
        "height": 400,
        "content": "![Logo Growth AI](https://cdn.prod.website-files.com/6825df5b20329ba581df4914/68d413c43f8729fa336568a6_Logo_horizontal.png)"
      }
    },
    {
      "id": "581b68b8-ac61-4dd0-ac95-ba591a0f7f85",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -4080,
        -304
      ],
      "parameters": {
        "width": 480,
        "height": 944,
        "content": "## Untitled workflow\n\n### How it works\n\n1. A schedule trigger fires and fetches a list of watch topics from a data table, then loops over each topic.\n2. For each topic, the workflow searches Google Ne"
      }
    },
    {
      "id": "e3280242-6dcd-4f32-862f-2a72af245942",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3520,
        176
      ],
      "parameters": {
        "width": 608,
        "height": 304,
        "content": "## Schedule and fetch topics\n\nTriggers the workflow on a schedule, fetches the list of watch topics from a data table, and feeds them into the processing loop."
      }
    },
    {
      "id": "9b7da681-f7ca-403a-bee3-cbdffc1f069b",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2768,
        144
      ],
      "parameters": {
        "width": 400,
        "height": 320,
        "content": "## Search news and extract URLs\n\nFor each topic, searches Google News via SerpAPI and extracts only the relevant article URLs with a code node."
      }
    },
    {
      "id": "0f359031-01f8-425b-9ae1-3f2d68aa1320",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2272,
        176
      ],
      "parameters": {
        "width": 816,
        "height": 464,
        "content": "## Scrape, clean, and summarise\n\nScrapes the full article content via Firecrawl, cleans the raw markdown for AI consumption, then uses an Anthropic LLM chain to write a structured digest entry for the"
      }
    },
    {
      "id": "a714917d-55be-48dd-a7ce-dbd17004b7eb",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2832,
        -272
      ],
      "parameters": {
        "width": 896,
        "height": 384,
        "content": "## Aggregate and prepare Discord messages\n\nAggregates all topic digests into one dataset, sends an intro message to Discord, and splits the full digest into Discord-safe chunks ready for sequential se"
      }
    },
    {
      "id": "6961f89e-69fd-436f-bd13-c8a5d1c678c4",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1904,
        -304
      ],
      "parameters": {
        "width": 624,
        "height": 448,
        "content": "## Send digest to Discord\n\nLoops over each message chunk and sends it to Discord, then sends a final conclusion message to close the broadcast."
      }
    },
    {
      "id": "d9c479e9-0ace-4ca5-a3bc-ff72bd64a290",
      "name": "Claude Sonnet 4.6",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        -1760,
        480
      ]
    },
    {
      "id": "ff784c86-27fb-488a-b2ec-828a47c1985d",
      "name": "Every Monday at 9am",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -3472,
        304
      ]
    },
    {
      "id": "389a8687-0fc0-4339-8eed-a114e1e5a3ca",
      "name": "Loop Over Watch Topics",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -3056,
        304
      ]
    },
    {
      "id": "3328eb5e-be5a-4dae-882b-24b420aa6229",
      "name": "Search Google News via SerpAPI",
      "type": "n8n-nodes-serpapi.serpApi",
      "position": [
        -2720,
        304
      ]
    },
    {
      "id": "eb42701a-7e71-474c-bb9c-fc26244c8802",
      "name": "Draft Watch Summary with AI",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        -1760,
        304
      ]
    },
    {
      "id": "40c57253-ce87-49af-94ba-d2f64da31d73",
      "name": "Aggregate All Summaries",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        -2784,
        -64
      ]
    },
    {
      "id": "a1e9c64e-6168-4021-b93b-e16b567f27e4",
      "name": "Split Text for Discord",
      "type": "n8n-nodes-base.code",
      "position": [
        -2448,
        -80
      ]
    },
    {
      "id": "168294e9-07b5-4d23-b3f7-bcc8c92aebee",
      "name": "Send Intro to Discord",
      "type": "n8n-nodes-base.discord",
      "position": [
        -2096,
        -176
      ]
    },
    {
      "id": "96815712-69d1-406b-a8cc-6604aadf47a4",
      "name": "Send Watch Chunk to Discord",
      "type": "n8n-nodes-base.discord",
      "position": [
        -1632,
        -32
      ]
    },
    {
      "id": "1e74b9d2-5c43-4186-91aa-ca3a7a168b8e",
      "name": "Send Conclusion to Discord",
      "type": "n8n-nodes-base.discord",
      "position": [
        -1424,
        -176
      ]
    },
    {
      "id": "ad55964a-3a23-4bf8-ae79-0b4da47ad3b8",
      "name": "Loop Over Discord Chunks",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -1856,
        -96
      ]
    },
    {
      "id": "a183fb42-04e4-4c82-8a85-5dc61d532d44",
      "name": "Extract Article URLs",
      "type": "n8n-nodes-base.code",
      "position": [
        -2512,
        304
      ]
    },
    {
      "id": "0e1f5e35-fb2c-4cc3-9597-ac2ec28d543a",
      "name": "Load Watch Topics from Table",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        -3264,
        304
      ]
    },
    {
      "id": "b524120a-91fd-45d8-9b2e-d4b94113b251",
      "name": "Scrape Article Content",
      "type": "@mendable/n8n-nodes-firecrawl.firecrawl",
      "position": [
        -2224,
        304
      ]
    },
    {
      "id": "235ed5ec-be74-4b7a-8ae3-15ff22b6506b",
      "name": "Clean Markdown for AI",
      "type": "n8n-nodes-base.code",
      "position": [
        -2016,
        304
      ]
    }
  ],
  "connections": {
    "Claude Sonnet 4.6": {
      "ai_languageModel": [
        [
          {
            "node": "Draft Watch Summary with AI",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Every Monday at 9am": {
      "main": [
        [
          {
            "node": "Load Watch Topics from Table",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Article URLs": {
      "main": [
        [
          {
            "node": "Scrape Article Content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Clean Markdown for AI": {
      "main": [
        [
          {
            "node": "Draft Watch Summary with AI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Watch Topics": {
      "main": [
        [
          {
            "node": "Aggregate All Summaries",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Search Google News via SerpAPI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Article Content": {
      "main": [
        [
          {
            "node": "Clean Markdown for AI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Text for Discord": {
      "main": [
        [
          {
            "node": "Loop Over Discord Chunks",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate All Summaries": {
      "main": [
        [
          {
            "node": "Split Text for Discord",
            "type": "main",
            "index": 0
          },
          {
            "node": "Send Intro to Discord",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Discord Chunks": {
      "main": [
        [
          {
            "node": "Send Conclusion to Discord",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send Watch Chunk to Discord",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Draft Watch Summary with AI": {
      "main": [
        [
          {
            "node": "Loop Over Watch Topics",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Watch Chunk to Discord": {
      "main": [
        [
          {
            "node": "Loop Over Discord Chunks",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Load Watch Topics from Table": {
      "main": [
        [
          {
            "node": "Loop Over Watch Topics",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search Google News via SerpAPI": {
      "main": [
        [
          {
            "node": "Extract Article URLs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}