일일 브리핑 - 작업 및 이벤트
고급
이것은Personal Productivity, Multimodal AI분야의자동화 워크플로우로, 18개의 노드를 포함합니다.주로 Code, Gmail, Merge, Todoist, GoogleCalendar 등의 노드를 사용하며. Gmail을 통해 Todoist, Google 캘린더 및 GPT-4o를 사용한 자동화된 일일 브리핑
사전 요구사항
- •Google 계정 및 Gmail API 인증 정보
- •OpenAI API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "oRUhVLfKvrxvUSky",
"meta": {
"instanceId": "dfeafc9dc27dee2289436a8382e76ed3cdd65cbd44e54ea55fd1393614bf0382",
"templateCredsSetupCompleted": true
},
"name": "Daily Briefing- Tasks & Events",
"tags": [],
"nodes": [
{
"id": "9f7abaa2-1d99-488d-a2f6-ce63af3dd509",
"name": "모델에 메시지 전송",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
400,
-20
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "chatgpt-4o-latest",
"cachedResultName": "CHATGPT-4O-LATEST"
},
"options": {},
"messages": {
"values": [
{
"content": "=Here's my plan for today:\n\n🗂️ **Tasks**\n{{ $json.formattedTasks }}\n\n📅 **Calendar**\n{{ $json.formattedEvents }}\n\n---\n\n✅ Structure the reply in this exact markdown format:\n\n**Daily Summary** \n[one-sentence summary of the day]\n\n\\n\\n\n\n🎯 **Top Priorities** \n1. ✅ [Task 1] – ⏰ [Time] \n2. ✅ [Task 2] – ⏰ [Time] \n...\n\n\\n\\n\n\n💡 **Focus Mantra** \n\"[motivational quote]\"\n\n\\n\\n\n\nAdd **line breaks** between each section and each task, so it's email-friendly and easy to scan.\nAvoid long paragraphs. Keep it clean and structured."
}
]
}
},
"credentials": {
"openAiApi": {
"id": "QpyyqFY2rAs6Umuv",
"name": "OpenAi account"
}
},
"typeVersion": 1.8
},
{
"id": "3bccfb3e-2e86-4c0b-8bce-891b6ad3b969",
"name": "메시지 보내기",
"type": "n8n-nodes-base.gmail",
"position": [
980,
-20
],
"webhookId": "af5f600b-c704-4a52-98a1-a3323a39048a",
"parameters": {
"sendTo": "emailPlaceholder",
"message": "={{ $json.htmlBody }}",
"options": {},
"subject": "Morning Briefings"
},
"credentials": {
"gmailOAuth2": {
"id": "d9YtSxVNiAg2C7FK",
"name": "Gmail account"
}
},
"typeVersion": 2.1
},
{
"id": "e21eed99-cc0b-4224-b7f0-e85f62dd6c78",
"name": "다중 작업 가져오기",
"type": "n8n-nodes-base.todoist",
"position": [
-320,
80
],
"parameters": {
"filters": {
"projectId": "2357038842"
},
"operation": "getAll",
"returnAll": true
},
"credentials": {
"todoistApi": {
"id": "bhVIRYwTcnPoVk7L",
"name": "Todoist account"
}
},
"typeVersion": 2.1
},
{
"id": "009b1143-306d-4bad-bea7-47df8771b499",
"name": "다중 이벤트 가져오기",
"type": "n8n-nodes-base.googleCalendar",
"position": [
-320,
-120
],
"parameters": {
"options": {},
"calendar": {
"__rl": true,
"mode": "list",
"value": "emailPlaceholder",
"cachedResultName": "emailPlaceholder"
},
"operation": "getAll"
},
"credentials": {
"googleCalendarOAuth2Api": {
"id": "bEUn0PilK7gDh4tG",
"name": "Google Calendar account"
}
},
"typeVersion": 1.3,
"alwaysOutputData": true
},
{
"id": "27d34f96-ca61-44bf-8989-bbca2bee0069",
"name": "코드",
"type": "n8n-nodes-base.code",
"position": [
200,
-20
],
"parameters": {
"jsCode": "const calendarEvents = [];\nconst todoistTasks = [];\n\nfor (const item of items) {\n if (item.json?.start?.dateTime) {\n calendarEvents.push(item.json);\n } else if (item.json?.content) {\n todoistTasks.push(item.json);\n }\n}\n\nconst formattedEvents = calendarEvents.map((event, i) => {\n const time = new Date(event.start.dateTime).toLocaleTimeString('en-IN', { hour: '2-digit', minute: '2-digit' });\n return `${i + 1}. ${event.summary} at ${time}`;\n}).join('\\n');\n\nconst formattedTasks = todoistTasks.map((task, i) => {\n const time = task.due?.datetime\n ? new Date(task.due.datetime).toLocaleTimeString('en-IN', { hour: '2-digit', minute: '2-digit' })\n : 'No time set';\n return `${i + 1}. ${task.content} (Due at ${time})`;\n}).join('\\n');\n\nreturn [\n {\n json: {\n formattedEvents: formattedEvents || 'No calendar events today.',\n formattedTasks: formattedTasks || 'No tasks today.'\n }\n }\n];"
},
"typeVersion": 2
},
{
"id": "987c7654-7edc-4aea-b2be-f0ce846cf6fd",
"name": "병합",
"type": "n8n-nodes-base.merge",
"position": [
-20,
-20
],
"parameters": {},
"typeVersion": 3.2
},
{
"id": "2b69ae00-18c0-4778-9702-23a18e300573",
"name": "OpenAI 텍스트를 HTML로 변환",
"type": "n8n-nodes-base.code",
"position": [
760,
-20
],
"parameters": {
"jsCode": "const raw = $json.message?.content || 'No message';\n\n// Convert markdown-style bold to <strong>\nlet html = raw\n .replace(/\\*\\*(.*?)\\*\\*/g, '<strong>$1</strong>')\n\n// Convert newlines and spacing\n .replace(/\\n{2,}/g, '<br><br>') // double newlines → double <br>\n .replace(/\\n/g, '<br>') // single newline fallback\n\n// Optional: emoji replacement (can leave as-is if you like)\n .replace(/✅/g, '✅')\n .replace(/🎯/g, '🎯')\n .replace(/💡/g, '💡')\n .replace(/📅/g, '📅')\n .replace(/🗂️/g, '🗂️');\n\nreturn [\n {\n json: {\n htmlBody: `<div style=\"font-family: Arial, sans-serif; font-size: 14px; line-height: 1.6;\">${html}</div>`\n }\n }\n];"
},
"typeVersion": 2
},
{
"id": "2651477d-bad3-4fc7-9666-4a11a87bc4f8",
"name": "일정 트리거",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-640,
-20
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 6
}
]
}
},
"typeVersion": 1.2
},
{
"id": "d032cb5e-11bb-445c-ab31-b357ba8c3044",
"name": "스티키 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1100,
-180
],
"parameters": {
"color": 5,
"width": 380,
"height": 440,
"content": "## 📌 **Daily Briefing Automation**\n\nThis workflow fetches today's calendar events and tasks from Google Calendar and Todoist, formats them using GPT-4o, converts the summary to HTML, and emails it automatically at 6:00 AM daily.\n\nUse this to start your day focused and aligned with your top priorities.\n\n**Highlights:**\n- Auto-scheduled morning brief\n- Task & calendar merging\n- Natural language summary by GPT\n- HTML email output (readable & styled)\n"
},
"typeVersion": 1
},
{
"id": "20aa46f5-e9e9-4259-8658-a369938e7d04",
"name": "스티키 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-680,
-180
],
"parameters": {
"color": 2,
"width": 180,
"height": 440,
"content": "⏰ Triggers the workflow at 6:00 AM daily.\nUse this to automate your morning routine prep.\n"
},
"typeVersion": 1
},
{
"id": "00f26917-3006-40a8-b798-63d4d741f360",
"name": "스티키 노트2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-360,
-260
],
"parameters": {
"color": 6,
"width": 180,
"height": 180,
"content": "📅 Fetches all Google Calendar events for the day.\nFilters are configured using your linked Gmail calendar.\n"
},
"typeVersion": 1
},
{
"id": "f1b0537b-06f8-4840-9a18-b748da7d2076",
"name": "스티키 노트3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-360,
160
],
"parameters": {
"color": 6,
"width": 180,
"height": 220,
"content": "\n\n\n\n\n\n\n📝 Fetches all Todoist tasks under a specified project.\nMake sure `projectId` is up-to-date.\n"
},
"typeVersion": 1
},
{
"id": "5e0e9272-1834-4108-ad04-be81be4d32c6",
"name": "스티키 노트4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-60,
200
],
"parameters": {
"color": 7,
"width": 180,
"height": 140,
"content": "🔀 Merges calendar events and tasks.\nRequired to feed both datasets into a single Code node.\n"
},
"typeVersion": 1
},
{
"id": "e6c7821c-1c24-4dc3-aef9-387efc2f9ec5",
"name": "스티키 노트5",
"type": "n8n-nodes-base.stickyNote",
"position": [
160,
200
],
"parameters": {
"color": 7,
"width": 180,
"height": 140,
"content": "🧠 Separates & formats calendar events and tasks.\nReturns structured strings for GPT to summarize.\n"
},
"typeVersion": 1
},
{
"id": "c2de93aa-9e1c-4dd4-984f-72de1f4323bd",
"name": "스티키 노트6",
"type": "n8n-nodes-base.stickyNote",
"position": [
420,
200
],
"parameters": {
"color": 7,
"width": 180,
"height": 140,
"content": "🤖 Sends task and calendar summary to GPT-4o.\nPrompt includes layout guidance and markdown formatting.\n"
},
"typeVersion": 1
},
{
"id": "e0b8b41b-75bd-4455-b94e-919fb3be5d9a",
"name": "스티키 노트7",
"type": "n8n-nodes-base.stickyNote",
"position": [
720,
200
],
"parameters": {
"color": 7,
"width": 180,
"height": 140,
"content": "🧱 Converts markdown-style GPT output into clean HTML.\nEnsures line breaks, bold headings, and emojis are email-friendly.\n"
},
"typeVersion": 1
},
{
"id": "4b6ae3f4-8490-4097-87d7-5b1bfbcf90ad",
"name": "스티키 노트8",
"type": "n8n-nodes-base.stickyNote",
"position": [
960,
200
],
"parameters": {
"color": 7,
"width": 180,
"height": 140,
"content": "📧 Sends the final HTML email to your inbox.\nEmail subject: “Morning Briefings”\n"
},
"typeVersion": 1
},
{
"id": "8eb46a16-e528-488e-be02-fdd00d1220c0",
"name": "스티키 노트9",
"type": "n8n-nodes-base.stickyNote",
"position": [
-80,
-80
],
"parameters": {
"color": 7,
"width": 1280,
"height": 440,
"content": ""
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "8eb56c93-5df7-4748-b658-c69a8ba1123e",
"connections": {
"27d34f96-ca61-44bf-8989-bbca2bee0069": {
"main": [
[
{
"node": "9f7abaa2-1d99-488d-a2f6-ce63af3dd509",
"type": "main",
"index": 0
}
]
]
},
"987c7654-7edc-4aea-b2be-f0ce846cf6fd": {
"main": [
[
{
"node": "27d34f96-ca61-44bf-8989-bbca2bee0069",
"type": "main",
"index": 0
}
]
]
},
"e21eed99-cc0b-4224-b7f0-e85f62dd6c78": {
"main": [
[
{
"node": "987c7654-7edc-4aea-b2be-f0ce846cf6fd",
"type": "main",
"index": 1
}
]
]
},
"009b1143-306d-4bad-bea7-47df8771b499": {
"main": [
[
{
"node": "987c7654-7edc-4aea-b2be-f0ce846cf6fd",
"type": "main",
"index": 0
}
]
]
},
"9f7abaa2-1d99-488d-a2f6-ce63af3dd509": {
"main": [
[
{
"node": "2b69ae00-18c0-4778-9702-23a18e300573",
"type": "main",
"index": 0
}
]
]
},
"2651477d-bad3-4fc7-9666-4a11a87bc4f8": {
"main": [
[
{
"node": "009b1143-306d-4bad-bea7-47df8771b499",
"type": "main",
"index": 0
},
{
"node": "e21eed99-cc0b-4224-b7f0-e85f62dd6c78",
"type": "main",
"index": 0
}
]
]
},
"2b69ae00-18c0-4778-9702-23a18e300573": {
"main": [
[
{
"node": "3bccfb3e-2e86-4c0b-8bce-891b6ad3b969",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 개인 생산성, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
매일 보안 뉴스
매일 기술 및 네트워크 보안 요약: RSS, OpenAI GPT-4o, Gmail
If
Code
Gmail
+
If
Code
Gmail
19 노드Calistus Christian
개인 생산성
이메일→공개 이메일
GPT-4.1-mini를 사용하여 Gmail에서 매일 뉴스 요약을 생성하세요
Code
Gmail
Split In Batches
+
Code
Gmail
Split In Batches
13 노드Vlad Arbatov
개인 생산성
작업일지 기록
AI 작업시간표 생성기 - Gmail, 캘린더, GitHub을 Google 스프레드시트에 통합
If
Set
Code
+
If
Set
Code
31 노드Luka Zivkovic
개인 생산성
AI 기반 주식 트레이딩 자동화
AI 기술 분석 및 Alpaca 트레이딩을 사용한 주식 트레이딩 자동화
Set
Code
Gmail
+
Set
Code
Gmail
96 노드Paul
암호화폐 거래
완전한 B2B 판매 프로세스: Apollo 잠재 고객 생성, Mailgun 프로모션 및 AI 응답 관리
완전한 B2B 판매 프로세스: Apollo 잠재 고객 생성, Mailgun 확장 및 AI 응답 관리
If
Set
Code
+
If
Set
Code
116 노드Paul
콘텐츠 제작
Perplexity와 OpenAI를 사용하여 소셜 미디어에 AI 뉴스 비디오 콘텐츠 아이디어를 생성
Perplexity와 OpenAI를 사용하여 소셜 미디어에 AI 뉴스 비디오 내용을 창의적으로 생성
Set
Code
Gmail
+
Set
Code
Gmail
18 노드Gain FLow AI
콘텐츠 제작
워크플로우 정보
난이도
고급
노드 수18
카테고리2
노드 유형8
저자
AK Pasnoor
@ak-pasnoor🚀 Automate. Scale. Win. Are you still manually following up with leads or relying on staff to answer every call? I help agencies and business owners deploy AI voice agents and chatbots that book appointments 24/7, qualify leads instantly, and eliminate 90% of repetitive tasks—without writing a single line of code.
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유