今天吃饭的时候突然想起了多年前的一件事:和一个朋友聊天时说,想实现一个助手能根据设置的分类,每天早上自动整理新闻展示给我。这样一来,就能很方便的看到各种感兴趣的新闻。转眼已经过去十多年,时光匆匆……

前段时间在树莓派上部署了OpenClaw,于是想能否让他帮忙完成这件事,于是就有了这篇学习笔记。下图展示了2026-03-17的新闻简报:

1 每日新闻简报

1.1 news-summary

news-summary是一个用于获取新闻更新、每日简报或全球动态的OpenClaw Skill。他通过自动抓取新闻,做摘要,然后输出“每日简报”。其总体流水线如下:

1
2
3
4
5
6
7
8
9
RSS feeds
抓取新闻
抽取标题 + 内容
LLM总结
输出结构化结果

1.2 newspaper-brief

newpaper-brief是一个把“长文本”变成“手机友好的视觉内容”的OpenClaw Skill。其总体流水线如下:

1
2
3
4
5
6
7
JSON / 文本摘要
HTML 模板渲染
Headless 浏览器截图
PNG 图片

1.3 daily-news-brief-cn

在实际使用中,直接将上述两个Skills的进行结合总是不太稳定。于是,就把上述两个Skill结合起来,写成一个Skill。此外,由于国内网络的问题,我将新闻RSS源换成了人民网,36Kr和虎嗅。整体项目放在了Github仓库:daily-news-brief-cn

2 定时发送简报

我想让OpenClaw准时在每天早上08:00发送新闻简报,考虑到OpenClaw需要花上一些时间才能完成新闻收集和总结,因此我决定将任务分成两步:

  • 在07:50开始让OpenClaw去新闻RSS爬取新闻,并完成新闻总结
  • 在08:00发送结果到飞书

目前,OpenClaw的Cron还有很多bug,不太稳定。在探索了很多方法之后,最终还是直接修改配置文件,

1
~/.openclaw/cron/jobs.json

在jobs中添加下面两个任务:

  • create daily news brief

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
        {
          "id": "XXX",
          "agentId": "main",
          "name": "create daily news brief",
          "enabled": true,
          "deleteAfterRun": false,
          "schedule": {
            "kind": "cron",
            "expr": "45 7 * * *",
            "tz": "Asia/Shanghai"
          },
          "sessionTarget": "isolated",
          "wakeMode": "next-heartbeat",
          "payload": {
            "kind": "agentTurn",
            "message": "请使用daily-news-brief-cn技能生成每日新闻简报图片,确保存储路径和命名方式。"
          },
          "delivery": {
            "mode": "none"
          }
        }
    
  • send daily news brief

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
    {
      "id": "XXX",
      "agentId": "main",
      "name": "send daily news brief",
      "enabled": true,
      "deleteAfterRun": false,
      "schedule": {
        "kind": "cron",
        "expr": "0 8 * * *",
        "tz": "Asia/Shanghai"
      },
      "sessionTarget": "isolated",
      "wakeMode": "next-heartbeat",
      "payload": {
        "kind": "agentTurn",
        "message": "将workspace/media/daily-news-brief-cn/daily-news-brief-cn.png,通过飞书message发送过来。如果发送成功,请不要附带任何其他消息;如果发送失败,请告知。请勿创建飞书文档。"
      },
      "delivery": {
        "mode": "announce",
        "channel": "feishu",
        "to": "ou_xxxxx",             # 这里填上接收消息的飞书id
        "bestEffort": false
      }
    }
    

Reference

[1] news-summary: https://clawhub.ai/joargp/news-summary

[2] newspaper-brief: https://github.com/EisonMe/newspaper-brief