我用 AI 搭了一个公众号自动发文系统,全程踩坑实录(已跑通)

0 阅读10分钟

这不只是教程,是一份完整实录。(实在不会,丢给CC让他帮你安装)

从【以为很简单】到【真的跑通】,每一个报错、每一个坑、每一次修正,我都记下来了。

最终结果:从素材到公众号草稿箱,全链路自动化可用。


🤖 这个系统在做什么?

一句话:给素材 → 自动写文 → 自动排版 → 自动进公众号草稿箱。

系统流程图

我只做三件事:

  1. 写选题与要求(task.md)
  2. 放原始素材(materials.md)
  3. 审稿后点击发布

其余流程由系统自动完成。

这套系统的核心价值在于:把重复劳动交给机器,把创意决策留给人。


🧩 系统组成(最终可用架构)

整个系统由 5 个核心组件构成:

1. Claude Code CLI — 写作引擎

根据 task.md 和 materials.md 生成符合要求的 article.md。这是整个系统的大脑,负责理解需求、提炼素材、生成文章。

2. AGENTS.md — 写作规范

这是稳定输出的关键。AGENTS.md 是一个开放标准,用于指导 AI 编码代理的行为规范。

在内容创作场景中,它定义了写作风格、禁用词汇、排版规则等约束条件,确保 AI 生成的内容始终符合你的品牌调性。

3. KIE API — 图像生成

用于生成文章封面图。KIE.ai 提供了多种 AI 图像生成模型的统一接口,包括 GPT-Image-1、Midjourney、Flux 等,价格比官方更实惠,响应速度快。

4. ImageMagick — 图片处理

负责封面图的裁剪和尺寸处理。微信公众号封面图有特定尺寸要求:大图 900×383px (2.35:1),小图 383×383px (1:1)。

ImageMagick 可以通过命令行快速完成批量裁剪。

5. @wenyan-md/cli — 发布工具

将 Markdown 转换为微信公众号格式并推送到草稿箱。这个工具支持自动上传图片、应用主题样式、处理代码高亮和公式渲染。

技术架构图

完整流程:

素材(task.md + materials.md) 

    ↓ 

Claude Code CLI 读取 AGENTS.md 规范 

    ↓ 

生成 article.md 

    ↓ 

(可选)KIE API 生成封面图 

    ↓ 

ImageMagick 裁剪为 900×383px 

    ↓ 

wenyan publish 推送 

    ↓ 

公众号草稿箱 ✅ 

 

🛠 从零到跑通:完整过程

1)先盘点依赖

当时已完成:

  • ✅ Claude Code CLI
  • ✅ Node.js / Python3
  • ✅ ImageMagick

待完成:

  • ❌ 安装 wenyan 发布工具
  • ❌ 配置公众号 AppID/AppSecret
  • ❌ 配置微信 API IP 白名单
  • ❌ 配置 KIE API Key(可选)
  • ❌ 端到端发布测试

2)安装 wenyan(第一个坑)

一开始装错包名:

npm install -g wenyan-cli 

 

报错 404(包不存在)。

正确包名是:

npm install -g @wenyan-md/cli 

 

安装成功(1.0.11)。

💡 经验: 包名容易搞混,遇到 404 先去 npm 官网确认正确的 package name。


3)公众号配置(第二个坑:命令用错)

一开始以为可以这样配:

wenyan config set appId xxx 

wenyan config set appSecret xxx 

 

结果报错:too many arguments

原因:这个版本的 wenyan 不支持这套 config 子命令。

正确方式:用环境变量(示例):

echo 'export WECHAT_APP_ID="你的AppID"' >> ~/.zshrc 

echo 'export WECHAT_APP_SECRET="你的AppSecret"' >> ~/.zshrc 

source ~/.zshrc 

 

KIE 也是同理:

echo 'export KIE_API_KEY="你的KIE_API_KEY"' >> ~/.zshrc 

source ~/.zshrc 

 

⚠️ 安全提醒: AppSecret 只展示一次,若泄露请立即重置并更新本地环境变量。


4)IP 白名单(最大的坑)

这是我踩得最深的一个坑。

报错:

40164: invalid ip xxx.xxx.xxx.xxx, not in whitelist 

 

现象: 每次请求显示的出口 IP 都可能变化。

根因: VPN/代理自动切换节点导致出口 IP 不固定。

img_v3_02v7_7e0c24d1-eba0-4f9a-93bc-b6480cd4407g.jpg

我最终的解决方案:

