我用 AI Agent 搭了一套多平台自动分发系统,踩了这些坑
前言
做自媒体最痛苦的事情不是写内容,而是写完之后要在 5 个平台上重复发一遍。
小红书要 emoji 和话题标签,微信公众号要 HTML 内联样式,知乎不能用 Markdown 符号,微博限制 300 字,B站专栏又是另一套编辑器。同一篇内容,改编 5 次,发布 5 次,调格式 5 次。
作为一个程序员,我决定让 AI Agent 帮我干这件事。
花了两周时间,我搭了一套基于 OpenClaw 的多平台自动分发系统。现在我只需要说一句"帮我发布到全平台",Agent 就会自动改编内容、生成配图、逐平台发布。
这篇文章记录整个架构设计和踩过的坑。
整体架构
css
用户指令 → AI Agent(OpenClaw)
├→ 内容改编(按平台规范调整风格/字数/格式)
├→ 配图生成(SiliconFlow FLUX.1 API)
└→ 逐平台发布
├→ 小红书(MCP HTTP API)
├→ 微信公众号(官方 API + HTML 模板)
├→ 微博(Puppeteer + Stealth)
├→ 知乎(Chrome AppleScript 注入)
├→ B站专栏(Chrome AppleScript 注入)
├→ CSDN(浏览器自动化)
└→ 掘金(REST API + Cookie)
核心思路:API 能走 API,API 不行走浏览器自动化,浏览器自动化不行走 AppleScript 注入。
优先级:API > Puppeteer Headless > Chrome AppleScript。越往后维护成本越高。
各平台技术方案详解
小红书:MCP 协议 + HTTP API
小红书没有官方开放 API,但社区有一个 xiaohongshu-mcp 项目,基于 MCP(Model Context Protocol)协议实现了图文发布能力。
python
import requests
payload = {
'title': '标题不超过20字',
'content': '正文内容...',
'images': ['/path/to/img1.jpg', '/path/to/img2.jpg']
}
resp = requests.post('http://localhost:18060/api/v1/publish', json=payload, timeout=180)
踩坑点:
- 标题限制 20 字,不是你以为的 50 字
- 图片必须压缩到 500KB 以内,1MB+ 的 PNG 上传会超时(MCP 有 60 秒超时限制)
- API 返回"发布成功"不一定真的成功,必须查 MCP 日志确认
图片压缩方案:
python
from PIL import Image
img = Image.open('big.png').convert('RGB')
img.save('small.jpg', 'JPEG', quality=80, optimize=True) # 1.4MB → 194KB
微信公众号:官方 API + HTML 样式地狱
微信公众号有官方 API,可以创建草稿,但最终群发需要手动操作(API 没有群发权限)。
最大的坑是 HTML 必须带内联样式。
❌ 错误写法:
html
<p>这是一段文字</p>
✅ 正确写法:
html
<p style="line-height:1.8;font-size:16px;text-align:justify;margin:10px 0">这是一段文字</p>
裸 HTML 标签在公众号渲染出来格式极其难看。每个 <p>、<h2>、<blockquote> 都必须加完整的 inline style。
最终我封装了一套样式模板函数:
python
def p(text): return f'<p style="line-height:1.8;font-size:16px;...">{text}</p>'
def h2(text): return f'<h2 style="color:#009688;border-left:3px solid...">{text}</h2>'
def bq(text): return f'<blockquote style="border-left:3px solid #009688;...">{text}</blockquote>'
微博:Puppeteer + Stealth Plugin
微博没有个人发博的 API(只有企业号有),所以用 Puppeteer 无头浏览器模拟操作。
关键技术点:
- 必须用
puppeteer-extra-plugin-stealth绕过反爬检测 - 发送按钮要用
page.evaluate()触发点击,而不是.click()------因为微博的按钮有层叠遮挡 - 上传图片后要等待 loading spinner 消失再点发送
- 验证发布成功的方法:检查输入框是否被清空
知乎 & B站:Chrome AppleScript 注入
这两个平台反爬严格,Headless 浏览器很容易被识别。最终方案是复用已登录的 Chrome 浏览器,通过 macOS AppleScript 注入 JavaScript 操作页面。
前提:Chrome 需要开启 允许 Apple 事件中的 JavaScript。
知乎的坑:
- 正文编辑器是 Draft.js,不能直接
innerText,要用剪贴板粘贴(pbcopy+Cmd+V) - 绝对不能用 Markdown 符号 。
##、**、---会原样显示在文章里 - Unicode 装饰符号(
▎━━━❶❷❸)也不要用
B站的坑:
- 编辑器藏在第二层 iframe 里(
york/read-editor) - 标题是 textarea,正文是 contenteditable div,输入方式完全不同
内容改编策略
同一个主题,不同平台的内容不能直接复制。我给 Agent 定义了各平台的改编规则:
| 平台 | 字数 | 风格 |
|---|---|---|
| 小红书 | 350-500 | emoji 多、话题标签、互动引导 |
| 微信公众号 | 800-1500 | 深度分析、小标题分段 |
| 微博 | 140-300 | 精炼观点、一句话抓眼球 |
| B站/知乎 | 1500-3000 | 长文深度、配图丰富 |
| CSDN/掘金 | 1500-3000 | 技术实战、代码示例 |
Agent 会根据平台规范自动调整语气、字数和格式,而不是简单截断。
配图方案:SiliconFlow API
所有配图通过 SiliconFlow 的 FLUX.1 模型生成,英文 prompt,每张图不同风格。
bash
curl -X POST "https://api.siliconflow.cn/v1/images/generations" \
-H "Authorization: Bearer $SILICONFLOW_API_KEY" \
-d '{"model":"black-forest-labs/FLUX.1-schnell","prompt":"..."}'
成本极低,生成速度快,质量够用。
发布顺序和防风控
发布顺序有讲究:先 API 类,后浏览器自动化类。
- 小红书(API)→ 2. 微信公众号(API)→ 3. 微博(Puppeteer)→ 4. B站(AppleScript)→ 5. 知乎(AppleScript)→ 6. CSDN → 7. 掘金
原因:API 调用稳定快速,浏览器自动化可能需要处理验证码、等待加载,放后面不影响前面的发布。
每个平台之间间隔 2 分钟以上,避免被风控。
效果和数据
搭建完成后:
- 原来发 5 个平台需要 1-2 小时 → 现在 10 分钟全部搞定
- 内容质量没下降(每个平台都是独立改编的)
- 偶尔需要人工介入:微信公众号草稿需要手动发布、平台验证码需要人工处理
总结
这套系统的核心不是某个具体技术,而是分层的自动化策略:
- 有 API 用 API(最稳定)
- 没 API 用无头浏览器(次稳定)
- 反爬严格就复用真实浏览器会话(兜底方案)
每增加一个平台,先评估它属于哪一层,再选择对应的技术方案。
代码和配置都跑在本地 macOS 上,通过 OpenClaw Agent 统一调度。如果你也想搭一套类似的系统,建议从 API 类平台开始,逐步扩展到浏览器自动化。
如果这篇文章对你有帮助,欢迎点赞收藏。后续我会继续分享 AI Agent 在实际工作中的应用实践。