{
  "name": "RSS Feed with Gen AI Summary",
  "nodes": [
    {
      "parameters": {
        "content": "# ⚡ Daily Tech Digest Newsletter\n*A ClauDeLay Production*\n\n**What it does:**\nCurates and emails a professional daily newsletter covering security, cloud/DevOps, AI/ed-tech, and general tech news — tailored to your stack and interests.\n\n**How it works:**\n1. Triggers daily at 9 AM\n2. Fetches 15 RSS feeds across 2 source groups\n3. Limits items per group to prevent payload overload\n4. Google Gemini AI curates into 4 themed sections\n5. Sends a polished HTML newsletter via Gmail\n\n**4 Newsletter Sections:**\n1. 🔒 Security Alerts (3-5 critical items)\n2. ☁️ Cloud & DevOps (5-8 items)\n3. 🤖 AI & Ed-Tech (5-8 items)\n4. 🚀 Tech & Innovation (5-8 items)\n\n**Customize:**\n- Change RSS sources in the Set nodes\n- Modify platform context in the Analyze document prompt\n- Update recipient in Send Gmail node\n- Adjust schedule in trigger node",
        "height": 420,
        "width": 520,
        "color": 5
      },
      "id": "ff493523-e50c-421e-a56a-2d531e08406c",
      "name": "Sticky Note - Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -736,
        -304
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "content": "## 📅 Daily Trigger\nScheduled to run every day at 9:00 AM",
        "height": 220,
        "width": 280,
        "color": 3
      },
      "id": "706b5823-5c8f-47fa-a58f-578fff79b032",
      "name": "Sticky Note - Trigger",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -144,
        80
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 9
            }
          ]
        }
      },
      "id": "fb75902c-c7e2-447a-942b-1797bf8ccb0d",
      "name": "Schedule Trigger1",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -48,
        160
      ],
      "typeVersion": 1.2
    },
    {
      "parameters": {
        "content": "## 📰 RSS Feed Sources\n15 feeds across security, cloud, AI/ed-tech, and general tech",
        "height": 520,
        "width": 320,
        "color": 4
      },
      "id": "7eaf052f-a12b-4f12-9e67-99d0abc9ddcb",
      "name": "Sticky Note - Sources",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        208,
        -16
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "mode": "raw",
        "jsonOutput": "{\"url\": [\n\"https://www.bleepingcomputer.com/feed/\",\n\"https://thehackernews.com/feeds/posts/default\",\n\"https://krebsonsecurity.com/feed/\",\n\"https://www.darkreading.com/rss.xml\",\n\"https://www.cisa.gov/cybersecurity-advisories/all.xml\",\n\"https://www.securityweek.com/feed/\",\n\"https://www.schneier.com/feed/atom/\"\n]}",
        "options": {}
      },
      "id": "714bae33-0565-40d8-881f-2e205c49044b",
      "name": "Security & Infrastructure Feeds",
      "type": "n8n-nodes-base.set",
      "position": [
        320,
        112
      ],
      "typeVersion": 3.4
    },
    {
      "parameters": {
        "mode": "raw",
        "jsonOutput": "{\"url\": [\n\"https://hnrss.org/frontpage\",\n\"https://feeds.arstechnica.com/arstechnica/index\",\n\"https://www.theverge.com/rss/index.xml\",\n\"https://techcrunch.com/feed/\",\n\"https://aws.amazon.com/blogs/security/feed/\",\n\"https://www.docker.com/blog/feed/\",\n\"https://www.technologyreview.com/feed/\",\n\"https://www.edsurge.com/news/feed\"\n]}",
        "options": {}
      },
      "id": "23209228-2e63-4858-8188-b4930151ccdf",
      "name": "Tech, AI & Innovation Feeds",
      "type": "n8n-nodes-base.set",
      "position": [
        320,
        272
      ],
      "typeVersion": 3.4
    },
    {
      "parameters": {
        "content": "## 🔄 Feed Processing\nSplit URLs, fetch in batches, limit to 20 items per source group",
        "height": 524,
        "width": 820,
        "color": 6
      },
      "id": "31d02bb4-1b45-4428-b74f-9af5d4226494",
      "name": "Sticky Note - Processing",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        544,
        -16
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "fieldToSplitOut": "url",
        "options": {}
      },
      "id": "883f1892-387d-4b4d-90e8-86f4b0794c32",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        624,
        112
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "fieldToSplitOut": "url",
        "options": {}
      },
      "id": "83387337-7330-4698-bdac-d2cb7183a476",
      "name": "Split Out1",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        624,
        272
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "batchSize": 5,
        "options": {}
      },
      "id": "591544f3-b975-4428-91b5-46306b6d08e6",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        816,
        80
      ],
      "typeVersion": 3
    },
    {
      "parameters": {
        "batchSize": 4,
        "options": {}
      },
      "id": "bc218f26-b1f6-4201-9fe9-e07a69c34a61",
      "name": "Loop Over Items1",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        816,
        272
      ],
      "typeVersion": 3
    },
    {
      "parameters": {
        "url": "={{ $json.url }}",
        "options": {}
      },
      "id": "df9e6fe2-ed41-4706-a296-578b5e621617",
      "name": "RSS Read Security",
      "type": "n8n-nodes-base.rssFeedRead",
      "position": [
        1040,
        96
      ],
      "typeVersion": 1.2,
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "url": "={{ $json.url }}",
        "options": {}
      },
      "id": "b3021206-0396-4a6b-82b8-129a41b2c338",
      "name": "RSS Read Tech & AI",
      "type": "n8n-nodes-base.rssFeedRead",
      "position": [
        1040,
        288
      ],
      "typeVersion": 1.2,
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "content": "## 📦 Filter, Combine & Convert\nLimit to 20 items per group, merge all feeds, convert to CSV for AI analysis",
        "height": 504,
        "width": 680,
        "color": 2
      },
      "id": "5ed0071a-88f9-450d-ac52-3bd2b9248b1e",
      "name": "Sticky Note - Combine",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1200,
        -16
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "maxItems": 20
      },
      "id": "d4e5f6a7-b8c9-4d0e-1f2a-3b4c5d6e7f80",
      "name": "Limit Security Items",
      "type": "n8n-nodes-base.limit",
      "position": [
        1312,
        96
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "maxItems": 20
      },
      "id": "e5f6a7b8-c9d0-4e1f-2a3b-4c5d6e7f8091",
      "name": "Limit Tech & AI Items",
      "type": "n8n-nodes-base.limit",
      "position": [
        1312,
        288
      ],
      "typeVersion": 1
    },
    {
      "parameters": {},
      "id": "f9d0fe6e-38ab-4ced-bd05-e790087d0aba",
      "name": "Merge Both List",
      "type": "n8n-nodes-base.merge",
      "position": [
        1520,
        176
      ],
      "typeVersion": 3.2
    },
    {
      "parameters": {
        "options": {}
      },
      "id": "02c57760-c93d-4a8d-ae3a-71a8a4c12d28",
      "name": "Conver To CSV",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        1696,
        176
      ],
      "typeVersion": 1.1
    },
    {
      "parameters": {
        "content": "## 🤖 AI Curation (Gemini 2.5 Flash)\n\nGemini analyzes all feed content and curates into 4 sections based on platform context and audience interests.\n\n**Wait node** gives Google 45s to process the uploaded file before analysis begins.",
        "height": 504,
        "width": 700,
        "color": 7
      },
      "id": "48a7e799-61d4-41f4-af61-cabb919f6cc8",
      "name": "Sticky Note - AI",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1888,
        -16
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "resource": "file",
        "inputType": "binary"
      },
      "id": "3cabe232-2681-4e47-a320-97d0eb4dec45",
      "name": "Upload a file",
      "type": "@n8n/n8n-nodes-langchain.googleGemini",
      "position": [
        2000,
        176
      ],
      "typeVersion": 1.1,
      "credentials": {
        "googlePalmApi": {
          "id": "REPLACE_WITH_YOUR_GEMINI_CREDENTIAL_ID",
          "name": "Google Gemini(PaLM) Api account"
        }
      }
    },
    {
      "parameters": {
        "amount": 45
      },
      "id": "f6a7b8c9-d0e1-4f2a-3b4c-5d6e7f809102",
      "name": "Wait for Processing",
      "type": "n8n-nodes-base.wait",
      "position": [
        2208,
        176
      ],
      "typeVersion": 1.1
    },
    {
      "parameters": {
        "resource": "document",
        "modelId": {
          "__rl": true,
          "value": "models/gemini-2.5-flash",
          "mode": "list",
          "cachedResultName": "models/gemini-2.5-flash"
        },
        "text": "# Daily Tech Digest - AI Content Curator\n\nYou are a senior tech content curator creating a professional daily newsletter for security engineers, DevOps practitioners, and ed-tech professionals.\n\n## Input\nYou will receive a CSV file containing RSS feed items from multiple sources spanning cybersecurity, cloud infrastructure, AI/ed-tech, and general technology news.\n\n## Audience & Platform Context\nYour readers work with:\n- **Servers**: Ubuntu 22.04 LTS, Alpine Linux (Docker containers)\n- **Cloud**: AWS & GCP (IAM, Secrets Manager, Lambda, Cloud Functions, S3, GCS)\n- **Containers**: Docker, Docker Compose, Proxmox LXC\n- **Databases**: PostgreSQL\n- **Automation**: n8n, Ansible, bash scripting\n- **Monitoring**: Grafana, Prometheus, Loki, Uptime Kuma\n- **Endpoints**: Windows laptops (corporate)\n- **Industry**: [YOUR INDUSTRY HERE] (e.g., Ed-tech, FinTech, Healthcare)\n\n## Task\nAnalyze all items and produce a curated HTML newsletter with exactly **4 sections**:\n\n### Section 1: 🔒 Security Alerts (3-5 items MAX)\nThe most critical, actionable security news. Prioritize:\n- Actively exploited zero-days and high-severity CVEs\n- Threats targeting Linux, Docker, AWS/GCP, PostgreSQL, Node.js, or Windows\n- Supply chain attacks, secrets exposure, container escapes\n- **Keep this section SHORT.** Only include items requiring immediate awareness or action. Skip generic awareness content.\n\n### Section 2: ☁️ Cloud & DevOps (5-8 items)\nInfrastructure and operations news:\n- AWS, GCP service announcements and best practices\n- Docker, Kubernetes, container orchestration updates\n- CI/CD, infrastructure as code, observability\n- Database operations, backup strategies, Linux admin\n\n### Section 3: 🤖 AI & Ed-Tech (5-8 items)\nAI and education technology:\n- LLM developments, NLP/ML breakthroughs, AI tooling\n- Education technology, higher-ed innovation\n- AI-powered learning and engagement platforms\n- Research papers and practical AI applications\n\n### Section 4: 🚀 Tech & Innovation (5-8 items)\nGeneral technology and developer news:\n- Developer tools, frameworks, open source projects\n- Notable Hacker News discussions and community picks\n- Product launches, startup news\n- Programming language and ecosystem updates\n\n## Formatting Rules\n- Summarize each item in **2-3 concise, informative lines**\n- Every item MUST include its source URL as a clickable link\n- If an image URL is available in the data, include it below the title\n- Tone: Professional but approachable — curious, concise, practical\n- Do NOT include items that are paywalled, duplicates, or low-quality\n- Output a complete, valid HTML document using the template below\n- Replace all placeholder content with actual curated items from the CSV\n\n## HTML Template:\n```html\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Daily Tech Digest</title>\n    <style>\n        body {\n            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;\n            background: #f0f0f0;\n            margin: 0;\n            padding: 16px;\n            line-height: 1.6;\n            font-size: 15px;\n            color: #2d2d2d;\n        }\n        .container {\n            max-width: 640px;\n            margin: 0 auto;\n            background: #ffffff;\n            border-radius: 12px;\n            overflow: hidden;\n            box-shadow: 0 2px 8px rgba(0,0,0,0.08);\n        }\n        .header {\n            background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);\n            color: #fff;\n            padding: 28px 24px;\n        }\n        .header h1 {\n            font-size: 22px;\n            font-weight: 700;\n            margin: 0 0 6px 0;\n            letter-spacing: -0.3px;\n        }\n        .header .subtitle {\n            font-size: 13px;\n            margin: 0;\n            opacity: 0.7;\n        }\n        .content {\n            padding: 24px;\n        }\n        .section {\n            margin-bottom: 32px;\n        }\n        .section:last-child {\n            margin-bottom: 0;\n        }\n        .section-title {\n            font-size: 15px;\n            font-weight: 700;\n            color: #1a1a2e;\n            margin: 0 0 16px 0;\n            padding-bottom: 8px;\n            border-bottom: 2px solid #e63946;\n            text-transform: uppercase;\n            letter-spacing: 0.5px;\n        }\n        .item {\n            margin-bottom: 18px;\n            padding-bottom: 18px;\n            border-bottom: 1px solid #eee;\n        }\n        .item:last-child {\n            border-bottom: none;\n            margin-bottom: 0;\n            padding-bottom: 0;\n        }\n        .item-title {\n            font-size: 15px;\n            font-weight: 600;\n            color: #1a1a2e;\n            margin: 0 0 8px 0;\n        }\n        .item-image {\n            width: 100%;\n            height: auto;\n            border-radius: 8px;\n            margin-bottom: 10px;\n            display: block;\n            object-fit: cover;\n        }\n        .item-summary {\n            font-size: 14px;\n            color: #555;\n            margin: 0 0 8px 0;\n            line-height: 1.5;\n        }\n        .item-link {\n            color: #e63946;\n            text-decoration: none;\n            font-size: 13px;\n            font-weight: 600;\n        }\n        .footer {\n            background: #f8f8f8;\n            padding: 20px 24px;\n            text-align: center;\n            font-size: 12px;\n            color: #888;\n            border-top: 1px solid #eee;\n        }\n        .footer a {\n            color: #e63946;\n            text-decoration: none;\n        }\n    </style>\n</head>\n<body>\n    <div class=\"container\">\n        <div class=\"header\">\n            <h1>⚡ Daily Tech Digest</h1>\n            <p class=\"subtitle\">{current_date} · Curated by AI from 15 sources</p>\n        </div>\n        <div class=\"content\">\n            <div class=\"section\">\n                <h2 class=\"section-title\">🔒 Security Alerts</h2>\n                <div class=\"item\">\n                    <div class=\"item-title\">{Title}</div>\n                    <img src=\"{image_url}\" alt=\"\" class=\"item-image\" onerror=\"this.style.display='none'\">\n                    <div class=\"item-summary\">{2-3 line summary}</div>\n                    <a href=\"{link}\" class=\"item-link\">Read more →</a>\n                </div>\n            </div>\n            <div class=\"section\">\n                <h2 class=\"section-title\">☁️ Cloud & DevOps</h2>\n                <div class=\"item\">\n                    <div class=\"item-title\">{Title}</div>\n                    <img src=\"{image_url}\" alt=\"\" class=\"item-image\" onerror=\"this.style.display='none'\">\n                    <div class=\"item-summary\">{2-3 line summary}</div>\n                    <a href=\"{link}\" class=\"item-link\">Read more →</a>\n                </div>\n            </div>\n            <div class=\"section\">\n                <h2 class=\"section-title\">🤖 AI & Ed-Tech</h2>\n                <div class=\"item\">\n                    <div class=\"item-title\">{Title}</div>\n                    <img src=\"{image_url}\" alt=\"\" class=\"item-image\" onerror=\"this.style.display='none'\">\n                    <div class=\"item-summary\">{2-3 line summary}</div>\n                    <a href=\"{link}\" class=\"item-link\">Read more →</a>\n                </div>\n            </div>\n            <div class=\"section\">\n                <h2 class=\"section-title\">🚀 Tech & Innovation</h2>\n                <div class=\"item\">\n                    <div class=\"item-title\">{Title}</div>\n                    <img src=\"{image_url}\" alt=\"\" class=\"item-image\" onerror=\"this.style.display='none'\">\n                    <div class=\"item-summary\">{2-3 line summary}</div>\n                    <a href=\"{link}\" class=\"item-link\">Read more →</a>\n                </div>\n            </div>\n        </div>\n        <div class=\"footer\">\n            Curated with AI from 15 sources · Built with <a href=\"https://n8n.io\">n8n</a><br>\n            <a href=\"https://thedelay.com\">thedelay.com</a>\n        </div>\n    </div>\n</body>\n</html>\n```",
        "documentUrls": "={{ $json.fileUri }}",
        "options": {}
      },
      "id": "b74f4511-489b-474e-86bc-3cb50dcd8e6c",
      "name": "Analyze document",
      "type": "@n8n/n8n-nodes-langchain.googleGemini",
      "position": [
        2448,
        176
      ],
      "typeVersion": 1.1,
      "credentials": {
        "googlePalmApi": {
          "id": "REPLACE_WITH_YOUR_GEMINI_CREDENTIAL_ID",
          "name": "Google Gemini(PaLM) Api account"
        }
      }
    },
    {
      "parameters": {
        "content": "## 📧 Newsletter Delivery\n\nExtracts HTML from Gemini response and sends via Gmail.",
        "height": 472,
        "width": 520
      },
      "id": "a2d5b6ef-1b82-4fd1-9bb6-e83d143957ed",
      "name": "Sticky Note - Email",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2592,
        -16
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "jsCode": "// Get the HTML from previous node\nlet htmlText = $input.first().json.content.parts[0].text\n// Remove all \\n characters and trim\nhtmlText = htmlText.replace(/\\n/g, \"\").trim();\n\n// Return as JSON\nreturn [{ json: { html: htmlText } }];\n"
      },
      "id": "636b8d70-4970-4b90-a95a-6ead825cd9d6",
      "name": "Code in JavaScript",
      "type": "n8n-nodes-base.code",
      "position": [
        2672,
        176
      ],
      "typeVersion": 2
    },
    {
      "parameters": {
        "sendTo": "your-email@example.com",
        "subject": "=⚡ Daily Tech Digest - {{ new Date().toLocaleDateString(\"en-US\", { year: \"numeric\", month: \"long\", day: \"numeric\" }) }}",
        "message": "={{ $json.html.replace(/^```html/, '').replace(/```$/, '').trim() }}",
        "options": {}
      },
      "id": "63d354b1-b4b1-4142-ac8c-a401b9ac0de4",
      "name": "Send Gmail",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2880,
        176
      ],
      "typeVersion": 2.1,
      "credentials": {
        "gmailOAuth2": {
          "id": "REPLACE_WITH_YOUR_GMAIL_CREDENTIAL_ID",
          "name": "Gmail account"
        }
      }
    },
    {
      "parameters": {
        "content": "**Feed Groups:**\nGroup 1: Security & Infrastructure (7 feeds)\nGroup 2: Tech, AI & Innovation (8 feeds)\n\nBoth merge into a single CSV for AI analysis.\nGemini handles the 4-way categorization in the output.",
        "width": 320,
        "color": 3
      },
      "id": "5b17e7c6-dfec-4757-bf31-a3f113c597bf",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        208,
        432
      ],
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "Schedule Trigger1": {
      "main": [
        [
          {
            "node": "Security & Infrastructure Feeds",
            "type": "main",
            "index": 0
          },
          {
            "node": "Tech, AI & Innovation Feeds",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Security & Infrastructure Feeds": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Tech, AI & Innovation Feeds": {
      "main": [
        [
          {
            "node": "Split Out1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out1": {
      "main": [
        [
          {
            "node": "Loop Over Items1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "Limit Security Items",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "RSS Read Security",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items1": {
      "main": [
        [
          {
            "node": "Limit Tech & AI Items",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "RSS Read Tech & AI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limit Security Items": {
      "main": [
        [
          {
            "node": "Merge Both List",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limit Tech & AI Items": {
      "main": [
        [
          {
            "node": "Merge Both List",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "RSS Read Security": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RSS Read Tech & AI": {
      "main": [
        [
          {
            "node": "Loop Over Items1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge Both List": {
      "main": [
        [
          {
            "node": "Conver To CSV",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Conver To CSV": {
      "main": [
        [
          {
            "node": "Upload a file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload a file": {
      "main": [
        [
          {
            "node": "Wait for Processing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for Processing": {
      "main": [
        [
          {
            "node": "Analyze document",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analyze document": {
      "main": [
        [
          {
            "node": "Code in JavaScript",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code in JavaScript": {
      "main": [
        [
          {
            "node": "Send Gmail",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "meta": {
    "templateCredsSetupCompleted": false
  },
  "tags": []
}
