デイリーブリーフィング - タスクとイベント
上級
これは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テクノロジーを使用してアルパカで株式取引を自動化する
Set
Code
Gmail
+
Set
Code
Gmail
96 ノードPaul
仮想通貨取引
完全な B2B セールスフロー:Apollo リード生成、Mailgun 外信、および AI 返信管理
完全なB2Bセールスフロー:Apolloリード生成、Mailgunアウト Reach、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で表示 →
このワークフローを共有