OpenClaw · 内容系统复盘
苏晚我又重做了一遍。这次不是因为她不会写,而是因为她太容易写出一篇“看起来像文章”的东西。
公众号自动化跑起来以后,表面上看一切都挺顺:扫描信息、找选题、生成正文、配图、进草稿箱,链路一段不少。真正让我停下来的,不是某个环节报错,而是另一件更麻烦的事——有些文章明明跑完了,读完却没有留下什么。
题目像有东西,材料也不算少,结构甚至是完整的。可它们常常只是把外面的信息重新排了一遍:没有真正的问题,没有自己的判断,也没有值得读者带走的一句话。它可以被系统判为“合格”,我自己却不愿意把它交出去。
这才是我决定再建一次苏晚的原因。
最危险的,不是它不工作
如果系统写不出来,问题反而简单:查模型、查数据、查流程,修到能跑就行。苏晚当时不是这个问题。她能写,甚至写得很快;危险的是,自动化会把“有一篇像样的稿子”误当成“有一篇值得发的文章”。
我后来把这件事想明白了:内容质量不是语言质量。句子通顺、排版完整、题目像热点,最多证明它完成了表达;一篇文章值不值得出现,还取决于它有没有看见一个真实问题,证据够不够,角度是不是自己的,读者读完能不能多明白一点什么。
原来的链路把“写”放得太靠前。信息一来,系统就急着把它变成一篇稿。这样最快,也最容易把当天的热闹、已有的说法和模型最熟悉的套路拼在一起。最后写出来的东西没有明显错误,却也没有必要存在。
我先把两种失败分开
重建以前,我先做了一件很基础的事:不再把所有失败都叫作“文章没做好”。
后来有一次,已经确认的文章在进入公众号草稿箱时被平台拦住。那是投递链路的问题,不是内容问题;反过来,一篇内容通过了本地审校,也不代表它就该被送去草稿箱。把这两件事混在一起,系统永远只会在错误的地方使劲。
所以我重新把链路拆开:选题和研究解决“该不该写”;事实和出版审校解决“能不能交”;投递只解决“能不能送到”;最后是否公开,仍然由我决定。每一段都要有自己的状态和停下来的理由,不能用一个“成功”把所有问题盖过去。
我把“今天抓到什么”,改成“今天到底有什么可写”
第一个真正的改动,是把每天的写作前面加了一层候选池。
我保留了一天五次扫描,但不再让它们谁抓到一条消息,就立刻替当天定题。每次扫描先补候选;只要有方向完成深研,就可以提前开始做候选稿。14:35 只是当天必须交出候选稿的截止线,不是系统等到那个时间才临时找一条新闻开始写。
我给它定的目标,是每天桌上至少有三个不同方向可选。不是三个标题,而是三个真的能继续判断的方向:它来自哪里,为什么值得写,适合写成什么,证据还缺什么,哪些地方不能说满。达不到三个,就把它当成选题供给出了问题,不能安静地用一篇凑出来的稿子把当天填满。
为了不让它永远追着模型发布、融资和企业采购跑,我又把内容拆成七条线:AI 产品和工具、科技产业、组织与工作方式、治理与责任、开发者与开源、读者能直接使用的方法,以及全球科技变化。不是为了把选题表做大,而是逼它去看那些不一定热、却可能真的有判断空间的地方。
候选也不是“有链接就算”。它至少要有两个独立来源,而且必须在说同一件具体的事;来源错配、信息太薄、分数不足,直接停。它还要回头和六篇低质量文章比,也要和近六十天、三十篇内容比题目、结构和语义轴。像以前那种换个标题、换一批材料、还是同一篇文章的稿子,不能再混过去。
先把文章想明白,再让模型开口
以前的写作像这样:信息来了,模型开始写。现在中间多了一步——先写文章简报。
这份简报不长,但必须把四件事想清楚:这篇到底要回答什么问题,我的独立判断是什么,有没有可能相反,读者读完应该带走什么。没有这些,模型再能写,也只是在替我把一堆材料展开。
接着才是证据账本。每条来源不再只是放在那里充数,而要说明它究竟能支撑什么。什么是事实,什么只能写成推断,什么根本不能写,先划出来。正文完成后,带事实含量的句子还要逐条回到对应证据上看。
这不是要把公众号文章写成论文。恰恰相反,它是为了不让文章再靠“信息很多”冒充“判断很深”。材料是背后的地基,不是拿来堆在读者面前的装饰。
我不再让一台模型从头判到尾
第二个改动,是把模型从“谁更会写”改成“谁该负责哪一段”。
Kimi K3 放在深研、首稿和出版审校的第一位;DeepSeek 一边做备用写作,一边只根据已经拿到的来源做独立事实审校;MiniMax 只做配图。它们不再互相顶替,也不允许一个模型写完以后,再自己给自己判定事实、文章和视觉都没有问题。
一篇稿写完以后,要过几道不同的门。事实审校盯的是:来源到底能不能承重,推断有没有装成事实。出版审校盯的是:它是不是又落回固定模板,有没有把内部流程写进正文,有没有为了显得专业而把话说满。视觉和 HTML 也要单独看,不能因为文字过了,图文和页面就自动算过。
最后我让系统把正文、证据、审校和版式绑成一张发布卡。意思很简单:这次通过的,是这一版文章,不是某个抽象的“文章已经合格”。正文后来哪怕改了一句,原来的通过也会失效,必须重新审。这样就不会再出现前面审的是一篇,最后交出去的却是另一篇。
第一条稿没有过,就换题;没有我确认,就不出去
我还改掉了自动化最坏的一个习惯:无论怎样都要交出一篇。
现在第一条方向被事实或编辑门拦下,系统不会只在原地润色,把一篇空心稿打磨得更顺。它会转到下一条已经通过的候选;如果是证据不够,就回研究队列补,不拿猜测填空。没有合格方向可以写,也不能把它包装成“今天正常没有选题”,而要如实暴露:是候选池不够,还是研究没有把缺口补上。
人也重新回到了该在的位置。前面我可以给方向、给自己的判断;后面成稿出来,我再做一次明确确认。没有第二次确认,系统不能进公众号草稿箱;草稿箱也不是公开发布,更没有自动群发的权限。
这次真正做出了什么
这套设置第一次完整跑下来时,第一条成稿就因为事实和推断的边界没有站稳被拦下。系统没有把它润色成一篇更顺的稿,也没有把本地分数当成发布许可,而是转去下一条已经通过选题和深研的方向。
最后交到我手上的,不再只是一个“已完成”的正文文件,而是一篇带着问题、判断、证据、审校和版式结论的完整候选稿。我要是不同意,它就停在那里;我明确确认,它才可以进入草稿箱。至于是否公开,仍然是我在后台做的最后一个判断。
这不等于苏晚已经永远不会写出差文章。内容不是装几个门禁就一劳永逸,它还要靠持续观察:候选方向够不够广,我的修改有没有沉淀回规则,哪些文章经过一段时间后仍然值得留下。这些都还在继续验证。
但至少现在,系统不再把“写完了”当成“做好了”,也不再把“过了一次检查”当成“可以公开”。这两句看起来很普通,对内容自动化来说却是两条完全不同的边界。
我这次没有把苏晚做成一台更快的自动写稿机。
我做的是让它先把值得写的东西放到桌上,把不确定的地方说出来,把该停下来的地方停下来;然后把最后那个“对”,留给我。
对我来说,这才更像一个内容 Agent:它不是替我持续发声,而是帮我把该说的话,先想明白。