home / skills / openclaw / skills / appflowy-skill

appflowy-skill skill

/skills/balonegit/appflowy-skill

This skill helps you automate and debug AppFlowy API usage for authentication, document operations, search, and workspace management.

npx playbooks add skill openclaw/skills --skill appflowy-skill

Review the files below or copy the command above to add this skill to your agents.

Files (40)
SKILL.md
4.4 KB
---
name: appflowy-api
description: "AppFlowy Cloud/GoTrue API 的认证与调用流程(获取 token、workspace/文档/数据库/搜索等)。在本仓库用 Python 编写或调试 AppFlowy API 客户端、脚本、自动化或排查接口问题时使用。"
---

# AppFlowy API

## 概述
本 skill 用于自托管 AppFlowy 环境的 API 调用与自动化,覆盖登录鉴权、文档/视图/数据库操作、搜索、协作数据(collab)等常见场景。默认**不读取 `.env`**,仅在显式传入 `--env <path>` 时读取。

本 skill 当前适配 AppFlowy Cloud `0.12.3`。`doctor.py` 会通过 `/api/health` 检测版本并在不匹配时给出警告。

## 快速开始
1. 准备 base URL 与 GoTrue URL(可选 `--env <path>` 读取 `.env`)。
2. 使用账号密码获取 `access_token`。
3. 携带必要请求头调用 AppFlowy API。

```bash
# 获取 token
curl -sS -X POST "http://10.60.0.189/gotrue/token?grant_type=password" \
  -H "Content-Type: application/json" \
  -d '{"email":"<email>","password":"<password>"}'
```

```bash
# 调用 API(示例:搜索)
curl -sS "http://10.60.0.189/api/search/<workspace_id>?query=test" \
  -H "Authorization: Bearer <access_token>" \
  -H "client-version: 0.12.3" \
  -H "client-timestamp: 1700000000000" \
  -H "device-id: <uuid>"
```

## 统一入口(推荐)
统一入口脚本用于封装命令风格,适合自动化与外部集成:

```bash
python skills/appflowy-api/scripts/appflowy_skill.py list
python skills/appflowy-api/scripts/appflowy_skill.py help apply-grid
```

## 配置优先级
解析优先级(从高到低):
1. 命令行参数:`--base-url`、`--gotrue-url`、`--client-version`、`--device-id`
2. 配置文件:`--config <path>`(JSON,示例见 `skills/appflowy-api/references/config.example.json`)
3. 环境变量:`APPFLOWY_BASE_URL`、`API_EXTERNAL_URL`、`APPFLOWY_GOTRUE_BASE_URL`
4. `.env` 文件:仅在传入 `--env <path>` 时读取

## 常用脚本
```bash
# 获取 token
python skills/appflowy-api/scripts/get_token.py --email <email> --password <password>
```

```bash
# 自检(不会自动读取 .env)
python skills/appflowy-api/scripts/doctor.py --config skills/appflowy-api/references/config.example.json --email <email> --password <password>
```

```bash
# 生成“用户管理系统”文档(UTF-8 模板,表格顺序为正序)
python skills/appflowy-api/scripts/create_user_management_doc.py --config skills/appflowy-api/references/config.example.json --email <email> --password <password>
```

```bash
# 就地修正文档(通用模板脚本)
python skills/appflowy-api/scripts/update_user_management_doc.py --config skills/appflowy-api/references/config.example.json --email <email> --password <password> --workspace-id <workspace_id> --view-id <view_id>
```

```bash
# 通用模板:按模板更新 Grid(默认就地修改)
python skills/appflowy-api/scripts/apply_grid_template.py --config skills/appflowy-api/references/config.example.json --email <email> --password <password> --workspace-id <workspace_id> --view-id <view_id> --template-file <template.json>
```

