Install
openclaw skills install @cat-xierluo/apple-smart-schedule把一句自然语言(机票/高铁/开庭/会议/截止日期/聚会/看病等)或一张票据截图,自动变成苹果「日历」事件 + 一串按事件类型智能提前的「提醒事项」。在 macOS 上运行、经 iCloud 同步到 iPhone/iPad。当用户说「帮我加个日程/提醒」「机票 MU5137 8:30 起飞提醒我」「下周三下午开庭提前提醒」「G1234 高铁」「上诉期 15 号截止」「提前 2 小时提醒我」「把这个行程加到日历」等任何要把时间安排写进苹果日历或提醒事项的场景,都必须用本 skill。仅 macOS。
openclaw skills install @cat-xierluo/apple-smart-schedule本 skill 仅在 macOS 上运行:它通过 osascript/remindctl 调用 Mac 自带的「日历」和「提醒事项」App 来创建日程。
用户用大白话说一件事(或发张截图),本 skill:
通用场景(同一套逻辑,不限于出行):
| 类型 | 示例输入 | 智能默认提前量 |
|---|---|---|
| ✈️ 航班 | "东航 MU5137 7/20 8:30 浦东起飞" | 前1天9点 + 前3h + 前1h |
| 🚄 高铁 | "G1234 北京南→上海虹桥 8/1 14:00" | 前1h + 前30min |
| ⚖️ 开庭 | "下周三 14:00 开庭" | 前1天9点 + 前3h + 前1h |
| 💼 会议 | "明天上午 10 点开会" | 前1天9点 + 前1h |
| ⏰ 期限 | "15 号上诉期截止" | 前3天 + 前1天 + 当天9点 |
| 🍻 社交 | "周五晚和张总吃饭" | 前1天9点 + 前2h |
| 🎯 其他 | "后天上午去体检" | 前1h |
读 $SKILL_DIR/config/config.json,拿到:时区、默认日历名 default_calendar、默认提醒清单名 default_reminder_list、各类事件提前量 lead_times。
再读 $SKILL_DIR/references/lead-times.md,掌握事件类型判断规则和提前量计算方法。
config.timezone(默认 Asia/Shanghai)理解。含糊时(如"下周三"未指定时区、只说"下午"),按最常见理解并在回执里点明你的理解,让用户一眼能纠正。按 references/lead-times.md 的关键词表归类到 flight / train / court / meeting / deadline / social / default 之一。一条消息可能含多个事件(如出差=航班+到达后会议),分别处理。
从 config.lead_times[类型] 取数组,按 lead-times.md 的格式规则把每条换算成绝对时间(ISO,Asia/Shanghai)。
用户当次覆盖优先:若用户明说"提前 X 小时""只提醒一次",则当次只用用户指定的,忽略默认。
调用脚本(路径用 $SKILL_DIR/scripts/):
# 建 1 个日历事件
$SKILL_DIR/scripts/create_event.sh "<标题>" "<default_calendar>" "<开始ISO>" ["<结束ISO>"] ["<地点>"] ["<备注>"]
# 对每个提前量,建一条提醒
$SKILL_DIR/scripts/create_reminder.sh "<标题>" "<default_reminder_list>" "<提醒绝对ISO>"
✈️ MU5137 上海浦东→北京首都references/lead-times.md 的「航班详细字段录入模板」,把 航司/舱位/机型/飞行时长 整理进事件备注(create_event.sh 第6参数),航站楼进地点(第5参数)。不录乘客/机票号/订单号(没必要、有隐私顾虑)。✈️ MU5137 值机打包(前1天)、🚄 G1234 该去车站了(前1h)、⚖️ 开庭准备(前3h)。remindctl 时用 osascript(提醒仍能创建,只是不能查/改/删)。给用户一个简短清单,例如:
已为你安排 ✈️ MU5137(2026-07-20 08:30,上海浦东 T2)
📅 日历事件已建 →「个人」日历
⏰ 提醒事项已建 3 条:
• 07-19 09:00 值机打包(前1天)
• 07-20 05:30 该去机场了(前3h)
• 07-20 07:30 开始登机(前1h)
(经 iCloud 同步到你的 iPhone/iPad,稍等片刻可在手机上看到)
config/config.json 还不存在,从模板复制一份:
cp config/config.example.json config/config.json
bash $SKILL_DIR/scripts/setup_check.sh
config.json 的 default_calendar,清单名填进 default_reminder_list。填错不会报错——脚本会兜底落到第一个日历/默认清单,但名字对才会落到你想要的地方。
config.json是你的本地配置(被 .gitignore 忽略、不提交);config.example.json是入库的默认模板。
想调整各类事件的提前量,直接改 config.json 的 lead_times(格式见 references/lead-times.md)。
提醒事项默认用 osascript(只能创建)。装上 remindctl 后还能查/改/删:
brew install steipete/tap/remindctl
装不装不影响创建功能,本 skill 会自动探测。
| 脚本 | 作用 |
|---|---|
scripts/create_event.sh | 建日历事件(osascript) |
scripts/create_reminder.sh | 建提醒(remindctl 优先,降级 osascript) |
scripts/list_calendars.sh | 列出所有日历名 |
scripts/list_reminder_lists.sh | 列出所有提醒清单 |
scripts/setup_check.sh | 首次自检:依赖、权限、日历/清单名 |