AutomationFlowsWeb Scraping › 뉴스 RSS 수집 및 요약 리포트 자동 발송

뉴스 RSS 수집 및 요약 리포트 자동 발송

뉴스 RSS 수집 및 요약 리포트 자동 발송. Uses rssFeedRead, httpRequest, emailSend. Scheduled trigger; 13 nodes.

Cron / scheduled trigger★★★★☆ complexity13 nodesRSS Feed ReadHTTP RequestEmail Send
Web Scraping Trigger: Cron / scheduled Nodes: 13 Complexity: ★★★★☆ Added:

This workflow follows the Emailsend → HTTP Request recipe pattern — see all workflows that pair these two integrations.

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": "\ub274\uc2a4 RSS \uc218\uc9d1 \ubc0f \uc694\uc57d \ub9ac\ud3ec\ud2b8 \uc790\ub3d9 \ubc1c\uc1a1",
  "description": "\uc9c0\uc815\ub41c RSS \ud53c\ub4dc\uc5d0\uc11c \ub274\uc2a4\ub97c \uc218\uc9d1\ud558\uace0, \ud0a4\uc6cc\ub4dc\ub85c \ud544\ud130\ub9c1\ud55c \ud6c4 OpenAI\ub85c \uc694\uc57d\ud558\uc5ec \ub9e4\uc77c \uc624\uc804 9\uc2dc\uc5d0 \uc774\uba54\uc77c \ub9ac\ud3ec\ud2b8 \ubc1c\uc1a1",
  "nodes": [
    {
      "id": "sticky-overview",
      "name": "\uc6cc\ud06c\ud50c\ub85c\uc6b0 \uac1c\uc694",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        240,
        60
      ],
      "parameters": {
        "width": 400,
        "height": 160,
        "color": 2,
        "content": "### \ub274\uc2a4 RSS \uc218\uc9d1 \ubc0f \uc694\uc57d \ub9ac\ud3ec\ud2b8 \uc790\ub3d9 \ubc1c\uc1a1\n\n1. **\uc218\uc9d1** - \uc9c0\uc815\ub41c RSS \ud53c\ub4dc\uc5d0\uc11c \ucd5c\uc2e0 \ub274\uc2a4 \uc218\uc9d1\n2. **\ud544\ud130\ub9c1** - \uad00\uc2ec \ud0a4\uc6cc\ub4dc \uae30\ubc18\uc73c\ub85c \uae30\uc0ac \uc120\ubcc4\n3. **\uc694\uc57d** - OpenAI gpt-4o-mini\ub85c \uac01 \uae30\uc0ac 2~3\ubb38\uc7a5 \uc694\uc57d\n4. **\ubc1c\uc1a1** - \ub9e4\uc77c \uc624\uc804 9\uc2dc(\ud3c9\uc77c), HTML \uc774\uba54\uc77c\ub85c \ub9ac\ud3ec\ud2b8 \uc804\uc1a1"
      }
    },
    {
      "id": "sticky-filter",
      "name": "\ud544\ud130\ub9c1 \ubc0f \uc694\uc57d \uc601\uc5ed",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        960,
        60
      ],
      "parameters": {
        "width": 400,
        "height": 120,
        "color": 3,
        "content": "### \ud544\ud130\ub9c1 \ubc0f \uc694\uc57d\n\n\ud0a4\uc6cc\ub4dc \ub9e4\uce6d\uc73c\ub85c \uad00\ub828 \uae30\uc0ac \uc120\ubcc4 \ud6c4, \uac01 \uae30\uc0ac\ub97c \uac1c\ubcc4\uc801\uc73c\ub85c OpenAI\uc5d0 \uc804\uc1a1\ud558\uc5ec \uc694\uc57d\ubb38 \uc0dd\uc131"
      }
    },
    {
      "id": "sticky-report",
      "name": "\ub9ac\ud3ec\ud2b8 \uc0dd\uc131 \uc601\uc5ed",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1680,
        60
      ],
      "parameters": {
        "width": 400,
        "height": 120,
        "color": 4,
        "content": "### \ub9ac\ud3ec\ud2b8 \uc0dd\uc131 \ubc0f \ubc1c\uc1a1\n\n\uc694\uc57d\ub41c \uae30\uc0ac\ub4e4\uc744 HTML \uc774\uba54\uc77c \ud15c\ud50c\ub9bf\uc5d0 \ub2f4\uc544 SMTP\ub85c \ubc1c\uc1a1. \uc218\uc2e0\uc790\ub294 \ud300 \uc804\uccb4 \uba54\uc77c\ub9c1 \ub9ac\uc2a4\ud2b8."
      }
    },
    {
      "id": "schedule-trigger",
      "name": "\ub9e4\uc77c \uc624\uc804 9\uc2dc \uc2e4\ud589",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1,
      "position": [
        240,
        300
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 9 * * 1-5"
            }
          ]
        }
      },
      "notes": "\uc6d4~\uae08 \uc624\uc804 9\uc2dc(Asia/Seoul)\uc5d0 \uc2e4\ud589. \uc8fc\ub9d0 \uc81c\uc678."
    },
    {
      "id": "rss-feed-1",
      "name": "RSS \ud53c\ub4dc 1 - IT \ub274\uc2a4",
      "type": "n8n-nodes-base.rssFeedRead",
      "typeVersion": 1,
      "position": [
        480,
        200
      ],
      "parameters": {
        "url": "https://news.example.com/rss/it"
      }
    },
    {
      "id": "rss-feed-2",
      "name": "RSS \ud53c\ub4dc 2 - \uacfc\ud559 \ub274\uc2a4",
      "type": "n8n-nodes-base.rssFeedRead",
      "typeVersion": 1,
      "position": [
        480,
        400
      ],
      "parameters": {
        "url": "https://news.example.com/rss/science"
      }
    },
    {
      "id": "merge-feeds",
      "name": "\ud53c\ub4dc \ubcd1\ud569",
      "type": "n8n-nodes-base.merge",
      "typeVersion": 2,
      "position": [
        720,
        300
      ],
      "parameters": {
        "mode": "combine",
        "combinationMode": "combineByPosition"
      },
      "notes": "\ub450 RSS \ud53c\ub4dc\uc758 \ud56d\ubaa9\uc744 \uc21c\uc11c\ub300\ub85c \ubcd1\ud569"
    },
    {
      "id": "keyword-filter",
      "name": "\uad00\uc2ec \ud0a4\uc6cc\ub4dc \ud544\ud130\ub9c1",
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "position": [
        960,
        300
      ],
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": false
          },
          "conditions": [
            {
              "id": "cond-title-ai",
              "leftValue": "={{ $json.title }}",
              "compareOperation": "contains",
              "rightValue": "AI"
            },
            {
              "id": "cond-title-ml",
              "leftValue": "={{ $json.title }}",
              "compareOperation": "contains",
              "rightValue": "\uba38\uc2e0\ub7ec\ub2dd"
            },
            {
              "id": "cond-content-ai",
              "leftValue": "={{ $json.content }}",
              "compareOperation": "contains",
              "rightValue": "\uc778\uacf5\uc9c0\ub2a5"
            },
            {
              "id": "cond-title-deep",
              "leftValue": "={{ $json.title }}",
              "compareOperation": "contains",
              "rightValue": "\ub525\ub7ec\ub2dd"
            },
            {
              "id": "cond-title-llm",
              "leftValue": "={{ $json.title }}",
              "compareOperation": "contains",
              "rightValue": "LLM"
            },
            {
              "id": "cond-content-data",
              "leftValue": "={{ $json.content }}",
              "compareOperation": "contains",
              "rightValue": "\ub370\uc774\ud130"
            }
          ],
          "combinator": "or"
        }
      },
      "notes": "\uc81c\ubaa9 \ub610\ub294 \ubcf8\ubb38\uc5d0 \uad00\uc2ec \ud0a4\uc6cc\ub4dc\uac00 \ud3ec\ud568\ub41c \uae30\uc0ac\ub9cc \uc120\ubcc4"
    },
    {
      "id": "loop-over-items",
      "name": "\uae30\uc0ac\ubcc4 \ucc98\ub9ac \ub8e8\ud504",
      "type": "n8n-nodes-base.splitInBatches",
      "typeVersion": 1,
      "position": [
        1200,
        300
      ],
      "parameters": {
        "batchSize": 1,
        "options": {}
      },
      "notes": "\ud544\ud130\ub9c1\ub41c \uac01 \uae30\uc0ac\ub97c \uac1c\ubcc4\uc801\uc73c\ub85c \ucc98\ub9ac (batch=1)"
    },
    {
      "id": "http-openai",
      "name": "OpenAI \uc694\uc57d",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        1440,
        300
      ],
      "parameters": {
        "method": "POST",
        "url": "https://api.openai.com/v1/chat/completions",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "openAiApi",
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "model",
              "value": "gpt-4o-mini"
            },
            {
              "name": "messages",
              "value": "=[\n  {\n    \"role\": \"system\",\n    \"content\": \"\ub2e4\uc74c \ub274\uc2a4 \uae30\uc0ac\ub97c 2~3\ubb38\uc7a5\uc73c\ub85c \uc694\uc57d\ud574\uc918. \ud55c\uad6d\uc5b4\ub85c \ub2f5\ubcc0\ud558\uace0, \ud575\uc2ec \ub0b4\uc6a9\uc744 \uac04\uacb0\ud558\uac8c \uc804\ub2ec\ud574.\"\n  },\n  {\n    \"role\": \"user\",\n    \"content\": \"\uc81c\ubaa9: {{ $json.title }}\\n\ub9c1\ud06c: {{ $json.link }}\\n\ubcf8\ubb38: {{ $json.content }}\"\n  }\n]"
            },
            {
              "name": "temperature",
              "value": 0.3
            },
            {
              "name": "max_tokens",
              "value": 300
            }
          ]
        },
        "options": {
          "timeout": 30000
        }
      },
      "notes": "\uac01 \uae30\uc0ac\ub97c OpenAI gpt-4o-mini\ub85c \uc694\uc57d. OpenAI API Credential \ud544\uc694."
    },
    {
      "id": "parse-summary",
      "name": "\uc694\uc57d \uacb0\uacfc \ud30c\uc2f1",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1680,
        300
      ],
      "parameters": {
        "language": "javaScript",
        "jsCode": "// OpenAI \uc751\ub2f5\uc5d0\uc11c summary \ucd94\ucd9c\nconst response = $input.first().json;\n\nlet summary = '';\ntry {\n  const content = response.choices[0].message.content;\n  summary = content.trim();\n} catch (e) {\n  summary = '\uc694\uc57d \uc2e4\ud328';\n}\n\n// \uc6d0\ubcf8 \ub370\uc774\ud130\uc5d0 summary \ud544\ub4dc \ucd94\uac00\nconst item = $input.first().json;\nreturn [\n  {\n    json: {\n      title: item.title,\n      link: item.link,\n      content: item.content,\n      summary: summary,\n      pubDate: item.pubDate\n    }\n  }\n];\n"
      },
      "notes": "OpenAI \uc751\ub2f5\uc5d0\uc11c \uc694\uc57d \ud14d\uc2a4\ud2b8 \ucd94\ucd9c. \uc2e4\ud328 \uc2dc '\uc694\uc57d \uc2e4\ud328' \ud45c\uc2dc."
    },
    {
      "id": "html-report",
      "name": "HTML \ub9ac\ud3ec\ud2b8 \uc0dd\uc131",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1920,
        300
      ],
      "parameters": {
        "language": "javaScript",
        "jsCode": "const items = $input.all();\nconst today = new Date().toISOString().split('T')[0];\n\nlet articlesHtml = '';\nfor (const item of items) {\n  const d = item.json;\n  articlesHtml += `\n    <div style=\"margin-bottom: 24px; padding: 16px; background: #f8f9fa; border-radius: 8px;\">\n      <h3 style=\"margin: 0 0 8px 0;\">\n        <a href=\"${d.link}\" style=\"color: #1a73e8; text-decoration: none;\">${d.title}</a>\n      </h3>\n      <p style=\"margin: 8px 0 0 0; color: #333; line-height: 1.6;\">\n        <strong>\uc694\uc57d:</strong> ${d.summary}\n      </p>\n      <small style=\"color: #666;\">${d.pubDate || ''}</small>\n    </div>\n  `;\n}\n\nconst html = `\n<!DOCTYPE html>\n<html>\n<head>\n  <meta charset=\"utf-8\">\n  <style>\n    body { font-family: -apple-system, 'Noto Sans KR', sans-serif; padding: 24px; max-width: 700px; margin: 0 auto; }\n    h1 { color: #333; border-bottom: 2px solid #1a73e8; padding-bottom: 12px; }\n  </style>\n</head>\n<body>\n  <h1>\ub274\uc2a4 \uc694\uc57d \ub9ac\ud3ec\ud2b8 - ${today}</h1>\n  <p style=\"color: #666;\">\ucd1d ${items.length}\uac74\uc758 \uae30\uc0ac\uac00 \uc120\ubcc4\ub418\uc5c8\uc2b5\ub2c8\ub2e4.</p>\n  ${articlesHtml}\n  <hr style=\"margin-top: 32px; border: none; border-top: 1px solid #ddd;\">\n  <p style=\"color: #999; font-size: 12px;\">\uc774 \uba54\uc77c\uc740 \uc790\ub3d9\uc73c\ub85c \ubc1c\uc1a1\ub418\uc5c8\uc2b5\ub2c8\ub2e4.</p>\n</body>\n</html>\n`;\n\nreturn [{ json: { html, articleCount: items.length } }];\n"
      },
      "notes": "\uc694\uc57d\ub41c \uae30\uc0ac \ubaa9\ub85d\uc744 HTML \uc774\uba54\uc77c \ud615\uc2dd\uc73c\ub85c \ubcc0\ud658"
    },
    {
      "id": "send-email",
      "name": "\uc774\uba54\uc77c \ubc1c\uc1a1",
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 1,
      "position": [
        2160,
        300
      ],
      "parameters": {
        "fromEmail": "newsletter@example.com",
        "toEmail": "team@example.com",
        "subject": "={{ '[\ub274\uc2a4 \uc694\uc57d \ub9ac\ud3ec\ud2b8] ' + $now.format('yyyy-MM-dd') }}",
        "emailType": "html",
        "message": "={{ $json.html }}",
        "options": {}
      },
      "credentials": {
        "smtp": {
          "name": "<your credential>"
        }
      },
      "notes": "SMTP Credential \uc124\uc815 \ud544\uc694. Gmail, Outlook \ub610\ub294 \uc0ac\ub0b4 SMTP \uc11c\ubc84 \uc0ac\uc6a9 \uac00\ub2a5."
    }
  ],
  "connections": {
    "\ub9e4\uc77c \uc624\uc804 9\uc2dc \uc2e4\ud589": {
      "main": [
        [
          {
            "node": "RSS \ud53c\ub4dc 1 - IT \ub274\uc2a4",
            "type": "main",
            "index": 0
          },
          {
            "node": "RSS \ud53c\ub4dc 2 - \uacfc\ud559 \ub274\uc2a4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RSS \ud53c\ub4dc 1 - IT \ub274\uc2a4": {
      "main": [
        [
          {
            "node": "\ud53c\ub4dc \ubcd1\ud569",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RSS \ud53c\ub4dc 2 - \uacfc\ud559 \ub274\uc2a4": {
      "main": [
        [
          {
            "node": "\ud53c\ub4dc \ubcd1\ud569",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "\ud53c\ub4dc \ubcd1\ud569": {
      "main": [
        [
          {
            "node": "\uad00\uc2ec \ud0a4\uc6cc\ub4dc \ud544\ud130\ub9c1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\uad00\uc2ec \ud0a4\uc6cc\ub4dc \ud544\ud130\ub9c1": {
      "main": [
        [
          {
            "node": "\uae30\uc0ac\ubcc4 \ucc98\ub9ac \ub8e8\ud504",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\uae30\uc0ac\ubcc4 \ucc98\ub9ac \ub8e8\ud504": {
      "main": [
        [
          {
            "node": "OpenAI \uc694\uc57d",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "HTML \ub9ac\ud3ec\ud2b8 \uc0dd\uc131",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI \uc694\uc57d": {
      "main": [
        [
          {
            "node": "\uc694\uc57d \uacb0\uacfc \ud30c\uc2f1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\uc694\uc57d \uacb0\uacfc \ud30c\uc2f1": {
      "main": [
        [
          {
            "node": "\uae30\uc0ac\ubcc4 \ucc98\ub9ac \ub8e8\ud504",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTML \ub9ac\ud3ec\ud2b8 \uc0dd\uc131": {
      "main": [
        [
          {
            "node": "\uc774\uba54\uc77c \ubc1c\uc1a1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "timezone": "Asia/Seoul",
    "saveManualExecutions": true,
    "callerPolicy": "workflowsFromSameOwner"
  },
  "staticData": null,
  "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

뉴스 RSS 수집 및 요약 리포트 자동 발송. Uses rssFeedRead, httpRequest, emailSend. Scheduled trigger; 13 nodes.

Source: https://github.com/theplayer-project/ai_native_2601/blob/bf82f0bc3a10a84f4531078bb63bbc698394e7e5/facillitation/B1-3/project-2-workflow.json — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

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

Web Scraping

AI_News. Uses rssFeedRead, chainLlm, lmChatGroq, httpRequest. Scheduled trigger; 21 nodes.

RSS Feed Read, Chain Llm, Groq Chat +2
Web Scraping

Birthday Automation - Production (Fixed). Uses stopAndError, httpRequest, emailSend, bannerbear. Scheduled trigger; 86 nodes.

Stop And Error, HTTP Request, Email Send +1
Web Scraping

This workflow is an improvement of this workflow by Greg Brzezinka.

HTTP Request, Email Send, XML +1
Web Scraping

N8N-Self-Updater. Uses ssh, emailSend, httpRequest. Scheduled trigger; 27 nodes.

Ssh, Email Send, HTTP Request
Web Scraping

&gt; An automated n8n workflow originally built for DigitalOcean-based n8n deployments, but fully compatible with any VPS or cloud hosting (e.g., AWS, Google Cloud, Hetzner, Linode, etc.) where n8n ru

Ssh, Email Send, HTTP Request