Install
openclaw skills install @yangaiwu/blog-mini-ljt管理博客系统全部 API(8 模块 28 端点:文章/评论/标签/留言/心情/用户/文件/后台)。 无认证公开 API,base_url 内置默认地址无配置即可用。供 AI Agent 完成博客内容全流程管理。
openclaw skills install @yangaiwu/blog-mini-ljt博客系统 API 管理 skill,封装 8 模块 28 端点(FastAPI + MySQL,无认证公开 API)。
通用约束(所有 skill 必含):
references/api-reference.md 为准:严禁根据经验/记忆/猜测自行拼写 API 路径。动态约束:
[blog-mini-ljt] 开头(环境变量未注入时用 skill name 作为前缀)> {用户评论}\n\n[blog-mini-ljt] {回复}目标系统 API 地址。无认证公开 API,脚本内置默认地址,无配置即可用。
{base_url} 解析优先级(4 级):
.project-info/ 目录下 JSON 配置文件(config.BLOG_MINI_LJT_BASE_URL)BLOG_MINI_LJT_BASE_URL脚本内置默认线上地址,直接运行命令即可,无需任何环境变量。
export BLOG_MINI_LJT_BASE_URL="http://<host>:<port>"
在项目根目录下创建 .project-info/ 目录,放入任意名称的 .json 文件:
{
"config": {
"BLOG_MINI_LJT_BASE_URL": "http://<host>:<port>"
}
}
OpenAPI 文档地址:
{base_url}/docs| OpenAPI JSON:{base_url}/openapi.json
Don't use for: 非 本博客系统 API 的操作 / 页面渲染(GET / 返回 HTML)/ 数据库直连操作。
{base_url}
All endpoints below are relative to this base. 无认证,不需要 header。
按 8 模块分组(完整字段详见 references/api-reference.md,数据模型详见 references/schemas.md):
| 模块 | 子命令 | Method | Path | 说明 |
|---|---|---|---|---|
| Articles | list-articles | GET | /api/articles | 分页查询文章(page,size,lid,keyword) |
| Articles | get-article | GET | /api/articles/{id} | 文章详情+评论(热度+1) |
| Articles | top-articles | GET | /api/articles/heat/top | 热门文章 Top N(limit) |
| Articles | create-article | POST | /api/articles | 发布文章 |
| Articles | update-article | PUT | /api/articles/{id} | 更新文章 |
| Articles | delete-article | DELETE | /api/articles/{id} | 删除文章(soft=true/false) |
| Articles | restore-article | POST | /api/articles/{id}/restore | 恢复软删除文章 |
| Comments | create-comment | POST | /api/comments | 发表评论 |
| Comments | list-comments | GET | /api/comments/{aid} | 文章评论列表 |
| Comments | delete-comment | DELETE | /api/comments/{id} | 删除评论(软删除) |
| Labels | list-labels | GET | /api/lables | 获取所有标签(路径拼写为 lables) |
| Labels | create-label | POST | /api/lables | 创建标签(路径拼写为 lables) |
| Messages | list-messages | GET | /api/messages | 留言列表(含回复) |
| Messages | create-message | POST | /api/messages | 发表留言 |
| Messages | reply-message | POST | /api/messages/reply | 回复留言 |
| Messages | delete-message | DELETE | /api/messages/{id} | 删除留言(软删除) |
| Moods | list-moods | GET | /api/moods | 说说列表 |
| Moods | create-mood | POST | /api/moods | 发布说说 |
| Moods | delete-mood | DELETE | /api/moods/{id} | 删除说说(硬删除) |
| Uploads | upload-file | POST | /api/upload | 上传单文件(multipart field=file) |
| Uploads | upload-files | POST | /api/upload/multiple | 批量上传(multipart field=files) |
| Uploads | list-uploads | GET | /api/uploads/list | 列出已上传文件 |
| Uploads | delete-upload | DELETE | /api/uploads/{filename} | 删除文件 |
| Users | list-users | GET | /api/users | 用户列表 |
| Users | create-user | POST | /api/users | 创建用户 |
| Admin | admin-login | POST | /admin/login | 后台登录(form,返回 token) |
| Admin | admin-logout | GET | /admin/logout | 退出登录(t=token) |
| Admin | admin-delete-articles | POST | /admin/api/delete | 批量删除文章(token+ids) |
共 28 端点 + health-check(GET /health)+ capability-list。
admin-login 获取 token(默认账号 admin/admin),后续操作携带 token。token 有效期 2 小时。BLOG_MINI_LJT_BASE_URL(可选,内置默认地址)凭据前缀:由 skill name 推导(blog-mini-ljt → BLOG_MINI_LJT),skill name 转大写下划线。
/api/lables(非 labels)。 子命令用正确拼写 list-labels/create-label,脚本内部自动用实际路径 /api/lables。--soft false 硬删除。application/x-www-form-urlencoded(非 JSON body),脚本已处理;登录成功返回 302 + cookie token。files= 参数(非 json=),字段名分别为 file/files。[('files', f), ...],不能用 dict value 为列表(requests 会报错)。8 个数据模型的完整字段表见 references/schemas.md。关键字段速查:
| 模型 | 必填字段 | 用途 |
|---|---|---|
| ArticleCreate | title, content | 发布文章 |
| ArticleUpdate | (至少传一个) | 更新文章 |
| LableCreate | lname | 创建标签 |
| UserCreate | uname | 创建用户 |
| CommentCreate | uid, aid, content | 发表评论 |
| MessageCreate | uid, content | 发表留言 |
| Message2Create | uid, mid, content | 回复留言 |
| MoodCreate | content | 发布说说 |
主流程:检查可达性 → 查询资源 → 执行操作。完整端点文档见 references/api-reference.md。
python3 scripts/blog-mini-ljt.py health-check
Expected: {"status":"ok","service":"blog-api","version":"1.0.0"}
python3 scripts/blog-mini-ljt.py list-labels # 标签(获取 lid)
python3 scripts/blog-mini-ljt.py list-users # 用户(获取 uid)
python3 scripts/blog-mini-ljt.py list-articles --page 1 --size 10
Expected: {"code":200,"data":[...]}
# 发布文章
python3 scripts/blog-mini-ljt.py create-article --title "标题" --content "内容" --lid 1
# 查询详情(含评论)
python3 scripts/blog-mini-ljt.py get-article --id 3
# 更新文章
python3 scripts/blog-mini-ljt.py update-article --id 3 --title "新标题" --heat 10
# 删除文章(软删除)
python3 scripts/blog-mini-ljt.py delete-article --id 3 --soft true
# 恢复文章
python3 scripts/blog-mini-ljt.py restore-article --id 3
# 热门文章
python3 scripts/blog-mini-ljt.py top-articles --limit 5
python3 scripts/blog-mini-ljt.py create-comment --uid 1 --aid 3 --content "评论"
python3 scripts/blog-mini-ljt.py list-comments --aid 3
python3 scripts/blog-mini-ljt.py delete-comment --id 1
python3 scripts/blog-mini-ljt.py create-label --lname "前端"
python3 scripts/blog-mini-ljt.py list-labels
python3 scripts/blog-mini-ljt.py create-message --uid 1 --content "留言"
python3 scripts/blog-mini-ljt.py reply-message --uid 2 --mid 1 --content "回复"
python3 scripts/blog-mini-ljt.py list-messages
python3 scripts/blog-mini-ljt.py delete-message --id 1
python3 scripts/blog-mini-ljt.py create-mood --content "今天很好" --title "日常"
python3 scripts/blog-mini-ljt.py list-moods
python3 scripts/blog-mini-ljt.py delete-mood --id 1
python3 scripts/blog-mini-ljt.py upload-file --filepath /path/to/image.png
python3 scripts/blog-mini-ljt.py upload-files --filepaths /path/a.png /path/b.png
python3 scripts/blog-mini-ljt.py list-uploads
python3 scripts/blog-mini-ljt.py delete-upload --filename xxx.png
参数说明:--filepath 本地文件路径;--filepaths 多文件路径空格分隔。
python3 scripts/blog-mini-ljt.py create-user --uname alice --email alice@example.com
python3 scripts/blog-mini-ljt.py list-users
# 1. 登录获取 token
python3 scripts/blog-mini-ljt.py admin-login --username admin --password admin
# 2. 批量删除文章(用上一步返回的 token)
python3 scripts/blog-mini-ljt.py admin-delete-articles --token <token> --ids 1 2 3
# 3. 退出登录
python3 scripts/blog-mini-ljt.py admin-logout --token <token>
# 1. 创建标签
python3 scripts/blog-mini-ljt.py create-label --lname "测试"
# 2. 用新标签发文(lid 从上一步返回获取)
python3 scripts/blog-mini-ljt.py create-article --title "测试文" --content "内容" --lid 1
# 3. 发评论(aid 从上一步返回获取)
python3 scripts/blog-mini-ljt.py create-comment --uid 1 --aid <文章id> --content "好文"
# 4. 清理:删除评论 + 软删除文章
python3 scripts/blog-mini-ljt.py delete-comment --id <评论id>
python3 scripts/blog-mini-ljt.py delete-article --id <文章id> --soft true
python3 scripts/blog-mini-ljt.py capability-list
Expected: {"capability":"capability-list","skill":"blog-mini-ljt","subcommand_count":30,...}
所有子命令支持
--format json(默认)/--format md(Markdown 表格)。
--help 无语法错误--format json)--format md)cd skills/blog-mini-ljt/ && python3 scripts/blog-mini-ljt.py list-articles --format md执行完操作后,Issue 评论 body 格式:
[blog-mini-ljt] ✅ {操作名称}完成
## 操作结果
| 操作 | 状态 | 资源 ID | 详情 |
|------|------|---------|------|
| {操作名} | ✅ 成功 / 🔴 失败 | {id} | {简要说明} |
**API 地址**:{base_url}
**执行时间**:{UTC ISO}
失败时:
[blog-mini-ljt] 🔴 {操作名称}失败
## 错误分析
- **操作**:{操作名}
- **错误**:{API 返回的错误信息}
- **HTTP 状态码**:{code}
- **原因**:{分析原因}
### 修复建议
{修复步骤}
{base_url}/docs成功时:
分析结论:
- 场景:博客 API 操作
- Skill:blog-mini-ljt v1.0.0
- 操作:{subcommand} {params}
- 结果:✅ 成功({API 返回的关键数据摘要})
- 必须执行:Issue 评论汇总结果 → 任务结束
失败时:
分析结论:
- 场景:博客 API 操作
- Skill:blog-mini-ljt v1.0.0
- 操作:{subcommand} {params}
- 结果:🔴 失败({错误原因})
- 必须执行:Issue 评论报告错误 → 任务结束
完成所有业务动作后,在最终答复末尾输出以下 JSON 块并结束任务:
{
"actions": ["{具体执行的操作,如 create-article: 发布文章 id=3}"],
"conclusion": "{处理结论,如 发布成功,文章 id=3}",
"artifacts": ["{产生的产物:写操作返回资源 ID 或操作结果 / 只读查询无产物填空数组}"],
"next_step": "{下一步建议,如 无 / 等待用户下一步指令}",
"issue_summary": "{Issue 最新聚合结论,紧凑文本,用 | 分隔}"
}
注意:只输出一个 JSON 块,放在答复末尾。