Tristan Manchester

Fabric.co API skill

开发编程v1.0.1
作者:Tristan Manchester更新于 2026-05-11共 2 个版本 · 最新版本发布于 2026-02-26fabric-api@clawhub_tristanmanchester/fabric-api
后端开发脚本工具

据 AlphaMoat 统计,截至 2026-09,Fabric.co API skill 累计下载 3,248 次、获 1 个星标,在全部 5,078 个 AI 技能中排名第 3,509 位,在「开发编程」分类(577 个)中排名第 452 位。

累计安装
104
累计下载
3,248
星标
1
全站排名
#3,509
全站前 70% · 「开发编程」前 79%
平台累计安装累计下载星标评论
ClawHub ↗1043,2481-
SkillHub ↗1033,2141—

各平台的计数口径不同,统计时间不一致。

这个技能是做什么的

文档覆盖 notepad、文件夹、书签、资源浏览与搜索,并提供 Node 与 Python 辅助脚本。使用需要 FABRIC_API_KEY;创建、移动或修改工作区内容会改变外部账户数据,执行写操作前应核对目标位置、内容与用户授权。 仅使用默认或可信 API 端点,并审查删除、恢复和批量操作。

资料发布于 2026-10-29

可以用来做什么

  • 查找工作区中的笔记或其他资源。
  • 创建笔记、文件夹或书签。
  • 按关键词检索并管理已有内容。

什么时候用

  • 需要通过 Fabric API 查询或组织工作区资源时。
  • 创建或修改内容前,先核对目标文件夹、字段和用户授权。

示例提示词

以下是根据技能文档生成的示例,不代表实际运行结果。

搜索 Fabric 工作区中与这个主题相关的笔记,只报告匹配项。
草拟一条新笔记的标题和正文,但暂不写入 Fabric。

月度数据趋势

累计下载3,248
2,0292,6843,3382026-03 · 累计下载 2,1192026-05 · 累计下载 2,5892026-06 · 累计下载 2,7312026-07 · 累计下载 2,9782026-08 · 累计下载 3,1272026-09 · 累计下载 3,24826-0326-09
星标1
0122026-03 · 星标 12026-05 · 星标 12026-06 · 星标 12026-07 · 星标 12026-08 · 星标 12026-09 · 星标 126-0326-09

2026-09 起统计方法调整:同名技能按作者分别统计,并覆盖全部技能。图中虚线为调整前的月份,与之后的数据不直接比较,也不计算跨越调整的增长。

月份累计下载环比星标
2026-093,248—1
2026-083,127+5.0%1
2026-072,978+9.0%1
2026-062,731+5.5%1
2026-052,589—1
2026-032,119—1

SKILL.md 原文

以下是作者发布的原始文件,按纯文本显示,本站未做修改或审核;其中的链接不可点击,命令请核实后再运行。抓取于 2026-10-23。

6.0 KB · ClawHub v1.0.1
---
name: fabric-api
description: Create, search, and manage Fabric resources via the Fabric HTTP API (notepads/notes, folders, bookmarks, files, tags).
homepage: https://fabric.so
metadata: {"openclaw":{"emoji":"🧵","homepage":"https://fabric.so","requires":{"env":["FABRIC_API_KEY"],"anyBins":["node","python3","python","curl"]},"primaryEnv":"FABRIC_API_KEY"},"clawdbot":{"emoji":"🧵","homepage":"https://fabric.so","requires":{"env":["FABRIC_API_KEY"],"anyBins":["node","python3","python","curl"]},"primaryEnv":"FABRIC_API_KEY"}}
---

# Fabric API (HTTP via Node/Python)

Use this skill when you need to **read or write content in a user's Fabric workspace** using the Fabric HTTP API (`https://api.fabric.so`).
展开全部(共 175 行)

This version avoids bash-only wrapper scripts. It ships **cross-platform** helpers:

- Node: `{baseDir}/scripts/fabric.mjs` (recommended)
- Python: `{baseDir}/scripts/fabric.py`

## Critical gotchas (read first)

- **There is no** `POST /v2/notes` endpoint in the bundled OpenAPI spec. To create a “note”, use **`POST /v2/notepads`**.
- Most create endpoints require **`parentId`**:
  - A folder UUID **or** one of: `@alias::inbox`, `@alias::bin`
- Notepad creation requires:
  - `parentId`
  - and **either** `text` (markdown string) **or** `ydoc` (advanced/structured)
- `tags` must be **an array of objects**, each item **either**:
  - `{ "name": "tag name" }` **or** `{ "id": "<uuid>" }`
  - Never strings, never nested arrays.
- **Field name gotcha:** the API schema uses `name` (not `title`). If the user says “title”, map it to `name` in requests.

When the user doesn’t specify a destination folder, default to:

- `parentId: "@alias::inbox"`

## Setup (OpenClaw / Clawdbot)

This skill expects the Fabric API key in:

- `FABRIC_API_KEY`

OpenClaw config example (`~/.openclaw/openclaw.json`):

