Lunar Reminder
按农历日期设置提醒,支持生日、节日等重要日期的农历提醒。
数据文件
事件数据保存在:{{skillDir}}/data/events.json
Agent 工作流
1. 用户添加农历提醒
解析输入:从用户输入中提取事件名、农历月份、农历日期、提前天数(默认1)。
农历月份映射:
| 名称 | 数字 |
|---|---|
| 正月/正/一月 | 1 |
| 二月/杏月 | 2 |
| 三月/桃月 | 3 |
| 四月/槐月 | 4 |
| 五月/榴月 | 5 |
| 六月/荷月 | 6 |
| 七月/兰月 | 7 |
| 八月/桂月 | 8 |
| 九月/菊月 | 9 |
| 十月/露月 | 10 |
| 十一月/冬月/冬 | 11 |
| 十二月/腊月/腊 | 12 |
农历日期映射:
| 名称 | 数字 |
|---|---|
| 初一~初十 | 1~10 |
| 十一~二十 | 11~20 |
| 廿一/二十一~廿九/二十九 | 21~29 |
| 三十 | 30 |
执行步骤:
- 读取现有事件(文件不存在则创建空数组)
- 检查事件名是否已存在,存在则报错
- 计算当年公历日期(运行下方命令)
- 保存事件到文件
- 确认添加成功
农历转公历命令(在 {{skillDir}} 目录执行):
node -e "const {Lunar}=require('lunar-javascript');const l=Lunar.fromYmd(YEAR,MONTH,DAY);const s=l.getSolar();console.log(s.getYear()+'-'+String(s.getMonth()).padStart(2,'0')+'-'+String(s.getDay()).padStart(2,'0'));"
将 YEAR、MONTH、DAY 替换为实际值(如 2026, 2, 11)。
2. 用户查看提醒列表
读取 {{skillDir}}/data/events.json 文件,格式化输出每个事件的:
- 事件名
- 农历日期(月名+日名)
- 今年公历日期
- 提前提醒天数
3. 用户删除提醒
- 读取事件文件
- 过滤掉指定名称的事件
- 保存文件
- 删除对应 cron 任务:
openclaw cron rm "lunar_<事件名>"
4. 用户要求日期转换
农历转公历:
cd {{skillDir}} && node -e "const {Lunar}=require('lunar-javascript');const l=Lunar.fromYmd(YEAR,MONTH,DAY);const s=l.getSolar();console.log(s.getYear()+'-'+String(s.getMonth()).padStart(2,'0')+'-'+String(s.getDay()).padStart(2,'0'));"
公历转农历:
cd {{skillDir}} && node -e "const {Solar}=require('lunar-javascript');const s=Solar.fromYmd(YEAR,MONTH,DAY);const l=s.getLunar();const m=['','正月','二月','三月','四月','五月','六月','七月','八月','九月','十月','冬月','腊月'];const d=['','初一','初二','初三','初四','初五','初六','初七','初八','初九','初十','十一','十二','十三','十四','十五','十六','十七','十八','十九','二十','廿一','廿二','廿三','廿四','廿五','廿六','廿七','廿八','廿九','三十'];console.log(m[l.getMonth()]+d[l.getDay()]);"
5. 用户要求同步提醒
- 读取所有事件
- 对每个事件:
- 计算公历日期
- 减去提前天数得到提醒日期
- 执行 cron 命令
Cron 命令格式:
# 先删除旧任务
openclaw cron rm "lunar_<事件名>"
# 创建新任务
openclaw cron add --name "lunar_<事件名>" --cron "<分> <时> <日> <月> *" --message "🔔 农历提醒:<事件名>将在<N>天后到来" --tz "Asia/Shanghai"
数据格式
[
{
"name": "妈妈生日",
"lunarMonth": 2,
"lunarDay": 11,
"lunarMonthName": "二月",
"lunarDayName": "十一",
"advanceDays": 1,
"reminderTime": "09:00",
"note": "",
"createdAt": "2026-03-10T00:00:00.000Z"
}
]
使用示例
添加农历提醒:妈妈生日,二月十一,提前1天提醒
查看所有农历提醒
删除农历提醒:妈妈生日
农历二月十一是公历几号
同步农历提醒到定时任务