Coding

苹果智能日程提醒

Try it

把一句自然语言(机票/高铁/开庭/会议/截止日期/聚会/看病等)或一张票据截图,自动变成苹果「日历」事件 + 一串按事件类型智能提前的「提醒事项」。在 macOS 上运行、经 iCloud 同步到 iPhone/iPad。当用户说「帮我加个日程/提醒」「机票 MU5137 8:30 起飞提醒我」「下周三下午开庭提前提醒」「G1234 高铁」「上诉期 15 号截止」「提前 2 小时提醒我」「把这个行程加到日历」等任何要把时间安排写进苹果日历或提醒事项的场景,都必须用本 skill。仅 macOS。

What it does

把一句自然语言(机票/高铁/开庭/会议/截止日期/聚会/看病等)或一张票据截图,自动变成苹果「日历」事件 + 一串按事件类型智能提前的「提醒事项」。在 macOS 上运行、经 iCloud 同步到 iPhone/iPad。当用户说「帮我加个日程/提醒」「机票 MU5137 8:30 起飞提醒我」「下周三下午开庭提前提醒」「G1234 高铁」「上诉期 15 号截止」「提前 2 小时提醒我」「把这个行程加到日历」等任何要把时间安排写进苹果日历或提醒事项的场景,都必须用本 skill。仅 macOS。

The skill document

apple-smart-schedule · 苹果智能日程提醒

⚠️ 平台限制(先读)

本 skill 仅在 macOS 上运行:它通过 osascript/remindctl 调用 Mac 自带的「日历」和「提醒事项」App 来创建日程。

  • ✅ 创建结果经 iCloud 自动同步到你登录同一 Apple ID 的 iPhone / iPad。
  • ❌ 不能直接在 Windows / Android / Linux 上用,也不能在 iPhone 上直接运行这些脚本。
  • 授权(重要):首次运行脚本时,macOS 会弹出「xxx 想要控制「日历」/「提醒事项」」对话框,点「好」即可(只此一次)。每换一个终端 App 或新环境首次用,都会再弹一次——因为授权是按"调用的终端 App"分别记录的(Terminal 授权了不代表 iTerm 也授权了);点过就好,无需去设置里找。只有当弹窗没出现、或曾经点过"不允许"时,才去「系统设置 › 隐私与安全性 › 自动化」把对应终端的 Calendar / Reminders 开关手动打开。

它做什么

用户用大白话说一件事(或发张截图),本 skill:

  1. 解析出 事件标题、开始时间、结束时间(可选)、地点、事件类型
  2. 按事件类型套用 默认提前量(飞机/高铁/开庭/会议/截止/社交 各不同);
  3. 在苹果日历建 1 个事件,在提醒事项建 一串提前提醒
  4. 回执告诉用户建了什么。

通用场景(同一套逻辑,不限于出行):

类型示例输入智能默认提前量
✈️ 航班"东航 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

核心流程(AI 执行步骤)

第 0 步:读配置(每次都要)

$SKILL_DIR/config/config.json,拿到:时区、默认日历名 default_calendar、默认提醒清单名 default_reminder_list、各类事件提前量 lead_times。 再读 $SKILL_DIR/references/lead-times.md,掌握事件类型判断规则提前量计算方法

第 1 步:解析输入

  • 文字输入:直接从用户消息提取 时间(日期+时分)、事件、地点、航班号/车次 等。
  • 截图输入(机票确认页、12306、微信邀约等):用视觉能力读出上述字段。
  • 时间按 config.timezone(默认 Asia/Shanghai)理解。含糊时(如"下周三"未指定时区、只说"下午"),按最常见理解并在回执里点明你的理解,让用户一眼能纠正。
  • 没给结束时间 → 事件默认时长 60 分钟(会议/社交够用;航班/高铁若能推断时长更好)。

第 2 步:判断事件类型

references/lead-times.md 的关键词表归类到 flight / train / court / meeting / deadline / social / default 之一。一条消息可能含多个事件(如出差=航班+到达后会议),分别处理。

第 3 步:算出每条提醒的绝对时间

config.lead_times[类型] 取数组,按 lead-times.md 的格式规则把每条换算成绝对时间(ISO,Asia/Shanghai)。

用户当次覆盖优先:若用户明说"提前 X 小时""只提醒一次",则当次只用用户指定的,忽略默认。

第 4 步:创建

调用脚本(路径用 $SKILL_DIR/scripts/):

# 建 1 个日历事件
$SKILL_DIR/scripts/create_event.sh "<标题>" "" "<开始ISO>" ["<结束ISO>"] ["<地点>"] ["<备注>"]

