釘釘文件skill

👤 Sean Liu 📦 v1.0.3 ⭐ 4.6 ⬇️ 1K 下載
📄 辦公效率 免費 🔑 需 API Key

📖 技能介紹


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 工具不可用,先走初始化流程,再執行任何文件操作。

初始化流程(首次使用或 MCP 不可用時)

  1. 告知使用者訪問幫助手冊頁面並完成開通:

    請開啟以下連結,使用釘釘賬號登入後,點選頁面上的【開通服務】按鈕: https://aihub.dingtalk.com/#/detail?mcpId=9629&detailType=marketMcpDetail

  2. 開通後複製頁面右側 StreamableHttp URL(不是 JSON Config)

  3. 請使用者將 URL 貼上給你

  4. 收到 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。

  1. 詢問使用者的預設知識庫地址:

    請在瀏覽器中開啟你常用的釘釘知識庫,把位址列的 URL 貼上給我(格式類似 https://alidocs.dingtalk.com/i/spaces/xxxxx/overview)。 如果暫時不設預設知識庫,可以跳過,後續每次操作時再指定。

  2. 收到知識庫 URL 後,寫入 references/dingtalk.configDINGTALK_DEFAULT_WORKSPACE_URL=<使用者提供的知識庫 URL> 此檔案已被 .gitignore 排除,不會進入版本控制。無需重啟,下次操作時直接讀取生效。

  3. MCP 配置寫入後,提示使用者重啟 Agent 客戶端以使 MCP 生效,重啟後回來繼續操作即可。

使用預設知識庫

  • 當用戶說"列出我的知識庫文件"、"推送到知識庫"等未指明位置的操作時,優先使用預設知識庫 URL
  • 讀取順序:① 讀取 references/dingtalk.config 中的 DINGTALK_DEFAULT_WORKSPACE_URL;② 若檔案不存在或值為空,檢查環境變數 $DINGTALK_DEFAULT_WORKSPACE_URL(相容已有 Claude Code 配置);③ 兩者均無則詢問使用者
  • 獲得 URL 後,呼叫 get_document_info 傳入該 URL 解析出 nodeId,再用 nodeId 呼叫 list_nodes 或作為 parentNodeId

更改預設知識庫

當用戶說"更換預設知識庫"、"修改知識庫地址"等時:

  1. 請使用者在瀏覽器開啟目標釘釘知識庫,複製位址列 URL
  2. 收到新 URL 後,覆蓋寫入 references/dingtalk.configDINGTALK_DEFAULT_WORKSPACE_URL=<新的知識庫 URL>
  3. 無需重啟,下次操作時讀取新值即生效

安全規則

  • MCP 服務 URL 含有個人 API Key,不得出現在任何版本控制檔案中;寫入配置後不要在回覆中重複顯示完整 URL
  • references/dingtalk.config 儲存知識庫 URL,已被 .gitignore 排除,不會提交到版本控制
  • 如果使用者將 URL 貼上到聊天中,立即寫入配置後不再引用

預設路徑

  1. 確認 MCP 工具可用(若不可用,進入初始化流程)
  2. 理解使用者意圖,對映到對應 MCP 工具(見工具對映表)
  3. 如需要 dentryUuid/nodeId 但使用者未提供:優先讀取 references/dingtalk.config(或環境變數 $DINGTALK_DEFAULT_WORKSPACE_URL)獲取預設知識庫 URL,呼叫 get_document_info 解析出 nodeId;否則呼叫 search_documentslist_nodes 定位目標,讓使用者確認後再操作
  4. 對推送請求確定推送方案;若格式、是否保留原格式、是否需要線上編輯或使用者意圖不足以唯一確定方案,先讓使用者選擇方案,不得開始建立或上傳
  5. 執行前確認(只讀操作除外,見下方說明):方案確定後,向用戶展示操作摘要,收到明確同意後再呼叫 MCP 工具
  6. 執行操作
  7. 報告結果:操作型別、文件標題、文件連結(如有)

執行前確認規則

需要確認的操作(所有會寫入或修改雲端資料的操作): create_documentupdate_documentcreate_foldercreate_filedelete_documentrename_documentmove_documentcopy_documentinsert_document_blockupdate_document_blockdelete_document_block、檔案上傳(get_file_upload_info + commit_uploaded_file)、submit_export_jobadd_permissionupdate_permission

無需確認的操作(只讀): search_documentslist_nodesget_document_infoget_document_contentlist_document_blockslist_permissionquery_export_jobdownload_filedownload_doc_attachment

確認摘要格式(根據操作型別調整):

即將執行以下操作,請確認:

操作:<建立 / 更新(覆蓋)/ 更新(追加)/ 刪除 / 重新命名 / 移動 / 複製 / 建立資料夾>
目標:<文件標題或資料夾名>
位置:<知識庫名或資料夾路徑>
說明:<一句話描述本次變更,例如"將以本地檔案 xxx.md 的內容覆蓋雲端文件全文">

確認請回復「是」或「確認」,取消請回復「否」或「取消」。

收到取消時:停止操作,不重試,告知使用者已取消。

MCP 工具對映

詳見 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_blocksinsert/update/delete_document_block
列出知識庫/資料夾下的文件 list_nodes
按關鍵詞搜尋文件 search_documents
獲取文件元資訊(標題、型別等) get_document_info
下載釘盤檔案 download_file
下載文件內嵌附件 download_doc_attachment
匯出文件為 PDF/Word submit_export_jobquery_export_job(輪詢至完成)
建立資料夾 create_folder
刪除文件節點 delete_document
重新命名節點 rename_document
移動節點到其他資料夾 move_document
複製節點到其他資料夾 copy_document
檢視節點成員許可權 list_permission
新增/修改節點成員許可權 add_permission / update_permission

失敗處理

  • MCP 工具不可用:停止,進入初始化流程,不要猜測或嘗試其他方式呼叫
  • 未提供目標文件:先用 search_documentslist_nodes 找到目標,讓使用者確認後再操作
  • 讀取非 adoc 節點:先呼叫 get_document_info 或使用列表/搜尋結果中的型別欄位確認 contentType。只有 adoc 可呼叫 get_document_content;不要對其他型別反覆重試該工具
  • 讀取 axls(釘釘表格)get_document_content 不支援 axls。僅噹噹前會話實際提供可用的表格 MCP 工具時,才使用該工具讀取所需單元格或區域;不得根據報錯臆造或呼叫未安裝的工具。若表格工具不可用,明確說明當前無法讀取該表格,並請使用者直接貼上需要處理的表格內容,或提供匯出的檔案/目標資料
  • 讀取 dlink(快捷方式)dlink 不是正文載體,不能直接呼叫 get_document_content。從其元資訊中取得指向目標的原始 nodeId,使用原始 nodeId 繼續查詢型別和讀取;搜尋或列出結果同時含有原節點與指向該節點的 dlink 時,按原始 nodeId 去重,優先保留原節點。無法解析原始 nodeId 時,向用戶說明該快捷方式無法直接讀取,不要重試正文讀取
  • 讀取其他非 adoc 節點:演示、腦圖、白板、檔案等非 adoc 節點不適用 get_document_content。僅在當前會話存在匹配的專用讀取工具時使用;否則說明限制,並請使用者貼上所需內容、提供匯出檔案,或改為下載/匯出後處理

    7w4.net有更好的技能外掛。

  • update_document 報錯:確認目標是否為 adoc(文字型別)文件,非 adoc 文件不支援此操作
  • delete_document 前:確認摘要中必須註明"將移入回收站,30 天內可恢復",收到確認後再執行
  • API 報錯(許可權/鑑權類):當 API 返回許可權不足、無許可權、鑑權失敗、Forbidden、Unauthorized 等錯誤時,除了展示原文錯誤資訊外,提示使用者可能尚未開通所在組織的釘釘開發者許可權,引導使用者參考以下連結完成開通:

    請訪問釘釘開發者入門文件,確認你已在所在組織中開通了開發者許可權: https://open.dingtalk.com/document/dingstart/dingtalk-developer

    開通步驟簡述:登入釘釘開放平臺 → 選擇對應組織 → 完成開發者認證/開通。完成後重新嘗試操作。

  • 其他 API 報錯:原文展示錯誤資訊,不猜測原因,不自動重試

關鍵約束

  • update_documentcreate_document 僅支援 adoc(文字型別) 文件,不支援表格、演示、腦圖等
  • create_documentupdate_documentmarkdown 引數上限均為 10,000 字元;超出會報 invalidRequest.inputArgs.invalid 錯誤。推送前應先估算內容字元數,超過 9,500 字元(留餘量)時走大文件推送策略(見下文)
  • delete_document 是移入回收站,不是永久刪除,30 天內可從回收站恢復
  • list_nodes 只返回直接子節點,不遞迴。需要深層列表時需要多次呼叫
  • 匯出為非同步操作submit_export_job 返回 jobId 後需輪詢 query_export_job 直到狀態完成,再將下載連結告知使用者;輪詢間隔建議 1-2 秒
  • Mermaid 文本繪圖:通過 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_documentupdate_document 寫入
無副檔名或型別無法判斷的檔案 先詢問使用者希望“線上可編輯文件”還是“原檔案上傳” 不擅自猜測或轉換;只有使用者確認文本內容且希望線上編輯時才建立 adoc

使用者明確要求改變預設方案時,以使用者要求為準。例如,使用者要求將 HTML 轉為可編輯文字文件時,先說明轉換後可能丟失樣式或互動,再經確認後轉換為 Markdown / 純文本並使用 create_document

MD 優先與方案確認

  • 原始 Markdown 檔案優先建立 adoc:對於 .md / .markdown 檔案,使用者未指定其他目標時,先估算 Markdown 正文的字元數。不以檔案位元組大小或行數代替此判斷;估算不超過 9,500 字元時,預設方案為建立可編輯的 adoc
  • 超出 adoc 單次上限時必須選擇:Markdown 正文超過 9,500 字元時,不得自動拆分或直接上傳。先向使用者說明 adoc 單次 create_document / update_document 上限為 10,000 字元,並提供兩個選項:方案 A 為分段建立並追加 adoc,方案 B 為原樣上傳 .md 檔案。推薦需要線上編輯、評論或協作時選擇方案 A;只需存檔或下載分享時選擇方案 B。收到使用者選擇後才進入寫入確認
  • 推送方案不明確時必須先確認:只要檔案型別、是否保留原格式、是否轉換為可編輯 adoc,或使用者期望的交付形態存在歧義,就先展示可選方案並等待使用者明確選擇。此時可進行只讀的檔案型別或元資訊識別,但不得呼叫 create_documentget_file_upload_info、HTTP PUT 或 commit_uploaded_file
  • 方案確認不替代寫入確認:使用者選定方案後,仍須按“執行前確認規則”展示目標位置、檔案/文件名稱和操作摘要;收到明確同意後才執行雲端寫入

檔案上傳流程

對於應原樣保留的檔案,確認目標位置與檔名後,執行:

  1. 呼叫 get_file_upload_info,傳入原始 fileName、實際 fileSize 和目標 folderIdworkspaceId
  2. 使用返回的憑證對檔案原始位元組執行 HTTP PUT;不得將圖片、HTML 或其他檔案內容改寫為 Markdown
  3. 呼叫 commit_uploaded_file,使用返回的 uploadKey 提交入庫
  4. 返回上傳檔案的名稱、節點標識和訪問連結(如返回)

已知限制

  • 對話上傳的檔案內容是臨時的,不會持久儲存到磁碟,上下文壓縮或會話結束後內容即丟失
  • 非 ASCII 檔案(如中文 markdown)通過對話上傳時,0x80-0x9F 範圍的位元組會被文本處理層丟棄,導致不可逆亂碼。這是客戶端文本傳輸的固有限制,編碼修復無法還原丟失的位元組

處理規則

  1. 優先使用本地檔案路徑:當用戶要推送含非 ASCII 內容(中文、日文等)的文本檔案,或任何需要原樣上傳的二進位制/HTML 檔案時,請使用者提供本地磁碟路徑,直接讀取檔案內容或原始位元組,避免編碼問題
  2. 對話上傳的檔案先檢查編碼:如果使用者直接在對話中上傳了檔案,先檢查內容是否出現亂碼。如果存在亂碼,立即告知使用者並請其提供本地檔案路徑
  3. 文本按型別路由:可正確讀取的 Markdown / 純文本按上表建立 adoc;HTML 即使能讀取文本,也預設按原 HTML 檔案上傳
  4. 二進位制或原格式上傳須讀取本地檔案:圖片、PDF、Office 檔案等需要讀取原始位元組;如果對話附件無法提供可靠的本地檔案內容,請使用者提供本地磁碟路徑後走檔案上傳三步流程
  5. 命名規則:建立 adoc 時預設使用檔名去掉副檔名作為文件標題;上傳原檔案時預設保留原始檔名。使用者要求修改名字時,以使用者指定的名字為準

大文件推送策略

當原始 Markdown 檔案的正文超過 9,500 字元 時,單次 create_document / update_document 會超過 10,000 字元上限。此時先讓使用者在以下兩種方案中選擇,不要自動執行任一方案

方案 A — 分段推送(生成可線上編輯的 adoc)

  1. ## / ### 標題邊界將內容切分為若干段,每段 ≤ 9,500 字元,避免在表格中間切斷
  2. create_document 寫入第 1 段(含標題)
  3. 依次用 update_documentappend 模式)追加後續各段,每段單獨一次呼叫
  4. 全部追加完成後報告文件連結

