デイリーブリーフィング - タスクとイベント

上級

これは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など)は別途料金が発生する場合があります。

ワークフロー情報
難易度
上級
ノード数18
カテゴリー2
ノードタイプ8
難易度説明

上級者向け、16ノード以上の複雑なワークフロー

作成者
AK Pasnoor

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で表示

このワークフローを共有

カテゴリー

カテゴリー: 34