# 对每个提前量,建一条提醒
$SKILL_DIR/scripts/create_reminder.sh "<标题>" "" "<提醒绝对ISO>"
  • 日历事件标题示例:✈️ MU5137 上海浦东→北京首都
  • 航班/出行录关键字段:参照 references/lead-times.md 的「航班详细字段录入模板」,把 航司/舱位/机型/飞行时长 整理进事件备注(create_event.sh 第6参数),航站楼进地点(第5参数)。不录乘客/机票号/订单号(没必要、有隐私顾虑)。
  • 提醒标题加区分后缀,让用户在清单里一眼看清:✈️ MU5137 值机打包(前1天)🚄 G1234 该去车站了(前1h)⚖️ 开庭准备(前3h)
  • 脚本会自动降级:未装 remindctl 时用 osascript(提醒仍能创建,只是不能查/改/删)。

第 5 步:回执

给用户一个简短清单,例如:

已为你安排 ✈️ 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,稍等片刻可在手机上看到)

首次使用配置(重要)

  1. config/config.json 还不存在,从模板复制一份:
    cp config/config.example.json config/config.json
    
  2. 跑自检,拿到你机器上真实的日历名和提醒清单名:
    bash $SKILL_DIR/scripts/setup_check.sh
    
  3. 把输出里的日历名填进 config.jsondefault_calendar清单名填进 default_reminder_list。填错不会报错——脚本会兜底落到第一个日历/默认清单,但名字对才会落到你想要的地方。

config.json 是你的本地配置(被 .gitignore 忽略、不提交);config.example.json 是入库的默认模板。

想调整各类事件的提前量,直接改 config.jsonlead_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首次自检:依赖、权限、日历/清单名

注意

  • 这是改用户个人日历/提醒的操作。创建是安全的、可逆的(用户可在 App 里删);但如本 skill 未来扩展删除/批量操作,务必先和用户确认目标。
  • 提醒数据是个人隐私,不要把日历/提醒内容发到网络或第三方服务。解析只在本地完成。
  • 若用户其实想要的是飞书/钉钉/Outlook 等非苹果日历,本 skill 不适用——那些需要各自的工具。

Related skills

Use when the user wants the macOS 12+ Apple-enhanced SYSU workflow layer, especially natural-language requests such as 把课表同步到日历、把雨课堂 ddl 加到提醒事项、把宣讲会或招聘会写进日历、...

19 installs

面向个人开发者的 Outlook 日历提醒 Skill 免费版。每晚 22:00 扫描明日 Outlook 日历, 将上午日程与下午日程分别按"提前 2 小时"和"当天 12:00 统一"两种基础策略推送飞书提醒. 基于 owa-outlook skill 提供的 owa_calendar.py 读取日历数据,通过 skill-platform CLI 注册 cron. 适用于个人每日日程前置提醒的基础场景。高级特性(跨时区处理、团队群共享、安静时段、 多渠道通知)请升级付费版.

全库唯一的提醒发送方:把其他 SKILL 入队的复习、错题复测、计划任务、探索任务合并成每天一条摘要发出。只在学生说出**明确的提醒动词**时激活:“帮我设置提醒”“提醒我复习二次根式”“我今天该复习什么”“暂停提醒”“查看我的提醒”。提到“提醒”但不是要操作提醒的话(“老师提醒过我”“提醒一下自己要早睡”)不激活;其他 SKILL 完成任务后也不自动入队,要学生当轮说“要”。提醒内容本身不在这里生成——错题由错题本、词卡由英语词汇 DNA、任务由 30 天学习计划提供,本 SKILL 只做排期、合并与发送。未获授权时只给“建议提醒方案”,不创建实际提醒,也不做闲置唤醒。

5 installs

读取飞书/Lark 消息文本,识别是否包含需要提醒的待办和截止时间,并在由系统根据消息语义和时间跨度自动判断,更偏宽松一点的预留时间发出一次提醒。适用于飞书机器人在私聊或群聊中处理诸如“今天 5 点前给我”“明天下午三点提醒我”“周五前记得提交”这类消息;默认提醒给原消息发送者,并将提醒发回原飞书会话。识别成功后...

18 installs

把一句话、截图或邮件中的日程与截止事项写入 macOS 系统日历并设置提醒,支持多邮箱定时扫描与跨账户去重。当用户说"提醒我/帮我记一下/安排一下"、提到会议或截止时间(deadline/DDL/截止)、要配置邮箱日程提醒、查询最近建的提醒或运行状态时使用。

1 installs

This skill should be used when the user asks about Apple app data via the native Swift MCP — Calendar, Reminders, Contacts, Maps, Mail, Messages, Notes, or Photos on macOS. Triggers on phrases like "check my calendar", "find contact", "send iMessage", "search my notes", "recent emails", "find photos of", or any macOS-native app automation. Requires macOS 14+ on Apple Silicon; faster than the AppleScript-backed Node variant.

12 installs