name: feishu-docs
description: 飛書文件(Docx)API技能。用於建立、讀取、更新和刪除飛書文件。支援Markdown/HTML內容轉換、文件許可權管理。
metadata: {"clawdbot":{"emoji":"📝","requires":{"env":["FEISHU_APP_ID","FEISHU_APP_SECRET"]},"primaryEnv":"FEISHU_APP_ID"}}
飛書文件(Docx)技能
操作飛書新版文件(Docx)的openClaw技能,基於飛書開放平臺 API 實現文件全生命週期管理。
功能特性
| 功能 |
說明 |
| 文件 CRUD |
建立、獲取、更新(全量替換)、刪除文件 |
| 內容追加 |
向已有文件末尾追加 Markdown/HTML 內容 |
| 內容轉換 |
通過飛書服務端 API 將 Markdown/HTML 轉換為文件塊 |
| 塊操作 |
獲取文件塊列表(自動分頁)、插入子塊、刪除塊 |
| 許可權管理 |
新增協作者、檢視許可權成員列表 |
| 檔案管理 |
按資料夾列出檔案、按關鍵詞搜尋文件 |
環境變數
export FEISHU_APP_ID=cli_xxxxxx # 飛書應用 App ID
export FEISHU_APP_SECRET=your_app_secret # 飛書應用 App Secret
也可通過 .env 檔案配置(專案使用 dotenv 自動載入)。
快速開始
# 安裝依賴
npm install
# 檢視幫助
node bin/cli.js --help
# 建立文件(含 Markdown 內容)
node bin/cli.js create -f fldxxxxxx -t "專案計劃" -c "# 概述\n\n內容..."
# 獲取文件
node bin/cli.js get -d dcnxxxxxx --format markdown --include-content
# 全量替換文件內容
node bin/cli.js update -d dcnxxxxxx --content-file new-content.md
# 追加內容
node bin/cli.js update -d dcnxxxxxx --append -c "## 補充\n\n新增內容"
# 刪除文件
node bin/cli.js delete -d dcnxxxxxx
CLI 命令
| 命令 |
說明 |
必要引數 |
create |
建立文件(有內容時自動使用轉換流程) |
-f資料夾token, -t標題 |
create-with-content |
建立文件並通過轉換API插入內容 |
-f資料夾token, -t標題 |
get |
獲取文件資訊 |
-d文件ID |
update |
替換或追加文件內容 |
-d文件ID, -c內容或--content-file |
delete |
刪除文件 |
-d文件ID |
search |
搜尋文件 |
-q關鍵詞 |
list |
列出資料夾中的檔案 |
-f資料夾token |
share |
分享文件給使用者 |
-d文件ID, -u使用者ID |
permissions |
檢視文件許可權成員 |
-d文件ID |
convert |
將Markdown/HTML轉換為文件塊(預覽) |
-t內容型別 |
所有命令均支援 --app-id 和 --app-secret 引數覆蓋環境變數。
API 方法
文件管理
| 方法 |
說明 |
createDocument(folderToken, title) |
建立空文件 |
createDocumentWithContent(folderToken, title, content, contentType) |
建立文件並插入內容 |
getDocument(documentId) |
獲取文件資訊 |
getDocumentRawContent(documentId) |
獲取文件純文本內容 |
deleteDocument(documentId) |
刪除文件(通過 Drive API) |
文件塊操作
| 方法 |
說明 |
getDocumentBlocks(documentId, pageSize, pageToken) |
獲取文件塊列表(單頁) |
getAllDocumentBlocks(documentId) |
獲取所有塊(自動分頁) |
updateDocumentBlock(documentId, blockId, updateRequest) |
更新指定塊 |
createDocumentBlocks(documentId, blockId, children, index) |
在指定塊下插入子塊 |
deleteDocumentBlock(documentId, blockId) |
刪除指定塊 |
batchDeleteBlocks(documentId, blockIds) |
批次刪除塊 |
內容操作
| 方法 |
說明 |
appendToDocument(documentId, content, contentType) |
向文件末尾追加內容 |
replaceDocumentContent(documentId, content, contentType) |
全量替換文件內容 |
convertContent(contentType, content, userIdType) |
將 Markdown/HTML 轉換為文件塊 |
檔案與搜尋
| 方法 |
說明 |
listFolderFiles(folderToken, type) |
列出資料夾下的檔案 |
searchDocuments(query, folderToken) |
按關鍵詞搜尋文件 |
許可權管理
| 方法 |
說明 |
addPermissionMember(token, memberId, memberType, perm) |
新增許可權成員 |
getPermissionMembers(token) |
獲取許可權成員列表 |
格式轉換(本地)
| 方法 |
說明 |
markdownToBlocks(markdown) |
Markdown → 飛書塊結構(本地轉換) |
blocksToMarkdown(blocks) |
飛書塊結構 → Markdown(支援數字/字串 block_type) |
飛書 API 端點
程式碼實際呼叫的飛書開放平臺端點:
POST /docx/v1/documents # 建立文件
GET /docx/v1/documents/{document_id} # 獲取文件資訊
GET /docx/v1/documents/{document_id}/raw_content # 獲取文件純文本
GET /docx/v1/documents/{document_id}/blocks # 獲取文件塊列表
PATCH /docx/v1/documents/{document_id}/blocks/{block_id} # 更新塊
DELETE /docx/v1/documents/{document_id}/blocks/{block_id} # 刪除塊
POST /docx/v1/documents/{document_id}/blocks/{block_id}/children # 插入子塊
POST /docx/v1/documents/blocks/convert # Markdown/HTML→塊
DELETE /drive/v1/files/{file_token}?type=docx # 刪除文件
GET /drive/v1/files?folder_token=xxx # 列出資料夾檔案
POST /drive/v1/permissions/{token}/members?type=docx # 新增許可權成員
GET /drive/v1/permissions/{token}/members?type=docx # 獲取許可權成員
POST /auth/v3/tenant_access_token/internal/ # 獲取 tenant_access_token
可靠性機制
- Token 快取與併發控制:access_token 快取複用,多個併發請求不會重複重新整理
- 自動重試:401 未授權自動重新整理 token 重試;429 限流和 5xx 錯誤指數退避重試(最多 2 次)
- Token 過期碼識別:檢測飛書錯誤碼
99991663/99991661 自動重新整理 token
- 安全錯誤處理:安全訪問
error.response.data,避免非 JSON 響應導致崩潰
注意事項
本技能來自小蔥技能站7w4.net。
- 應用許可權:飛書應用需具備
docs:doc、drive:drive、drive:file 等相關許可權
- 內容插入:
create 命令含 content 時自動走 convertContent → createDocumentBlocks 流程,確保文件結構正確
- 批次插入限制:每批最多插入 50 個塊(飛書 API 限制)
- 表格處理:轉換含表格的內容時自動去除
merge_info 欄位;block_type 為 31/32 的表格塊暫被過濾
- 內容大小:單次轉換內容不超過 10MB
專案結構
├── src/api.js # FeishuDocsAPI 類(所有 API 方法 + 格式轉換)
├── bin/cli.js # Commander 命令列工具
├── package.json # 依賴:axios, commander, dotenv
├── test-convert.js # 轉換介面測試
├── SKILL.md # 本檔案
└── README.md # 專案說明