最近在折腾 OpenClaw(一个开源 AI 助手框架),想让它能直接帮我往 Z-Blog 博客发文,省得每次都打开后台手动操作。研究了一下发现 Z-BlogPHP 从 1.7 版本开始就内置了完整的 REST API,配合 OpenClaw 可以实现「对话即发文」的体验,效果非常丝滑。
下面把整个过程整理成教程,希望能帮到有同样需求的朋友。
一、前提条件
Z-BlogPHP ≥ 1.7(已内置 API 功能)
博客开启 HTTPS
已安装 OpenClaw(或任何能发 HTTP 请求的工具)
二、开启 Z-Blog API
登录 Z-Blog 后台,进入 网站设置 → API,勾选「启用 API」。
⚠️ 安全提示:开启 API 后建议同时开启 HTTPS,避免 Token 在传输中被截获。
三、获取 API Token
Z-Blog 的 API 认证采用 Bearer Token 方式,需要先通过登录接口获取 Token。
请求示例
curl -X POST "https://你的博客地址/zb_system/api.php?mod=member&act=login" \ -d "username=你的用户名&password=你的密码&savedate=30"
返回示例(已脱敏)
{
"strong": 200,
"message": "操作成功",
"data": {
"user": {
"ID": "1",
"Name": "****",
"Level": "1"
},
"token": "****(一串Base64编码的Token)",
"expire_time": 1778724695
}
}返回的 token 字段就是后续所有 API 调用的凭证,expire_time 是过期时间戳。savedate 参数控制有效期天数(1-365)。
四、发文接口
这是核心接口,用于新建或修改文章。
请求地址
POST https://你的博客地址/zb_system/api.php?mod=post&act=post
认证方式
Authorization: Bearer 你的Token
也可以将 Token 作为 URL 参数:?token=你的Token
关键参数
| 参数 | 说明 | 必填 |
|---|---|---|
| ID | 0=新建文章,已有ID=修改文章 | 是 |
| Title | 文章标题 | 是 |
| Content | 文章内容(HTML格式) | 是 |
| CateID | 分类ID | 否 |
| CateName | 分类名(可代替CateID) | 否 |
| Status | 0=公开 1=草稿 2=审核 | 否 |
| Type | 0=文章 1=页面 | 否 |
| Tag | 标签,逗号分隔 | 否 |
| AuthorID | 作者ID | 否 |
| PostTime | 发布时间(时间戳/时间字符串) | 否 |
完整发文示例
curl -X POST "https://你的博客地址/zb_system/api.php?mod=post&act=post" \ -H "Authorization: Bearer 你的Token" \ -d "ID=0&Title=测试文章&Content=<p>Hello World</p>&CateID=1&Status=1&Type=0&AuthorID=1"
返回示例
{
"strong": 200,
"message": "操作成功",
"data": {
"post": {
"ID": "47",
"Title": "测试文章",
"Status": "1",
"Url": "https://你的博客地址/post/47.html"
}
}
}五、其他常用接口
获取分类列表
GET /zb_system/api.php?mod=category&act=list
返回所有分类的 ID、名称、别名、文章数等信息,发文时需要用到 CateID。
获取文章列表
GET /zb_system/api.php?mod=post&act=list
支持筛选参数:cate_id, tag_id, auth_id, date, search, manage 等。
删除文章
POST /zb_system/api.php?mod=post&act=delete&id=文章ID
上传文件/图片
POST /zb_system/api.php?mod=upload&act=post
使用 multipart/form-data 上传,返回图片 URL,可直接用于文章 Content 中。
六、在 OpenClaw 中配置
将获取到的 Token 和分类信息记录在 OpenClaw 的 TOOLS.md 中,AI 助手就能随时调用 API 发文了。实际体验就是:
我:「帮我发一篇关于XXX的教程到经验分享分类,标题是YYY」
AI:✅ 已发布为草稿,链接是 https://...
全程不需要打开博客后台,对话即发布。
七、踩坑记录
ID 参数必须填 0 才能新建文章:省略或填空字符串都会报 500 错误,因为代码逻辑是 GetVars('ID', 'POST') == 0 判断为新建。空字符串不等于 0。
Content 支持 HTML:文章内容是 HTML 格式,换行要用 <br/> 或 <p> 标签。
标签格式:Tag 参数传标签名称即可,用逗号分隔,Z-Blog 会自动转换为内部 ID 格式 {1}{2}。
Token 有效期:登录时 savedate 设置的天数决定 Token 有效期,到期需要重新登录获取。
八、安全建议
务必启用 HTTPS
不要在公开场合暴露 Token
定期更换 Token(重新登录即可)
发文后建议先设为草稿(Status=1),人工审核后再发布
如果只需要发文权限,可以创建一个权限受限的协作者账号单独用于 API
以上就是 OpenClaw + Z-Blog API 发文的完整教程,整个过程非常简单。Z-Blog 的 API 设计得还是比较规范的,配合 AI 助手可以大幅提升发文效率。有问题欢迎评论区交流~





还没有评论,来说两句吧...