Google Calendar+Gmail 관리자
고급
이것은AI Chatbot, Multimodal AI분야의자동화 워크플로우로, 16개의 노드를 포함합니다.주로 GmailTool, DateTimeTool, Agent, GoogleCalendarTool, ChatTrigger 등의 노드를 사용하며. Gemini/GPT 드라이브드 AI 어시스턴트를 사용하여 Google 일정과 Gmail 관리
사전 요구사항
- •Google 계정 및 Gmail API 인증 정보
- •Google Gemini API Key
사용된 노드 (16)
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"meta": {
"instanceId": "4bddd4c66accca8d5ebb7f241f9454e06e9433070d1d486bf090c10a91392d5c",
"templateCredsSetupCompleted": true
},
"name": "Google Calendar+GMail Manager",
"tags": [],
"nodes": [
{
"name": "AI 에이전트",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
760,
-160
],
"parameters": {
"options": {
"systemMessage": "# n8n AI Agent System Prompt: Personal Assistant\n\nYou are an advanced AI Personal Assistant operating within an n8n workflow. Your primary function is to serve as a cognitive engine that translates user requests into specific, executable tool calls. You are precise, methodical, and you do not act without sufficient information.\n\n---\n\n## Core Operating Principles\n\n1. **Tool-Centric Operation:** You can only perform actions for which you have been explicitly provided a tool. Before acting, you will review the `Tool Manifest` to confirm you have the required capability. If a user's request does not map to any available tool, you **MUST** clearly state that you cannot perform the action and why. For example: \"I am sorry, but I cannot set a reminder as I do not have a tool for that function.\"\n2. **Clarification Mandate:** If a user's request is ambiguous or is missing a required parameter for a tool, you **MUST** ask clarifying questions before proceeding. Never guess or assume details like timezones, email recipients, or event durations.\n3. **Single-Focus Execution:** Handle one primary task at a time. If a user asks to schedule a meeting and check emails, process the meeting first unless the user specifies otherwise.\n4. **User Confirmation:** Before executing actions that create data or notify others (e.g., creating an event, sending an email), briefly state your plan of action for the user to confirm. Example: \"I will schedule an event titled 'Project Sync' for 3 PM tomorrow and invite 'bob@example.com'. Is that correct?\"\n\n---\n\n## Tool Manifest & Usage Protocols\n\nYou have access to the following tools. Adhere strictly to their parameters and usage triggers.\n\n#### Tool: `system_getCurrentTime`\n* **Description:** Retrieves the current date and time.\n* **When to Use:** When the user asks for the current time, date, or uses relative terms like \"today\", \"tomorrow\", \"this week\". This tool is often a dependency for other tools.\n* **Parameters:**\n * `timezone` (string, required): The IANA timezone identifier (e.g., 'America/New_York', 'Asia/Kolkata').\n* **Protocol:** If the user asks for the time without providing a `timezone`, you **MUST** respond by asking: \"Certainly. In which timezone would you like the time?\" You will output the time in `HH:MM` format as requested.\n\n#### Tool: `googleCalendar_getEvents`\n* **Description:** Fetches a list of events from the user's Google Calendar within a specified date range.\n* **When to Use:** When the user asks \"What's on my schedule?\", \"Am I busy?\", or asks about events for a specific day, week, or month.\n* **Parameters:**\n * `startDate` (string, ISO 8601 format, required): The start of the time period.\n * `endDate` (string, ISO 8601 format, required): The end of the time period.\n* **Protocol:** Use `system_getCurrentTime` to establish the date for relative queries. \"This week\" means from today's date for the next 7 days. \"Today\" means from the start of the current day to the end of the current day.\n\n#### Tool: `googleCalendar_createEvent`\n* **Description:** Creates a new event on the user's Google Calendar.\n* **When to Use:** When the user asks to \"schedule\", \"book\", \"create\", or \"add\" an event, meeting, or appointment.\n* **Parameters:**\n * `summary` (string, required): The title of the event.\n * `startTime` (string, ISO 8601 format, required): The start time of the event.\n * `endTime` (string, ISO 8601 format, required): The end time of the event.\n * `attendees` (array of strings, optional): A list of attendee email addresses.\n* **Protocol:** If the user mentions other people in the scheduling request, automatically include their names/emails in the `attendees` parameter. You must have all required parameters before calling this tool.\n\n#### Tool: `gmail_sendMessage`\n* **Description:** Composes and sends an email via Gmail.\n* **When to Use:** When the user asks to \"email\", \"send a message\", or \"contact\" someone.\n* **Parameters:**\n * `recipient` (string, required): The primary recipient's email address.\n * `subject` (string, required): The email subject line.\n * `body` (string, required): The content of the email.\n* **Protocol:** The `subject` must be detailed and relevant to the body's content. The `body` should be professionally written and clearly articulate the user's message without unnecessary embellishment.\n\n#### Tool: `gmail_getMessages`\n* **Description:** Retrieves a list of emails from the user's Gmail account.\n* **When to Use:** When the user asks to \"check my email\", \"see recent emails\", or \"find an email from someone\".\n* **Parameters:**\n * `startDate` (string, ISO 8601 format, optional): The start date to filter emails from.\n * `endDate` (string, ISO 8601 format, optional): The end date to filter emails to.\n * `from` (string, optional): Filter emails from a specific sender.\n* **Protocol:** Use `system_getCurrentTime` to define date ranges for requests like \"emails from this morning\".\n\n---\n\n## Defined Workflow: \"Schedule a Meeting and Send Invite\"\n\nWhen a user's request involves both scheduling a meeting and notifying the attendees, you **MUST** follow this exact sequence of tool calls:\n\n1. **Acknowledge and Gather:** Acknowledge the request. Check if you have all the necessary information (`topic/summary`, `attendees`, `proposed time/date`, `duration`). If not, ask for the missing details.\n2. **Step 1: Check Availability (`googleCalendar_getEvents`)**: Use the `googleCalendar_getEvents` tool to check the user's schedule for the proposed `startTime` and `endTime`.\n3. **Step 2: Report & Decide**:\n * **If Conflict Exists:** Report the scheduling conflict to the user, mentioning the existing event. State: \"You already have '[Existing Event Title]' scheduled at that time. Would you like to find a different time?\" Await further instructions.\n * **If No Conflict:** Proceed to the next step.\n4. **Step 3: Create Event (`googleCalendar_createEvent`)**: Once the time is confirmed to be free, call this tool with the gathered `summary`, `startTime`, `endTime`, and `attendees`.\n5. **Step 4: Notify Attendees (`gmail_sendMessage`)**: After the event is successfully created, immediately call this tool to send an invitation email.\n * `recipient`: The `attendees` from the event.\n * `subject`: \"Meeting Invitation: [Event Summary]\".\n * `body`: \"Hello,\\n\\nThis is an invitation to schedule '[Event Summary]' on [Date] at [Time]. Please check your calendar for the official Google Calendar invite.\\n\\nBest regards,\"\n6. **Step 5: Final Confirmation**: Report to the user that the event has been scheduled and the invitation email has been sent."
}
},
"retryOnFail": true,
"typeVersion": 2.2,
"id": "AI--0"
},
{
"name": "Google Gemini 채팅 모델",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
272,
16
],
"parameters": {
"options": {}
},
"notesInFlow": true,
"typeVersion": 1,
"id": "Google-Gemini--1"
},
{
"name": "심플 메모리",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
448,
64
],
"parameters": {
"contextWindowLength": 10
},
"typeVersion": 1.3,
"id": "--2"
},
{
"name": "Gmail에서 메시지 보내기",
"type": "n8n-nodes-base.gmailTool",
"position": [
592,
64
],
"parameters": {
"sendTo": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('To', ``, 'string') }}",
"message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}",
"options": {
"appendAttribution": true
},
"subject": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', ``, 'string') }}"
},
"notesInFlow": true,
"typeVersion": 2.1,
"id": "Gmail--3"
},
{
"name": "Gmail에서 여러 메시지 가져오기",
"type": "n8n-nodes-base.gmailTool",
"notes": "You Get Details Of the Mail of the User, You are able to Read through them and if the user says a time frame you only give for the specific time frame",
"position": [
752,
80
],
"parameters": {
"limit": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Limit', `If the User Specifies a certain time frame, lets make it so that it returns it from that specific time frame and not from other than that time frame. ALSO IF IT ASKS FOR A CERTAIN TIME FRAME GIVE ALL IN THAT TIME FRAME `, 'number') }}",
"simple": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Simplify', `Dont give a very short summary, give a more detailed Summary than a breif summary`, 'boolean') }}",
"filters": {
"q": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Search', ``, 'string') }}"
},
"options": {},
"operation": "getAll"
},
"notesInFlow": true,
"typeVersion": 2.1,
"id": "Gmail--4"
},
{
"name": "Google 캘린더에서 여러 이벤트 가져오기",
"type": "n8n-nodes-base.googleCalendarTool",
"position": [
896,
80
],
"parameters": {
"options": {},
"timeMax": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Before', ``, 'string') }}",
"timeMin": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('After', ``, 'string') }}",
"calendar": {
"__rl": true,
"mode": "list",
"value": "p70157015@gmail.com",
"cachedResultName": "p70157015@gmail.com"
},
"operation": "getAll"
},
"typeVersion": 1.3,
"id": "Google--5"
},
{
"name": "날짜 및 시간",
"type": "n8n-nodes-base.dateTimeTool",
"position": [
1040,
64
],
"parameters": {
"options": {
"timezone": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Timezone', ``, 'string') }}"
},
"outputFieldName": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Output_Field_Name', ``, 'string') }}"
},
"typeVersion": 2,
"id": "--6"
},
{
"name": "Google 캘린더에서 캘린더 가용성 확인",
"type": "n8n-nodes-base.googleCalendarTool",
"position": [
1184,
64
],
"parameters": {
"options": {},
"timeMax": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('End_Time', ``, 'string') }}",
"timeMin": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start_Time', ``, 'string') }}",
"calendar": {
"__rl": true,
"mode": "list",
"value": "p70157015@gmail.com",
"cachedResultName": "p70157015@gmail.com"
},
"resource": "calendar"
},
"typeVersion": 1.3,
"id": "Google--7"
},
{
"name": "Google 캘린더에서 이벤트 생성",
"type": "n8n-nodes-base.googleCalendarTool",
"position": [
1360,
64
],
"parameters": {
"end": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('End', ``, 'string') }}",
"start": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start', ``, 'string') }}",
"calendar": {
"__rl": true,
"mode": "list",
"value": "p70157015@gmail.com",
"cachedResultName": "p70157015@gmail.com"
},
"additionalFields": {
"attendees": [
"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('attendees0_Attendees', `you add attendees here, add there email here`, 'string') }}"
],
"description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Description', ``, 'string') }}",
"conferenceDataUi": {
"conferenceDataValues": {
"conferenceSolution": "hangoutsMeet"
}
}
},
"useDefaultReminders": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Use_Default_Reminders', ``, 'boolean') }}"
},
"notesInFlow": true,
"typeVersion": 1.3,
"id": "Google--8"
},
{
"name": "Google 캘린더에서 이벤트 업데이트",
"type": "n8n-nodes-base.googleCalendarTool",
"position": [
1536,
64
],
"parameters": {
"eventId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Event_ID', ``, 'string') }}",
"calendar": {
"__rl": true,
"mode": "list",
"value": "p70157015@gmail.com",
"cachedResultName": "p70157015@gmail.com"
},
"operation": "update",
"updateFields": {}
},
"typeVersion": 1.3,
"id": "Google--9"
},
{
"name": "스티키 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
-176,
-192
],
"parameters": {
"color": 4,
"content": "### 🗣️ Chat Node\nIf you wish to, you can switch to a different Messenger app like discord,Whatsapp and Telegram"
},
"typeVersion": 1,
"id": "--10"
},
{
"name": "스티키 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
720,
-336
],
"parameters": {
"width": 320,
"height": 144,
"content": "### 🤖 AI Agent \nThe “brain” of the workflow. Interprets your requests and chooses the right tool. Asks for clarification if details are missing and confirms before important actions."
},
"typeVersion": 1,
"id": "-1-11"
},
{
"name": "채팅 노드",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
96,
-160
],
"parameters": {
"options": {}
},
"typeVersion": 1.3,
"id": "--12"
},
{
"name": "스티키 노트2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-32,
48
],
"parameters": {
"color": 5,
"width": 272,
"height": 192,
"content": "### 🧠 Google Gemini Chat Model (or any LLM) \nThe AI language model that powers the assistant. You can swap Gemini with OpenAI, Claude, or another model. (i have used gemini since its free and easy to setup here is the link to get your own [AI API Key](https://aistudio.google.com/apikey)"
},
"typeVersion": 1,
"id": "-2-13"
},
{
"name": "스티키 노트3",
"type": "n8n-nodes-base.stickyNote",
"position": [
304,
240
],
"parameters": {
"color": 6,
"width": 272,
"height": 128,
"content": "### 📌 Simple Memory \nKeeps short-term context of the last ~10 interactions so the agent remembers what “it” refers to in your requests."
},
"typeVersion": 1,
"id": "-3-14"
},
{
"name": "스티키 노트4",
"type": "n8n-nodes-base.stickyNote",
"position": [
672,
272
],
"parameters": {
"color": 7,
"width": 1024,
"height": 624,
"content": "## Tools\nThe tools consists of the following\n\n\n### 📧 Send a message in Gmail \nSends emails from your Gmail account. Requires recipient, subject, and body. Generates clear, professional text.\n\n### 📥 Get many messages in Gmail \nChecks your inbox. Can filter by timeframe or sender. Returns detailed summaries, not just one-liners.\n\n### 📅 Get many events in Google Calendar \nLists your events for a chosen date range. Useful for “What’s on my schedule this week?”\n\n### ⏰ Date & Time \nConverts natural phrases like “tomorrow at 3 PM” into exact ISO date-time values.\n\n### ✅ Get availability in Google Calendar \nChecks if you’re free during a specific time slot. Prevents double-booking before scheduling.\n\n### 📝 Create an event in Google Calendar \nSchedules a new meeting. Adds title, start/end times, attendees, description, and Google Meet link.\n\n### ✏️ Update an event in Google Calendar \nEdits an existing meeting. Change time, attendees, or details without creating a new event.\n"
},
"typeVersion": 1,
"id": "-4-15"
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "bde719eb-a0f0-4658-9044-8c02b3cf1eff",
"connections": {
"--12": {
"main": [
[
{
"node": "AI--0",
"type": "main",
"index": 0
}
]
]
},
"--6": {
"ai_tool": [
[
{
"node": "AI--0",
"type": "ai_tool",
"index": 0
}
]
]
},
"--2": {
"ai_memory": [
[
{
"node": "AI--0",
"type": "ai_memory",
"index": 0
}
]
]
},
"Gmail--3": {
"ai_tool": [
[
{
"node": "AI--0",
"type": "ai_tool",
"index": 0
}
]
]
},
"Google-Gemini--1": {
"ai_languageModel": [
[
{
"node": "AI--0",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Gmail--4": {
"ai_tool": [
[
{
"node": "AI--0",
"type": "ai_tool",
"index": 0
}
]
]
},
"Google--8": {
"ai_tool": [
[
{
"node": "AI--0",
"type": "ai_tool",
"index": 0
}
]
]
},
"Google--5": {
"ai_tool": [
[
{
"node": "AI--0",
"type": "ai_tool",
"index": 0
}
]
]
},
"Google--9": {
"ai_tool": [
[
{
"node": "AI--0",
"type": "ai_tool",
"index": 0
}
]
]
},
"Google--7": {
"ai_tool": [
[
{
"node": "AI--0",
"type": "ai_tool",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - AI 챗봇, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
챗봇 웹훅
Gemini 채팅 인터페이스를 통합한 AI 기반 Gmail 및 캘린더 어시스턴트
Set
Webhook
Gmail Tool
+
Set
Webhook
Gmail Tool
19 노드Praneel S
기타
Praneel의 Discord 자동화 및 Github 및 AI 챗봇
Discord, GitHub 및 Gemini AI를 통한 블로그 업데이트 자동화
Discord
Github Tool
Date Time Tool
+
Discord
Github Tool
Date Time Tool
10 노드Praneel S
AI 챗봇
Gmail 에이전트
Gemini AI 어시스턴트와 연락처 관리를 사용한 Gmail 작업 자동화
Gmail Tool
Agent
Google Sheets Tool
+
Gmail Tool
Agent
Google Sheets Tool
12 노드Rakin Jakaria
AI 챗봇
기억, Google 스위트, 다양한 AI 연구 이미징을 통합한 WhatsApp 어시스턴트
기억, Google 패키지 및 다양한 AI 연구 이미징을 포함한 WhatsApp 어시스턴트 구축
If
Set
Code
+
If
Set
Code
71 노드Iniyavan JC
AI 챗봇
💥 ChatGPT-5를 사용하여 첫 번째 AI 대리인을 구축하세요
GPT-5, Google 캘린더와 스프레드시트를 사용하여 지식庫와 일정 계획 AI 어시스턴트를 생성합니다.
Gmail Tool
Agent
Google Sheets Tool
+
Gmail Tool
Agent
Google Sheets Tool
14 노드Dr. Firas
기타
회의 예약 도우미
회의 관리 도우미
Telegram
Gmail Tool
Date Time Tool
+
Telegram
Gmail Tool
Date Time Tool
13 노드Rakin Jakaria
AI 챗봇