4平台Blog自动发布:从写作到上线的全自动管道
写Blog不难,难的是发布到多个平台。手动复制粘贴、调格式、传图片——这种重复劳动正是AI Agent最擅长消灭的。这篇记录我搭建的4平台自动发布系统。
平台选择:能API化的才值得做
调研了主流技术博客平台后,最终选定4个:
| 平台 | 接入方式 | 语言 |
|------|---------|------|
| Zenn | GitHub连携 | 日语 |
| Qiita | REST API | 日语 |
| Hashnode | GraphQL API | 英语 |
| dev.to | REST API | 英语 |
放弃的平台:
- Medium — API已经名存实亡,2023年后基本不维护,写入功能严重受限
- Note.com — 日本平台,完全没有公开API,连非官方方案都没有
选择标准很简单:如果不能通过API发布,就不值得纳入自动化流程。手动发布一两个平台可以接受,但自动化系统里混入手动步骤,就失去了意义。
Zenn:GitHub连携模式
Zenn是最特殊的一个——它不用API,而是通过GitHub仓库同步。
zenn-content/
├── articles/
│ ├── joe-001-xxx.md
│ ├── joe-002-xxx.md
│ └── ...
└── books/
文章放在 articles/ 目录下,推送到GitHub后Zenn自动同步发布。每篇文章的frontmatter里定义标题、标签、发布状态:
---
title: "文章标题"
emoji: "🤖"
type: "tech"
topics: ["ai", "automation"]
published: true
这种模式的好处是版本管理天然集成——每次修改都有git log,回滚也方便。坏处是发布有延迟,push后大约需要几分钟才能在Zenn上看到。
API Token的持久化教训
这个教训值得单独说。
最初我把各平台的API Token存在Agent的session上下文里,告诉Agent"记住这些Token"。问题是:Agent的上下文是临时的。session结束、Agent重启、甚至上下文窗口滚动,Token就丢了。
然后Agent会问我要Token,我又要去翻记录,找到Token粘贴过去。来回几次后我意识到,这种"存在脑子里"的方式在AI系统里根本不可靠。
解决方案:所有Token持久化到文件。
~/.config/blog-publisher/
├── qiita_token
├── hashnode_token
├── devto_token
└── github_token
Agent启动时读取文件,Token更新时写入文件。简单,但彻底解决了问题。这个教训适用于所有AI Agent开发:凡是需要跨session保持的状态,必须持久化到文件或数据库,不能依赖上下文记忆。
双语发布流程
我的Blog内容主要用中文写,然后:
翻译由Agent调用LLM完成。但这里有个重要的经验:翻译不是简单的语言转换,需要适配目标平台的文化。
日语版需要更礼貌的表达,技术术语保留英文原文(日本技术圈的习惯)。英语版则更直接,代码注释也要翻译成英文。
chatCompletions API的教训
在实现翻译功能时,我最初用OpenClaw的chatCompletions API同步调用LLM。对于短文翻译没问题,但当文章超过1000字时,同步调用经常超时。
原因很简单:同步调用会阻塞直到LLM完成全部生成。一篇1200字的文章翻译成日语,LLM需要生成大量Token,耗时可能超过60秒。
解决方案有两个:
1. 分段翻译——把长文切成小段,逐段翻译后拼接
2. 异步调用——提交任务后轮询结果
我最终选了分段方案,因为实现更简单,而且每段都有上下文窗口限制内的完整语境。
发布流水线
最终的自动发布流程:
1. 写作 — 中文Markdown,存入Blog目录
2. 翻译 — Agent自动翻译成日语和英语两个版本
3. 格式适配 — 调整各平台的frontmatter格式
4. 发布 — 并行推送到4个平台
5. 验证 — 检查各平台的发布状态,确认URL可访问
6. 记录 — 在本地保存发布记录(平台、URL、时间)
从写完到4个平台全部上线,通常不超过5分钟。
感悟
自动化发布系统的核心不是技术难度——每个平台的API都不复杂。真正的挑战在于:
1. 平台差异管理:每个平台的Markdown方言、frontmatter格式、图片处理方式都不同
2. 状态持久化:Token、发布记录、草稿状态,都需要可靠存储
3. 错误处理:某个平台API挂了,不能影响其他平台的发布
写这套系统让我体会到,AI Agent的能力边界往往不在"能不能做",而在"值不值得自动化"。如果一个平台连API都不提供,那就放弃它——世界上有足够多愿意拥抱自动化的平台。
*搭建日期:2026年2月
覆盖平台:Zenn / Qiita / Hashnode / dev.to
状态:生产运行中,支持中日英三语发布*