① 查询当前出口 IP(通过本地代理):

curl -s --proxy http://127.0.0.1:7890 https://api.ipify.org 

 

② 把返回 IPv4 加到公众号后台「API IP 白名单」

图片

③ 发布时固定走同一代理出口:

HTTPS_PROXY=http://127.0.0.1:7890 HTTP_PROXY=http://127.0.0.1:7890 \ 

wenyan publish -f "./article.md" 

 

然后成功拿到 media_id,文章进入草稿箱。

💡 经验: 如果你在国内服务器运行,直接用 curl -s https://ipinfo.io/ip 查询出口 IP 即可,不需要代理。


5)验收命令(替代 doctor)

wenyan doctor 在该版本不可用。

可以用渲染命令做最小验收:

echo "# 测试" | wenyan render | head -20 

 

能正常输出 HTML 结构说明本地渲染链路没问题。

再用一次 wenyan publish 验证微信接口链路:

wenyan publish -f "./test-article.md" 

 

image.png


✅ 最终可复用 SOP(精简版)

经过多次踩坑,我总结出这套可直接复用的标准流程:

Step 1:安装工具

npm i -g @wenyan-md/cli 

brew install imagemagick  # macOS 

 

Step 2:配置环境变量

export WECHAT_APP_ID="你的AppID" 

export WECHAT_APP_SECRET="你的AppSecret" 

export KIE_API_KEY="你的KIE_API_KEY"  # 可选 

 

Step 3:公众号后台配置

  • 启用 AppSecret
  • 添加 API IP 白名单(填实际出口 IPv4)

Step 4:本地渲染测试

echo "# 测试" | wenyan render | head -20 

 

Step 5:发布测试(必要时带代理)

HTTPS_PROXY=http://127.0.0.1:7890 \ 

wenyan publish -f "./article.md" 

 

Step 6:到草稿箱确认文章与封面

image.png


🕳️ 坑点总表(实战版)

现象根因解决方案
包名错误npm 404包名写错用 @wenyan-md/cli
配置命令错误too many arguments版本不支持 config set改用环境变量
IP 白名单反复失败40164 invalid ip代理出口 IP 漂移固定节点+固定代理端口
封面报错找不到 coverfrontmatter 缺字段/路径无效补 cover 且路径有效
doctor 命令不存在not valid command该版本无此子命令用 render + publish 验证
图片尺寸不对封面显示不全未按 2.35:1 裁剪用 ImageMagick 裁剪为 900×383px

踩坑示意图


🎯 关键技术深度解析

AGENTS.md:稳定输出的灵魂

很多人以为 AI 写作就是“丢个 prompt 就行”。

错了。

真正决定质量的,是你的 AGENTS.md。

AGENTS.md 是一个由 Linux 基金会下属的 Agentic AI Foundation 管理的开放标准。它最初是为编码代理设计的,但现在被广泛应用于各种 AI 自动化场景。

它的作用是什么?

把你的部落知识(tribal knowledge)写成机器可读的规范。

就像资深工程师脑子里的那些“潜规则”:

  • 这个项目用什么技术栈
  • 代码风格是什么样的
  • 哪些文件绝对不能碰
  • 测试怎么跑

在内容创作场景中,AGENTS.md 定义的是:

  • 写作风格:口语化程度、段落长度、是否用 emoji

  • 禁用词汇:哪些 AI 味的词绝对不能出现

  • 排版规则:标题层级、引用格式、代码块样式

  • 质量标准:字数范围、数据引用要求、可读性基准

一个好的 AGENTS.md 应该包含:

  1. 可执行命令(Commands first): AI 能直接跑的指令
  2. 具体代码示例(Code examples over explanations):展示什么是好的输出
  3. 明确边界(Clear boundaries):告诉 AI 什么绝对不能做
  4. 技术栈细节(Project knowledge):版本号、文件位置、依赖关系

💡 最佳实践:

  • 控制在 ≤150 行,太长会稀释信号

  • 用反引号包裹命令,让 AI 能直接复制粘贴

  • 把 AGENTS.md 当代码一样做 code review

  • 当 AI 犯错时,迭代更新规范

我的 AGENTS.md 里写了什么?

  • 禁用“首先、其次、综上所述”等 AI 套话
  • 要求 70% 段落必须是单句(<50 字)
  • 数据必须加粗,引用必须用 > 格式
  • 标题不超过 35 字,必须包含数据+情绪反差

规范写得越细,AI 输出越稳定、越像你自己。

image.png


