docs: 添加 API 文档和 OpenClaw Skill
- 新增 docs/API_DOC.md API 接口文档 - 新增 .claude/skills/zjpb-api.md OpenClaw 集成说明 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
42
.claude/skills/zjpb-api.md
Normal file
42
.claude/skills/zjpb-api.md
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
# ZJPB OpenClaw Skill
|
||||||
|
|
||||||
|
## 描述
|
||||||
|
|
||||||
|
通过 OpenClaw 调用 ZJPB API 管理网站
|
||||||
|
|
||||||
|
## 使用方法
|
||||||
|
|
||||||
|
```
|
||||||
|
/zjpb-create-site <网站名称> <网站URL> [简短描述]
|
||||||
|
```
|
||||||
|
|
||||||
|
## 参数
|
||||||
|
|
||||||
|
- `<网站名称>`: 必填,网站名称
|
||||||
|
- `<网站URL>`: 必填,网站地址
|
||||||
|
- `[简短描述]`: 可选,网站简短描述
|
||||||
|
|
||||||
|
## 示例
|
||||||
|
|
||||||
|
```
|
||||||
|
/zjpb-create-site 谷歌 https://www.google.com 全球最大的搜索引擎
|
||||||
|
```
|
||||||
|
|
||||||
|
## 内部实现
|
||||||
|
|
||||||
|
调用 ZJPB API:
|
||||||
|
- URL: `http://175.178.72.171/api/key/sites`
|
||||||
|
- Method: POST
|
||||||
|
- Header: `X-API-Key: {配置的API_KEY}`
|
||||||
|
- Body: `{"name": "<网站名称>", "url": "<网站URL>", "short_desc": "[简短描述]"}`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 配置说明
|
||||||
|
|
||||||
|
在 OpenClaw 中配置:
|
||||||
|
|
||||||
|
1. 添加 Tool/MCP Server
|
||||||
|
2. 配置 API 端点: `http://175.178.72.171`
|
||||||
|
3. 设置认证: Header `X-API-Key`
|
||||||
|
4. API Key 在 ZJPB 后台「API密钥」菜单获取
|
||||||
325
docs/API_DOC.md
Normal file
325
docs/API_DOC.md
Normal file
@@ -0,0 +1,325 @@
|
|||||||
|
# ZJPB API 文档
|
||||||
|
|
||||||
|
## 概述
|
||||||
|
|
||||||
|
ZJPB 网站管理 API,通过 API Key 进行认证,可用于外部工具(如 OpenClaw)调用。
|
||||||
|
|
||||||
|
## 基础信息
|
||||||
|
|
||||||
|
- **Base URL**: `http://175.178.72.171`
|
||||||
|
- **认证方式**: Header (`X-API-Key`)
|
||||||
|
- **数据格式**: JSON
|
||||||
|
|
||||||
|
## 认证
|
||||||
|
|
||||||
|
所有 API 请求需要在 Header 中携带 API Key:
|
||||||
|
|
||||||
|
```
|
||||||
|
X-API-Key: your-api-key-here
|
||||||
|
```
|
||||||
|
|
||||||
|
获取 API Key:进入后台管理 → API密钥 → 创建新密钥
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## API 接口
|
||||||
|
|
||||||
|
### 1. 获取网站列表
|
||||||
|
|
||||||
|
```http
|
||||||
|
GET /api/key/sites
|
||||||
|
```
|
||||||
|
|
||||||
|
**权限**: `site:read`
|
||||||
|
|
||||||
|
**响应示例**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"sites": [
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"code": "12345678",
|
||||||
|
"name": "网站名称",
|
||||||
|
"url": "https://example.com",
|
||||||
|
"slug": "example",
|
||||||
|
"logo": "/uploads/logo.png",
|
||||||
|
"short_desc": "简短描述",
|
||||||
|
"description": "详细介绍",
|
||||||
|
"features": "主要功能",
|
||||||
|
"news_keywords": "关键词",
|
||||||
|
"is_active": true,
|
||||||
|
"is_recommended": false,
|
||||||
|
"view_count": 100,
|
||||||
|
"tags": ["标签1", "标签2"],
|
||||||
|
"created_at": "2026-03-23 10:00:00"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. 创建网站
|
||||||
|
|
||||||
|
```http
|
||||||
|
POST /api/key/sites
|
||||||
|
```
|
||||||
|
|
||||||
|
**权限**: `site:write`
|
||||||
|
|
||||||
|
**请求体**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "网站名称",
|
||||||
|
"url": "https://example.com",
|
||||||
|
"slug": "example",
|
||||||
|
"logo": "/uploads/logo.png",
|
||||||
|
"short_desc": "简短描述",
|
||||||
|
"description": "详细介绍",
|
||||||
|
"features": "主要功能",
|
||||||
|
"news_keywords": "关键词",
|
||||||
|
"tags": ["标签1", "标签2"],
|
||||||
|
"is_active": true,
|
||||||
|
"is_recommended": false,
|
||||||
|
"sort_order": 0
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**字段说明**:
|
||||||
|
| 字段 | 必填 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| name | 是 | 网站名称 |
|
||||||
|
| url | 是 | 网站 URL |
|
||||||
|
| slug | 否 | URL别名,用于 SEO |
|
||||||
|
| logo | 否 | Logo 图片路径 |
|
||||||
|
| short_desc | 否 | 简短描述 |
|
||||||
|
| description | 否 | 详细介绍 |
|
||||||
|
| features | 否 | 主要功能 |
|
||||||
|
| news_keywords | 否 | 新闻关键词 |
|
||||||
|
| tags | 否 | 标签数组 |
|
||||||
|
| is_active | 否 | 是否启用,默认 true |
|
||||||
|
| is_recommended | 否 | 是否推荐,默认 false |
|
||||||
|
| sort_order | 否 | 排序权重,默认 0 |
|
||||||
|
|
||||||
|
**响应示例**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"site": {
|
||||||
|
"id": 2,
|
||||||
|
"code": "87654321",
|
||||||
|
"name": "网站名称",
|
||||||
|
"url": "https://example.com",
|
||||||
|
"slug": "example"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. 获取单个网站
|
||||||
|
|
||||||
|
```http
|
||||||
|
GET /api/key/sites/{code}
|
||||||
|
```
|
||||||
|
|
||||||
|
**权限**: `site:read`
|
||||||
|
|
||||||
|
**参数**:
|
||||||
|
- `code`: 网站编码(8位数字)
|
||||||
|
|
||||||
|
**响应示例**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"site": {
|
||||||
|
"id": 1,
|
||||||
|
"code": "12345678",
|
||||||
|
"name": "网站名称",
|
||||||
|
"url": "https://example.com",
|
||||||
|
...
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 4. 更新网站
|
||||||
|
|
||||||
|
```http
|
||||||
|
PUT /api/key/sites/{code}
|
||||||
|
```
|
||||||
|
|
||||||
|
**权限**: `site:write`
|
||||||
|
|
||||||
|
**参数**:
|
||||||
|
- `code`: 网站编码(8位数字)
|
||||||
|
|
||||||
|
**请求体**: 同创建网站,可只传需要更新的字段
|
||||||
|
|
||||||
|
**响应示例**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"site": {
|
||||||
|
"id": 1,
|
||||||
|
"code": "12345678",
|
||||||
|
"name": "新名称",
|
||||||
|
...
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 5. 删除网站
|
||||||
|
|
||||||
|
```http
|
||||||
|
DELETE /api/key/sites/{code}
|
||||||
|
```
|
||||||
|
|
||||||
|
**权限**: `site:write`
|
||||||
|
|
||||||
|
**参数**:
|
||||||
|
- `code`: 网站编码(8位数字)
|
||||||
|
|
||||||
|
**响应示例**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"message": "网站已删除"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 错误响应
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"success": false,
|
||||||
|
"message": "错误信息"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**状态码**:
|
||||||
|
- `200`: 成功
|
||||||
|
- `400`: 请求参数错误
|
||||||
|
- `401`: 认证失败(无效的 API Key)
|
||||||
|
- `403`: 权限不足
|
||||||
|
- `404`: 资源不存在
|
||||||
|
- `500`: 服务器错误
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 使用示例
|
||||||
|
|
||||||
|
### cURL
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 获取网站列表
|
||||||
|
curl -X GET http://175.178.72.171/api/key/sites \
|
||||||
|
-H "X-API-Key: your-api-key"
|
||||||
|
|
||||||
|
# 创建网站
|
||||||
|
curl -X POST http://175.178.72.171/api/key/sites \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-H "X-API-Key: your-api-key" \
|
||||||
|
-d '{
|
||||||
|
"name": "示例网站",
|
||||||
|
"url": "https://example.com",
|
||||||
|
"short_desc": "这是一个示例网站",
|
||||||
|
"tags": ["科技", "开源"]
|
||||||
|
}'
|
||||||
|
|
||||||
|
# 更新网站
|
||||||
|
curl -X PUT http://175.178.72.171/api/key/sites/12345678 \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-H "X-API-Key: your-api-key" \
|
||||||
|
-d '{"name": "新名称"}'
|
||||||
|
|
||||||
|
# 删除网站
|
||||||
|
curl -X DELETE http://175.178.72.171/api/key/sites/12345678 \
|
||||||
|
-H "X-API-Key: your-api-key"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Python
|
||||||
|
|
||||||
|
```python
|
||||||
|
import requests
|
||||||
|
|
||||||
|
API_KEY = "your-api-key"
|
||||||
|
BASE_URL = "http://175.178.72.171"
|
||||||
|
headers = {"X-API-Key": API_KEY}
|
||||||
|
|
||||||
|
# 获取网站列表
|
||||||
|
response = requests.get(f"{BASE_URL}/api/key/sites", headers=headers)
|
||||||
|
print(response.json())
|
||||||
|
|
||||||
|
# 创建网站
|
||||||
|
data = {
|
||||||
|
"name": "示例网站",
|
||||||
|
"url": "https://example.com",
|
||||||
|
"short_desc": "这是一个示例网站",
|
||||||
|
"tags": ["科技", "开源"]
|
||||||
|
}
|
||||||
|
response = requests.post(f"{BASE_URL}/api/key/sites", json=data, headers=headers)
|
||||||
|
print(response.json())
|
||||||
|
```
|
||||||
|
|
||||||
|
### JavaScript
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
const API_KEY = "your-api-key";
|
||||||
|
const BASE_URL = "http://175.178.72.171";
|
||||||
|
const headers = { "X-API-Key": API_KEY };
|
||||||
|
|
||||||
|
// 获取网站列表
|
||||||
|
fetch(`${BASE_URL}/api/key/sites`, { headers })
|
||||||
|
.then(res => res.json())
|
||||||
|
.then(data => console.log(data));
|
||||||
|
|
||||||
|
// 创建网站
|
||||||
|
fetch(`${BASE_URL}/api/key/sites`, {
|
||||||
|
method: "POST",
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"X-API-Key": API_KEY
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
name: "示例网站",
|
||||||
|
url: "https://example.com",
|
||||||
|
short_desc: "这是一个示例网站"
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(res => res.json())
|
||||||
|
.then(data => console.log(data));
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## OpenClaw 集成
|
||||||
|
|
||||||
|
在 OpenClaw 中配置 API:
|
||||||
|
|
||||||
|
1. **Base URL**: `http://175.178.72.171`
|
||||||
|
2. **Auth Header**: `X-API-Key`
|
||||||
|
3. **Auth Value**: 你创建的 API Key
|
||||||
|
|
||||||
|
创建网站的 prompt 示例:
|
||||||
|
|
||||||
|
```
|
||||||
|
你是一个网站发布助手。请根据用户提供的网站信息,调用 ZJPB API 创建网站。
|
||||||
|
|
||||||
|
网站信息:
|
||||||
|
- 名称:{name}
|
||||||
|
- URL:{url}
|
||||||
|
- 描述:{description}
|
||||||
|
|
||||||
|
请调用 POST /api/key/sites 接口创建网站。
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**最后更新**: 2026-03-23
|
||||||
Reference in New Issue
Block a user