用 OpenClaw 定时更新伊朗新闻,并持续回帖到论坛主题, 并且特意调用subagent

这不是一个“定时抓新闻”的小脚本,而是一条完整的 OpenClaw 自动化链路:定时触发、子代理执行、抓取新闻、整理摘要、回帖到固定主题、更新状态文件。

如果你想做一个“每小时自动检查新闻,并把新进展持续追加到同一个帖子里”的任务,这个案例可以直接参考。

这个任务的名字是:update-iran-news-hourly

对应的论坛帖子地址是:

  • https://www.sunai.net/t/topic/1185

它的目标很明确:每小时检查一次伊朗相关冲突新闻;如果过去 1 小时内有足够重要的新进展,就整理成一条结构化摘要,回复到同一个论坛主题里;如果没有显著更新,就静默跳过。


一 这套方案的核心是什么

一句话概括:

OpenClaw 负责定时调度和执行编排,subagent 负责实际跑任务,新闻内容通过网页抓取获取,最后把结果持续回复到固定的论坛主题里。

完整链路是这样:

暂时无法在飞书文档外展示此内容

这个任务不是“每小时发一条消息”那么简单,它有两个关键点:

  1. 只在有显著新增进展时才发帖

  2. 不是新开帖子,而是持续更新同一个主题

这两个点决定了它更像“持续战况追踪”,而不是“定时报平安”。


二 过程简述

  1. 在 OpenClaw 里写好任务文档 tasks/update-iran-news.md

  2. 用 cron 每小时触发一次

  3. 触发时使用 sessions_spawn 启动 subagent 执行任务

  4. 任务里用 web_fetch 抓 Google News 的相关新闻

  5. 对新闻做筛选,判断过去 1 小时内是否有重大新增

  6. 如果有,就整理成固定格式的 Markdown 摘要

  7. 通过 Discourse API 回复到固定主题 https://www.sunai.net/t/topic/1185

  8. 无论发不发帖,都更新本地状态文件,避免重复发同样的内容


三 逻辑拆分

这个任务适合拆成四部分。

1. 任务文档

任务文档负责定义:

  • 去哪里抓新闻

  • 抓什么关键词

  • 什么算“重大更新”

  • 发帖格式长什么样

  • 什么情况应该跳过

  • 成功和失败怎么判定

它相当于执行说明书。

2. 调度方式

调度方式负责定义:

  • 多久执行一次

  • 用什么 prompt 触发

  • 是否使用 subagent

  • 成功后是否静默

这个任务的配置是:

  • 任务名:update-iran-news-hourly

  • cron:0 * * * *

  • 时区:Asia/Shanghai

  • thinking:low

  • 触发方式:OpenClaw cron + subagent

3. 发布目标

这个任务不是把内容发到聊天软件,而是持续回复到固定论坛主题:

  • 论坛:https://www.sunai.net

  • 主题:https://www.sunai.net/t/topic/1185

这意味着它的重点不只是“生成内容”,而是“持续维护一个主题帖的更新节奏”。

4. 状态管理

这个任务必须有状态文件,不然很容易重复发帖。

当前状态文件是:

  • ~/.openclaw/workspace/cron-logs/iran-news-state.json

它至少要记录这些信息:

  • 上次检查时间

  • 上次更新时间

  • 上次发帖 ID

  • 已见过的新闻 URL

  • 最近的伤亡统计

  • 当前战争状态


四 任务文档示例

任务文档位置:

~/.openclaw/workspace/tasks/update-iran-news.md

下面是这一类任务的核心写法。

## 伊朗新闻更新任务

**任务:**
1. 使用 `web_fetch` 工具抓取 Google News(英文搜索)的最新冲突新闻。搜索关键词:Iran Israel US conflict。
2. 整理过去1小时内最新、最重要的冲突进展。
3. 使用 `humanizer-zh` Skill 处理新闻摘要,确保内容简洁、理性、直接,并避免 AI 风格。
4. 严格按照模板格式生成报告。
5. 如果搜索不到足够显著的新闻,则不回复帖子,但更新本地状态文件。
6. 使用 Discourse API 回复 SunAI 论坛帖子 1185。
7. 更新状态文件:`~/.openclaw/workspace/cron-logs/iran-news-state.json`
8. 若任务成功但过去 1 小时无显著新增重大进展,应输出 `ANNOUNCE_SKIP`。

