Skip to content

你正在读的这篇文章,是 AI Agent 写的。

不是那种"AI 生成初稿、人类大幅改写"的写法。从选题调研、提纲讨论、逐节写稿、自审修改,到最后发布到微信公众号草稿箱——整个流程都在终端里完成。我做的事情是审稿、提意见、决定配什么图。

这个系列的每一篇文章都是这么生产的。这篇也不例外。

一篇公众号文章要经历什么

先回忆一下,不用 AI 的时候,写一篇公众号文章需要多少步。

脑子里冒出一个选题。打开浏览器查资料,开十几个标签页,读论文、翻官方文档、看别人怎么写的。然后列提纲,写初稿,反复改措辞。写完之后,找配图或者自己做图。图片大小、格式要符合公众号的要求。打开公众号后台,把文字粘进编辑器,调格式——代码块的样式、引用块的颜色、字号行距,每次都要手动调。最后设置封面、摘要、作者,预览一遍,发布。

这里面有些步骤是创造性的——选题、立论、审美判断。但大量的步骤是机械的——查资料汇总、排版转换、图片上传、API 调用。

我的目标很简单:把机械的部分全部自动化,只保留需要人类判断的环节。

最终的结果是两条命令:/write-draft 负责从想法到初稿,/publish-draft 负责从初稿到发布。中间夹着唯一的手动步骤——配图和插入视频。

write-draft——从想法到初稿

如果你读过"从零构建 AI Agent"系列的第 4 篇,你已经知道 Skill 是什么——一段可以保存、复用、随时激活的 prompt,本质上是给 Agent 的 SOP。/write-draft 就是这样一个 skill。当我在 OpenCode 终端里输入 /write-draft 的时候,Agent 不是从零开始猜我要干什么,而是按照一套设计好的流程来走。

这个流程分 5 步。

第一步:理解意图。 Agent 会逐个问我问题。这篇文章属于哪个系列?核心论点是什么?目标读者是谁?有没有特别想用的切入角度?它不会一次性抛出所有问题,而是根据我的回答自然推进。比如我说"'如何用 AI Agent 做事'系列,写我们的写作发布流程",它就不会再问"你想写技术科普还是产品分析"——因为系列和方向已经确定了。

第二步:联网调研。 Agent 会去搜索相关资料,整理关键事实、数据,附上来源链接。这一步对于技术趋势类文章特别重要——比如这个系列的第一篇要介绍 OpenCode,Agent 需要去查它的 GitHub star 数、贡献者数量、最新版本功能。对于这篇文章,调研的对象主要是项目内部的 skill 定义文件,所以这一步更像是"阅读理解"。

第三步:产出提纲。 给出 2~3 个候选标题,列出每节的核心论点和计划使用的素材。这一步必须等我确认才会继续。这是流程中最重要的检查点——提纲定了,文章的骨架就定了。

第四步:写初稿。 按照提纲和内嵌的写作风格指南完成全文,保存到 drafts/ 目录。

第五步:自审与修改。 Agent 会对照一份质量清单逐条检查——有没有无出处的数据?有没有超过 40 字的长句?有没有用了"赋能""闭环"这类烂词?检查完之后告诉我哪些通过、哪些有问题,然后根据我的反馈修改。可能要走好几轮。

解决"一眼 AI 味"的问题

5 步流程只是骨架。这个 skill 真正花功夫的地方,是内嵌了一份详细的写作风格指南和一份去 AI 味规则。

风格指南规定了文章的声音:直接、有立场、像和朋友聊天而不是写论文。它禁止学术腔("笔者""综上所述"),禁止互联网烂词("赋能""抓手""对齐颗粒度"),要求短句优先、节奏感明确。

去 AI 味规则更具体——它列出了 22 种常见的 AI 写作模式,每一种都给出了问题分析和改写示例。比如:

  • 过度强调意义:"标志着关键转折点""为……奠定基础"——AI 喜欢夸大每件事的历史意义。改写方法:直接陈述事实,不加评价
  • 三段式法则:AI 强行把任何东西分成三组来显得全面。改写方法:用两项或四项
  • 同义词循环:为了避免重复,AI 会把"主人公"换成"主要角色"再换成"中心人物"再换成"英雄"。改写方法:该重复就重复,自然比花哨重要
  • 模糊归因:"专家认为""行业报告显示"——不说是哪个专家、哪份报告。改写方法:给出具体来源

这些规则不是事后检查清单,而是写作过程中的实时约束。Agent 在写每一句话的时候就在遵守它们。

手动环节——配图与视频

整个流程里有两件事我没有自动化:配图和插入视频。

