Install
openclaw skills install @shyzhen/dingtalk-doc-enterpriseopenclaw skills install @shyzhen/dingtalk-doc-enterprise使用同目录的 doc-enterprise.js 操作用户通过 URL 指定的已有钉钉文档。
insert 是向已有文档插入内容块,属于修改文档,不是创建文档。delete 是删除内容块,不删除文档实体。必需环境变量:
DINGTALK_CLIENTIDDINGTALK_CLIENTSECRET线上身份按以下优先级解析:
OPENCLAW_SENDER_IDDINGTALK_SENDER_IDDINGTALK_OPERATOR_ID,仅作为本地调试回退;线上不要配置将 sender_id 查询为 unionId,并将其作为 API 的 operatorId。钉钉 API 依据当前用户对目标文档的实际权限决定操作是否成功;不要把“可以读取”解释为“必然可以修改或删除”。
将相对路径按 SKILL.md 所在目录解析,并使用脚本绝对路径:
node /absolute/path/to/doc-enterprise.js <command> [args]
支持以下链接形式:
https://alidocs.dingtalk.com/i/nodes/<docKey>
https://alidocs.dingtalk.com/i/nodes/<docKey>?utm_scene=person_space
alidocs.dingtalk.com/i/nodes/<docKey>
node /absolute/path/to/doc-enterprise.js read <docKey-or-url>
只在用户要求快速查看时使用。需要总结、定位内容块或执行块级操作时使用 blocks。
node /absolute/path/to/doc-enterprise.js blocks <docKey-or-url>
用于总结正文、获取 blockId/id 和 position/index,以及在修改或删除前确认目标。
node /absolute/path/to/doc-enterprise.js update <docKey-or-url> <markdown>
仅在用户明确要求替换整篇内容,并且新内容完整明确时使用。此操作会替换已有正文。
node /absolute/path/to/doc-enterprise.js insert <docKey-or-url> <position> <text>
position 必须是大于或等于 0 的整数。blocks 确认末尾位置,再插入新的段落块。paragraphs/{blockId}/text 的 append-text 接口。node /absolute/path/to/doc-enterprise.js modify <docKey-or-url> <blockId> <text>
先运行 blocks,确认目标是段落块且 blockId 正确。该命令用新文本替换目标段落块。
node /absolute/path/to/doc-enterprise.js delete <docKey-or-url> <blockId>
blocks 定位并确认第 3 段,再删除对应内容块。blocks,逐个删除可删除的正文块;不要删除文档实体,也不要创建空白文档替换原文档。read;总结、定位、修改或删除前用 blocks。update、insert、modify 或 delete。DINGTALK_CLIENTID 和 DINGTALK_CLIENTSECRET。OPENCLAW_SENDER_ID;仅本地调试时使用 DINGTALK_OPERATOR_ID。forbidden.accessDenied:说明当前用户没有执行该操作所需的文档权限,或应用缺少相应权限。docNotExist / nodeNotExist:检查 URL/docKey,说明文档不存在或标识不正确。blockNotExist:重新运行 blocks 并核对内容块 ID。paramError:优先检查 URL/docKey、blockId 和 position。README.mddoc-enterprise.js