wenyan-md:从 Markdown 到公众号的最后一公里

wenyan 是一个开源工具,专门解决“Markdown → 微信公众号”这个痛点。

它做了这些事:

  1. 自动转换格式: Markdown 语法 → 微信富文本
  2. 图片自动上传:扫描文章中的图片路径,自动上传到微信素材库
  3. 主题样式应用:支持多种预设主题,也可以自定义 CSS
  4. 代码高亮:自动处理代码块的语法高亮
  5. 公式渲染:支持 LaTeX 数学公式
  6. 推送草稿箱:调用微信 API,直接创建草稿

**
**

关键 API 调用链路:

1. 获取 access_token 

   POST https://api.weixin.qq.com/cgi-bin/token 

    

2. 上传图片素材 

   POST https://api.weixin.qq.com/cgi-bin/material/add_material 

    

3. 创建草稿 

   POST https://api.weixin.qq.com/cgi-bin/draft/add 

 

citation

wenyan 把这些复杂的 API 调用封装成一个简单的命令:

wenyan publish -f "./article.md" 

 

这就是工程化的力量。


KIE API:多模型图像生成的统一入口

之前生成封面图,我要在不同平台之间切换:

  • Midjourney 要去 Discord
  • DALL-E 要去 OpenAI 后台
  • Stable Diffusion 要自己部署

现在有了 KIE API,一个接口调用所有主流模型。

image.png

支持的模型包括:

  • GPT-Image-1 / 1.5: OpenAI 最新图像模型,文字渲染准确
  • Flux.1 Kontext:开源模型,风格化能力强
  • Midjourney:商业插画首选
  • Nano Banana Pro: YouMind 自研,速度快

价格优势:

KIE 的定价比官方便宜 20-30%,而且按需付费,不需要订阅。

集成方式:

# 设置 API Key 

export KIE_API_KEY="your_api_key" 

 

# 生成图片(伪代码示例) 

curl -X POST https://api.kie.ai/v1/images/generate \ 

  -H "Authorization: Bearer $KIE_API_KEY" \ 

  -d '{"prompt": "...", "model": "gpt-image-1"}' 

 

生成的图片可以直接用 ImageMagick 裁剪:

magick input.jpg -crop 900x383+0+0 cover.jpg 

 

ImageMagick:命令行图片处理的瑞士军刀

ImageMagick 是一个开源的图像处理工具,支持超过 100 种图片格式。

核心命令:

1. 裁剪图片

# 从左上角裁剪 900×383 的区域 

magick input.jpg -crop 900x383+0+0 output.jpg 

 

# 居中裁剪 

magick input.jpg -gravity center -crop 900x383+0+0 output.jpg 

 

2. 调整尺寸

# 缩放到 900×383(可能变形) 

magick input.jpg -resize 900x383 output.jpg 

 

# 按比例缩放,宽度固定 900px 

magick input.jpg -resize 900x output.jpg 

 

3. 批量处理

# 批量裁剪当前目录所有 jpg 

for img in *.jpg; do 

  magick "$img" -crop 900x383+0+0 "cropped_$img" 

done 

 

💡 实战技巧:

微信公众号封面有大图(2.35:1)和小图(1:1)两种显示形式。如果想同时兼顾,可以做一张 1283×383px 的图:左边 383×383 是小图区域,右边 900×383 是完整大图。


🔄 完整自动化工作流实战

现在把所有组件串起来,看看一篇文章是怎么从 0 到发布的。

场景:我要写一篇“独立开发者搞钱案例”

Step 1:准备素材

创建 task.md:

# 任务 

将 YouTube 视频转换成公众号文章 

 

# 要求 

- 字数 1500-2000 

- 风格:信息猎手+卡兹克 

- 必须包含数据和 SOP 

 

创建 materials.md:

# 素材 YouTube 视频链接:https://youtube.com/watch?v=xxx 

- 视频文字稿:(粘贴完整转录文本) 

 

Step 2: Claude 自动写作

claude code --agents ./AGENTS.md \ 

  "读取 task.md 和 materials.md,生成 article.md" 

 

Claude 会:

  1. 读取 AGENTS.md 了解写作规范
  2. 分析 materials.md 提取核心信息
  3. 按照 task.md 的要求生成文章
  4. 输出 article.md

图片

Step 3:生成封面图(可选)

# 调用 KIE API 生成封面 

# (这里可以用脚本或手动) 

 

# 裁剪为公众号尺寸 

magick cover-raw.jpg -crop 900x383+0+0 cover.jpg 

 

