76 lines
3.3 KiB
Markdown
76 lines
3.3 KiB
Markdown
---
|
||
name: lark_wiki_operate_as_bot
|
||
version: 1.0.0
|
||
description: "飞书知识库Bot身份操作专用技能,统一使用Bot身份遍历目录、读取知识库文档内容,禁止触发用户身份授权"
|
||
metadata:
|
||
requires:
|
||
permissions: ["wiki:node:retrieve", "docx:document:readonly"]
|
||
---
|
||
|
||
# lark_wiki_operate_as_bot 技能规范
|
||
|
||
## 核心规则(强制执行)
|
||
1. **身份限制**:所有知识库操作**永远使用Bot身份**执行,绝对不触发任何用户身份授权弹窗
|
||
2. **文档范围限制**:仅支持读取飞书知识库(`/wiki/`开头的链接)文档,**不支持读取用户私有个人文档**(`/doc/`/`/sheet/`等非wiki开头的个人路径)
|
||
3. **权限告知规则**:
|
||
- 收到非知识库文档链接:直接回复「我仅支持读取飞书知识库(Wiki)文档,暂不支持读取个人私有文档,请提供知识库链接」
|
||
- Bot无权限访问目标知识空间:回复「当前Bot无访问该知识空间权限,请将Bot应用添加为该知识空间成员并授予查看权限后重试」
|
||
|
||
## 适用场景
|
||
- 遍历知识库目录下的子文档/子目录
|
||
- 读取知识库文档内容
|
||
- 批量导出知识库文档
|
||
- 所有知识库相关的查询、读取操作
|
||
|
||
## 完整执行链路
|
||
|
||
### 步骤1:链接解析
|
||
- 从用户提供的链接中提取`wiki_token`:例如链接`https://xxx.feishu.cn/wiki/XXXXXXX`中的`XXXXXXX`即为`wiki_token`
|
||
- 若链接不含`/wiki/`路径,直接按非知识库文档规则回复
|
||
|
||
### 步骤2:获取节点基础信息
|
||
```bash
|
||
LARKSUITE_CLI_CONFIG_DIR=/root/.openclaw/credentials/xiaoyan lark-cli wiki spaces get_node --params '{"token":"<wiki_token>"}' --as bot
|
||
```
|
||
返回结果中提取关键信息:
|
||
- `space_id`:知识空间ID
|
||
- `obj_token`:文档真实ID(若节点为文档)
|
||
- `has_child`:是否为目录(含子节点)
|
||
- `obj_type`:节点类型(docx/sheet/bitable等)
|
||
|
||
### 步骤3:遍历目录子节点(仅当has_child=true时)
|
||
#### 3.1 获取Bot租户访问凭证
|
||
```bash
|
||
curl -s -X POST "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"app_id":"cli_xxx","app_secret":"xxx"}' \
|
||
| jq -r '.tenant_access_token'
|
||
```
|
||
得到`tenant_access_token`(有效期2小时)
|
||
|
||
#### 3.2 调用Wiki V2接口获取子节点列表
|
||
```bash
|
||
curl -s -X GET "https://open.feishu.cn/open-apis/wiki/v2/spaces/<space_id>/nodes?parent_node_token=<wiki_token>" \
|
||
-H "Authorization: Bearer <tenant_access_token>"
|
||
```
|
||
返回子节点完整列表(名称、链接、类型等)
|
||
|
||
### 步骤4:读取文档内容(仅当节点为文档时)
|
||
```bash
|
||
LARKSUITE_CLI_CONFIG_DIR=/root/.openclaw/credentials/xiaoyan lark-cli docs +fetch --doc <obj_token> --as bot
|
||
```
|
||
|
||
## 权限要求
|
||
### 1. 应用权限(飞书开发者后台配置)
|
||
| 权限名称 | Scope | 类型 |
|
||
|---------|-------|------|
|
||
| 获取知识空间节点信息 | `wiki:node:retrieve` | 只读 |
|
||
| 查看文档内容 | `docx:document:readonly` | 只读 |
|
||
|
||
### 2. 知识空间配置
|
||
需要将Bot应用添加到目标知识空间的成员列表,授予至少「可查看」权限
|
||
|
||
## 异常处理
|
||
- 接口返回`99991401`(无权限):按权限不足规则回复用户
|
||
- 接口返回`404`:检查`wiki_token`/`space_id`是否正确,确认链接为有效知识库链接
|