適合場景:使用者需要在釘釘線上編輯、評論、協作,或希望文件格式被渲染

方案 B — 上傳原始 .md 檔案(存入釘盤)

走三步檔案上傳流程:get_file_upload_info → HTTP PUT → commit_uploaded_file

適合場景:只需存檔或分享下載,不需要線上編輯;操作更簡單,檔案完整保留原格式

推薦選擇

向用戶說明兩個方案後,推薦如下:

如果你需要在釘釘裡直接編輯或與同事協作,推薦方案 A(分段推送);如果只是存檔或分享,推薦方案 B(上傳檔案)。

收到使用者選擇後再執行,不要擅自決定。


資源導航

  • references/mcp-tools.md — 全部 MCP 工具詳細說明,按場景分組

🤖 AI 評測

這是一款做得相當不錯的釘釘文件 Skill。優點是文件清晰好讀、功能覆蓋全面(讀寫、搜尋、管理、匯出都有),初始化配置支援多種平臺使用,錯誤提示也很清楚。不足之處是隻支援文字型別的釘釘文件,單次推送有字元數量限制,另外不支援飛書、語雀等其他平臺。整體質量良好,日常使用足夠。

📊 多維度評分

適應性4.8
規範性4.2
有效性4.7
可靠性4.4
可信度5

📁 包含檔案 (5 個)

📄 README.md 9.8 KB
📄 SKILL.md 19.8 KB
📄 evals/evals.json 6.1 KB
📄 evals/trigger-evals.json 1.3 KB
📄 references/mcp-tools.md 5.9 KB