完成后静默:如果任务成功且无异常,最终必须只回复 `ANNOUNCE_SKIP`;若失败再返回错误信息。

这类任务有两个很重要的要求:

  • 只在有新内容时发布

  • 没有新内容也要更新状态

否则要么刷屏,要么重复发旧闻。


五 cron 任务描述怎么写

这里同样适用一个经验:cron 描述不要太重,详细规则写进任务文档。

当前这条任务实际使用的 prompt 是:

使用 sessions_spawn 启动一个 subagent 执行任务:update-iran-news。严格按 ~/.openclaw/workspace/tasks/update-iran-news.md 执行;成功仅输出 ANNOUNCE_SKIP;失败输出错误原因。

这类写法的好处是:

  • cron 只负责触发

  • 具体规则都在任务文档里

  • 后面要调模板、调来源、调判断条件时,不用频繁改 cron


六 怎么新建这个 cron 任务

方式 A:直接用 OpenClaw 的 cron 命令创建

openclaw cron add \
  --schedule "0 * * * *" \
  --prompt "使用 sessions_spawn 启动一个 subagent 执行任务:update-iran-news。严格按 ~/.openclaw/workspace/tasks/update-iran-news.md 执行;成功仅输出 ANNOUNCE_SKIP;失败输出错误原因。" \
  --thinking low

这条配置的意思是:

  • 每小时整点执行一次

  • 通过 subagent 执行任务文档

  • 成功就静默

  • 失败才报错

方式 B:直接让 agent 帮你创建

如果不想手敲命令,可以直接这样说:

请帮我创建一个 OpenClaw cron 任务:
- 名称:update-iran-news-hourly
- 执行时间:每小时整点一次(Asia/Shanghai)
- 执行内容:使用 sessions_spawn 启动一个 subagent 执行任务:update-iran-news。严格按 ~/.openclaw/workspace/tasks/update-iran-news.md 执行;成功仅输出 ANNOUNCE_SKIP;失败输出错误原因。
- thinking: low

如果已有同名任务,就更新它,不要重复创建。
创建完成后,把任务 ID 和最终配置回给我。

七 为什么这个任务要用 subagent

这个任务适合用 subagent,而不是直接在主链路里跑,原因很实际:

  • 它是定时任务,不需要占住主会话

  • 它会抓网页、整理内容、做判断,链路比普通提醒长

  • 它还要回帖和写状态文件,失败时也需要留出排查空间

所以更稳的方式是:

cron 负责叫醒,subagent 负责干活。

这样任务边界更清楚,主链路也更干净。


八 需要用到的能力

能力 / 工具 用途 说明
web_fetch 抓取 Google News 新闻页 用来拿最新冲突新闻内容。
humanizer-zh 优化摘要文风 让最终内容更简洁、理性、直接。
Discourse API / discourse 回复论坛主题 把更新持续发到同一个主题帖里。
OpenClaw cron 定时触发 每小时整点运行一次。
sessions_spawn / subagent 隔离执行任务 让任务在独立执行链路中完成。
状态文件 防重复发布 记录上次检查、上次发帖和已见新闻。

九 这个任务最值得保留的几个设计点

  1. 不是有定时就发,而是先判断值不值得发

  2. 不是每次新开帖子,而是持续更新同一个主题

  3. 不是只看是否成功发帖,还要维护状态文件

  4. 不是主会话硬跑,而是交给 subagent 独立执行

这几个点结合起来,任务就会很像一个“持续运行的专题更新器”,而不是一个粗糙的自动发帖脚本。


十 最短复刻版

如果只想照着搭一个同类任务,可以直接按下面这个思路走:

  1. 写一份任务文档,定义数据源、模板和跳过条件

  2. 用 OpenClaw cron 设成每小时运行一次

  3. 用 subagent 执行任务,避免主链路变重

  4. 用网页抓取拿新闻,再筛选过去 1 小时内的重大进展

  5. 把内容持续回复到同一个帖子,而不是每次新发

  6. 同时维护状态文件,避免重复更新

这样,一个可持续运行的新闻追踪任务就搭起来了。


帖子地址

最后把这次案例对应的帖子地址单独列出来,方便直接查看:

  • SunAI 主题帖:https://www.sunai.net/t/topic/1185

如果你之后要复刻别的新闻追踪任务,只需要替换关键词、目标主题和模板,就可以沿用同一套思路。