日历与任务个人助手(GPT-4o-mini和Telegram)
高级
这是一个Miscellaneous, AI Chatbot, Multimodal AI领域的自动化工作流,包含 26 个节点。主要使用 Telegram, Agent, GoogleTasksTool, HttpRequestTool, TelegramTrigger 等节点。 日历与任务个人助手(GPT-4o-mini和Telegram)
前置要求
- •Telegram Bot Token
- •可能需要目标 API 的认证凭证
- •OpenAI API Key
使用的节点 (26)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"meta": {
"instanceId": "3dd7d3035157a6c8c0bc0904aa8991f90872849a76d57fd6b5eedb4e09f76c2f"
},
"nodes": [
{
"id": "77a797b9-df8f-4891-9147-84e39f2732e5",
"name": "MCP 服务器触发器",
"type": "@n8n/n8n-nodes-langchain.mcpTrigger",
"position": [
-816,
496
],
"webhookId": "c627d58d-63f5-4876-babb-5c3b1243d7e9",
"parameters": {
"path": "c627d58d-63f5-4876-babb-5c3b1243d7e9"
},
"typeVersion": 1
},
{
"id": "90f295aa-56ed-4006-be11-2ef0db62093f",
"name": "在 Google Calendar 中创建包含 1 位参与者的活动",
"type": "n8n-nodes-base.googleCalendarTool",
"position": [
-1200,
704
],
"parameters": {
"end": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('End', `Take the time from the user message`, 'string') }}",
"start": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start', `Take the time from the user message`, 'string') }}",
"calendar": {
"__rl": true,
"mode": "list",
"value": ""
},
"descriptionType": "manual",
"toolDescription": "Create an Event in Google Calendar API with 1 attendee",
"additionalFields": {
"summary": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Summary', ``, 'string') }}",
"showMeAs": "transparent",
"attendees": [
"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('attendees0_Attendees', `take the attendee mail from user message`, 'string') }}"
],
"description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Description', ``, 'string') }}"
}
},
"typeVersion": 1.3
},
{
"id": "d7203cd8-7940-4435-9b20-25ef06f0ad8c",
"name": "在 Google Calendar 中创建包含 2 位参与者的活动",
"type": "n8n-nodes-base.googleCalendarTool",
"position": [
-1024,
784
],
"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": ""
},
"descriptionType": "manual",
"toolDescription": "Create an Event in Google Calendar API with 2 attendees",
"additionalFields": {
"summary": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Summary', ``, 'string') }}",
"attendees": [
"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('attendees0_Attendees', `take the first attendee email from the message.`, 'string') }}",
"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('attendees1_Attendees', `take the second attendee email from the message.`, 'string') }}"
],
"description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Description', ``, 'string') }}"
}
},
"typeVersion": 1.3
},
{
"id": "1ec06ce1-827f-4de7-bed0-fbfec4bda155",
"name": "删除 Google Calendar 中的活动",
"type": "n8n-nodes-base.googleCalendarTool",
"position": [
-176,
752
],
"parameters": {
"eventId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Event_ID', ``, 'string') }}",
"options": {},
"calendar": {
"__rl": true,
"mode": "list",
"value": ""
},
"operation": "delete",
"descriptionType": "manual",
"toolDescription": "Delete an event from Google Calendar API"
},
"typeVersion": 1.3
},
{
"id": "eb687e4a-cb99-4be1-aef5-0444bd7c8435",
"name": "创建每周重复活动",
"type": "n8n-nodes-base.googleCalendarTool",
"position": [
-800,
832
],
"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": ""
},
"descriptionType": "manual",
"toolDescription": "Create a weekly frequent Event in Google Calendar API with 2 attendees ",
"additionalFields": {
"attendees": [
"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('attendees0_Attendees', `take the first attendee email from the message.`, 'string') }}",
"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('attendees1_Attendees', `take the second attendee email from the message.`, 'string') }}"
],
"repeatFrecuency": "weekly"
}
},
"typeVersion": 1.3
},
{
"id": "99d60bdb-bbbf-42cd-88a4-26d7f84960be",
"name": "complete_task",
"type": "n8n-nodes-base.googleTasksTool",
"position": [
304,
816
],
"parameters": {
"task": "MDQ3MTk5NzQzMTc5NDM3NTA4OTU6MDow",
"taskId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Task_ID', `The task id to be marked as completed. Get it from the get tasks tool`, 'string') }}",
"operation": "update",
"updateFields": {
"status": "completed"
}
},
"typeVersion": 1
},
{
"id": "707ed206-b176-42a9-aeeb-b6c8851ed994",
"name": "便签1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-32,
464
],
"parameters": {
"color": 3,
"width": 1540,
"height": 512,
"content": "## Google Tasks MCP Server"
},
"typeVersion": 1
},
{
"id": "e4a770b1-fc7e-4bc4-b411-b102cc855b27",
"name": "update tasks",
"type": "n8n-nodes-base.googleTasksTool",
"position": [
640,
816
],
"parameters": {
"task": "MDQ3MTk5NzQzMTc5NDM3NTA4OTU6MDow",
"taskId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Task_ID', ``, 'string') }}",
"operation": "update",
"updateFields": {
"notes": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Notes', ``, 'string') }}",
"title": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Title', ``, 'string') }}",
"dueDate": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Due_Date', ``, 'string') }}"
}
},
"typeVersion": 1
},
{
"id": "a40dc545-41b5-4279-bbd0-4b12a7967351",
"name": "create_task",
"type": "n8n-nodes-base.googleTasksTool",
"position": [
0,
816
],
"parameters": {
"task": "MDQ3MTk5NzQzMTc5NDM3NTA4OTU6MDow",
"title": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Title', `Title summary of the task to be done`, 'string') }}",
"additionalFields": {
"notes": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Notes', `Detailed description of the task`, 'string') }}",
"parent": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Parent', `If parent specified, create the task under that parent. Get the parent task id from the get tasks tool`, 'string') }}",
"dueDate": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Due_Date', `Date the task should be completed`, 'string') }}",
"completed": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Completion_Date', `Date the task was completed`, 'string') }}"
}
},
"typeVersion": 1
},
{
"id": "0b0ba749-b34b-4055-bdb6-fe288fb691fd",
"name": "get_tasks",
"type": "n8n-nodes-base.googleTasksTool",
"position": [
160,
816
],
"parameters": {
"task": "MDQ3MTk5NzQzMTc5NDM3NTA4OTU6MDow",
"operation": "getAll",
"returnAll": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Return_All', ``, 'boolean') }}",
"additionalFields": {
"showCompleted": true
}
},
"typeVersion": 1
},
{
"id": "25cf7872-9f5c-408f-92a3-252183f57004",
"name": "删除任务",
"type": "n8n-nodes-base.googleTasksTool",
"position": [
784,
816
],
"parameters": {
"task": "MDQ3MTk5NzQzMTc5NDM3NTA4OTU6MDow",
"taskId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Task_ID', `Get the task ID from the get_tasks tool`, 'string') }}",
"operation": "delete"
},
"typeVersion": 1
},
{
"id": "294d46a7-52d2-4baf-b1ae-06e66f67b586",
"name": "move_task_position",
"type": "n8n-nodes-base.httpRequestTool",
"position": [
976,
816
],
"parameters": {
"url": "=https://tasks.googleapis.com/tasks/v1/lists/{{ $fromAI('Task_List_ID', 'ID of the task list containing the task to move', 'string') }}/tasks/{{ $fromAI('Task_ID', 'ID of the task to move', 'string') }}/move",
"method": "POST",
"options": {},
"sendQuery": true,
"sendHeaders": true,
"authentication": "predefinedCredentialType",
"queryParameters": {
"parameters": [
{
"name": "parent",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Value', `ID of the parent task to move under (optional)`, 'string') }}"
},
{
"name": "previous",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters1_Value', `ID of the sibling task to move after (optional)`, 'string') }}"
}
]
},
"headerParameters": {
"parameters": [
{}
]
},
"nodeCredentialType": "googleTasksOAuth2Api"
},
"typeVersion": 4.2
},
{
"id": "06347e3d-e1c8-4d87-b012-9bf996319845",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
1120,
752
],
"parameters": {
"content": "## 自定义工具"
},
"typeVersion": 1
},
{
"id": "980bb218-849f-4a55-a6f3-a0339c0fe385",
"name": "MCP Server Trigger1",
"type": "@n8n/n8n-nodes-langchain.mcpTrigger",
"position": [
336,
592
],
"webhookId": "562ffc95-cf8e-4d4d-8f5b-29b3ff22d5ee",
"parameters": {
"path": "562ffc95-cf8e-4d4d-8f5b-29b3ff22d5ee"
},
"typeVersion": 1
},
{
"id": "27cb0a1a-14d6-423c-a9be-03c85fe643f0",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-480,
224
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "gpt-4o-mini"
},
"options": {}
},
"typeVersion": 1.2
},
{
"id": "3c95fe62-16be-4b40-80f5-14fa15b357b5",
"name": "Telegram 触发器",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
-688,
48
],
"webhookId": "78ce2732-69b3-4333-9d7d-eaad8be4f274",
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"typeVersion": 1.2
},
{
"id": "cf76721c-6405-40d7-883f-511a3bda1eef",
"name": "AI 代理",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-368,
48
],
"parameters": {
"text": "={{ $json.message.text }}",
"options": {
"systemMessage": "=You are a helpful assistant named Troy. You can perform two types of tasks:\n1. Google Tasks Management: Create, update, delete, and retrieve tasks using the Google Tasks MCP. \n2. Google Calendar Management: Create, update, delete, and retrieve calendar events using the Google Calendar MCP.\n\nImportant Instructions:\n- Always call get_tasks tool first to retrieve task IDs before performing task operations.\n- CRITICAL: Before creating any calendar event, ALWAYS check for scheduling conflicts:\n 1. Use the GetAll calendar tool to retrieve existing events for the requested time period.\n 2. Compare the requested time slot against existing events.\n 3. Allow a 1-minute buffer between events — that is, events ending at 8:00 PM and starting at 8:00 PM (or within 1 minute) do not conflict.\n 4. If a conflict is found, inform the user with the details of the existing event and ask if they want to:\n - Reschedule the new meeting to a different time\n - Cancel or move the existing meeting\n - Schedule anyway (double-book)\n 5. Only create the new event after confirming there is no conflict, or if the user agrees to double-book.\n- Choose the correct creation method for calendar events:\n - Use standard calendar creation for one-time events.\n - Use weekly_repeat_create only when the user explicitly mentions terms like \"weekly\", \"every week\", or similar recurring weekly patterns.\n - Use the appropriate variant of the tool depending on the number of attendees:\n - If the event is a single time use the required tool followed by the number of attendees.\n - If the event is recurring weekly, use the required weekly tool followed by the number of attendees. \n- While sending attendee data to the tool, separate attendee names by commas.\n- Analyze the user’s request carefully to determine which tools to use based on time, recurrence, and number of attendees.\n\nSpecial Commands:\n- If the user writes /start, welcome them and explain your capabilities as Troy, their personal assistant.\nCurrent Context:\n - Today's date and time: {{ $now.setZone('Asia/Dhaka') }}\n - Timezone: Asia/Dhaka (Bangladesh Standard Time)\n - Always use Bangladesh time format when creating events.\n\n- If the user greets, answer gracefully. \n\nOutput Instructions:\n- Format response in telegram-compatible text format. \n\nExamples:\n- \"Schedule a meeting tomorrow at 3 pm\" \n → Check for conflicts at 3 pm tomorrow. \n → If clear, create the event using the appropriate single-time tool. \n → If not, suggest alternatives. \n- \"Set up a weekly team meeting every Monday at 10am\". \n → Check for conflicts on Mondays at 10am. \n → If no conflict, use weekly_repeat_create (small group variant if attendees ≤ 3). \n → If conflict, suggest a new time.\n- \"Add a task to buy groceries\" \n → Use Google Tasks MCP to create a new task.\n\n"
},
"promptType": "define"
},
"typeVersion": 1.9
},
{
"id": "9d5b629c-e698-432e-8f95-d1d342bb3fba",
"name": "Google Tasks MCP",
"type": "@n8n/n8n-nodes-langchain.mcpClientTool",
"position": [
-80,
272
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "52fc3692-4beb-43c0-bdb2-d8c5bdd11ed7",
"name": "Google Calender MCP",
"type": "@n8n/n8n-nodes-langchain.mcpClientTool",
"position": [
128,
272
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "e432a5d0-31ce-4d69-82c3-19d4ce158b8a",
"name": "简单记忆",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
-272,
272
],
"parameters": {
"sessionKey": "={{ $('Telegram Trigger').item.json.message.chat.id }}",
"sessionIdType": "customKey"
},
"typeVersion": 1.3
},
{
"id": "bc1d8286-01e7-4fb5-bab1-ff6831234200",
"name": "便签 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1296,
464
],
"parameters": {
"width": 1232,
"height": 512,
"content": "## Google Calendar MCP Server"
},
"typeVersion": 1
},
{
"id": "f3e0a407-1318-4777-99c4-c16cc49afc84",
"name": "便签 3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-800,
-144
],
"parameters": {
"color": 4,
"width": 1376,
"height": 576,
"content": "## 个人助理"
},
"typeVersion": 1
},
{
"id": "e70ce1ce-3198-43b6-9a18-461a63427d5d",
"name": "发送错误消息",
"type": "n8n-nodes-base.telegram",
"position": [
320,
48
],
"webhookId": "da0220ba-564d-4b9e-a96d-ba84ff375069",
"parameters": {
"text": "=We are facing troubles in providing a response right now. Please try again later.",
"chatId": "={{ $('Telegram Trigger').item.json.message.chat.id }}",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"id": "VHYSx4IGNrV0gMeJ",
"name": "xino-content-planner"
}
},
"typeVersion": 1.2
},
{
"id": "8fb00202-2598-4f17-99f7-9d3b7ad3abd5",
"name": "发送消息",
"type": "n8n-nodes-base.telegram",
"onError": "continueErrorOutput",
"position": [
80,
-48
],
"webhookId": "1e8bafbb-10d5-47d3-bacf-669a62e4189f",
"parameters": {
"text": "={{ $json.output }}",
"chatId": "={{ $('Telegram Trigger').item.json.message.chat.id }}",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"id": "VHYSx4IGNrV0gMeJ",
"name": "xino-content-planner"
}
},
"typeVersion": 1.2
},
{
"id": "660211d8-8497-4b77-8742-75ceb6036048",
"name": "Get_Events",
"type": "n8n-nodes-base.googleCalendarTool",
"position": [
-464,
832
],
"parameters": {
"eventId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Event_ID', ``, 'string') }}",
"options": {},
"calendar": {
"__rl": true,
"mode": "list",
"value": ""
},
"operation": "get",
"descriptionType": "manual",
"toolDescription": "Get an Event from Google Calendar API"
},
"typeVersion": 1.3
},
{
"id": "277fc9fe-f3b1-43a7-bde4-f8919765b814",
"name": "GetAll_Events",
"type": "n8n-nodes-base.googleCalendarTool",
"position": [
-336,
784
],
"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": ""
},
"operation": "getAll",
"returnAll": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Return_All', ``, 'boolean') }}",
"descriptionType": "manual",
"toolDescription": "Get Multiple Events from Google Calendar API"
},
"typeVersion": 1.3
}
],
"pinData": {},
"connections": {
"AI Agent": {
"main": [
[
{
"node": "Send Message",
"type": "main",
"index": 0
}
]
]
},
"get_tasks": {
"ai_tool": [
[
{
"node": "MCP Server Trigger1",
"type": "ai_tool",
"index": 0
}
]
]
},
"Get_Events": {
"ai_tool": [
[
{
"node": "MCP Server Trigger",
"type": "ai_tool",
"index": 0
}
]
]
},
"create_task": {
"ai_tool": [
[
{
"node": "MCP Server Trigger1",
"type": "ai_tool",
"index": 0
}
]
]
},
"delete task": {
"ai_tool": [
[
{
"node": "MCP Server Trigger1",
"type": "ai_tool",
"index": 0
}
]
]
},
"Send Message": {
"main": [
[],
[
{
"node": "Send Error Message",
"type": "main",
"index": 0
}
]
]
},
"update tasks": {
"ai_tool": [
[
{
"node": "MCP Server Trigger1",
"type": "ai_tool",
"index": 0
}
]
]
},
"GetAll_Events": {
"ai_tool": [
[
{
"node": "MCP Server Trigger",
"type": "ai_tool",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"complete_task": {
"ai_tool": [
[
{
"node": "MCP Server Trigger1",
"type": "ai_tool",
"index": 0
}
]
]
},
"Google Tasks MCP": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Telegram Trigger": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"move_task_position": {
"ai_tool": [
[
{
"node": "MCP Server Trigger1",
"type": "ai_tool",
"index": 0
}
]
]
},
"Google Calender MCP": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Delete an event Google Calendar": {
"ai_tool": [
[
{
"node": "MCP Server Trigger",
"type": "ai_tool",
"index": 0
}
]
]
},
"Create a weekly recurrent event Event": {
"ai_tool": [
[
{
"node": "MCP Server Trigger",
"type": "ai_tool",
"index": 0
}
]
]
},
"Create an Event in Google Calendar with 1 Attendee": {
"ai_tool": [
[
{
"node": "MCP Server Trigger",
"type": "ai_tool",
"index": 0
}
]
]
},
"Create an Event in Google Calendar with 2 Attendees": {
"ai_tool": [
[
{
"node": "MCP Server Trigger",
"type": "ai_tool",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 杂项, AI 聊天机器人, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
Jarvis 模板
Jarvis:基于MCP的任务、日历、邮件和费用管理生产力AI代理
Switch
Telegram
Gmail Tool
+12
47 节点Jitesh Dugar
杂项
💥 AI病毒视频生成:NanoBanana和VEO3,通过Blotato分享到社交平台 - 视频
AI个人助理:通过Telegram管理Google任务、日历、邮件和开支
Set
Filter
Switch
+15
52 节点minh
个人效率
HTX AI代理 v1.02
使用HTX API、GPT-4o和Telegram分析加密货币市场数据
Set
Code
Telegram
+8
35 节点Don Jayamaha Jr
杂项
基于 Telegram、Google 服务和语音 AI 的个人生活管理器
基于 Telegram、Google 服务和语音 AI 的个人生活管理器
If
Set
Telegram
+9
24 节点Derek Cheung
杂项
多智能体Telegram机器人
使用Telegram和Google Gemini的多智能体个人助手机器人
Set
Code
Merge
+18
85 节点Akil A
杂项
集成语音识别与消息批处理的 Telegram 聊天机器人(OpenAI)
使用 OpenAI 实现语音识别与消息批处理的 Telegram 聊天机器人
If
Set
Code
+12
31 节点Kirill Zolygin
杂项
工作流信息
难度等级
高级
节点数量26
分类3
节点类型11
作者
Khair Ahammed
@khair1212Automation engineer with over 2 years of experience specializing in building scalable and reliable automation solutions using n8n and other cutting-edge tools. With expertise in workflow optimization, API integrations, and process automation, I help businesses streamline their operations and eliminate repetitive tasks.
外部链接
在 n8n.io 查看 →
分享此工作流