AutomationFlowsAI & RAG › AI Tech Watcher: Personalized News Curator-p

AI Tech Watcher: Personalized News Curator-p

AI Tech Watcher: Personalized News Curator-p. Uses rssFeedRead, googleGemini, slack. Scheduled trigger; 16 nodes.

Cron / scheduled trigger★★★★☆ complexityAI-powered16 nodesRSS Feed ReadGoogle GeminiSlack
AI & RAG Trigger: Cron / scheduled Nodes: 16 Complexity: ★★★★☆ AI nodes: yes Added:

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "AI Tech Watcher: Personalized News Curator-p",
  "nodes": [
    {
      "parameters": {
        "content": "## \ud83d\uddde\ufe0f AI Tech Watcher\n\n**Your Personal News Curator.**\nFetches RSS feeds, filters them with **Gemini**, and notifies you of *only* the important news on Slack.\n\n**How it works**\n1. **Trigger:** Runs every morning at 8:00 AM (or Manually).\n2. **Fetch:** Gets latest articles from RSS feeds (e.g., n8n, TechCrunch).\n3. **De-Dupe:** JavaScript Logic filters out old articles.\n4. **Analyze:** Loops through items and uses **Gemini** reads the title/snippet and decides if it's relevant to you.\n   - *Criteria: AI, Automation, No-Code.*\n5. **Notify:** Sends a summary to **Slack**.\n\n**Setup steps**\n1. **Credentials:** Connect Gemini, Slack.\n2. **Config:** Open **\"Config\"** to set RSS URLs & Slack Channel.\n3. **Test:** Click \"Execute Workflow\".",
        "height": 380,
        "width": 500,
        "color": 3
      },
      "id": "7125f3a1-1a81-4c6e-beee-edca5b263738",
      "name": "Sticky Note - Main",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -320,
        -16
      ]
    },
    {
      "parameters": {
        "content": "## \u2699\ufe0f Configuration\nSet RSS Feeds & Slack.",
        "height": 140,
        "width": 288,
        "color": 6
      },
      "id": "71647d94-7e1c-466c-988d-fd7577eccd99",
      "name": "Sticky Note - Config",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        256,
        0
      ]
    },
    {
      "parameters": {
        "content": "## \ud83d\udce1 Fetch & Filter\nGet RSS & Remove Old Items.",
        "height": 300,
        "width": 540,
        "color": 6
      },
      "id": "fae97481-33b1-40e9-91b0-59587f59dae2",
      "name": "Sticky Note - Input",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        608,
        0
      ]
    },
    {
      "parameters": {
        "content": "## \ud83e\udde0 AI Curator\nGemini rates & summarizes.",
        "height": 140,
        "width": 440,
        "color": 6
      },
      "id": "6b2852c5-8c59-4956-9176-b59a5063ad1f",
      "name": "Sticky Note - AI",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1200,
        0
      ]
    },
    {
      "parameters": {
        "content": "## \ud83d\udce4 Notify\nSend to Slack.",
        "height": 140,
        "width": 340,
        "color": 6
      },
      "id": "d5e5f9a0-da11-49ca-8193-dea0e5759f88",
      "name": "Sticky Note - Output",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1680,
        0
      ]
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "RSS_URLS",
              "value": "https://n8n.io/blog/rss/, https://techcrunch.com/category/artificial-intelligence/feed/",
              "type": "string"
            },
            {
              "id": "id-2",
              "name": "SLACK_CHANNEL",
              "value": "news-feed",
              "type": "string"
            }
          ]
        },
        "includeOtherFields": true,
        "options": {}
      },
      "id": "abda3921-7258-4cd8-a233-911bf8f24dfe",
      "name": "Config",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        368,
        96
      ]
    },
    {
      "parameters": {
        "triggerTimes": {
          "item": [
            {
              "hour": 8
            }
          ]
        }
      },
      "id": "4e8ace19-bcbc-4b41-b924-f9b7fefa222a",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.cron",
      "typeVersion": 1,
      "position": [
        192,
        96
      ]
    },
    {
      "parameters": {},
      "id": "48e85b81-2dad-46c1-9ef8-003408ab3447",
      "name": "Manual Trigger",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        192,
        288
      ]
    },
    {
      "parameters": {
        "jsCode": "// Split RSS URLs\nconst urls = $('Config').first().json.RSS_URLS.split(',').map(u => u.trim());\nreturn urls.map(url => ({ json: { url } }));"
      },
      "id": "cb31cd0f-bd70-4e5e-9bdf-fe2bcb7ed566",
      "name": "Split URLs",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        528,
        112
      ]
    },
    {
      "parameters": {
        "url": "={{ $json.url }}",
        "options": {}
      },
      "id": "b9e4f8ac-64f5-4868-91ca-4e1acc6369fc",
      "name": "RSS Feed Read",
      "type": "n8n-nodes-base.rssFeedRead",
      "typeVersion": 1.1,
      "position": [
        688,
        112
      ]
    },
    {
      "parameters": {
        "modelId": {
          "__rl": true,
          "value": "models/gemini-2.0-flash",
          "mode": "list",
          "cachedResultName": "models/gemini-2.0-flash"
        },
        "messages": {
          "values": [
            {
              "content": "=Act as a Tech News Curator.\nAnalyze this article for a No-Code Automation Engineer.\n\n[Article]\nTitle: {{ $json.title }}\nSummary: {{ $json.contentSnippet || $json.content }}\n\n[Instructions]\n1. **Rate Relevance (1-5):** How relevant is this to AI automation, n8n, or productivity?\n2. **Summarize:** Write a 3-bullet point summary in Japanese.\n3. **Output JSON ONLY:**\n{\n  \"relevance\": 5,\n  \"summary_jp\": \"- ...\\n- ...\"\n}"
            }
          ]
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.googleGemini",
      "typeVersion": 1,
      "position": [
        1216,
        96
      ],
      "id": "a737fd3a-02b1-425f-a08b-f9dde77554d0",
      "name": "Gemini: Curate",
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "// Parse JSON\nconst text = $input.first().json.content.parts[0].text;\nlet result = {};\ntry {\n  const cleanText = text.replace(/```json/g, '').replace(/```/g, '').trim();\n  result = JSON.parse(cleanText);\n} catch (e) {\n  result = { relevance: 0, summary_jp: \"Error parsing.\" };\n}\nreturn { json: result };"
      },
      "id": "768b06b0-f914-4f9a-86d6-a3cdc38e01e4",
      "name": "Parse JSON",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1488,
        96
      ]
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict"
          },
          "conditions": [
            {
              "id": "is_relevant",
              "leftValue": "={{ $json.relevance }}",
              "rightValue": 4,
              "operator": {
                "type": "number",
                "operation": "gte"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "id": "3b0246d0-5ed5-4910-bde4-ef774795931b",
      "name": "Is Relevant?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        1632,
        96
      ]
    },
    {
      "parameters": {
        "authentication": "oAuth2",
        "select": "user",
        "user": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "text": "=\ud83d\uddde\ufe0f **News: {{ $('Deduplication').item.json.title }}**\n\n{{ $json.summary_jp }}\n\n\ud83d\udd17 {{ $('Deduplication').item.json.link }}",
        "otherOptions": {}
      },
      "id": "ea1724b3-2d5a-4ede-b763-6770f453bff3",
      "name": "Notify Slack",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.4,
      "position": [
        1856,
        64
      ],
      "credentials": {
        "slackOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "// \u91cd\u8907\u6392\u9664\uff08Deduplication\uff09\u30ed\u30b8\u30c3\u30af\n// \u904e\u53bb\u306b\u51e6\u7406\u3057\u305f\u8a18\u4e8bID\u3092\u8a18\u61b6\u3057\u3001\u65b0\u7740\u306e\u307f\u3092\u901a\u3057\u307e\u3059\n\nconst staticData = $getWorkflowStaticData('node');\n// \u904e\u53bb\u306b\u51e6\u7406\u3057\u305fID\u30ea\u30b9\u30c8\u3092\u53d6\u5f97\nconst processedIds = staticData.processedIds || [];\nconst newItems = [];\nconst newIds = [];\n\n// \u5165\u529b\u3055\u308c\u305f\u8a18\u4e8b\u3092\u4e00\u3064\u305a\u3064\u30c1\u30a7\u30c3\u30af\nfor (const item of $input.all()) {\n  // \u8a18\u4e8b\u306eID(guid) \u307e\u305f\u306f \u30ea\u30f3\u30af(link) \u3092\u53d6\u5f97\n  const id = item.json.guid || item.json.link;\n  \n  // ID\u304c\u3042\u308a\u3001\u304b\u3064\u904e\u53bb\u30ea\u30b9\u30c8\u306b\u306a\u3051\u308c\u3070\u300c\u65b0\u898f\u300d\u3068\u3057\u3066\u63a1\u7528\n  if (id && !processedIds.includes(id)) {\n    newItems.push(item);\n    newIds.push(id);\n  }\n}\n\n// \u51e6\u7406\u6e08\u307f\u30ea\u30b9\u30c8\u3092\u66f4\u65b0\uff08\u6700\u65b0500\u4ef6\u307e\u3067\u4fdd\u6301\u3057\u3066\u5bb9\u91cf\u7206\u767a\u3092\u9632\u3050\uff09\nstaticData.processedIds = [...newIds, ...processedIds].slice(0, 500);\n\nreturn newItems;"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        880,
        112
      ],
      "id": "c22981e8-fa14-4130-9434-56f8cd12824f",
      "name": "Code in JavaScript"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.splitInBatches",
      "typeVersion": 3,
      "position": [
        1040,
        112
      ],
      "id": "70eb0c0f-fbc5-4643-8347-f1d1aa26fb82",
      "name": "Loop Over Items"
    }
  ],
  "connections": {
    "Config": {
      "main": [
        [
          {
            "node": "Split URLs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Config",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Manual Trigger": {
      "main": [
        [
          {
            "node": "Config",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split URLs": {
      "main": [
        [
          {
            "node": "RSS Feed Read",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gemini: Curate": {
      "main": [
        [
          {
            "node": "Parse JSON",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse JSON": {
      "main": [
        [
          {
            "node": "Is Relevant?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is Relevant?": {
      "main": [
        [
          {
            "node": "Notify Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RSS Feed Read": {
      "main": [
        [
          {
            "node": "Code in JavaScript",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code in JavaScript": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "Gemini: Curate",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1",
    "availableInMCP": false,
    "timeSavedMode": "fixed",
    "callerPolicy": "workflowsFromSameOwner"
  },
  "versionId": "21624e48-6b77-4473-8574-e1b9dcb3970a",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "Oyk4OjTr8sAYKMw6",
  "tags": []
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

AI Tech Watcher: Personalized News Curator-p. Uses rssFeedRead, googleGemini, slack. Scheduled trigger; 16 nodes.

Source: https://github.com/alternativescom/n8n-automation-workflows/blob/main/21-ai-tech-watcher/workflow.json — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This workflow automates the entire lifecycle of collecting, filtering, summarizing, and delivering the most important daily news in technology, artificial intelligence, cybersecurity, and the digital

RSS Feed Read, Gmail, Google Gemini
AI & RAG

This workflow automatically collects the latest technology news, filters for emerging topics, and uses AI to score relevance and generate clean, ready-to-share content. It helps you focus on high-impa

RSS Feed Read, OpenAI, Google Sheets +1
AI & RAG

This workflow creates a daily “n8n News Radar” briefing: Pulls the latest n8n ecosystem updates from Blog, Community, GitHub Releases, and Reddit. Filters to the last 24 hours + keyword relevance. Use

Telegram, Notion, Google Gemini +2
AI & RAG

RSS Summary. Uses github, discord, openAi, httpRequest. Scheduled trigger; 26 nodes.

GitHub, Discord, OpenAI +3
AI & RAG

Start your day with a personalized news podcast delivered directly to your Telegram. This workflow helps you stay informed without scrolling through endless feeds. It automatically collects news from

RSS Feed Read, YouTube, Google Gemini +2