Read, send, and manage Outlook mail, folders, calendar events, and contacts through Microsoft Graph with managed OAuth.
Documents
outlook-calendar
Try itRead 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 日历", "微软日历".
What it does
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 日历", "微软日历".
The skill document
Outlook 日历技能
触发条件
只要用户问任何涉及日程、会议、安排、日历、工作、任务、事情的问题,必须调用此技能。
- "明天有什么安排" / "这周有什么会" / "本月日程"
- "帮我看看日历" / "我今天几点有会"
- "这个月会议一共多少小时"
- "我下周有啥工作" / "明天要做啥" / "这周有什么事"
- "下周安排" / "有啥任务" / "日程表看一下"
- 任何时间 + 安排/会议/事件/工作/任务/事情的组合问法
首次配置
敏感信息(账号密码、Cookie、Token)存放在 ~/.outlook/,不在 skill 目录内。
1. 创建配置文件
创建 ~/.outlook/config.json,内容如下:
{
"email": "your@company.com",
"password": "your_password",
"cookie_file": "/root/.outlook/cookies.json",
"cookie_max_age_days": 7,
"mfa_type": "authenticator_number_match"
}
2. 安装依赖
pip install playwright requests
playwright install chromium
3. 首次登录(MFA)
cd ~/.agents/skills/outlook-calendar
python login.py
脚本输出 [NUMBER:XX] 时,在 Microsoft Authenticator App 输入数字 XX 并批准,Cookie 自动保存到 ~/.outlook/cookies.json。
调用步骤
第一步:读取日历
cd ~/.agents/skills/outlook-calendar
python owa_calendar.py --today # 今天
python owa_calendar.py --tomorrow # 明天
python owa_calendar.py --week # 本周
python owa_calendar.py --month 2026-03 # 指定月份
python owa_calendar.py --range 2026-03-01 2026-03-31 # 自定义范围
第二步:处理 AUTH_FAILED
若输出 [AUTH_FAILED],Cookie 或 Token 过期,重新登录:
python login.py
第三步:整理输出
按用户问题整理回答:列出事件、统计总时长、按周分组等。 注意:API 返回时间为 UTC,需 +8 转换为上海时间。
文件结构
skill 目录(无敏感信息):
~/.agents/skills/outlook-calendar/
├── SKILL.md
├── login.py # MFA 登录,保存 Cookie 到 ~/.outlook/
└── owa_calendar.py # 日历读取(Token 模式)
敏感数据目录:
~/.outlook/
├── config.json # 账号密码(自行创建)
├── cookies.json # 登录 Cookie(login.py 自动生成)
└── token.json # Bearer Token 缓存(自动生成,1h 有效)
MFA 说明
- 类型:Authenticator 数字匹配
- Cookie 有效期:通常 1-7 天,过期重跑 login.py
- 多次失败会触发微软限速,等 15 分钟再试
Related skills
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.
Connect an OpenClaw agent to personal Microsoft accounts via Graph API to read and manage Outlook mail, calendar, and To Do tasks.
Read and write the signed-in user's Microsoft 365 / Outlook.com personal contacts via Microsoft Graph. No mail, no files, no directory access. Use when the user wants to list/search Outlook.com contacts, find phone numbers, or look up email addresses. Trigger keywords: "outlook contacts", "ms contacts", "graph contacts", "我的联系人", "查联系人", "outlook 联系人".
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.
Microsoft To Do (to-do.office.com). Use this skill for ANY Microsoft To Do request — reading, creating, updating, and deleting data. Whenever a task involves Microsoft To Do, use this skill instead of calling the API directly.