OpenClaw × Blog × 微信公众号:一次完整自动化贯通的操作日记

技术专业 · 今天

这两天,我把一条链路彻底打通了:

在 OpenClaw 中写文章框架和核心思路 → openclaw大模型润色生成文章 → 自动发布到 Blog → 通过 RSS → 自动同步到微信公众号草稿箱。

不再复制粘贴,不再手工排版,不再盯着图片是否失效。

整条链路,从编辑到分发,完全自动运行。

这篇是完整的操作日记。


一、起点:从 OpenClaw 直接编辑 Blog

核心目标只有一个:

想法是随时出现的,出现后随手写写核心想法扔给openclaw,openclaw读取你的博客了解你的文字风格,将想法生成出完整的博客。
让写作随时谁地完成,自动后台完成发布

我已经有 Blog(支持 RSS 输出),现在要做的,是把 OpenClaw 变成“写作前端”,Blog 变成“内容源头”,再由程序自动分发。

结构是这样的:

OpenClaw → Blog(生成文章)→ RSS → VPS 脚本 → 微信公众号

Blog 只负责两件事:

  • 正确生成文章
  • 正确输出 RSS

RSS 是桥梁。


二、搭建“云端数据桥梁”:VPS + Python

家里是动态 IP,不稳定,也不适合长期对接微信 API。

于是我租了一台固定公网 IP 的 VPS(成本几十块),专门干三件事:

  1. 定时读取 Blog RSS
  2. 处理文章正文
  3. 调用微信 API 推送草稿

环境准备

在 VPS 上:

  • 安装 Python
  • 创建虚拟环境
  • 安装核心库

核心依赖:

pip install feedparser requests

用途分别是:

  • feedparser:解析 RSS
  • requests:调用微信 API

三、微信 API 鉴权机制(Token 自动管理)

微信接口有两个核心限制:

  • access_token 有效期 2 小时
  • 调用频率有限制

我的解决方案很简单:

1️⃣ IP 白名单

在微信公众号后台:

将 VPS 公网 IP 加入白名单

否则所有接口调用直接失败。


2️⃣ 自动 Token 刷新机制

写了一个 Token 管理函数:

逻辑:

  • 每 90 分钟请求一次新的 access_token
  • 本地缓存
  • 调用接口时直接读取缓存

伪逻辑结构:

def get_access_token():
    if token未过期:
        return 本地token
    else:
        请求微信API获取新token
        保存到本地
        返回token

这样:

  • 不会频繁请求
  • 不会过期报错
  • 完全自动

四、真正的坑:图片“防盗链”问题

这是整条链路里最折磨人的一段。

直接把 RSS 的 HTML 推给微信?

结果:

图片全部失效。

原因很简单:

微信不会直接引用外部图片地址。

必须走官方素材接口。


五、图片中转逻辑:脚本扮演“搬运工”

完整流程如下:

第一步:提取 HTML 中的图片

脚本:

  • 读取 RSS 最新文章
  • 用正则匹配 标签
  • 提取所有图片 URL

第二步:下载图片到内存

不落地磁盘,直接用 requests 下载到内存。


第三步:上传到微信素材库

调用接口:

新增永久素材 API

微信返回一个新的:

wx_fmt 图片链接

这是微信自己的 CDN 地址。


第四步:正文替换

将:

原始图片URL

全部替换为:

微信返回的新URL

到这一步:

正文已经是“微信专用版”。


六、提交到公众号草稿箱

最后一步:

通过 POST 请求调用:

微信草稿接口

提交内容包括:

  • 标题
  • 作者
  • 封面图
  • 替换后的 HTML 正文

如果是认证服务号,可以直接调用群发接口。

我的策略是:

先推送到草稿箱,人工审核后再发布。

安全、可控。


七、整条自动化链路的最终形态

现在流程是:

1. 在 OpenClaw 写文章
2. 自动发布到 Blog
3. RSS 自动更新
4. VPS 定时脚本检测到新文章
5. 图片中转处理
6. 自动推送到微信公众号草稿箱

全程无人值守。


八、这件事真正的价值

这不是写了个脚本。

而是建立了一条:

当发布内容不再占用你的大量时间的时候,也就没有了发布内容的门槛,更容易的将某时某刻的想法记录下来
Theme Jasmine by Kent Liao