## 子内容规则(子任务 / 子项 / 子 Grid)
1. `子任务`(Checklist/Todo 列):适用于**简单描述**的子内容,不需要额外字段。
2. `子项`(Relation 列):当子内容与父级**字段结构一致**时,通过关联行管理。
3. `子 Grid`:当子内容需要**独立字段结构**时,新建 Grid 并在父级引用或说明。

## Grid 默认空行处理
新建 Grid 时可能自动生成 3 条空行。脚本在写入数据前会清理默认空行,避免空行混入真实计划。

## 必需请求头
所有 AppFlowy API 请求均需携带:
1. `Authorization: Bearer <access_token>`
2. `client-version: <AppFlowy 版本>`(建议与部署版本一致)
3. `client-timestamp: <Unix 毫秒>`
4. `device-id: <UUID>`

## 错误处理与排障
1. HTTP 200 但响应体包含 `success=false` 或 `error` 视为业务失败。
2. 控制台提示无法连接时,优先检查宿主机 `80/443` 可达性与防火墙规则。
3. 容器间调用优先使用内部地址(如 `http://gotrue:9999`、`http://appflowy_cloud:8000`)。

## 资源
1. `skills/appflowy-api/scripts/`:Python/Node 脚本与通用库。
2. `skills/appflowy-api/references/`:API 参考与模板文件。
3. `skills/appflowy-api/references/templates/`:UTF-8 模板,避免乱码与字段顺序问题。
4. `skills/appflowy-api/examples/`:示例命令与用法。

Overview

This skill provides a Python-focused toolkit for authenticating to and calling a self-hosted AppFlowy Cloud / GoTrue API. It covers token acquisition, workspace/document/database/search operations, and common automation scripts for diagnosing and manipulating AppFlowy resources. It is designed for use with AppFlowy Cloud 0.12.3 and emphasizes explicit configuration over implicit environment loading.

How this skill works

The skill wraps AppFlowy REST endpoints and GoTrue authentication flows in small Python scripts and utilities. It acquires access tokens via email/password, injects required request headers (Authorization, client-version, client-timestamp, device-id), and performs workspace, document, view, grid and search operations. A doctor script probes /api/health to verify the server version and warns on mismatches.

When to use it

  • Automate document, view or grid creation and updates in a self-hosted AppFlowy environment.
  • Run API-level troubleshooting and health checks against AppFlowy Cloud deployments.
  • Script bulk operations: create user-management docs, apply grid templates, or migrate content programmatically.
  • Integrate AppFlowy API calls into CI/CD or external automation tooling using Python.
  • Verify and debug authentication flows against GoTrue when tokens fail or expire.

Best practices

  • Provide config via CLI flags first; scripts accept --base-url, --gotrue-url, --client-version and --device-id for highest priority.
  • Use --config <path> JSON files for reproducible runs; only read .env when --env <path> is explicitly supplied.
  • Always add required headers: Authorization Bearer token, client-version matching deployment, client-timestamp (Unix ms) and device-id (UUID).
  • Prefer internal container addresses for container-to-container calls (e.g., http://gotrue:9999) to avoid network/firewall issues.
  • Treat HTTP 200 responses that contain success=false or error as business failures and surface the error payload in logs.

Example use cases

  • Get an access token with get_token.py and use it to call the search API for workspace content.
  • Run doctor.py with a config file and credentials to validate base URLs, GoTrue availability, and AppFlowy version compatibility.
  • Generate a user-management document template, then update it in-place with update_user_management_doc.py against a target workspace and view.
  • Apply a Grid template to a view using apply_grid_template.py to standardize schemas across workspaces.
  • Embed appflowy_skill.py as a unified CLI entry point in automation pipelines and call its commands from other scripts.

FAQ

Will the scripts read my .env automatically?

No. The scripts do not read .env by default. Provide --env <path> to load a specific .env file.

Which AppFlowy version is supported?

This skill is built and tested for AppFlowy Cloud 0.12.3; doctor.py checks /api/health and warns on mismatches.