AI 或自动化脚本可通过以下接口,将工具文件及说明上传到本站私密区。上传成功后,工具会自动出现在私密工具列表中,并生成受密码保护的下载链接。
multipart/form-data所有请求必须在请求头中携带 API Token,支持以下两种方式(任选其一):
# 方式一:自定义头
X-API-Token: YOUR_TOKEN
# 方式二:标准 Bearer
Authorization: Bearer YOUR_TOKEN
Token 缺失或错误时返回 401 Unauthorized。
上传需要 API Token 进行认证,Token 由站点管理员单独提供。请妥善保管,不要泄露到公开仓库或客户端代码中。
接口接收以下表单字段。其中 file 为必填,其余均为可选:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
file | File | 必填 | 要上传的工具文件(zip、脚本、二进制等任意类型) |
id | string | 可选 | 工具唯一标识。不传则自动生成;传入已存在的 ID 会覆盖该工具(旧文件被删除) |
name | string | 可选 | 工具显示名称。不传则使用文件名(去掉扩展名) |
description | string | 可选 | 工具的一句话说明,会显示在卡片上 |
lang | string | 可选 | 编程语言或技术栈,如 Python、Go、Rust、Shell,默认 Unknown |
tags | string | 可选 | 标签,多个用英文逗号 , 或中文逗号 , 分隔,如 运维,脚本 |
icon | string | 可选 | 一个 emoji 作为工具图标,如 🤖,默认 📦 |
status | string | 可选 | 状态:已完成、WIP(开发中)、自用,默认 WIP |
# 最简上传(仅文件)
curl -X POST 上传地址 \
-H "X-API-Token: 你的Token" \
-F "file=@my-tool.zip"
# 带上完整元数据
curl -X POST 上传地址 \
-H "Authorization: Bearer 你的Token" \
-F "file=@my-tool.zip" \
-F "id=my-tool" \
-F "name=我的工具" \
-F "description=这是一个好用的工具" \
-F "lang=Python" \
-F "tags=运维,脚本" \
-F "icon=🤖" \
-F "status=已完成"
import requests
url = "上传地址"
headers = {"X-API-Token": "你的Token"}
with open("my-tool.zip", "rb") as f:
resp = requests.post(
url,
headers=headers,
files={"file": f},
data={
"name": "我的工具",
"description": "这是一个好用的工具",
"lang": "Python",
"tags": "运维,脚本",
"status": "已完成",
},
)
print(resp.status_code)
print(resp.json())
const fs = require("fs");
const form = new FormData();
form.append("file", fs.createReadStream("./my-tool.zip"));
form.append("name", "我的工具");
form.append("description", "这是一个好用的工具");
form.append("lang", "Node.js");
form.append("tags", "工具,CLI");
fetch("上传地址", {
method: "POST",
headers: {
"X-API-Token": "你的Token",
...form.getHeaders(),
},
body: form,
}).then(r => r.json()).then(console.log);
{
"ok": true,
"id": "my-tool",
"name": "我的工具",
"file": "my-tool.zip",
"size": 17408,
"size_human": "17 KB",
"url": "/私密路径/dl/my-tool.zip",
"replaced": false,
"created_at": "2026-08-26"
}
| 字段 | 说明 |
|---|---|
ok | 是否成功,固定为 true |
id | 工具 ID(传入的或自动生成的) |
name | 工具名称 |
file | 服务器上保存的文件名(已做安全清洗,同名自动加序号) |
size | 文件大小,单位字节 |
size_human | 人类可读的文件大小 |
url | 下载路径(需登录私密区后才能访问) |
replaced | 是否覆盖了已有的同 ID 工具 |
created_at | 上传或更新日期 |
错误时 HTTP 状态码表示错误类型,响应体为 JSON,包含 error 字段:
{ "error": "错误信息" }
| 状态码 | 含义 |
|---|---|
400 | 请求格式错误:缺少 file 字段、不是 multipart 请求、表单解析失败等 |
401 | API Token 缺失或不正确 |
404 | 请求路径错误 |
413 | 文件超过 500 MB 大小限制 |
id 时,会替换该工具的元数据与文件,旧文件被删除,响应中 replaced 为 true。401。