OpenAI와 Gmail을 사용하는 매일 긍정적인 뉴스 요약
중급
이것은Personal Productivity, AI Summarization분야의자동화 워크플로우로, 9개의 노드를 포함합니다.주로 If, Cron, Gmail, OpenAi, RssFeed 등의 노드를 사용하며. OpenAI와 Gmail을 사용한 매일 긍정적인 뉴스 요약
사전 요구사항
- •Google 계정 및 Gmail API 인증 정보
- •OpenAI API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"nodes": [
{
"name": "매일 아침 트리거 (오전 7시)",
"type": "n8n-nodes-base.cron",
"notes": {
"text": "### 1. Daily Morning Trigger (7 AM)\n\nThis `Cron` node triggers the workflow automatically every **day at 7:00 AM** (based on your n8n server's local time zone).\n\n**To change the schedule:** Adjust the 'Hour' and 'Minute' fields to your preferred time for receiving the news digest.",
"position": "right"
},
"position": [
240,
300
],
"parameters": {
"mode": "everyDay",
"value": {
"hour": [
7
],
"minute": [
0
]
},
"options": {}
},
"typeVersion": 1,
"id": "-7--0"
},
{
"name": "긍정 뉴스 가져오기 (RSS)",
"type": "n8n-nodes-base.rssFeed",
"notes": {
"text": "### 2. Fetch Positive News (RSS)\n\nThis `RSS Feed` node fetches the latest articles from the Good News Network, a reliable source for positive stories.\n\n**Setup:**\n1. **URL:** Pre-filled with `https://www.goodnewsnetwork.org/feed/`.\n2. **To add more sources:** You can add more `RSS Feed` nodes in parallel and then use an `Item Lists` node set to 'Merge Items' to combine their outputs before the 'Prepare for AI' node.",
"position": "right"
},
"position": [
480,
300
],
"parameters": {
"url": "https://www.goodnewsnetwork.org/feed/",
"options": {}
},
"typeVersion": 1,
"id": "-RSS--1"
},
{
"name": "AI 처리 준비",
"type": "n8n-nodes-base.function",
"notes": {
"text": "### 3. Prepare for AI\n\nThis `Function` node formats the news articles' titles and descriptions into a single `articleText` field, which is easier for the AI to process.\n\nIt also preserves the original title, description, and link for the final summary.\n\n**No configuration needed**; it automatically processes the RSS feed items.",
"position": "right"
},
"position": [
720,
300
],
"parameters": {
"options": {},
"function": "const preparedItems = [];\n\nfor (const item of items) {\n const title = item.json.title || 'No Title';\n const description = item.json.contentSnippet || item.json.description || 'No Description';\n const link = item.json.link || '#';\n\n preparedItems.push({\n json: {\n originalTitle: title,\n originalDescription: description,\n originalLink: link,\n articleText: `Title: ${title}\\nDescription: ${description}`\n }\n });\n}\n\nreturn preparedItems;"
},
"typeVersion": 1,
"id": "AI--2"
},
{
"name": "AI: 긍정 뉴스 요약",
"type": "n8n-nodes-base.openAi",
"notes": {
"text": "### 4. AI: Summarize Positive News\n\nThis `OpenAI` node is the core of the 'positive news' filtering and summarization.\n\n**Setup:**\n1. **OpenAI Credential:** Click 'Credentials' and select 'New Credential'. Provide your OpenAI API Key (starts with `sk-`). Save it.\n2. **Model:** `gpt-3.5-turbo` is pre-selected. For higher quality summaries and better sentiment discernment, consider `gpt-4o` (may incur higher costs).\n3. **Prompts:** The 'System' prompt guides the AI to only summarize positive/neutral-to-positive articles and output 'SKIP' otherwise.\n\n**Output:** The AI's summary or the word 'SKIP'.",
"position": "right"
},
"position": [
960,
300
],
"parameters": {
"model": "gpt-3.5-turbo",
"options": {},
"messages": [
{
"role": "system",
"content": "You are a news summarizer focused only on positive and uplifting news. Read the provided article text. If it is clearly positive or neutral-to-positive, summarize its core message in 2-3 concise sentences, focusing on the positive aspects. If it is negative, neutral, or not news (e.g., ads), output the single word 'SKIP'."
},
{
"role": "user",
"content": "Article:\n{{ $json.articleText }}"
}
]
},
"credentials": {
"openAiApi": {
"id": "YOUR_OPENAI_CREDENTIAL_ID",
"resolve": false
}
},
"typeVersion": 1,
"id": "AI--3"
},
{
"name": "긍정 요약 필터링 및 준비",
"type": "n8n-nodes-base.function",
"notes": {
"text": "### 5. Filter & Prepare Positive Summaries\n\nThis `Function` node filters out any items where the AI responded with 'SKIP' (meaning the news was not positive enough).\n\nFor the remaining items, it prepares a clean object containing the original title, link, and the AI-generated positive summary.\n\n**No configuration needed**; it automatically processes the AI output.",
"position": "right"
},
"position": [
1200,
300
],
"parameters": {
"options": {},
"function": "const positiveSummaries = [];\n\nfor (const item of items) {\n const aiResponse = item.json.choices[0].message.content.trim();\n\n if (aiResponse.toUpperCase() !== 'SKIP') {\n positiveSummaries.push({\n json: {\n originalTitle: item.json.originalTitle,\n originalLink: item.json.originalLink,\n summary: aiResponse\n }\n });\n }\n}\n\nreturn positiveSummaries;"
},
"typeVersion": 1,
"id": "--4"
},
{
"name": "긍정 뉴스 발견 시",
"type": "n8n-nodes-base.if",
"notes": {
"text": "### 6. If Positive News Found\n\nThis `If` node checks if any positive news articles were actually found and summarized after filtering.\n\n* **'True' branch:** If positive news exists, the workflow proceeds to format and send the email.\n* **'False' branch:** If no positive news was found for the day, the workflow will still send an email, but with a message indicating no positive news was found (handled by the 'Format No Positive News Message' node).\n\n**No configuration needed**; it checks if the array of items is not empty.",
"position": "right"
},
"position": [
1440,
300
],
"parameters": {
"conditions": [
{
"value1": "={{ $json.length }}",
"value2": "0",
"operation": "notEqual"
}
]
},
"typeVersion": 1,
"id": "--5"
},
{
"name": "긍정 뉴스 이메일 형식화",
"type": "n8n-nodes-base.function",
"notes": {
"text": "### 7. Format Positive News Email\n\nThis `Function` node compiles all the positive news summaries into a single, formatted email body.\n\n**Customization:**\n* You can customize the greeting, closing, and the way each news item is presented.\n* The email body is formatted using Markdown for bolding and line breaks, which Gmail supports.\n\n**No configuration needed** if your previous node's output matches expectations.",
"position": "right"
},
"position": [
1680,
220
],
"parameters": {
"options": {},
"function": "let emailBody = \"\";\n\nemailBody += \"Good morning! Here's your daily dose of positive news:\\n\\n\";\n\nfor (const item of items) {\n emailBody += `**${item.json.originalTitle}**\\n` +\n `${item.json.summary}\\n` +\n `Read more: ${item.json.originalLink}\\n\\n---\\n\\n`;\n}\n\nemailBody += \"Have a wonderful day!\\n\\nThis digest was brought to you by n8n.\";\n\nreturn [{ json: { emailSubject: \"☀️ Your Daily Positive News Digest!\", emailBody: emailBody } }];"
},
"typeVersion": 1,
"id": "--6"
},
{
"name": "긍정 뉴스 없음 메시지 형식화",
"type": "n8n-nodes-base.function",
"notes": {
"text": "### 7. Format No Positive News Message\n\nThis `Function` node creates a fallback message for your email if the workflow doesn't find any positive news articles after filtering.\n\n**No configuration needed**; it provides a default message when there's no positive news.",
"position": "right"
},
"position": [
1680,
380
],
"parameters": {
"options": {},
"function": "return [{ json: { emailSubject: \"☁️ Daily Positive News Digest: No Positive News Today\", emailBody: \"Good morning!\\n\\nUnfortunately, I couldn't find any predominantly positive news articles for your digest today.\\n\\nStay positive, and check back tomorrow!\\n\\nThis digest was brought to you by n8n.\" } }];"
},
"typeVersion": 1,
"id": "--7"
},
{
"name": "일일 요약 이메일 발송",
"type": "n8n-nodes-base.gmail",
"notes": {
"text": "### 8. Send Daily Digest Email\n\nThis `Gmail` node sends the final email digest (either with positive news or the 'no news found' message) to your mailbox.\n\n**Setup:**\n1. **Gmail Credential:** Select your Gmail API credential.\n2. **From Email:** Enter your Gmail address (must match the authenticated account).\n3. **To Email:** **IMPORTANT: Change `YOUR_RECIPIENT_EMAIL@example.com` to your actual email address!**\n4. **Subject & Text:** These fields pull the formatted subject and body from the previous 'Format' nodes.\n\n**Test this node by running the workflow** to ensure you receive the email.",
"position": "right"
},
"position": [
1920,
300
],
"parameters": {
"text": "={{ $json.emailBody }}",
"options": {},
"subject": "={{ $json.emailSubject }}",
"toEmail": "YOUR_RECIPIENT_EMAIL@example.com",
"fromEmail": "YOUR_GMAIL_EMAIL@gmail.com"
},
"credentials": {
"gmailApi": {
"id": "YOUR_GMAIL_CREDENTIAL_ID",
"resolve": false
}
},
"typeVersion": 2,
"id": "--8"
}
],
"pinData": {},
"version": 1,
"connections": {
"AI--2": {
"main": [
[
{
"node": "AI--3",
"type": "main"
}
]
]
},
"--5": {
"main": [
[
{
"node": "--6",
"type": "main"
}
],
[
{
"node": "--7",
"type": "main"
}
]
]
},
"-RSS--1": {
"main": [
[
{
"node": "AI--2",
"type": "main"
}
]
]
},
"--6": {
"main": [
[
{
"node": "--8",
"type": "main"
}
]
]
},
"AI--3": {
"main": [
[
{
"node": "--4",
"type": "main"
}
]
]
},
"-7--0": {
"main": [
[
{
"node": "-RSS--1",
"type": "main"
}
]
]
},
"--7": {
"main": [
[
{
"node": "--8",
"type": "main"
}
]
]
},
"--4": {
"main": [
[
{
"node": "--5",
"type": "main"
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급 - 개인 생산성, AI 요약
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Gmail과 GPT 요약을 사용한 일일 이메일 요약 자동 발송
Gmail 및 GPT 요약을 사용한 일일 이메일 다이제스트 자동 전송, 매일 오후 발송
Cron
Gmail
Open Ai
+
Cron
Gmail
Open Ai
6 노드Piotr Sobolewski
개인 생산성
기업 온라인 이미지 모니터링기
AI 감정 분석 및 다중 플랫폼 추적을 사용한 일일 기업 온라인 이미지 모니터링
Set
Cron
Gmail
+
Set
Cron
Gmail
17 노드Piotr Sobolewski
시장 조사
자동화된 멀티플랫폼 게임 할인 추적
Deku Deals 및 Gmail 알림을 사용한 멀티 플랫폼 게임 할인 자동 추적
If
Cron
Gmail
+
If
Cron
Gmail
11 노드Piotr Sobolewski
개인 생산성
자동 웹 크롤러: 세분화된 구인/제품 모니터링 및 Telegram 알림
자동화网页爬虫:细分职位/제품모니터링与Telegram警报
If
Cron
Function
+
If
Cron
Function
6 노드Piotr Sobolewski
시장 조사
자동 재무 추적기: 영수증 동기화, 현금 흐름 예측 및 월간 리포트 수신
Gmail, Google 스프레드시트, GPT-4o 월간 보고서를 사용한 자동 재정 추적기
If
Set
Cron
+
If
Set
Cron
17 노드Shelly-Ann Davy
청구서 처리
작업일지 기록
AI 작업시간표 생성기 - Gmail, 캘린더, GitHub을 Google 스프레드시트에 통합
If
Set
Code
+
If
Set
Code
31 노드Luka Zivkovic
개인 생산성
워크플로우 정보
난이도
중급
노드 수9
카테고리2
노드 유형6
저자
Piotr Sobolewski
@piotrsobolewskiAI PhD with 7 years experience as a game dev CEO, currently teaching, helping others and building something new.
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유