配图我用 Nano Banana 2 生成——Google 的图片生成模型。生成之后,我会让 AI 帮我把图片插入到文章中合适的位置。"合适的位置"这件事需要理解上下文——哪段话讲完之后适合放一张图来辅助说明,这个判断目前还是人来做、AI 来执行。

视频插入也是一样的逻辑。公众号文章里嵌入视频需要特定的格式,位置选择同样需要人工判断。

这是目前整个流程中仅剩的手动环节。但严格来说,它们也不是不能自动化——Nano Banana 2 有 API,图片生成完全可以写进 skill 里,让 Agent 根据文章内容自动生成配图并插入。这是我接下来打算做的事。到时候,从构思到发布就真的只剩一条流水线了。

publish-draft——一条命令发布

初稿写完、配图插好,下一步是发布。在终端里输入 /publish-draft,指定要发布的 Markdown 文件,剩下的全部自动完成。

发布的管线是这样的:

  1. 解析元数据。 从 Markdown 文件的 frontmatter 里提取标题、作者、摘要、封面图路径。摘要如果没写,自动从正文截取前 40 个汉字
  2. 转换格式。 把 Markdown 发送给 bm.md 的 API,转成微信公众号兼容的 HTML。为什么不自己写转换逻辑?因为微信的 HTML 渲染有大量特殊限制——不支持外链 CSS、不支持某些 HTML 实体、代码块样式需要内联——bm.md 专门处理这些坑,没必要重复造轮子
  3. 上传图片。 从 HTML 里提取所有图片 URL,逐个上传到微信的素材 CDN,拿到微信域名下的新 URL,替换回 HTML 中。这是因为微信公众号不允许引用外部图片
  4. 上传封面。 封面图单独上传,拿到 media_id
  5. 创建草稿。 调用微信草稿箱 API,把处理好的 HTML、标题、封面、摘要打包提交

整个过程大概 10 秒。跑完之后,去微信公众号后台的草稿箱里就能看到排好版的文章,预览确认后就可以发布。

发布完成后,脚本会自动把文件从 drafts/ 移到 posts/——草稿变成了已发布的存档。

整个系统的全景

退一步看,这不只是"两个 skill"。它是一个完整的内容生产系统,系列是它的核心组织单元。

我的所有文章按系列组织。目前有三个:AI 知识科普、从零构建 AI Agent、用 AI Agent 做事(就是你正在读的这个系列)。每个系列有自己的目录、自己的编号规则、自己的图片文件夹。

写一篇新文章的时候,第一件事是确定它属于哪个系列。系列确定了,编号、文件名、存储路径就全部确定了。write-draft 会自动把草稿存到 drafts/ai-agent-in-action/03-xxx.md,对应的图片放到 assets/ai-agent-in-action/03-xxx/,发布后移到 posts/ai-agent-in-action/03-xxx.md

构思:脑子里有个想法

/write-draft:5 步交互,产出初稿 → drafts/

配图/视频:手动生成,AI 辅助插入

/publish-draft:一条命令,发布到草稿箱 → posts/

微信后台:预览、确认、发布

目录结构本身就是系统设计的一部分。drafts/ 是工作区,posts/ 是归档区,assets/ 是素材库。三者通过命名约定关联——文章文件名、图片目录名、系列目录名保持一致。这不是为了好看,而是让每个自动化步骤都能通过路径推断出它需要的信息。

这套流程的本质是什么?把写作变成一个可复现的工程过程。

每篇文章都走同一条流水线。调研的深度可以不同,写作的风格可以根据主题调整,但流程是固定的。固定的流程意味着每个步骤都可以被优化——发现 AI 爱写长句,就在 skill 里加一条"单句不超过 40 字"的规则;发现排版总有问题,就换一个更好的 HTML 转换服务。每一次改进都会体现在之后的每一篇文章里。

不只是写作的事

回到这个系列的主题。这篇文章讲的是写公众号,但背后的思路和前两篇——写月度材料、做教学视频——是一样的。

AI Agent 做事的核心,不是"让 AI 帮你干活"。而是你先想清楚一件事的流程是什么,哪些步骤是机械的、哪些需要人类判断,然后把机械的部分设计成可自动执行的指令,把需要判断的部分留给自己。

这套公众号工作流不是通用方案。你不能直接拿去用——你的写作风格不同,你的发布平台可能不同,你对"好文章"的定义也不同。但背后的方法是通用的:把重复工作拆解成步骤,识别哪些步骤可以用确定的规则描述,然后把这些规则交给 Agent。

剩下那些说不清、道不明、凭感觉来的部分——那是你的工作。