API 与集成
WesCraft 提供完整的 HTTP API,支持与第三方工具集成、自动化工作流和 Webhook 回调。你可以通过 API 管理页面、数据表、收集箱、任务等所有核心功能。
HTTP 网关概览
WesCraft 运行时启动一个内置 HTTP 网关,默认监听 :3100 端口。
基础信息
| 属性 | 值 |
|---|---|
| 基础 URL | http://localhost:3100 |
| API 前缀 | /v1/ |
| 认证方式 | Bearer Token |
| 内容类型 | application/json |
| 字符编码 | UTF-8 |
获取 API Token
- 打开 WesCraft 设置(
Ctrl+,) - 选择 开发者 → API Token
- 点击 生成新 Token
- 复制并妥善保管 Token
认证方式
在每个请求的 Header 中携带 Token:
curl -H "Authorization: Bearer YOUR_TOKEN" \
http://localhost:3100/v1/pages
核心 API
页面管理
列出页面
GET /v1/pages?limit=20&offset=0
响应示例:
{
"items": [
{
"id": "page-abc123",
"title": "项目计划",
"created_at": "2026-01-15T10:00:00Z",
"updated_at": "2026-01-20T14:30:00Z",
"parent_id": null
}
],
"total": 42,
"limit": 20,
"offset": 0
}
获取页面内容
GET /v1/pages/{pageId}
创建页面
POST /v1/pages
Content-Type: application/json
{
"title": "新页面标题",
"content": "页面内容,支持 Markdown",
"parent_id": "page-parent123",
"tags": ["标签1", "标签2"]
}
更新页面
PATCH /v1/pages/{pageId}
Content-Type: application/json
{
"title": "更新后的标题",
"content": "更新后的内容"
}
删除页面
DELETE /v1/pages/{pageId}
搜索
全文搜索
GET /v1/search?q=关键词&type=page&limit=10
参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
q | string | 搜索关键词 |
type | string | 搜索范围:page/database/inbox/all |
limit | int | 返回数量限制 |
offset | int | 分页偏移量 |
收集箱
添加到收集箱
POST /v1/inbox
Content-Type: application/json
{
"title": "自动采集的内容",
"content": "正文内容...",
"source": "api",
"tags": ["自动化"],
"metadata": {
"source_url": "https://example.com/article",
"author": "张三"
}
}
列出收集箱内容
GET /v1/inbox?status=unread&limit=20
处理收集箱项目
POST /v1/inbox/{itemId}/convert
Content-Type: application/json
{
"target": "page",
"parent_id": "page-parent123",
"ai_enhance": true
}
数据表
查询数据表记录
POST /v1/databases/{dbId}/query
Content-Type: application/json
{
"filter": {
"field": "状态",
"operator": "equals",
"value": "进行中"
},
"sort": {
"field": "创建时间",
"direction": "desc"
},
"limit": 50
}
自然语言查询
POST /v1/databases/{dbId}/ai-query
Content-Type: application/json
{
"query": "找出本月金额最大的 5 笔订单"
}
创建记录
POST /v1/databases/{dbId}/records
Content-Type: application/json
{
"fields": {
"名称": "新项目",
"状态": "待办",
"优先级": "高",
"截止日期": "2026-03-01"
}
}
更新记录
PATCH /v1/databases/{dbId}/records/{recordId}
Content-Type: application/json
{
"fields": {
"状态": "已完成"
}
}
任务
列出任务
GET /v1/tasks?status=pending&limit=20
创建任务
POST /v1/tasks
Content-Type: application/json
{
"title": "完成季度报告",
"description": "整理 Q4 数据并撰写总结报告",
"priority": "high",
"due_date": "2026-02-15",
"tags": ["季度报告", "Q4"]
}
AI 对话
发送消息并获取 AI 回复
POST /v1/chat
Content-Type: application/json
{
"session_id": "session-abc",
"message": "帮我总结一下项目计划页面的要点",
"context": {
"page_id": "page-abc123"
}
}
响应为 SSE 流式输出。
第三方工具集成
与 n8n 集成
WesCraft 可以作为 n8n 工作流的数据源和目标:
- 在 n8n 中添加 HTTP Request 节点
- 配置 WesCraft API 地址和 Token
- 构建自动化流程
示例工作流:RSS 订阅 → 提取内容 → 保存到 WesCraft 收集箱
与 Zapier 集成
通过 Webhook 触发器实现 Zapier 集成:
- 在 WesCraft 中配置 Webhook 出站通知
- 在 Zapier 中创建 Catch Hook 触发器
- 配置后续操作步骤
与命令行工具集成
使用 curl 或任何 HTTP 客户端调用 API:
# 获取今日待办任务
curl -s -H "Authorization: Bearer $TOKEN" \
"http://localhost:3100/v1/tasks?status=pending&due=today" | jq .
# 快速添加笔记到收集箱
curl -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"快速笔记","content":"临时想法..."}' \
http://localhost:3100/v1/inbox
自动化工作流
定时任务
结合系统 cron 或外部调度器,实现自动化:
# 每天早上 9 点生成任务摘要
0 9 * * * curl -X POST http://localhost:3100/v1/chat \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"message":"生成今日任务摘要并发送到收集箱"}'
文件监听
通过 API 结合文件系统监听工具(如 fswatch),自动导入文件变更:
# 监听指定目录,新文件自动导入
fswatch ~/Documents/notes/ | while read file; do
curl -X POST http://localhost:3100/v1/inbox \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d "{\"title\":\"$(basename $file)\",\"content\":\"$(cat $file)\"}"
done
Webhook 使用
配置出站 Webhook
当 WesCraft 中发生特定事件时,可以向外部 URL 发送通知。
- 打开设置 → 开发者 → Webhook
- 点击 添加 Webhook
- 配置:
- URL:接收通知的外部地址
- 事件:触发的事件类型
- 密钥:用于验证请求来源的签名密钥
支持的事件类型
| 事件 | 说明 |
|---|---|
page.created | 新页面创建 |
page.updated | 页面内容更新 |
page.deleted | 页面被删除 |
task.created | 新任务创建 |
task.completed | 任务被标记完成 |
inbox.received | 收集箱收到新内容 |
database.record.created | 数据表新增记录 |
database.record.updated | 数据表记录更新 |
Webhook 请求格式
{
"event": "page.created",
"timestamp": "2026-01-20T14:30:00Z",
"data": {
"id": "page-abc123",
"title": "新建的页面",
"created_by": "user-xyz"
},
"signature": "sha256=..."
}
验证签名
import hmac
import hashlib
def verify_webhook(payload, signature, secret):
expected = hmac.new(
secret.encode(), payload.encode(), hashlib.sha256
).hexdigest()
return hmac.compare_digest(f"sha256={expected}", signature)
错误处理
HTTP 状态码
| 状态码 | 含义 |
|---|---|
| 200 | 成功 |
| 201 | 创建成功 |
| 400 | 请求参数错误 |
| 401 | 认证失败(Token 无效或过期) |
| 403 | 无权限 |
| 404 | 资源不存在 |
| 429 | 请求频率超限 |
| 500 | 服务器内部错误 |
错误响应格式
{
"error": {
"code": "INVALID_PARAMETER",
"message": "字段 'title' 不能为空",
"details": {}
}
}
请求频率限制
- 默认限制:100 次/分钟
- 搜索接口:30 次/分钟
- AI 对话接口:10 次/分钟
注意事项
- Token 安全:API Token 等同于账户权限,请妥善保管,不要在客户端代码中硬编码
- 本地访问:默认仅允许本机访问,如需远程访问请配置网络安全策略
- 数据一致性:API 操作和 UI 操作使用同一数据源,实时同步
- 版本兼容:API 路径以
/v1/开头,未来不兼容变更会使用/v2/ - SSE 流:AI 对话接口使用 SSE 流式输出,请使用支持 SSE 的客户端库