3.3 KiB
3.3 KiB
| name | version | description | metadata | ||||||
|---|---|---|---|---|---|---|---|---|---|
| lark_wiki_operate_as_bot | 1.0.0 | 飞书知识库Bot身份操作专用技能,统一使用Bot身份遍历目录、读取知识库文档内容,禁止触发用户身份授权 |
|
lark_wiki_operate_as_bot 技能规范
核心规则(强制执行)
- 身份限制:所有知识库操作永远使用Bot身份执行,绝对不触发任何用户身份授权弹窗
- 文档范围限制:仅支持读取飞书知识库(
/wiki/开头的链接)文档,不支持读取用户私有个人文档(/doc///sheet/等非wiki开头的个人路径) - 权限告知规则:
- 收到非知识库文档链接:直接回复「我仅支持读取飞书知识库(Wiki)文档,暂不支持读取个人私有文档,请提供知识库链接」
- Bot无权限访问目标知识空间:回复「当前Bot无访问该知识空间权限,请将Bot应用添加为该知识空间成员并授予查看权限后重试」
适用场景
- 遍历知识库目录下的子文档/子目录
- 读取知识库文档内容
- 批量导出知识库文档
- 所有知识库相关的查询、读取操作
完整执行链路
步骤1:链接解析
- 从用户提供的链接中提取
wiki_token:例如链接https://xxx.feishu.cn/wiki/XXXXXXX中的XXXXXXX即为wiki_token - 若链接不含
/wiki/路径,直接按非知识库文档规则回复
步骤2:获取节点基础信息
LARKSUITE_CLI_CONFIG_DIR=/root/.openclaw/credentials/xiaoyan lark-cli wiki spaces get_node --params '{"token":"<wiki_token>"}' --as bot
返回结果中提取关键信息:
space_id:知识空间IDobj_token:文档真实ID(若节点为文档)has_child:是否为目录(含子节点)obj_type:节点类型(docx/sheet/bitable等)
步骤3:遍历目录子节点(仅当has_child=true时)
3.1 获取Bot租户访问凭证
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接口获取子节点列表
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:读取文档内容(仅当节点为文档时)
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是否正确,确认链接为有效知识库链接