MadKudu MCP を使用して外部 Google Calendar セッションを AI で準備
中級
これはCRM, AI Summarization分野の自動化ワークフローで、13個のノードを含みます。主にFilter, SplitOut, GoogleCalendar, Agent, ScheduleTriggerなどのノードを使用。 GPT-4 と MadKudu MCP を使って Google Calendar に AI 会議レポートを生成する
前提条件
- •OpenAI API Key
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"id": "Wlqg5aeZgBFNfQRm",
"meta": {
"instanceId": "f6f8c184929a9f843505f5273ebb41a7a951a35345a1095a4acc1d4034a73fa3",
"templateCredsSetupCompleted": true
},
"name": "Prepare external Google Calendar meetings with AI using MadKudu MCP",
"tags": [],
"nodes": [
{
"id": "7c6a9973-5f65-4023-b883-aa248e72cb9b",
"name": "スケジュールトリガー",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
192,
0
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "2e638051-76b6-4a00-9f73-e149f6f7f1c6",
"name": "複数イベント取得",
"type": "n8n-nodes-base.googleCalendar",
"position": [
384,
0
],
"parameters": {
"options": {},
"timeMax": "={{ $now.plus({ hour: 1 }) }}",
"calendar": {
"__rl": true,
"mode": "list",
"value": "margo.rey@madkudu.com",
"cachedResultName": "margo.rey@madkudu.com"
},
"operation": "getAll"
},
"credentials": {
"googleCalendarOAuth2Api": {
"id": "uDpevl5X3MHVJwzD",
"name": "Google Calendar account"
}
},
"typeVersion": 1.3
},
{
"id": "ba2a5f9a-ab8b-49bd-9a4c-63a7369a9aee",
"name": "カレンダーイベント分割",
"type": "n8n-nodes-base.splitOut",
"position": [
592,
0
],
"parameters": {
"include": "allOtherFields",
"options": {},
"fieldToSplitOut": "id"
},
"typeVersion": 1
},
{
"id": "68a13464-f449-4ca3-a2ff-05efbe3ed7fa",
"name": "外部参加者がいる会議を抽出",
"type": "n8n-nodes-base.filter",
"position": [
1040,
0
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "9fb0a08e-18b1-4eab-bc5b-3e63100b2b5a",
"operator": {
"type": "array",
"operation": "lengthGt",
"rightType": "number"
},
"leftValue": "={{ $('Split Calendar Events').item.json.attendees }}",
"rightValue": 1
},
{
"id": "eb7379a1-b7d0-45dc-be04-d9ae54426317",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.attendees.some(a => !a.email.includes('@'+$vars.my_company_domain)) }}",
"rightValue": "true"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "13b751bb-3854-4df4-8405-dad3d14da24e",
"name": "AIエージェント - 参加者調査",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1376,
0
],
"parameters": {
"text": "=# Context\nYou are an executive assistant. You are tasked with helping me prepare for an upcoming meeting.\n\n# Instructions\nPlease research these attendees: \n {{ JSON.stringify($json.attendees.filter(a => !a.email.includes('@'+$vars.my_company_domain)).map(a => a.email)) }} \nand their associated company using the following research tools:\n\n- `madkudu-value-prop`\n- `madkudu-account-details`\n- `madkudu-account-activities`\n- `madkudu-account-brief-instruction`\n- `madkudu-account-top-persons`\n- `madkudu-person-details`\n- `madkudu-person-activities`\n\nAlso use, if relevant, the context about the meeting:\n\n– **meeting title:**\n{{ $json.summary }}\n\n– **meeting description:**\n{{ $json.description }}\n\n# Format\nAlways format the output in plain text with the following sections:\n\n## TL;DR\nThis section should help me understand how to approach the meeting. \nKeep it high level, 2–3 sentences max.\n\n## Person Summary\nShare relevant information about the attendees (excluding madkudu.com, personal emails).\n\n## Account Summary\n### Overall Account Engagement including top persons\nThis section should highlight relevant people based on their engagement so Francis can name drop them. \nFlag power users, growing usage, and any relevant trend.\n\n## Account Brief\nThis section should help me grasp the overall context of the account and frame the conversation accordingly. \nShare the full account brief.\n",
"options": {},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.1
},
{
"id": "82cd9069-f074-4fdd-99a1-d34f5d756376",
"name": "要約をイベントとして送信",
"type": "n8n-nodes-base.googleCalendar",
"position": [
1904,
0
],
"parameters": {
"end": "={{ $('Keep meetings with external attendees').item.json.end.dateTime }}",
"start": "={{ $('Keep meetings with external attendees').item.json.start.dateTime }}",
"calendar": {
"__rl": true,
"mode": "list",
"value": "margo.rey@madkudu.com",
"cachedResultName": "margo.rey@madkudu.com"
},
"additionalFields": {
"summary": "=Prep meeting {{ $('Keep meetings with external attendees').item.json.summary }}",
"description": "={{ $json.output }}"
}
},
"credentials": {
"googleCalendarOAuth2Api": {
"id": "uDpevl5X3MHVJwzD",
"name": "Google Calendar account"
}
},
"typeVersion": 1.3
},
{
"id": "4d71746d-4f0e-4b34-813d-94b30c8cce8c",
"name": "MadKudu MCP",
"type": "@n8n/n8n-nodes-langchain.mcpClientTool",
"position": [
1536,
224
],
"parameters": {
"sseEndpoint": "=https://mcp.madkudu.com/{{$vars.madkudu_api_key}}/sse\n"
},
"typeVersion": 1
},
{
"id": "30ccf0f2-b22e-42fb-8170-6b7781149070",
"name": "OpenAIモデル",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1376,
224
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "gmWcRtweC5afMtgW",
"name": "n8n free OpenAI API credits"
}
},
"typeVersion": 1.2
},
{
"id": "dbbfbf49-0783-4d0a-8015-a5a43d5c94f5",
"name": "付箋",
"type": "n8n-nodes-base.stickyNote",
"position": [
-304,
-208
],
"parameters": {
"width": 416,
"height": 672,
"content": "# Try it Out!\n\nThis workflow builds a **Meeting Prep AI Assistant**.\nIt sends a meeting invite at the same time as your scheduled meeting — including a summary of the external attendees and their companies in the event description.\n\nThis helps you show up prepared without manually researching attendees beforehand.\n\n## 💡 **How It Works**\n1. Checks for meetings every hour\nLooks ahead one hour for upcoming meetings in your calendar.\n\n2. Keeps only meetings with external attendees\nFilters out internal-only meetings based on your company domain (e.g. acme.com).\n\n3. Researches the attendees and companies\nUses MadKudu MCP, OpenAI, and other tools to gather info about attendees, past engagement, and company context.\n\n4. Adds the summary to your calendar\nA duplicate event is created at the same time, with the meeting brief in the description — visible to you only.\n\nNeed help?\nJoin the Discord or ask in the Forum.\n\nHappy Hacking!"
},
"typeVersion": 1
},
{
"id": "31e1c1e5-7ecc-4a6a-8cba-42fb73e59532",
"name": "付箋2",
"type": "n8n-nodes-base.stickyNote",
"position": [
768,
-192
],
"parameters": {
"color": 7,
"width": 544,
"height": 352,
"content": "### 2. Keep External Meetings only\nSet your company email domain first (e.g. acme.com) as a [Variable](https://docs.n8n.io/code/variables/#create-variables) my_company_domain.\nIt is used to identify who are internal attendees vs external attendees. \n\nThe filter node keeps only meetings where there is at least 1 external attendees, aka 1 email with a domain different than your company domain. \nThis ensures you only receive meeting briefs for external-facing meetings"
},
"typeVersion": 1
},
{
"id": "da6d92ff-4acd-4835-9e85-5c58c1efee11",
"name": "付箋3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1360,
-192
],
"parameters": {
"color": 7,
"width": 416,
"height": 352,
"content": "### 3. Research Attendees and Generate Summary\nEnrich attendee & company data using MadKudu and summarize with AI.\n\n"
},
"typeVersion": 1
},
{
"id": "b4e8cfc3-8ca0-459d-b819-6deeabfa90b1",
"name": "付箋4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1824,
-192
],
"parameters": {
"color": 7,
"width": 416,
"height": 352,
"content": "### 4. Send Meeting invitation with summary\nCreate a private calendar event with the AI-generated brief.\n\n\n"
},
"typeVersion": 1
},
{
"id": "4ff628a1-3eea-40c7-9c2b-1681c8c28e02",
"name": "付箋1",
"type": "n8n-nodes-base.stickyNote",
"position": [
144,
-192
],
"parameters": {
"color": 7,
"width": 592,
"height": 352,
"content": "### 1. Check for new meetings every hour\nThe Scheduler is configured for every hour. \nIt will check in your Google Calendar for meetings in the next hour. Feel free to update the frequency if you have new meetings less frequently. \nThe Split allows preparing the events separately\n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "4ac0ba48-715e-476e-836b-6800f0d2e777",
"connections": {
"4d71746d-4f0e-4b34-813d-94b30c8cce8c": {
"ai_tool": [
[
{
"node": "13b751bb-3854-4df4-8405-dad3d14da24e",
"type": "ai_tool",
"index": 0
}
]
]
},
"30ccf0f2-b22e-42fb-8170-6b7781149070": {
"ai_languageModel": [
[
{
"node": "13b751bb-3854-4df4-8405-dad3d14da24e",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"2e638051-76b6-4a00-9f73-e149f6f7f1c6": {
"main": [
[
{
"node": "ba2a5f9a-ab8b-49bd-9a4c-63a7369a9aee",
"type": "main",
"index": 0
}
]
]
},
"7c6a9973-5f65-4023-b883-aa248e72cb9b": {
"main": [
[
{
"node": "2e638051-76b6-4a00-9f73-e149f6f7f1c6",
"type": "main",
"index": 0
}
]
]
},
"ba2a5f9a-ab8b-49bd-9a4c-63a7369a9aee": {
"main": [
[
{
"node": "68a13464-f449-4ca3-a2ff-05efbe3ed7fa",
"type": "main",
"index": 0
}
]
]
},
"13b751bb-3854-4df4-8405-dad3d14da24e": {
"main": [
[
{
"node": "82cd9069-f074-4fdd-99a1-d34f5d756376",
"type": "main",
"index": 0
}
]
]
},
"68a13464-f449-4ca3-a2ff-05efbe3ed7fa": {
"main": [
[
{
"node": "13b751bb-3854-4df4-8405-dad3d14da24e",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
中級 - 顧客管理, AI要約
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
MadKudu顧客ブリーフを生成しOutreachへ送信
MadKudu、OpenAI、Salesforceを活用したAI生成顧客ブリーフをOutreach用に作成
Salesforce
Http Request
Manual Trigger
+
Salesforce
Http Request
Manual Trigger
16 ノードMargo Rey
顧客管理
n8nノードの探索(可視化リファレンスライブラリ内)
n8nノードを可視化リファレンスライブラリで探索
If
Ftp
Set
+
If
Ftp
Set
113 ノードI versus AI
その他
AIを活用した会議調査とデイリーアジェンダ(Googleカレンダー、Attio CRM、Slack)
AIを活用した会議調査とデイリーアジェンダ:Googleカレンダー、Attio CRM、Slackを使用
If
Set
Code
+
If
Set
Code
30 ノードHarry Siggins
AI要約
会議準備の自動化
GPT-5 と Gemini でカレンダーから Slack まで、Attio CRM を通じて自動のにミーティングを準備する
If
Set
Code
+
If
Set
Code
39 ノードHarry Siggins
AI要約
分析ゾーンごとのパフォーマンス
Bright Data MCP と GPT-4o を使用して営業エリアのパフォーマンスを分析する
Set
Code
Gmail
+
Set
Code
Gmail
17 ノードYaron Been
顧客管理
AIとGoogleカレンダーを使用して販売会議用のソーシャルメディアリポートを自動生成
GPT-4、LinkedInデータ、WhatsAppによる自動営業会議サマリー作成
Set
Html
Wait
+
Set
Html
Wait
19 ノードOneclick AI Squad
顧客管理