通过 OAuth 认证调用 Google 日历 REST 接口,读写日程与可用时间。
编程
outlook-calendar-management
试用Let your AI assistant manage your Outlook calendar for you. Just say what you need — add, change, or delete events, set up repeating meetings, or ask when you're free — and it happens on your own calendar.
它能做什么
Use this skill whenever the user mentions any calendar operation on Outlook calendar / Microsoft calendar: view schedules, find events (title/location/category), add meetings/birthdays/reminders, change time or title, move to another date, delete (single occurrence or whole recurring series), check free time slots, query the next occurrence of a recurring event, list recently added events. Manages the Outlook calendar (Microsoft account / outlook.com). Does NOT handle Outlook mail (the himalaya skill does) or other calendars (Google Calendar etc.).
技能文档
Outlook 日历助手
通过对话管理 Outlook 日历(微软账户 / outlook.com),无需打开 Outlook 应用,手机、电脑、网页实时同步。
能做什么
| 你想做什么 | 做法 |
|---|---|
| 看安排:今天/明天/本周/某段时间 | today / tomorrow / week / list |
| 找日程:按标题/地点/备注/类别 | list --search / list --category |
| 查"我昨天加了什么" | list --created-after 日期 |
| 加日程:会议/生日/提醒/定期 | add |
| 改日程:时间/标题/类别/提醒等 | update |
| 挪日程:整体平移或移到某天,保留时段 | move |
| 删日程,定期日程可选单次/整系列 | delete |
| 问哪天有空 / 空闲时段 | free |
| 定期日程下次什么时候 | next |
| 看某个日程的详情 | read |
| 日历连不上 / 查看状态 | status |
| 机器可读输出,供程序/脚本用 | 任意命令加 --json |
小输出优先:只看"有什么/什么时候"用
list --summary或--json,不要动辄拉全量;不确定时间范围先用默认 7 天。
操作铁律
以下规则适用于每次操作,不可跳过:
- 每次操作前先取"当前时间 + 当前时区":任何操作开始前,先用命令行获取系统当前时间和时区——Windows(PowerShell)用
Get-Date+Get-TimeZone,Linux/macOS 用date(如date +"%F %T %Z"),绝不用旧会话里见过的日期或时区。需要核对"今天是几号"时可配合运行status(输出里有当前日期,含年份与星期)。相对时间词可以直接传给命令(今天 14:00、本周五 15:00、今天下午2点),命令会在运行时刻按系统时钟解析,输出里会显示解析后的日期——确认不是昨天 - 删除前先确认:向用户复述待删除的日程(标题+时间),获得明确同意后再执行
- 修改前先查看现状:先执行
read获取当前内容,再决定修改内容 - 事件 ID 仅从输出获取:命令输出中的 🆔 行即事件 ID,严禁猜测或编造
- 操作后回读验证再汇报:add/update/move/delete 执行后,用
read/list回读一次核对实际结果(标题+时间),确认与意图一致后再向用户汇报;不能只凭命令返回值就断言"已完成" - 失败不盲目重试:命令非零退出时,先读 ❌ 行(
--json时读 error 字段),按提示处理——权限/登录问题 → 重跑python outlook_setup.py;查不到 → 扩大时间范围或换搜索词;严禁原样重试同一命令。仍无法解决时对照references/troubleshooting.md处理,或如实上报用户
输出契约
命令输出是 agent 与脚本的接口,只依赖结构,不依赖文案:
- 锚点 + 结构提取:🆔/✅/⚠️/🆕 锚点、缩进、
HH:MM-HH:MM时段、JSON 结构是语言无关的协议;行内文案随语言,不作为提取依据 - 事件 ID 仅从 🆔 行获取(严禁猜测/编造);定期系列主事件 ID 从 🆕 行取("🆕 + 冒号"结构,冒号前文案随语言)
- 失败信号:退出码 1 + stderr
❌行;--json时 stdout 为{"error": ..., "exit": 1} - 程序化/批量场景一律加
--json:stdout 纯净 JSON,无人类提示混入
常见任务
"看看我这周/下周的安排"
→ week 看本周,list --days 7 看未来 7 天。想看更久用 list --days 30;看过去的用 list --past 30。
"我昨天加的那件事,改到今天"
→ ① list --created-after <昨天的日期> 找到它,记下 🆔 → ② read 确认是这件 → ③ move --days 1(或 --to 今天,保留原时段)→ ④ 回读核对后告诉用户"已从昨天 X 点改到今天 X 点"。关键词足够独特时也可一步完成:move --search "关键词" --days 1(唯一匹配直接操作,多匹配会列出候选)。
"加一个周五下午的会,提前10分钟提醒"
→ add "会议名" "本周五 15:00" "本周五 16:00" --remind 10。
"今天下午两点的会" → add "会议名" "今天 14:00" "今天 15:00"。相对时间词由命令按系统当前日期解析,输出会显示具体日期,确认无误即可。只给日期没给具体时间会按全天处理;默认会提示时间冲突,不阻断。
"把每周例会改成周三"
→ 定期日程的"每次"和"整个系列"是两回事:先 read 拿系列主事件 ID(🆕 行)→ update <主ID> --repeat "每周三"。注意:改系列规则会重置之前单独改过的某几次,先提醒用户。
"周五下午几点有空"
→ free "2026-08-14" --from 09:00 --to 18:00,会列出空闲时间段。
"周五那个会找不到了"
→ ① list --search "会议" 无结果时,先确认搜索词与时间范围(默认只查未来 7 天)→ ② 用 list --days 14 或 --past 扩大范围 → ③ 仍无则如实告诉用户"没找到"并给出建议,不编造日程。
"日历连不上了 / 权限报错"
→ ① 跑 status 确认连接与登录状态 → ② 提示 invalid_grant/401/403 时按 references/troubleshooting.md 处理(通常重跑 python outlook_setup.py 重新授权)→ ③ 网络问题可稍后重试一次,仍失败如实上报。
关键概念
- 定期日程(每周例会、每月 15 日……):对"某一次"执行的修改/删除仅影响该次;修改规则、删除整个系列须操作主事件。详见
references/recurring-events.md - 运行环境:Windows / Linux / macOS 均可;命令示例中的
python在部分系统(如 macOS)为python3,按实际解释器名运行即可 - 时间输入:时段用
YYYY-MM-DD HH:MM("下午3点" =15:00),全天只给日期;支持相对时间(今天/明天/本周X/下周X及英文today/this friday等,可带时刻),由命令按运行时刻系统时钟解析——不要自己推算日期(完整约定见references/commands.md)。时区自动按电脑本地时区处理,跨时区自动换算;探测异常时用TZ环境变量指定(如TZ=Asia/Shanghai)。全天日程按 Outlook 邮箱首选时区写入,机器时区与邮箱时区不同也不会跨天显示;此功能需要MailboxSettings.Read权限。完整授权共 3 个权限:Calendars.ReadWrite(日程读写)、MailboxSettings.Read(邮箱时区)、User.Read(登录身份),升级后请重跑一次python outlook_setup.py重新授权 - 确认与脚本交互:脚本默认会再次询问确认;agent 场景应直接使用
-y跳过(非交互环境中输入不可用时,脚本会自动取消) - 输出语言:默认按系统语言自动选择(中文系统 → 中文,其他 → 英文);可用
--lang zh|en或环境变量OCAL_LANG覆盖。提取信息只依赖「输出契约」中的锚点与结构,与语言无关 - 首次运行自动安装依赖:脚本首次运行缺少
requests/msal/tzdata时会自动 pip 安装。tzdata缺失会导致 Windows 时区解析失败、日程时间偏移,必须保留。安装失败时会给出手动命令;若提示"依赖仍缺失",需重启终端
详细参考
| 文件 | 什么时候读 |
|---|---|
references/commands.md | 需要完整参数列表和更多示例时 |
references/recurring-events.md | 涉及定期日程(创建/改单次/删系列)时 |
references/configuration.md | 首次连接日历、换账户、自带 Azure 应用时 |
references/troubleshooting.md | 出错、报错、结果不对时 |
相关技能
让 OpenClaw 代理通过 Microsoft Graph API 接入个人微软账户,读写 Outlook 邮件、日历事件和 To Do 任务。
Read and write the signed-in user's Microsoft 365 / Outlook.com personal calendar via Microsoft Graph. Calendar API surface only — but note: this skill shares one device-code login with the outlook-contacts and outlook-todo skills, so the shared consent also grants their Calendars/Tasks/Contacts read-write scopes (fully disclosed in the Scope table below). Use when the user wants to list today's events, look at next week, create / update / delete a single event by id, or check token status. Trigger keywords: "outlook calendar", "ms calendar", "graph calendar", "我的 outlook 日历", "微软日历".
通过 Microsoft Graph 接入 Outlook,读取、发送、管理邮件、文件夹、日历事件和联系人,OAuth 由平台托管。
Teamup Calendar (teamup.com). Use this skill for ANY Teamup Calendar request — reading, creating, updating, and deleting data. Whenever a task involves Teamup Calendar, use this skill instead of calling the API directly.
Google Calendar (workspace.google.com). Use this skill for ANY Google Calendar request — reading, creating, updating, and deleting data. Whenever a task involves Google Calendar, use this skill instead of calling the API directly.