背景
今天我尝试把本地运行的 AI 助手 Hermes 接入博客园,让它可以在收到文章内容后,自动整理并通过博客园的远程发布接口发布成公开博文。
这篇文章记录整个接入流程、期间遇到的问题,以及最终验证成功的关键点。文中不会展示任何访问令牌、密码或敏感配置值。
目标
- 让 Hermes 能通过博客园的 MetaWeblog 接口发布文章。
- 支持我直接把内容发给 Hermes,由 Hermes 整理标题、正文和分类后发布。
- 默认公开发布。
- 将 AI 相关内容归入 AI 相关分类。
一、确认博客园远程发布接口
博客园支持 MetaWeblog API,访问地址格式一般是:
https://rpc.cnblogs.com/metaweblog/博客名
我的博客地址是:
https://www.cnblogs.com/zsnhweb/
因此 MetaWeblog 接口地址是:
https://rpc.cnblogs.com/metaweblog/zsnhweb
通过访问接口说明页,可以看到它支持 metaWeblog.newPost、metaWeblog.editPost、metaWeblog.getCategories 等方法。
二、准备 Hermes 的环境变量
为了避免把账号信息写死在脚本里,我把博客园配置放进了 Hermes 的本地环境文件:
C:\Users\admin\.hermes\.env
使用的配置项包括:
CNBLOGS_BLOG_ID
CNBLOGS_BLOG_URL
CNBLOGS_METAWEBLOG_URL
CNBLOGS_USERNAME
CNBLOGS_PASSWORD
CNBLOGS_DEFAULT_PUBLISH
其中 CNBLOGS_PASSWORD 实际填写的是博客园的 MetaWeblog 访问令牌,不是普通登录密码。
三、开启 MetaWeblog 客户端访问
一开始发布失败,博客园返回的核心提示是:
请配置正确的用户名与访问令牌,密码登录已取消,请在密码框中输入访问令牌。
后来进入博客园账号中心的 MetaWeblog 设置页,确认需要开启:
允许 MetaWeblog 博客客户端访问
这个开关开启后,页面会显示 MetaWeblog 登录名、访问令牌查看入口,以及 MetaWeblog 访问地址。
四、踩坑 1:用户名容易看错
最开始我把博客园主页路径里的 zsnhweb 当成用户名尝试,结果认证失败。
后来又把账号昵称误认为登录名,也失败了。最终以博客园 MetaWeblog 设置页显示的登录名为准,才确认正确用户名。
经验是:MetaWeblog 发布时不要猜用户名,要直接看博客园后台显示的 MetaWeblog 登录名。
五、踩坑 2:Personal Access Token 和 MetaWeblog 访问令牌要分清
博客园账号中心里有 Personal Access Token 页面,也有 MetaWeblog 设置页里的访问令牌入口。
这次排查中发现,MetaWeblog 发布更应该以 MetaWeblog 设置页中显示或查看到的访问令牌为准。
也就是说,脚本里的 password 字段并不是博客园登录密码,而是访问令牌。
六、踩坑 3:验证脚本一开始误判了结果
我先用 metaWeblog.getCategories 做只读验证。这个方法不会发布文章,只是读取博客分类。
第一次脚本对 XML 返回内容的判断比较粗糙,把正常返回也误判成失败。后来改为直接检查返回中是否存在 fault 信息,才确认接口认证已经通过。
这说明做接口联调时,不仅要看 HTTP 状态码,还要正确解析业务层返回内容。
七、测试发布成功
配置修正后,我用 metaWeblog.newPost 发布了一篇测试文章,博客园返回了文章 ID,说明发布链路已经打通。
测试文章成功公开发布,证明 Hermes 已经可以通过 MetaWeblog 接口向博客园发文。
八、分类处理
通过 metaWeblog.getCategories 读取博客园分类时,发现当前可用分类中有 AI 相关的网站分类,例如:
「网站分类」AI综合
因此本文发布时归入 AI 相关分类。后续如果需要更精确的个人随笔分类,比如单独的“AI”,可以在博客园后台新建分类后,再让 Hermes 使用该分类发布。
九、最终效果
现在,发布流程已经变成:
- 我把内容发给 Hermes。
- Hermes 整理标题、正文、结构和分类。
- Hermes 调用博客园 MetaWeblog 接口发布文章。
- 发布成功后返回博客园文章链接。
十、总结
这次接入的关键点有三个:
- 必须在博客园后台开启 MetaWeblog 客户端访问。
- 用户名要使用后台显示的 MetaWeblog 登录名。
- 密码字段要填写 MetaWeblog 访问令牌,而不是普通登录密码。
完成这些配置后,Hermes 就可以作为一个本地 AI 写作与发布助手,直接帮助我把内容发布到博客园。
文章摘自:https://www.cnblogs.com/zsnhweb/p/20134849
