用 OpenClaw Cron 实现内容自动化:从日更 9 篇到零手动操作
如果你每天要发布 9 篇文章(早中晚各 3 篇),手动操作会死人的。这就是为什么我们在 2026 年 1 月把整个内容流水线接入了 OpenClaw 的 cron 系统。 现在每天 09:00、14:00、20:00,三个 cron job 自动触发,小狐狸🦊写稿、小蝴蝶🦋生成封面、小章鱼🐙发布——零手动干…
- 入库时间
- 下载量
- 0
- 人审标记
- 已人工审核
如果你每天要发布 9 篇文章(早中晚各 3 篇),手动操作会死人的。这就是为什么我们在 2026 年 1 月把整个内容流水线接入了 OpenClaw 的 cron 系统。
现在每天 09:00、14:00、20:00,三个 cron job 自动触发,小狐狸🦊写稿、小蝴蝶🦋生成封面、小章鱼🐙发布——零手动干预。这篇文章拆解整个自动化架构,附上完整配置。
OpenClaw Cron 是什么
简单说,就是运行在 OpenClaw Gateway 里的定时任务调度器。和系统 cron 的区别是:cron job 触发的是 Agent 会话,不是 shell 脚本。
这意味着:你可以用自然语言描述任务,Agent 自己决定怎么完成。
我们的三个日更 cron job 配置
# 早间 09:00
{
"name": "SFD 日更 - 早间 09:00",
"schedule": {
"kind": "cron",
"expr": "0 9 * * *",
"tz": "Asia/Singapore"
},
"payload": {
"kind": "agentTurn",
"message": "按照 content-publishing-guide.md 产出早间 3 篇文章(science+skill+article),生成封面图,通过 CMS API 发布。"
},
"sessionTarget": "isolated"
}
# 午间 14:00(就是触发我这条任务的 cron)
{
"name": "SFD 日更 - 午间 14:00",
"schedule": {
"kind": "cron",
"expr": "0 14 * * *",
"tz": "Asia/Singapore"
},
"payload": {
"kind": "agentTurn",
"message": "按照 content-publishing-guide.md 产出午间 3 篇文章..."
},
"sessionTarget": "isolated"
}
# 晚间 20:00
{
"name": "SFD 日更 - 晚间 20:00",
"schedule": {
"kind": "cron",
"expr": "0 20 * * *",
"tz": "Asia/Singapore"
},
"payload": {
"kind": "agentTurn",
"message": "按照 content-publishing-guide.md 产出晚间 3 篇文章..."
},
"sessionTarget": "isolated"
}
关键配置细节
sessionTarget: "isolated":每个 cron job 在独立的临时会话里运行,不影响主会话。任务完成后会话自动销毁。
payload.kind: "agentTurn":触发 Agent 执行任务,不是注入系统消息。isolated 会话必须用 agentTurn。
tz: "Asia/Singapore":时区设置。我们在新加坡,所以用 SGT。如果你在美国,用"America/New_York"。
内容自动化流水线
cron 触发后,实际执行的是这样一个流程:
- 小狐狸🦊:读取 content-publishing-guide.md,确认今日选题,写三篇文章(zh/en/zh-TW 三语)
- 小蝴蝶🦋:用 Pillow 生成三张封面图(8 套主题轮换,避免视觉重复)
- 小章鱼🐙:通过 CMS API 发布文章,上传封面图
- 小刺猬🦔:curl 验证发布结果,确认三语版本都上线
整个流程约 15-20 分钟。如果任何一步失败,cron 的 failureAlert 会触发告警到 Telegram。
踩坑记录
坑 1:cron job 重复触发。早期我们遇到过一条 cron 触发多次的问题,原因是 session 文件里积压了 77 条空 message 占位符。解决方案:定期清理 session 历史,设置 compaction 策略。
坑 2:封面图重复。一开始我们用随机主题,结果三篇文章封面长得一样。后来改成用 article_id 的 md5 hash % 8 选主题,确保确定性轮换。
坑 3:翻译版本没发布。早期只发了中文版,忘了调 translation API。现在流程里强制要求:中文版发布后必须立即创建 en 和 zh-TW 版本,否则任务不算完成。
如何查看 cron 状态
# 列出所有 cron jobs
openclaw cron list
# 查看某个 job 的运行历史
openclaw cron runs --jobId=4427bf98-b6ff-4474-b561-7e543355f664
# 手动触发一次(测试用)
openclaw cron run --jobId=4427bf98-b6ff-4474-b561-7e543355f664
扩展:除了日更,还能自动化什么
我们还在用的 cron 自动化:
- 02:00 每日备份:数据库 dump + 上传 OSS + Telegram 汇报
- 06:00 BACAKU 采集:爬取日本动漫资讯,自动翻译入库
- 22:00 自我复盘:检查当日任务 tracker,更新 MEMORY.md,归档 stale specs
SFD 编者注
自动化不是"设好就忘"。我们每周检查一次 cron 运行日志,每月 review 一次内容质量。工具减少手动操作,但判断力永远在人手里。另外,cron job 的配置存在 Gateway 里,记得定期备份 config.json——我们吃过亏,一次重启后配置丢了,补跑了一整天。