关于 google-calendar-automation
google-calendar-automation 是通过 Composio 的 Google Calendar 工具包自动处理日历工作的技能,涵盖事件操作、搜索、参会者管理和空闲时间查询,并通过 Rube MCP 使用这些能力。
主要功能
- 01创建、更新和删除事件
- 02搜索和浏览日历事件
- 03管理事件参会者
- 04查询空闲时段和忙碌时间
适用场景
- 01查询空闲时间后安排事件
- 02按时间范围查找事件
- 03添加或移除事件受邀者
MCP 相关
通过 Rube MCP 访问 Composio 的 Google Calendar 工具包。运行工作流前需连接 Rube MCP,并启用 Google Calendar 账户连接。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ davepoon/ buildwithclaude --skill google-calendar-automation安装后在 Claude Code 中输入/google-calendar-automation确认已加载。
详细介绍
通过 Rube MCP 实现 Google Calendar 自动化
通过 Composio 的 Google Calendar 工具包,自动化 Google Calendar 工作流,包括创建日历事件、安排日程、检查可用时间、管理参会者以及浏览日历。
工具包文档:composio.dev/toolkits/googlecalendar
前提条件
- 必须已连接 Rube MCP(可使用 RUBE_SEARCH_TOOLS)
- 通过
RUBE_MANAGE_CONNECTIONS建立有效的 Google Calendar 连接,并使用工具包googlecalendar - 务必先调用
RUBE_SEARCH_TOOLS,以获取当前工具架构
设置
获取 Rube MCP:在客户端配置中将 https://rube.app/mcp 添加为 MCP 服务。无需 API 密钥,只需添加端点即可使用。
- 确认
RUBE_SEARCH_TOOLS有响应,以验证 Rube MCP 可用 - 使用工具包
googlecalendar调用RUBE_MANAGE_CONNECTIONS - 如果连接状态不是 ACTIVE,请使用返回的授权链接完成 Google OAuth
- 运行任何工作流之前,确认连接状态显示为 ACTIVE
核心工作流
1. 创建和管理日历事件
适用场景:用户想要创建、更新或删除日历事件
工具调用顺序:
GOOGLECALENDAR_LIST_CALENDARS- 确定目标日历 ID[前置条件]GOOGLECALENDAR_GET_CURRENT_DATE_TIME- 获取包含正确时区的当前时间[可选]GOOGLECALENDAR_FIND_FREE_SLOTS- 预订前检查可用时间[可选]GOOGLECALENDAR_CREATE_EVENT- 创建日历事件[必需]GOOGLECALENDAR_PATCH_EVENT- 更新现有日历事件的指定字段[替代方案]GOOGLECALENDAR_UPDATE_EVENT- 完整替换并更新日历事件[替代方案]GOOGLECALENDAR_DELETE_EVENT- 删除日历事件[可选]
关键参数:
calendar_id:主日历使用 'primary',也可以使用特定日历 IDstart_datetime:ISO 8601 格式 'YYYY-MM-DDTHH:MM:SS'(不能使用自然语言)timezone:IANA 时区名称(例如 'America/New_York',不能使用 'EST' 或 'PST')event_duration_hour:小时数(0+)event_duration_minutes:分钟数(仅限 0-59;切勿使用 60 或更大的值)summary:日历事件标题attendees:电子邮件地址数组(不能使用姓名)location:日历事件地点的自由文本
注意事项:
start_datetime必须使用 ISO 8601 格式;'tomorrow' 等自然语言会被拒绝event_duration_minutes最大值为 59;请使用event_duration_hour=1,而不要使用event_duration_minutes=60timezone必须使用 IANA 标识符;'EST'、'PST' 等缩写无效attendees只接受电子邮件地址,不接受姓名;请先解析姓名- 默认会创建 Google Meet 链接;个人 Gmail 账号可能会失败(系统会妥善回退)
- 除非设置
exclude_organizer=true,否则会自动将组织者添加为参会者
2. 列出和搜索活动
使用场景:用户想查找或浏览日历中的活动
工具调用顺序:
GOOGLECALENDAR_LIST_CALENDARS- 获取可用日历【前置步骤】GOOGLECALENDAR_FIND_EVENT- 按标题或关键词和时间范围搜索【必需】GOOGLECALENDAR_EVENTS_LIST- 列出某个时间范围内的活动【替代方案】GOOGLECALENDAR_EVENTS_INSTANCES- 列出重复活动的实例【可选】
关键参数:
query/q:全文搜索(匹配摘要、描述、地点和参与者)timeMin:下限(带时区偏移的 RFC3339 格式,例如 '2024-01-01T00:00:00-08:00')timeMax:上限(带时区偏移的 RFC3339 格式)singleEvents:设为 true 可将重复活动展开为多个实例orderBy:'startTime'(需要singleEvents=true)或 'updated'maxResults:每页结果数(最多 2500)
注意事项:
- 时区警告:UTC 时间戳(以 'Z' 结尾)与本地日期不一致;请改用本地时区偏移
- 示例:'2026-01-19T00:00:00Z' 在 PST 时区对应 2026-01-18 下午 4 点至 2026-01-19 下午 4 点
- 省略
timeMin/timeMax会扫描整个日历,可能导致速度变慢 - 响应中出现
pageToken表示还有更多结果;请翻页,直到该字段消失 orderBy='startTime'需要singleEvents=true
3. 管理参与者和邀请
使用场景:用户想添加、移除或更新活动参与者
工具调用顺序:
GOOGLECALENDAR_FIND_EVENT或GOOGLECALENDAR_EVENTS_LIST- 查找活动【前置步骤】GOOGLECALENDAR_PATCH_EVENT- 添加参与者(会替换整个参与者列表)【必需】GOOGLECALENDAR_REMOVE_ATTENDEE- 按电子邮件地址移除指定参与者【必需】
关键参数:
event_id:唯一活动标识符(不透明字符串,不是活动标题)attendees:参与者电子邮件地址的完整列表(PATCH 会替换整个列表)attendee_email:要移除的电子邮件地址send_updates:'all'、'externalOnly' 或 'none'
注意事项:
event_id是技术标识符,不是活动标题;请务必先搜索以获取 IDPATCH_EVENT的 attendees 字段会替换整个列表;请包含现有参与者,以免将其移除- 无法解析参与者姓名;请始终使用电子邮件地址
- 管理参与者前,请使用
GMAIL_SEARCH_PEOPLE将姓名解析为电子邮件地址
4. 检查空闲状态和忙碌状态
使用场景:用户想查找可用时段或检查忙碌时段
工具调用顺序:
GOOGLECALENDAR_LIST_CALENDARS- 确定要检查的日历【前置步骤】GOOGLECALENDAR_GET_CURRENT_DATE_TIME- 获取带时区的当前时间【可选】GOOGLECALENDAR_FIND_FREE_SLOTS- 查找多个日历中的空闲时段【必需】GOOGLECALENDAR_FREE_BUSY_QUERY- 获取原始忙碌时段,以计算空闲间隔【备用方案】GOOGLECALENDAR_CREATE_EVENT- 预订已确认的时段【必需】
关键参数:
items:要检查的日历 ID 列表(例如,['primary'])time_min/time_max:查询时间范围(省略时默认为当天)timezone:用于解析无时区时间戳的 IANA 时区calendarExpansionMax:日历数量上限(1-50)groupExpansionMax:每组成员数量上限(1-100)
注意事项:
- 受 Google Calendar freeBusy API 限制,时间跨度最长约为 90 天
- 范围过长或日历无法访问时,可能会返回空结果或无效结果
- 只有拥有至少 freeBusyReader 访问权限的日历才会显示
- 空闲时段响应可能会转换为 UTC('Z');请检查时区偏移
GOOGLECALENDAR_FREE_BUSY_QUERY需要带时区的 RFC3339 时间戳
常见模式
ID 解析
- 日历名称 -> calendar_id:使用
GOOGLECALENDAR_LIST_CALENDARS枚举所有日历 - 活动标题 -> event_id:使用
GOOGLECALENDAR_FIND_EVENT或GOOGLECALENDAR_EVENTS_LIST - 参与者姓名 -> 电子邮件地址:使用
GMAIL_SEARCH_PEOPLE
时区处理
- 始终使用 IANA 时区标识符(例如,'America/Los_Angeles')
- 使用
GOOGLECALENDAR_GET_CURRENT_DATE_TIME获取用户时区的当前时间 - 按本地日期查询事件时,使用带本地偏移量的时间戳,而非 UTC
- 示例:PST 使用 '2026-01-19T00:00:00-08:00',而非 '2026-01-19T00:00:00Z'
分页
GOOGLECALENDAR_EVENTS_LIST会返回nextPageToken;应持续迭代,直到该值不存在GOOGLECALENDAR_LIST_CALENDARS也支持分页;请使用page_token
已知问题
- 自然语言日期:不受支持;所有日期都必须为 ISO 8601 或 RFC3339 格式
- 时区不匹配:UTC 时间戳与用于筛选的本地日期不一致
- 时长限制:
event_duration_minutes最大为 59;较长时长请使用小时 - 仅限 IANA 时区:'EST'、'PST' 等无效;请使用 'America/New_York'
- 事件 ID 不透明:务必先搜索以获取 event_id;切勿猜测或自行构造
- 参会者必须使用电子邮件地址:无法使用姓名;请通过 GMAIL_SEARCH_PEOPLE 查找
- PATCH 会替换参会者:请在数组中包含所有需要的参会者,而不只是新增的参会者
- 会议功能限制:Google Meet 在个人账号上可能无法使用(请优雅降级)
- 速率限制:大量搜索可能触发 403/429;请在调用之间限速
快速参考
| 任务 | 工具标识 | 关键参数 |
|---|---|---|
| 列出日历 | GOOGLECALENDAR_LIST_CALENDARS | max_results |
| 创建事件 | GOOGLECALENDAR_CREATE_EVENT | start_datetime、timezone、summary |
| 更新事件 | GOOGLECALENDAR_PATCH_EVENT | calendar_id、event_id、要更新的字段 |
| 删除事件 | GOOGLECALENDAR_DELETE_EVENT | calendar_id、event_id |
| 搜索事件 | GOOGLECALENDAR_FIND_EVENT | query、timeMin、timeMax |
| 列出事件 | GOOGLECALENDAR_EVENTS_LIST | calendarId、timeMin、timeMax |
| 重复事件实例 | GOOGLECALENDAR_EVENTS_INSTANCES | calendarId、eventId |
| 查找空闲时段 | GOOGLECALENDAR_FIND_FREE_SLOTS | items、time_min、time_max、timezone |
| 查询空闲/忙碌情况 | GOOGLECALENDAR_FREE_BUSY_QUERY | timeMin、timeMax、items |
| 移除参会者 | GOOGLECALENDAR_REMOVE_ATTENDEE | event_id、attendee_email |
| 获取当前时间 | GOOGLECALENDAR_GET_CURRENT_DATE_TIME | timezone |
| 获取日历 | GOOGLECALENDAR_GET_CALENDAR | calendar_id |
由 Composio 提供支持
评论
支持 Markdown