Step 4:发布到草稿箱

wenyan publish -f "./article.md" 

 

Step 5:人工审核

登录公众号后台,在草稿箱中:

  • 检查排版是否正常
  • 确认图片是否都上传成功
  • 微调细节(如果需要)
  • 点击发布

整个流程,除了审核,全部自动化。

从素材到草稿箱,不超过 5 分钟


💡 进阶优化方向

系统跑通后,我又做了一些优化:

1)多平台发布

wenyan 不仅支持微信,还支持知乎、掘金、CSDN 等平台。

可以写一个脚本,一次生成,多平台分发:

# 发布到微信 

wenyan publish -f "./article.md" --platform wechat 

 

# 发布到知乎 

wenyan publish -f "./article.md" --platform zhihu 

 

2)定时发布

结合 cron 或 GitHub Actions,可以实现定时自动发布:

# .github/workflows/publish.yml 

name: Auto Publish 

on: 

  schedule: 

    - cron: '0 9 * * *'  # 每天早上9点 

jobs: 

  publish: 

    runs-on: ubuntu-latest 

    steps: 

      - uses: actions/checkout@v2 

      - run: npm i -g @wenyan-md/cli 

      - run: wenyan publish -f "./article.md" 

        env: 

          WECHAT_APP_ID: ${{ secrets.WECHAT_APP_ID }} 

          WECHAT_APP_SECRET: ${{ secrets.WECHAT_APP_SECRET }} 

 

3)内容质量监控

可以加一个 AI 审核层,在发布前自动检查:

  • 是否有敏感词
  • 字数是否达标
  • 是否有明显的 AI 痕迹
  • 数据引用是否准确

如果不通过,自动打回重写。

4)数据分析闭环

发布后,可以用 n8n 或 Zapier 监控文章数据:

  • 阅读量
  • 点赞数
  • 分享数
  • 用户评论

然后自动生成数据报告,反馈到下一次的 task.md 中,形成闭环优化。


🤔 这套系统值不值得搭?

如果你是:

  • 偶尔写一篇:不必折腾全自动,手动发布更快
  • 每周稳定更新:值得投入 1-2 天搭建
  • 批量产出内容:必须搞,能节省 80% 时间
  • 团队协作:非常值得,统一规范+自动化审核

投入产出比:

  • 搭建时间:1-2 天(包括踩坑)
  • 单篇文章节省时间:30-60 分钟
  • 回本周期:发布 5-10 篇文章后

**
**

但工具只是放大器。

真正决定内容质量的,永远是你的 AGENTS.md。

规范写得越细,AI 输出越稳定、越像你自己。

如果你的 AGENTS.md 只有 3 行,那 AI 生成的内容就是 3 行的质量。

如果你的 AGENTS.md 有 150 行细节约束,那 AI 就能生成 150 行质量的内容。

这是一个“垃圾进,垃圾出”(Garbage In, Garbage Out)的系统。

你投入多少,就能收获多少。


🎬 写在最后

这套系统从想法到跑通,我花了整整半天。

踩了很多坑。

但当我第一次看到文章自动出现在草稿箱时,那种成就感是无法替代的。

这不仅仅是一个自动化工具。

它改变了我对内容生产的理解:

从手工作坊 → 流水线工厂。

**
**

以前写一篇文章,我要:

  • 找素材(30 分钟)
  • 写初稿(2 小时)
  • 排版(30 分钟)
  • 配图(30 分钟)
  • 上传发布(10 分钟)

总计:3 小时 40 分钟。

**
**

现在:

  • 准备素材(10 分钟)
  • 运行脚本(2 分钟)
  • 审稿微调(20 分钟)

总计:32 分钟。

效率提升了 7 倍。

效率对比

更重要的是,我的精力被解放了。

我不再纠结【这个词用得对不对】、【这个段落要不要换行】。

我只需要关注:这个选题值不值得写?这个观点够不够深刻?

工具处理执行,人类负责决策。

这才是 AI 时代内容创作的正确姿势。

如果你也想搭建这样一套系统,我的建议是:

别怕踩坑。

每一个报错,都是你对系统理解更深一层的机会。

每一次调试,都是你把“隐性知识”变成“显性规范”的过程。

当你把所有坑都踩完,你就拥有了一套真正属于自己的内容生产流水线。

而这套流水线,会成为你最大的竞争壁垒。


P. S.  如果你在搭建过程中遇到问题,欢迎留言交流。我会持续更新这套系统的优化方案。

此即未来。

图片