lark_wiki_operate_as_bot.va.../SKILL.md

76 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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`是否正确,确认链接为有效知识库链接