飞书文档管理器Pro
v3飞书文档管理技能。支持创建、读取、写入、删除文档和文档块。当用户需要操作飞书文档时使用此技能。触发条件:(1) 创建飞书文档 (2) 读取飞书文档内容 (3) 写入/追加内容到飞书文档 (4) 删除文档块 (5) 清空文档。
运行时依赖
安装命令
点击复制技能文档
飞书文档管理器
完整的飞书文档操作技能,支持创建、读取、写入、删除文档。
前置配置
- 开通权限
在飞书开放平台开通以下权限:
权限标识 权限名称 用途 docx:document 获取、新建、删除文档 创建/删除文档 docx:document:write_only 编辑文档 写入/删除块 docx:document:readonly 读取文档 读取内容 docs:权限.member 文档权限管理 协作者管理
- 添加文档应用
在飞书客户端:
打开文档 → 右上角 "..." 更多 → 添加文档应用 搜索应用 → 添加,授予 "可编辑" 权限
- 获取 令牌
$body = @{ 应用_id = $应用Id; 应用_secret = $应用Secret } | ConvertTo-Json $resp = Invoke-RestMethod -Uri "https://open.feishu.cn/open-APIs/auth/v3/tenant_访问_令牌/internal" -Method Post -Body $body -ContentType "应用/json" $令牌 = $resp.tenant_访问_令牌
核心操作
- 创建文档
$documentId = $创建Resp.data.document.document_id Write-Host "文档 ID: $documentId" Write-Host "文档链接: https://xxx.feishu.cn/docx/$documentId"
- 读取文档内容
foreach ($block in $blocksResp.data.items) { Write-Host "类型: $($block.block_type), ID: $($block.block_id)" }
- 写入内容
$writeResp = Invoke-RestMethod -Uri "https://open.feishu.cn/open-APIs/docx/v1/documents/$documentId/blocks/$documentId/children" -Method Post -Body ([系统.Text.Encoding]::UTF8.获取Bytes($writeBody)) -ContentType "应用/json; char设置=utf-8" -Headers @{ Authorization = "Bearer $令牌" }
块类型说明:
block_type 类型 说明 2 text 普通文本 3 heading1 一级标题 4 heading2 二级标题 12 bullet 无序列表
- 删除块(重要)
使用 batch_删除 API 批量删除:
# 获取当前块数量 $blocksResp = Invoke-RestMethod -Uri "https://open.feishu.cn/open-APIs/docx/v1/documents/$documentId/blocks/$documentId/children" -Method 获取 -Headers @{ Authorization = "Bearer $令牌" } $totalBlocks = $blocksResp.data.items.Count
# 删除所有块(左闭右开区间) $删除Body = @{ 启动_索引 = 0 end_索引 = $totalBlocks } | ConvertTo-Json
$delResp = Invoke-RestMethod -Uri "https://open.feishu.cn/open-APIs/docx/v1/documents/$documentId/blocks/$documentId/children/batch_删除?document_revision_id=-1" -Method 删除 -Body ([系统.Text.Encoding]::UTF8.获取Bytes($删除Body)) -ContentType "应用/json; char设置=utf-8" -Headers @{ Authorization = "Bearer $令牌" }
if ($delResp.code -eq 0) { Write-Host "✅ 删除成功" }
API 说明:
URL: 删除 /documents/:document_id/blocks/:block_id/children/batch_删除 参数: 启动_索引(起始索引)、end_索引(结束索引,左闭右开) 注意: 启动_索引 必须小于 end_索引
- 清空文档并写入新内容
# 2. 删除所有块 if ($totalBlocks -gt 0) { $删除Body = @{ 启动_索引 = 0; end_索引 = $totalBlocks } | ConvertTo-Json Invoke-RestMethod -Uri "https://open.feishu.cn/open-APIs/docx/v1/documents/$documentId/blocks/$documentId/children/batch_删除?document_revision_id=-1" -Method 删除 -Body ([系统.Text.Encoding]::UTF8.获取Bytes($删除Body)) -ContentType "应用/json; char设置=utf-8" -Headers @{ Authorization = "Bearer $令牌" } | Out-Null }
# 3. 写入新内容 $writeBody = '{"索引":-1,"children":[{"block_type":3,"heading1":{"elements":[{"text_运行":{"content":"新标题"}}]}},{"block_type":2,"text":{"elements":[{"text_运行":{"content":"新内容"}}]}}]}' Invoke-RestMethod -Uri "https://open.feishu.cn/open-APIs/docx/v1/documents/$documentId/blocks/$documentId/children" -Method Post -Body ([系统.Text.Encoding]::UTF8.获取Bytes($writeBody)) -ContentType "应用/json; char设置=utf-8" -Headers @{ Authorization = "Bearer $令牌" }
Write-Host "✅ 文档已更新"
Wiki 文档处理
Wiki 文档需要先获取实际的 obj_令牌:
# Wiki URL: https://xxx.feishu.cn/wiki/XXXXXXXX $wiki令牌 = "SRDiwPCx8iEtx6kreaCckFW3nOb"
# 获取实际文档 ID $wikiResp = Invoke-RestMethod -Uri "https://open.feishu.cn/open-APIs/wiki/v2/spaces/获取_node?令牌=$wiki令牌" -Method 获取 -Headers @{ Authorization = "Bearer $令牌" } $documentId = $wikiResp.data.node.obj_令牌
Write-Host "实际文档 ID: $documentId"
常见错误 错误码 说明 解决方案 1770032 权限不足 添加应用为文档协作者 1770002 文档不存在 检查 document_id 9499 JSON 格式错误 使用纯 JSON 字符串 完整示例:更新天气文档 # 配置 $config = 获取-Content "$env:USER性能分析\.OpenClaw\OpenClaw.json" | ConvertFrom-Json $应用Id = $config.channels.feishu.应用Id $应用Secret = $config.channels.feishu.应用Secret
# 获取 令牌 $body = @{ 应用_id = $应用Id; 应用_secret = $应用Secret } | C