宝宝明日提醒
为家长搭一套"每天准点提醒宝宝明天穿什么、吃什么"的自动推送。
一次配置,之后每天自动跑。核心价值不在"报天气",而在天气对比 × 分龄规则产出的可执行建议——比如"明天下雨降温 5℃,外套换加厚款,饮食安排温热粥羹"。
何时使用本技能
- 用户想给宝宝设置每日穿衣/饮食提醒
- 用户问"明天给宝宝穿什么""这个天气宝宝吃什么合适"
- 用户想用企业微信机器人 / 微信推送育儿消息
- 用户想用 GitHub Actions 或本地定时任务跑育儿推送
核心能力
| 能力 | 实现方式 |
|---|---|
| 天气获取 | Open-Meteo 免费 API(无需 key),Geocoding 城市名 → 经纬度 |
| 天气对比 | 今天 vs 明天的温度、体感、湿度、风力、降水概率 |
| 穿衣推荐 | 10 档体感温度表 × 月龄修正 × 早晚温差补充 |
| 饮食推荐 | 5 个月龄阶段 × 餐次结构 × 天气标签加权选材 |
| 定时推送 | GitHub Actions(推荐)/ Windows 任务计划 / 手动 |
| 推送渠道 | 企业微信机器人 / PushPlus / Server酱 / 钉钉 / 微信服务号 / 通用 Webhook |
零第三方依赖:纯 Python 标准库,GitHub Actions 上不需要 pip install,本地也不用配国内镜像。
工作流程
第 1 步:收集 4 个必填信息
主动向用户确认(缺哪个问哪个,不要一次性问一堆):
- 宝宝昵称(如"小豆丁")
- 出生日期(
YYYY-MM-DD,用于算月龄) - 性别(男 / 女)
- 所在城市(用市级名称,如"杭州",不要写"杭州市余杭区")
再确认两个选填项:
- 推送时间(默认 21:00)
- 推送渠道(默认企业微信机器人;若选企业微信,让用户按
references/deploy.md第一节拿 Webhook)
第 2 步:生成配置文件
照 assets/config.example.json 的格式,改写成用户的真实信息,存到工作目录或指定位置:
{
"baby": {"name": "小豆丁", "birth_date": "2024-03-15", "gender": "女"},
"location": {"city": "杭州", "timezone": "Asia/Shanghai"},
"schedule": {"push_time": "21:00", "timezone_offset": 8},
"channel": {"type": "wecom", "wecom_webhook": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx"},
"message": {"format": "markdown", "show_footer": true}
}
第 3 步:先试跑,再部署
务必先跑一次给用户看效果,确认穿衣和饮食建议符合预期,再谈部署:
python <本技能目录>/scripts/baby_daily.py -c <config.json> --dry-run
--dry-run 只在终端打印,不会真的推送。用户满意后再去掉 --dry-run 发真实消息。
第 4 步:选择部署方式
按 references/deploy.md 操作,优先推荐 GitHub Actions:
| 方式 | 适合 | 要点 |
|---|---|---|
| GitHub Actions | 不想开电脑 | cron 用 UTC,北京时间需 减 8 小时 |
| Windows 任务计划 | 家里电脑常开 | 电脑休眠时不会跑 |
| 手动 / 对话触发 | 先试效果 | 直接让智能体跑一次 |
命令速查
python scripts/baby_daily.py # 正式跑一次并推送
python scripts/baby_daily.py --dry-run # 只打印不推送
python scripts/baby_daily.py --self-test # 离线自检规则引擎(不联网)
python scripts/baby_daily.py -c config.json # 指定配置文件
python scripts/baby_daily.py --for today # 生成"今天"的建议(默认明天)
python scripts/baby_daily.py --timeout 60 # 延长网络超时
文件清单
| 文件 | 用途 |
|---|---|
scripts/baby_daily.py |
主程序:配置 → 天气 → 规则引擎 → 渲染 → 推送 |
scripts/package_zip.py |
打包成符合导入规范的 ZIP |
references/clothing_rules.md |
穿衣档位表、洋葱穿衣法、月龄修正规则的完整说明 |
references/food_rules.md |
辅食月龄规则、食材标签体系、选材算法、安全红线 |
references/deploy.md |
三种部署方式、配置详解、常见问题排查 |
references/sources.md |
依据来源、可靠度分级、免责边界(溯源区块的完整展开) |
assets/config.example.json |
配置模板 |
assets/workflow.yml |
GitHub Actions 定时任务模板 |
assets/message_template.md |
消息结构说明与定制入口 |
定制需求的处理方式
| 用户诉求 | 改哪里 |
|---|---|
| 换宝宝 / 城市 / 时间 / 渠道 | 只改 config.json,不要改代码 |
| 改穿衣话术、加减档位 | scripts/baby_daily.py 的 CLOTHING_LEVELS |
| 加家常菜、调口味偏好 | scripts/baby_daily.py 的 FOOD_POOL(详见 food_rules.md 第五节) |
| 改推送时间 | GitHub Actions 改 cron(UTC = 北京时间 - 8) |
| 关掉页脚 / 溯源区块 | "message": {"show_footer": false, "show_source": false} |
| 改署名(机构/本人) | "message": {"author": "某某母婴护理中心"} |
硬性约束
- 每条建议必须带溯源。推送消息末尾的「📋 建议溯源」区块回答四件事:谁生成的、什么时候的数据、依据什么、可靠吗。默认开启,不要为了省字去掉。
- 企业微信 markdown 上限 4096 字节,且不支持表格和
-列表语法。脚本已按此约束渲染(用 emoji 前缀独立成行),改动渲染逻辑时不要引入表格。典型输出约 2400 字节,加溯源后仍有余量。 - Webhook / token 等同密码,提醒用户不要提交到公开仓库、不要外发。
- 建议优先用市级的城市名,地理编码库对中文区县级名称支持差。
- GitHub Actions 定时任务连续 60 天无仓库活动会被暂停,需提醒用户。
打包成可导入的 ZIP
用户要求"打包成 ZIP 上传到平台"时:
python scripts/package_zip.py -o <输出路径>.zip
平台的导入规范(硬性,不满足会导入失败):
- ZIP 格式,单包 ≤ 10MB,文件总数 ≤ 300
- 只允许纯文本文件,不允许二进制
- ZIP 根目录下必须直接是
SKILL.md,不能再套一层同名文件夹
package_zip.py 已按此规范生成:包内路径形如 SKILL.md、scripts/baby_daily.py、references/xxx.md,不带 baby-tomorrow-reminder/ 前缀,并在生成后自动校验结构。
输出语言与语气
给用户的说明用中文,先给结论再讲细节。
推送内容本身已经渲染好,不要二次改写——那会破坏 emoji 与分区块的排版。
回答用户追问时的规矩
用户追问"这建议可靠吗 / 依据是什么 / 谁说的"时,不要含糊其辞,也不要过度吹嘘:
- 数据来源实说:天气来自 Open-Meteo 专业数值预报,可自行打开接口 URL 核对
- 规则来源实说:穿衣是按气象穿衣指数分档思路做的推算;饮食的分龄原则来自《中国居民膳食指南(2022)》,但具体菜名是脚本按天气标签随机组合的参考菜单,不是营养师定制食谱
- 可靠性分级实说:🟢 天气数据与安全红线(1 岁内不加盐糖蜂蜜等)可直接依赖;🟡 穿衣档位与菜名组合属个体差异较大的通用推算
- 边界实说:不构成医疗意见。生病期间、有过敏史、早产儿、特殊体质等情况应遵医嘱
- 不要编造:不虚构医生姓名、医院、机构背书或"临床验证"。本技能是自动化规则引擎,如实说明即可
完整依据清单见 references/sources.md,可直接引用其中的可靠度分级表。