name: dingtalk-docs-skill description: 當用戶想要操作釘釘文件或向釘釘知識庫推送本地檔案時使用本 Skill。支援:將 Markdown/純文本推送為可編輯釘釘文件、原格式上傳 HTML/圖片/PDF/Office 等檔案、拉取雲端文件到本地、覆蓋/追加更新文件內容、塊級精確編輯、搜尋與列出知識庫文件、下載檔案與附件、匯出文件為 PDF/Word、管理節點許可權、建立/重新命名/移動/複製/刪除文件與資料夾、初始化釘釘文件 MCP 配置。當用戶想操作飛書、語雀、Notion 等其他平臺、只修改本地檔案、管理釘釘 IM 訊息或群組時,不要使用本 Skill。 license: MIT compatibility: Requires dingtalk-doc MCP server (StreamableHttp transport). Compatible with any MCP-capable agent (Claude Code, Cursor, VS Code, Roo Code, Gemini CLI, Codex, etc.). Auto-detects Claude Code; falls back to writing config files or manual setup for other agents.
通過釘釘文件官方 MCP Server 全面操作雲端文件。
始終使用使用者輸入的語言進行回覆。 如果使用者用英文提問,則全程用英文回覆;如果使用者用中文,則全程用中文回覆。無法判斷時預設使用中文。
讀 - 拉取雲端文件正文為 markdown(儲存到本地) - 列出知識庫/資料夾下的文件節點 - 按關鍵詞搜尋文件 - 獲取文件元資訊(標題、型別、建立時間等) - 下載釘盤檔案或文件內嵌附件
寫 - 按內容型別將本地內容推送到知識庫:建立可編輯的 adoc 文件,或保留原格式上傳檔案 - 覆蓋或追加內容到已有文件 - 按塊精確編輯(插入/更新/刪除段落、標題、表格等) - 上傳本地檔案(PDF、圖片、Word 等)到知識庫
管理 - 建立資料夾 - 重新命名/移動/複製/刪除文件和資料夾 - 匯出文件為 PDF 或 Word 格式 - 檢視/新增/修改知識庫節點的成員許可權
不負責: - 飛書、語雀、Notion 等其他平臺 - 只修改本地檔案(無雲端操作) - 釘釘 IM 訊息、企業成員管理
釘釘文件 MCP Server 必須已配置到當前 Agent 的 MCP 設定中,服務名稱為 dingtalk-doc。
如果 MCP 工具不可用,先走初始化流程,再執行任何文件操作。
告知使用者訪問幫助手冊頁面並完成開通:
請開啟以下連結,使用釘釘賬號登入後,點選頁面上的【開通服務】按鈕: https://aihub.dingtalk.com/#/detail?mcpId=9629&detailType=marketMcpDetail
開通後複製頁面右側 StreamableHttp URL(不是 JSON Config)
請使用者將 URL 貼上給你
收到 URL 後,按以下順序嘗試註冊 MCP 服務(dingtalk-doc 為服務名,必須為 ASCII):
方案 A — Claude Code(優先嚐試,執行命令看是否成功):
bash
claude mcp add --transport http --scope user dingtalk-doc "<使用者提供的 URL>"
成功則跳到步驟 5。
方案 B — 寫入配置檔案(通用方案,大多數 Agent 均可用):
檢測當前環境存在哪些配置檔案,找到第一個匹配項寫入:
| Agent | 配置檔案(全域性) | 配置檔案(專案級) | mcpServers 鍵名 |
|---|---|---|---|
| Cursor | ~/.cursor/mcp.json |
.cursor/mcp.json |
mcpServers |
| VS Code Copilot | ~/Library/Application Support/Code/User/mcp.json(Mac)%APPDATA%\Code\User\mcp.json(Win) |
.vscode/mcp.json |
servers |
| Roo Code | — | .roo/mcp.json |
mcpServers |
| Gemini CLI | ~/.gemini/settings.json |
— | mcpServers |
| OpenAI Codex | ~/.codex/config.json |
— | mcpServers |
向目標檔案追加(若檔案已有 mcpServers/servers,只新增新條目,不覆蓋原有內容):
json
{
"mcpServers": {
"dingtalk-doc": {
"type": "http",
"url": "<使用者提供的 URL>"
}
}
}
VS Code Copilot 的
.vscode/mcp.json使用"servers"而非"mcpServers",寫入時注意區分。
成功寫入則跳到步驟 5。
方案 C — 手動兜底(方案 A/B 均不適用時):
向用戶展示以下資訊,請其參照所用 Agent 的文件手動新增 MCP 服務,完成後回來繼續:
傳輸型別:StreamableHttp(HTTP)
服務名稱:dingtalk-doc
URL:<使用者提供的 URL>
使用者手動配置完成後,本 Skill 只需確認 MCP 工具可用即可繼續。
URL 中含有個人 API Key,寫入配置後不要在回覆中重複顯示完整 URL。
詢問使用者的預設知識庫地址:
請在瀏覽器中開啟你常用的釘釘知識庫,把位址列的 URL 貼上給我(格式類似
https://alidocs.dingtalk.com/i/spaces/xxxxx/overview)。 如果暫時不設預設知識庫,可以跳過,後續每次操作時再指定。
收到知識庫 URL 後,寫入 references/dingtalk.config:
DINGTALK_DEFAULT_WORKSPACE_URL=<使用者提供的知識庫 URL>
此檔案已被 .gitignore 排除,不會進入版本控制。無需重啟,下次操作時直接讀取生效。
MCP 配置寫入後,提示使用者重啟 Agent 客戶端以使 MCP 生效,重啟後回來繼續操作即可。
references/dingtalk.config 中的 DINGTALK_DEFAULT_WORKSPACE_URL;② 若檔案不存在或值為空,檢查環境變數 $DINGTALK_DEFAULT_WORKSPACE_URL(相容已有 Claude Code 配置);③ 兩者均無則詢問使用者get_document_info 傳入該 URL 解析出 nodeId,再用 nodeId 呼叫 list_nodes 或作為 parentNodeId當用戶說"更換預設知識庫"、"修改知識庫地址"等時:
references/dingtalk.config:
DINGTALK_DEFAULT_WORKSPACE_URL=<新的知識庫 URL>references/dingtalk.config 儲存知識庫 URL,已被 .gitignore 排除,不會提交到版本控制references/dingtalk.config(或環境變數 $DINGTALK_DEFAULT_WORKSPACE_URL)獲取預設知識庫 URL,呼叫 get_document_info 解析出 nodeId;否則呼叫 search_documents 或 list_nodes 定位目標,讓使用者確認後再操作需要確認的操作(所有會寫入或修改雲端資料的操作):
create_document、update_document、create_folder、create_file、delete_document、rename_document、move_document、copy_document、insert_document_block、update_document_block、delete_document_block、檔案上傳(get_file_upload_info + commit_uploaded_file)、submit_export_job、add_permission、update_permission
無需確認的操作(只讀):
search_documents、list_nodes、get_document_info、get_document_content、list_document_blocks、list_permission、query_export_job、download_file、download_doc_attachment
確認摘要格式(根據操作型別調整):
即將執行以下操作,請確認:
操作:<建立 / 更新(覆蓋)/ 更新(追加)/ 刪除 / 重新命名 / 移動 / 複製 / 建立資料夾>
目標:<文件標題或資料夾名>
位置:<知識庫名或資料夾路徑>
說明:<一句話描述本次變更,例如"將以本地檔案 xxx.md 的內容覆蓋雲端文件全文">
確認請回復「是」或「確認」,取消請回復「否」或「取消」。
收到取消時:停止操作,不重試,告知使用者已取消。
詳見 references/mcp-tools.md。常用對映如下:
| 使用者意圖 | MCP 工具 |
|---|---|
| 推送 Markdown / 純文本為可編輯釘釘文件 | create_document |
| 推送 HTML、圖片或其他本地檔案並保留原格式 | get_file_upload_info → HTTP PUT → commit_uploaded_file |
| 拉取 adoc 文字文件內容到本地 | get_document_content |
| 覆蓋或追加文件內容 | update_document |
| 精確塊級編輯(段落/標題/表格等) | list_document_blocks → insert/update/delete_document_block |
| 列出知識庫/資料夾下的文件 | list_nodes |
| 按關鍵詞搜尋文件 | search_documents |
| 獲取文件元資訊(標題、型別等) | get_document_info |
| 下載釘盤檔案 | download_file |
| 下載文件內嵌附件 | download_doc_attachment |
| 匯出文件為 PDF/Word | submit_export_job → query_export_job(輪詢至完成) |
| 建立資料夾 | create_folder |
| 刪除文件節點 | delete_document |
| 重新命名節點 | rename_document |
| 移動節點到其他資料夾 | move_document |
| 複製節點到其他資料夾 | copy_document |
| 檢視節點成員許可權 | list_permission |
| 新增/修改節點成員許可權 | add_permission / update_permission |
search_documents 或 list_nodes 找到目標,讓使用者確認後再操作get_document_info 或使用列表/搜尋結果中的型別欄位確認 contentType。只有 adoc 可呼叫 get_document_content;不要對其他型別反覆重試該工具get_document_content 不支援 axls。僅噹噹前會話實際提供可用的表格 MCP 工具時,才使用該工具讀取所需單元格或區域;不得根據報錯臆造或呼叫未安裝的工具。若表格工具不可用,明確說明當前無法讀取該表格,並請使用者直接貼上需要處理的表格內容,或提供匯出的檔案/目標資料dlink 不是正文載體,不能直接呼叫 get_document_content。從其元資訊中取得指向目標的原始 nodeId,使用原始 nodeId 繼續查詢型別和讀取;搜尋或列出結果同時含有原節點與指向該節點的 dlink 時,按原始 nodeId 去重,優先保留原節點。無法解析原始 nodeId 時,向用戶說明該快捷方式無法直接讀取,不要重試正文讀取adoc 節點不適用 get_document_content。僅在當前會話存在匹配的專用讀取工具時使用;否則說明限制,並請使用者貼上所需內容、提供匯出檔案,或改為下載/匯出後處理請訪問釘釘開發者入門文件,確認你已在所在組織中開通了開發者許可權: https://open.dingtalk.com/document/dingstart/dingtalk-developer
開通步驟簡述:登入釘釘開放平臺 → 選擇對應組織 → 完成開發者認證/開通。完成後重新嘗試操作。
update_document 和 create_document 僅支援 adoc(文字型別) 文件,不支援表格、演示、腦圖等create_document 和 update_document 的 markdown 引數上限均為 10,000 字元;超出會報 invalidRequest.inputArgs.invalid 錯誤。推送前應先估算內容字元數,超過 9,500 字元(留餘量)時走大文件推送策略(見下文)delete_document 是移入回收站,不是永久刪除,30 天內可從回收站恢復list_nodes 只返回直接子節點,不遞迴。需要深層列表時需要多次呼叫submit_export_job 返回 jobId 後需輪詢 query_export_job 直到狀態完成,再將下載連結告知使用者;輪詢間隔建議 1-2 秒create_document 推送的 ```mermaid 程式碼塊會被解析為普通程式碼塊,而非釘釘原生文本繪圖塊。釘釘的文本繪圖是私有塊型別,API 層未暴露,無法通過 MCP 建立或轉換。推送前告知使用者此限制,建議推送後在釘釘編輯器中手動將程式碼塊轉換為文本繪圖使用者可能在對話中直接上傳檔案並要求推送到釘釘。先識別副檔名、MIME 型別或實際內容,再按下列規則選擇推送方案;保留使用者提供的原始格式,不要為了使用 create_document 擅自轉碼或轉換格式。
| 輸入內容 | 預設推送方案 | 原因與限制 |
|---|---|---|
Markdown / 純文本(.md、.markdown、.txt)或使用者直接提供的文字內容 |
create_document 建立 adoc |
適合線上編輯、評論和協作;受單次 10,000 字元限制 |
HTML(.html、.htm) |
檔案上傳三步流程 | 以 HTML 檔案原樣存入知識庫,不轉換為 Markdown / adoc |
圖片(如 .png、.jpg、.jpeg、.gif、.webp、.svg) |
檔案上傳三步流程 | 以圖片檔案原樣上傳 |
| PDF、Office 檔案、表格、壓縮包、音影片及其他二進位制檔案 | 檔案上傳三步流程 | 以原始檔案上傳;不能使用 create_document 或 update_document 寫入 |
| 無副檔名或型別無法判斷的檔案 | 先詢問使用者希望“線上可編輯文件”還是“原檔案上傳” | 不擅自猜測或轉換;只有使用者確認文本內容且希望線上編輯時才建立 adoc |
使用者明確要求改變預設方案時,以使用者要求為準。例如,使用者要求將 HTML 轉為可編輯文字文件時,先說明轉換後可能丟失樣式或互動,再經確認後轉換為 Markdown / 純文本並使用 create_document。
.md / .markdown 檔案,使用者未指定其他目標時,先估算 Markdown 正文的字元數。不以檔案位元組大小或行數代替此判斷;估算不超過 9,500 字元時,預設方案為建立可編輯的 adoccreate_document / update_document 上限為 10,000 字元,並提供兩個選項:方案 A 為分段建立並追加 adoc,方案 B 為原樣上傳 .md 檔案。推薦需要線上編輯、評論或協作時選擇方案 A;只需存檔或下載分享時選擇方案 B。收到使用者選擇後才進入寫入確認create_document、get_file_upload_info、HTTP PUT 或 commit_uploaded_file對於應原樣保留的檔案,確認目標位置與檔名後,執行:
get_file_upload_info,傳入原始 fileName、實際 fileSize 和目標 folderId 或 workspaceIdcommit_uploaded_file,使用返回的 uploadKey 提交入庫當原始 Markdown 檔案的正文超過 9,500 字元 時,單次 create_document / update_document 會超過 10,000 字元上限。此時先讓使用者在以下兩種方案中選擇,不要自動執行任一方案:
## / ### 標題邊界將內容切分為若干段,每段 ≤ 9,500 字元,避免在表格中間切斷7w4.net有更好的技能外掛。
create_document 寫入第 1 段(含標題)update_document(append 模式)追加後續各段,每段單獨一次呼叫適合場景:使用者需要在釘釘線上編輯、評論、協作,或希望文件格式被渲染
走三步檔案上傳流程:get_file_upload_info → HTTP PUT → commit_uploaded_file
適合場景:只需存檔或分享下載,不需要線上編輯;操作更簡單,檔案完整保留原格式
向用戶說明兩個方案後,推薦如下:
如果你需要在釘釘裡直接編輯或與同事協作,推薦方案 A(分段推送);如果只是存檔或分享,推薦方案 B(上傳檔案)。
收到使用者選擇後再執行,不要擅自決定。
references/mcp-tools.md — 全部 MCP 工具詳細說明,按場景分組這是一款做得相當不錯的釘釘文件 Skill。優點是文件清晰好讀、功能覆蓋全面(讀寫、搜尋、管理、匯出都有),初始化配置支援多種平臺使用,錯誤提示也很清楚。不足之處是隻支援文字型別的釘釘文件,單次推送有字元數量限制,另外不支援飛書、語雀等其他平臺。整體質量良好,日常使用足夠。