MadKudu MCP를 통해 AI를 사용하여 외부 Google Calendar 회의 준비
중급
이것은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": "Get many events",
"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": "Split Calendar Events",
"type": "n8n-nodes-base.splitOut",
"position": [
592,
0
],
"parameters": {
"include": "allOtherFields",
"options": {},
"fieldToSplitOut": "id"
},
"typeVersion": 1
},
{
"id": "68a13464-f449-4ca3-a2ff-05efbe3ed7fa",
"name": "Keep meetings with external attendees",
"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 에이전트 - Research Attendees",
"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": "Send summary as event",
"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 Model",
"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": "AI Agent - Research Attendees",
"type": "ai_tool",
"index": 0
}
]
]
},
"30ccf0f2-b22e-42fb-8170-6b7781149070": {
"ai_languageModel": [
[
{
"node": "AI Agent - Research Attendees",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"2e638051-76b6-4a00-9f73-e149f6f7f1c6": {
"main": [
[
{
"node": "ba2a5f9a-ab8b-49bd-9a4c-63a7369a9aee",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"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
}
]
]
},
"AI Agent - Research Attendees": {
"main": [
[
{
"node": "82cd9069-f074-4fdd-99a1-d34f5d756376",
"type": "main",
"index": 0
}
]
]
},
"68a13464-f449-4ca3-a2ff-05efbe3ed7fa": {
"main": [
[
{
"node": "AI Agent - Research Attendees",
"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
고객관계관리