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 →
{
"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.
smtp
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 →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
AI_News. Uses rssFeedRead, chainLlm, lmChatGroq, httpRequest. Scheduled trigger; 21 nodes.
Birthday Automation - Production (Fixed). Uses stopAndError, httpRequest, emailSend, bannerbear. Scheduled trigger; 86 nodes.
This workflow is an improvement of this workflow by Greg Brzezinka.
N8N-Self-Updater. Uses ssh, emailSend, httpRequest. Scheduled trigger; 27 nodes.
> 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