写完博客还要开后台粘贴,来回切窗口挺烦的。我把 VanBlog 的 API Token 和发布动作收成可复用 skill,对话里确认标题就能发。
目标很简单:在对话里写完 Markdown,对一下标题和分类,直接打到本机 VanBlog,而不是再开浏览器点保存。
下面是这次真实落地:实例怎么确认还活着、官方 API 怎么鉴权、以及我怎么把流程收成长期能复用的 CLI。
本机 Ubuntu 虚拟机上的 VanBlog 以 Docker 方式运行,常见状态如下:
vanblog-web:mereith/van-blog:latest,映射 7172 -> 80vanblog-db:mongo:4.4.0http://<vm-ip>:7172https://blog.zym588.me/swagger 与 /swagger-json官方文档写得很诚实:目前没有单独写厚厚的 API 手册,以生成的 Swagger 为准。管理端接口统一用请求头鉴权:
httptoken: <你的 API Token>
Token 在后台「系统设置 → Token 管理」创建。长期 API Token 比登录 session 更适合 agent:不用每次重新登录,也不用把账号密码塞进脚本。
httpPOST /api/admin/article Header: token: <TOKEN> Content-Type: application/json
最小可用 JSON:
json{
"title": "文章标题",
"category": "技术漫谈",
"content": "# Markdown 正文",
"tags": ["AI", "自动化", "个人网站"],
"author": "小转圈",
"hidden": false,
"private": false
}
title 和 category 是必填;category 必须是后台已存在的分类名。本站当前常用分类:
适合想先存一版再改的场景:
POST /api/admin/draft 创建草稿PUT /api/admin/draft/:id 继续改POST /api/admin/draft/publish?id=<draftId> 正式发布发布后 VanBlog 会触发 ISR,前台页面会随后刷新。
与其每次让模型现场拼 curl,我更愿意固定一个小工具。现在 skill 里大致这么调:
bash# 健康检查 + token 是否有效
python vanblog_cli.py status --token-check
# 直接发布
python vanblog_cli.py publish \
--title "文章标题" \
--category 技术漫谈 \
--tags "AI,自动化,个人网站" \
--content-file ./post.md
# 只想先存草稿
python vanblog_cli.py draft --title "..." --content-file ./post.md
# 改旧文
python vanblog_cli.py update --id 74 --content-file ./post.md
配置优先读 ~/.vanblog.json,也可以放在 skill 的 assets/config.json。关键字段只有两个:
json{
"base_url": "http://10.10.158.160:7172",
"public_base_url": "https://blog.zym588.me",
"token": "<API_TOKEN>",
"default_category": "技术漫谈",
"default_author": "小转圈"
}
这样发文时不用反复问密钥,也不会把 token 写进正文。
分类名必须精确匹配
写 技术 或 Tech 都会失败。不存在时先调 POST /api/admin/category,或 CLI 的 ensure-category。
token 头字段名就是 token
不是 Authorization: Bearer ...。照着 Swagger 抄最省事。
登录字段是 username + password
用 name 会直接 401。登录拿到的是短期 session token;agent 场景仍建议换成 Token 管理里的长期密钥。
发布成功 ≠ 公网立刻可打开
内网 API 写入成功后,若域名反代/frp 异常,公网可能暂时 401/打不开。这时先用内网:
bashpython vanblog_cli.py get --id <id> --public
日志里偶发 Cast to Number failed for value "NaN"
多半是有人拿非数字当文章 id 请求。正常数字 id 发文不受影响。
publish 或 drafthttps://blog.zym588.me/post/<id>一句话:接口其实够用了,缺的是把鉴权、分类和发布动作固定下来。 固定好之后,写博客就从「打开后台」变成「在对话里收个尾」。
POST /api/admin/article,头里带 token如果你也在用 agent 养个人站,不妨先跑通「一篇文章的一键发布」。通了以后,改文、草稿、配图都可以顺着同一套管线往上加。
本文作者:小转圈
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!