```json5
{
  skills: {
    entries: {
      "fabric-api": {
        enabled: true,
        apiKey: "YOUR_FABRIC_API_KEY"
      }
    }
  }
}
```

Notes:

- `apiKey` is a convenience for skills that declare `primaryEnv`; it injects `FABRIC_API_KEY` for the duration of an agent run.
- Don’t paste the API key into prompts, client-side code, or logs.

## HTTP basics

- Base URL: `https://api.fabric.so` (override with `FABRIC_BASE` if needed)
- Auth header: `X-Api-Key: $FABRIC_API_KEY`
- JSON header (for JSON bodies): `Content-Type: application/json`

## Convenience scripts (cross-platform)

### Node helper (recommended)

```bash
node {baseDir}/scripts/fabric.mjs GET /v2/user/me

node {baseDir}/scripts/fabric.mjs POST /v2/notepads --json '{"name":"Test note","text":"Hello","parentId":"@alias::inbox"}'
```

### Python helper

```bash
python3 {baseDir}/scripts/fabric.py GET /v2/user/me

python3 {baseDir}/scripts/fabric.py POST /v2/notepads --json '{"name":"Test note","text":"Hello","parentId":"@alias::inbox"}'
```

Notes:

- Both helpers print the response body on success.
- On HTTP errors (4xx/5xx), they print `HTTP <code> <reason>` to stderr **and still print the response body**, then exit non‑zero (similar to `curl --fail-with-body`).
- If you pass an absolute URL (`https://...`), the helpers **do not** attach `X-Api-Key` unless you explicitly pass `--with-key`.

## Core workflows

### 1) Create a notepad (note)

Endpoint: `POST /v2/notepads`

Rules:

- Map user “title” → `name`
- Use `text` for markdown content
- Always include `parentId`
- If you’re debugging 400s, start minimal (required fields only), then add `name`, then `tags`.

Minimal create:

```bash
node {baseDir}/scripts/fabric.mjs POST /v2/notepads --json '{"parentId":"@alias::inbox","text":"Hello"}'
```

Create with a name:

```bash
node {baseDir}/scripts/fabric.mjs POST /v2/notepads --json '{"name":"Calendar Test Note","text":"Created via OpenClaw","parentId":"@alias::inbox"}'
```

Create with tags (correct shape):

```bash
node {baseDir}/scripts/fabric.mjs POST /v2/notepads --json '{"name":"Ideas","text":"# Ideas\\n\\n- First\\n- Second\\n","parentId":"@alias::inbox","tags":[{"name":"ideas"},{"name":"draft"}]}'
```

If you keep seeing tag validation errors, temporarily omit `tags` and create the notepad first.

### 2) Create a folder

Endpoint: `POST /v2/folders`

```bash
node {baseDir}/scripts/fabric.mjs POST /v2/folders --json '{"name":"My new folder","parentId":"@alias::inbox","description":null}'
```

### 3) Create a bookmark

Endpoint: `POST /v2/bookmarks`

```bash
node {baseDir}/scripts/fabric.mjs POST /v2/bookmarks --json '{"url":"https://example.com","parentId":"@alias::inbox","name":"Example","tags":[{"name":"reading"}]}'
```

### 4) Browse resources (list children of a folder)

Endpoint: `POST /v2/resources/filter`

Important:

- This endpoint’s `parentId` expects a **UUID** (not an alias).
- If you only have an alias, resolve it by listing resource roots and picking the inbox/bin folder ID.

```bash
node {baseDir}/scripts/fabric.mjs POST /v2/resources/filter --json '{"parentId":"PARENT_UUID_HERE","limit":50,"order":{"property":"modifiedAt","direction":"DESC"}}'
```

### 5) Search

Endpoint: `POST /v2/search`

Use search when the user gives a fuzzy description (“the note about…”).

```bash
node {baseDir}/scripts/fabric.mjs POST /v2/search --json '{"queries":[{"mode":"text","text":"meeting notes","filters":{"kinds":["notepad"]}}],"pagination":{"page":1,"pageSize":20},"sort":{"field":"modifiedAt","order":"desc"}}'
```

## Error handling + retries (practical guidance)

- **400 Bad Request**: schema validation. Re-check required fields, and that `tags` is `[{name}|{id}]` not nested.
- **401/403**: auth/subscription/permission. Stop and report the error details; don’t brute-force.
- **404**: wrong endpoint, wrong ID, or no access.
- **429**: rate limiting. Back off (sleep + jitter) and retry **reads**. Avoid blind retries on **create** (you may create duplicates).
- **5xx**: transient; retry with backoff.

## Reference files

- OpenAPI spec (source of truth): `{baseDir}/fabric-api.yaml`
- Extra schema notes: `{baseDir}/references/REFERENCE.md`
- Debug playbook: `{baseDir}/references/TROUBLESHOOTING.md`

「开发编程」分类下的热门技能

Tristan Manchester 的其他技能

数据月份:2026-09 · 下载/星标/安装数聚合自公开技能注册库(ClawHub、SkillHub),按月更新。口径说明见数据方法。