每天早上8:00,我的微信准时收到一条消息:
📊 晨间简报 | 3月31日 周一
🌤 成都:15-22°C,多云转晴
📧 新邮件:3封(2封工作,1封订阅)
📅 今日日程:10:00 产品评审,14:30 客户会议
📰 科技热点:OpenAI 发布 GPT-4.5,马斯克起诉…祝你今天高效!🚀
而我什么都没做。它在全自动运行。
为什么需要这个?
我有三个痛点:
- 早上信息分散:要打开天气、邮件、日历、新闻四个应用才能知道今天该干嘛
- 容易遗漏:有时候忘了看日历,错过会议;忘了看邮件,漏掉重要信息
- 启动慢:早上需要10分钟才能进入工作状态
我想要一个"一键开机"的感觉——睁眼就知道今天会发生什么。
方案设计
用 OpenClaw 的 heartbeat + cron + skills 组合:
cron (每天8:00)
↓
OpenClaw Agent 触发
↓
并行调用 skills:
├── weather (成都)
├── email (未读邮件)
├── calendar (今日日程)
└── news (科技热点)
↓
聚合生成简报 → 发送到微信
关键技术点:
- 并行执行:4个信息源同时拉取,总耗时 < 3秒
- 失败容错:某个接口挂了,简报继续生成,只是那一栏显示"获取失败"
- 自然语言生成:不用模板,让 LLM 把原始数据写成"人话"
核心代码
1. Skill 配置
~/.openclaw/skills/morning-brief/SKILL.md:
# Morning Brief Skill
调用外部 API 聚合晨间信息:
## 输出格式
- 天气:城市、温度、天气状况
- 邮件:未读数量 + 分类统计
- 日程:今日事件列表(时间+标题)
- 新闻:3-5条科技热点摘要
## 失败处理
任一信息源失败,标记为 null,简报继续生成
2. 简报生成 Prompt
system_prompt = """你是一个高效的晨间助手。根据以下信息生成一段简洁的晨间简报:
[天气数据]
[邮件数据]
[日程数据]
[新闻数据]
要求:
- 语气积极、专业但不刻板
- 用emoji增加可读性
- 控制长度在150字以内
- 如果某项数据为null,跳过该项"""
user_prompt = f"""今日信息:
天气:{weather or '获取失败'}
未读邮件:{email_stats or '获取失败'}
今日日程:{events or '无'}
科技热点:{news or '获取失败'}"""
3. Cron 配置
HEARTBEAT.md:
# 晨间简报定时任务
- 时间:每天 08:00 (Asia/Shanghai)
- 动作:执行 morning-brief skill
- 输出:发送到微信(openclaw-weixin)
效果与收益
运行 30 天后的数据:
| 指标 | 之前 | 之后 |
|---|---|---|
| 早晨信息获取时间 | 8-10 分钟 | 0 分钟(自动推送) |
| 遗漏会议/邮件次数 | 平均每周 1 次 | 0 次 |
| 早晨启动工作状态时间 | 15 分钟 | 5 分钟 |
| 心情评分(1-10) | 6 | 8 |
意外的收获:
- 倒逼信息整理:为了简报好看,我开始主动清理邮件、整理日历
- 社交货币:朋友看到我的简报说"卧槽这个帅",成了炫耀资本(笑)
- 可复用架构:这个框架后来被我用来做了"晚间断线提醒"、“周报复盘"等
踩过的坑
1. 时间区问题
最初用 UTC 时间,结果简报早上 8 点发出来的时候内容是"昨日日程”。改成 Asia/Shanghai 解决。
2. API 限额
新闻接口有调用限制🚫,我调试时疯狂触发,结果真早上没新闻了。加了本地缓存,同样查询 5 分钟内不走接口。
3. 消息太长
最初简报写了 300 多字,微信一条发不完被截断。后来强制限制 150 字。
下一步计划
- 个性化学习:让 Agent 学习我的阅读习惯,把最可能感兴趣的新闻排在前面
- 语音简报:周末用语音版,躺在床上听
- 智能延时:如果检测到我在休假,自动暂停简报
想复刻?
核心代码和 Skill 配置都在上面,可以直接复制使用。
飞哥的晨间简报,第 31 天。 🚀