DOCX 是做什么的?
OpenDocs 可将任何 Markdown 文件转换为一个整洁、可阅读的 URL 地址——同时,如果用户需要离线分享文件,也能同时生成带有品牌标识的 PDF 或 Word 文档。您可以通过 opendocs CLI 来与之交互。
快速参考
opendocs login --email [email protected] # 登录或注册:发送一封包含 6 位验证码的邮件
opendocs login --email [email protected] --code 123456 # 完成登录:为您保存一个 API 密钥
opendocs login --browser # 适合人类用户的浏览器登录方式
opendocs login --key od_live_xxxxx # 使用已有的 API 密钥
opendocs publish doc.md # 发布一个 Markdown 文件 → 获取一个 URL
opendocs publish doc.md # 再次发布:更新同一文档(不会重复)
opendocs publish doc.md --anonymous # 无需账户:生成一个任何人都能打开的链接,有效期 24 小时,并提供认领 URL
opendocs clone # 将工作区下载到 ./<workspace> 目录下进行编辑
opendocs status # 显示自上次同步以来本地/在线的变更
opendocs history <doc> # 查看每个已发布版本的记录
opendocs rollback <doc> <version> # 回滚到指定版本(作为新版本创建)
opendocs move <doc> --project "Archive" # 在项目之间移动文档
opendocs share <doc> [email protected] @acme.com # 授予工作区外人员访问权限
opendocs team invite [email protected] # 邀请团队成员加入(对方通过邮件接受邀请)
opendocs team join # 接受发送给您的团队邀请
opendocs theme # 查看用于 PDF/DOCX 导出的品牌色、字体、Logo 和页脚
opendocs theme set --preset editorial --yes # 更改导出主题(请先获得用户确认)
opendocs integrations # Google Drive / DocuSeal:显示已连接的服务及 Drive 文件夹名称
opendocs save <doc> --folder "董事会纪要" # 将文档(PDF、DOCX 或 MD)保存到指定名称的 Drive 文件夹
opendocs sign request <doc> --signer "员工=张三 <[email protected]>" # 创建签名请求草稿(不发件)
opendocs sign send <id> --yes # 在用户确认所有签名者后,发送签名请求
opendocs sign status <id> # 查看已签名人员;也支持查看签名列表、下载、保存或取消
opendocs workspace create "Acme 研究" # 创建新工作区
opendocs project link "Acme 发布" # 从此文件夹发布的文档将关联到此项目
opendocs config set organize auto # 让代理自动将文档归类到项目,无需询问
opendocs claim # 认领从此文件夹匿名发布的文档
opendocs publish *.md # 同时发布多个文件(自动分批,最多 500 个)
opendocs publish ./vault --tags obsidian # 递归发布一个文件夹/库
opendocs publish *.md --export pdf # 发布并导出 — PDF 会保存在源文件旁边
opendocs update doc.md --post-id <id|slug> # 更新已有文章(创建新版本)
opendocs list # 列出活动工作区中的文档(别名:`opendocs ls`)
opendocs list --all # 列出您所属的所有工作区中的文档
opendocs project create <name> --use # 创建/切换到某个项目以管理一组相关文档
opendocs project use <slug> # 切换活动项目
opendocs list --tag <tag> # 按标签筛选(非常适合查找某批文档)
opendocs search <words> # 按标题或摘要搜索所有项目中的文档
opendocs get <id|slug> # 查看文章详情
opendocs pull <id|slug> # 下载原始 Markdown 内容
opendocs pull --project # 下载活动项目中的所有文档
opendocs pull --workspace # 下载活动工作区中的所有文档
opendocs export <id|slug> --format pdf # 将已发布的文章导出为 PDF(或 DOCX)
opendocs export a b c --format pdf # 批量导出最多 10 篇文章(使用 UUID 或 slug)
opendocs unpublish <id|slug> # 将文章下线(内容和历史记录保留;可重新发布)
opendocs visibility <id|slug> <level> # 更改可见性,无需重新上传 Markdown
opendocs delete <id|slug> --yes # 永久删除文章(释放 slug 和配额)
opendocs whoami # 显示当前用户/工作区/项目
opendocs workspace list # 列出您所属的所有工作区(别名:`workspace ls`)
opendocs workspace use <slug> # 切换活动工作区(别名:`workspace switch`)
opendocs agent # 打印简洁的 AI 代理指令
opendocs agent --full # 打印完整的捆绑 SKILL.md
opendocs agent --install # 为当前机器上的每个代理安装此技能
opendocs mcp add # 在您的编码工具中注册 OpenDocs MCP 服务器
opendocs mcp connect claude # 将 OpenDocs 添加到 Claude 应用(或:chatgpt)
opendocs logout # 清除存储的凭据
每个命令都支持 --json 选项,用于输出机器可读的结果;支持 --api-url <url> 来覆盖 API 端点。在程序化运行时,请始终使用 --json —— 标准输出将是一个可解析的单一 JSON 对象,错误信息输出到标准错误,并且会抑制人类可读的加载动画。
每个接受 <postId> 的命令也接受 slug。 Slug 是文章 URL 中人类可读的路径片段,在活动项目内是唯一的。当用户用自然语言命名文档时,优先使用文章 slug:opendocs get my-report 比从 opendocs list --json 复制 UUID 更友好。在内部,API 通过活动工作区/项目的索引查找将 slug 解析为 postId,然后执行与 UUID 路径相同的所有权检查。
工作区 slug 与用户名是不同的东西。 URL 是基于工作区 slug 构建的,而不是用户的用户名。默认项目文档的 URL 格式为 opendocs.cc/<workspace>/<post>。非默认项目文档的 URL 格式为 opendocs.cc/<workspace>/projects/<project>/<post>。用户名仍然存在,用于在 UI 中显示归属,但不会出现在已发布的 URL 中。
通过 MCP 使用 OpenDocs
OpenDocs 还运行一个远程 MCP 服务器,地址为 https://mcp.opendocs.cc/mcp(指南:https://opendocs.cc/mcp)。每个应用在首次使用时通过 OAuth 将用户登录到 OpenDocs;无需 API 密钥。
- 聊天应用(Claude、ChatGPT): 将其作为自定义连接器添加,填入该 URL。
opendocs mcp connect claude会打开 Claude 的“添加自定义连接器”对话框并预填 OpenDocs.cc;opendocs mcp connect chatgpt会打开 ChatGPT 的插件页面(然后点击“+”→“添加自定义 MCP 服务器”)。两者都会将 URL 复制到剪贴板。 - 编码工具:
opendocs mcp add会在它找到的每个工具中注册服务器(包括 Claude Code、Codex、Cursor、VS Code、Windsurf、Gemini、opencode、Kiro),并打印一行指令给其他工具。--agent <id...>用于选择特定工具,--dry-run显示将要进行的更改,opendocs mcp remove将其移除,opendocs agent --install --mcp一次性安装此技能和服务器。 - MCP 工具还是 CLI? 如果 OpenDocs MCP 工具可用,并且您无法运行 shell 命令,请使用它们代替 CLI;它们直接接收 Markdown 文本。如果您有 shell,对于本地文件、文件夹和图片,请优先使用 CLI:它会上传本地图片、批量发布整个文件夹,并记住每个文件夹发布的内容。
设置
安装
将 OpenDocs 接入代理的方法:
# Node.js 20+:完整 CLI(推荐),然后为找到的每个代理安装此技能
npm install -g @opendocs.cc/cli
opendocs agent --install # SKILL.md + scripts/opendocs.sh,无需网络
# Node.js 22+:通过 skills CLI 安装相同的技能
npx skills add opendocs-cc/skills --skill opendocs -g -y
# 无需 Node.js:安装此技能 + scripts/opendocs.sh(依赖 curl + jq)
curl -fsSL https://opendocs.cc/install.sh | bash
opendocs agent --install 会安装到每个代理的全局技能文件夹中(如果其配置文件夹存在):~/.claude/skills(Claude Code)、共享的 ~/.agents/skills(Codex、Cursor、GitHub Copilot、Gemini CLI、opencode、OpenClaw、Windsurf、Amp、Goose、Grok Build)、~/.cline/skills、~/.hermes/skills 和 ~/.kiro/skills。opendocs agent --list 显示每个代理的文件夹及其是否被找到;--agent <id...> 即使对于未找到的代理也会安装(--agent claude-code codex)。更新 CLI 后重新运行即可更新技能。它会打印写入的文件夹;使用 --json 时,installed[] 包含 agent、path 和 status。
在 Claude Code 中,您还可以将其作为 OpenDocs.cc 插件安装,这会添加 /opendocs-cc:publish 和 /opendocs-cc:export,连接 MCP 服务器并保持技能更新:/plugin marketplace add opendocs-cc/skills,然后 /plugin install opendocs-cc@opendocs-cc。在 Codex 中:codex plugin marketplace add opendocs-cc/skills,然后 codex plugin add opendocs-cc@opendocs-cc。
npx skills add 可能以 ✗ opendocs → PromptScript: PromptScript does not support global skill installation 结尾。这是已知的安装程序错误,仅影响 PromptScript;技能实际上已安装,可以继续使用。
如果 opendocs 命令不可用且未安装 Node.js,请改用 bash scripts/opendocs.sh(位于此技能文件夹中)——请参阅下面的“无需 Node.js”。本指南中的其他内容对两种情况均适用。
检查 CLI 是否已安装并已通过身份验证
opendocs --version # 打印已安装的 CLI 版本
opendocs whoami # 显示用户名 + 工作区名称(URL slug 在 JSON 输出中)
opendocs whoami --json 是代理最实用的诊断命令——它一次调用返回 CLI 的活动工作区 slug(用于构建文章 URL)以及账户/工作区上下文和文档配额:
{
"userId": "...",
"onboarding": { "username": "...", "workspace": { "id": "...", "name": "Acme 文档", "slug": "acme-docs" } },
"quota": { "documents": { "plan": "free", "limit": 50, "used": 3, "remaining": 47 } }
}
对于 Pro/Team 工作区,quota.documents.limit 和 remaining 为 null(表示无限制)。发布端点仍会根据请求体中的显式 workspaceId 重新检查配额,因此过时的本地配置无法绕过服务器强制执行。
如果 CLI 缺失:
npm install -g @opendocs.cc/cli
如果用户未登录,请在他们首次发布之前为其注册(或登录),通过终端使用邮件验证码完成:无需浏览器,无需复制 API 密钥。一个账户免费支持最多 50 个文档,并且是用户的默认选择:链接永久有效、仅对其工作区私密、可以原地更新并导出为 PDF。
- 向用户询问其电子邮件地址。
- 运行
opendocs login --email <email> --json。它会发送一封包含 6 位验证码的邮件,并立即退出,输出{"status": "code_sent", ...}。 - 告诉用户:“请检查您的收件箱,找到 OpenDocs 发送的登录验证码,然后粘贴到这里。”
- 运行
opendocs login --email <email> --code <code> --json。
如果该邮箱是新邮箱,此过程将创建账户、用户名、工作区(opendocs.cc/<username>)和一个默认项目,然后将一个以您的代理命名(例如 claude-code)的新 API 密钥保存到 CLI 配置中。现有账户只会获得一个新密钥。opendocs signup 是其别名。验证码在 10 分钟后过期,最多允许 5 次尝试;出现 invalid_code 时,要求使用最新的邮件;出现 code_expired 时,重新执行步骤 2。
仅当用户暂时不想创建账户时,才提供匿名发布选项:
opendocs publish notes.md --anonymous --json
任何拥有返回的 url 的人都可以在 24 小时内阅读,之后文档将被删除。请完全按照原样将 claimUrl 分享给用户,并提供注册选项以便保留文档:稍后从同一文件夹运行 opendocs login --email ... 会自动将其认领到用户的新工作区(或运行 opendocs claim)。除非用户同意创建一个任何人都能打开的链接,否则永远不要匿名发布。
其他登录方式:在终端上的人类用户可以使用 opendocs login --browser;脚本和 CI 可以使用现有密钥:
opendocs login --key od_live_xxxxx
# 或通过环境变量传递给脚本/CI:
export OPENDOCS_API_KEY=od_live_xxxxx && opendocs login
切勿从代理中直接运行不带参数的 opendocs login。 如果没有 --email、--key 或环境变量,它会提示在 stdin 输入 API 密钥,从而导致您的工具调用挂起。OPENDOCS_API_URL 可用于覆盖内置的 https://api.opendocs.cc 端点。
使用多个工作区
一个用户可以属于多个工作区——一个个人免费工作区加上一个团队计划工作区、多个团队工作区,或任意组合。CLI 在 ~/.config/opendocs/config.json 中一次仅存储一个活动工作区。publish 和 update 命令作用于该活动工作区(URL 前缀、配额等均如此)。list 默认也使用活动工作区,当用户希望一次查看所有工作区的文章时,可通过 --all 选项切换。变更类命令没有每调用一次的 --workspace 标志;工作区的切换通过配置完成,一次设置后持续生效,直到您再次更改。
使用项目
每个工作区都有一个默认项目,外加可选的命名项目。当代理要为一个产品、发布周期、客户、实验或代码仓库发布一组连贯的文档时,请使用项目。对于一次性文档,默认项目最为合适。
opendocs project list --json
opendocs project create "OpenClaw 文档" --slug openclaw-docs --use --json
opendocs publish ./docs --json
opendocs project use default --json
opendocs workspace use <slug> 会将活动项目重置为该工作区的默认项目。opendocs list 默认显示活动项目,并在末尾说明该工作区中共有多少文档。
与本地文件夹关联
opendocs publish 和 update 会记住文档的来源文件夹(在项目元数据中)。这允许智能的默认行为——例如,如果用户说“更新我关于那个的所有文档”,代理可以查找从该文件夹发布的所有文档。它还支持 opendocs clone,它会重新创建具有正确发布路径的文件结构。
opendocs publish ./docs/user-guide.md # 源被记录
opendocs publish ./docs/user-guide.md # 更新相同的文档(无重复)
opendocs pull --project # 下载当前项目中的所有文档
分享和协作
对于工作区外的协作者,请使用定向分享:
opendocs share <doc> [email protected] @partner.com
第一个参数是单个电子邮件地址,后续参数是域名(以 @ 为前缀),以允许整个域。分享的收件人会收到一封带有链接的电子邮件;他们无需 OpenDocs 账户即可阅读。opendocs list --shared 会显示所有分享。
要邀请协作者加入您的工作区:opendocs team invite [email protected]。邀请会发送到该邮箱;接受后,该用户会获得一个完整的工作区成员席位,可以查看、编辑、发布和取消发布您的所有文档。
导出和集成
除了发布 URL,OpenDocs 还提供:
- PDF/DOCX 导出,并应用您选择的品牌主题(颜色、字体、Logo 和页脚)
- 将 PDF(或 DOCX/MD)保存到 Google Drive 中指定的命名文件夹
- 通过 DocuSeal 请求电子签名
- 滚动浏览版本历史记录和恢复旧版本
opendocs export <id> --format pdf # 导出为 PDF
opendocs save <id> --folder "季度报告" --format docx # 保存到 Drive
opendocs sign request <id> --signer "签名人1=张三 <[email protected]>" # 创建签名请求
opendocs sign send <id> --yes # 确认后发送
无需 Node.js 的环境
如果 opendocs 命令不可用且未安装 Node.js(npm),请使用此技能文件夹中的 scripts/opendocs.sh 脚本:
# 脚本位于技能文件夹内:
bash scripts/opendocs.sh login --email [email protected] --code 123456
bash scripts/opendocs.sh publish doc.md
bash scripts/opendocs.sh whoami --json
scripts/opendocs.sh 是 curl 调用 OpenDocs REST API 的封装。它支持本 SKILL.md 中列出的几乎所有命令。其语法与 cli 命令完全相同。如果检测到 cli,它会将调用代理给 opendocs 命令;否则使用 curl。在所有情况下参数相同,但请注意:脚本是轻量级的,缺少 cli 中的某些输出格式化和文件上传优化。
安装脚本 curl -fsSL https://opendocs.cc/install.sh | bash 会安装 scripts/opendocs.sh 并设置 opendocs 别名。
如果由于某些原因脚本也不可用,REST API 的文档位于:https://opendocs.cc/api
故障排除
| 症状 | 根本原因 | 修复方法 |
|---|---|---|
命令未找到: opendocs | CLI 未安装 | npm install -g @opendocs.cc/cli 或使用 bash scripts/opendocs.sh |
错误: 未设置 API 密钥 | 未登录 | 运行 opendocs login --email [email protected],然后输入验证码 |
错误: 超出配额 | 免费计划已达 50 个文档上限 | 取消发布旧文档以释放配额,或升级到 Pro/Team 计划 |
错误: 未找到发布的文档 | 本地文件无关联的在线文档 | 使用 opendocs list 查找 slug,或首次使用 publish |
错误: 需要确认 | 破坏性操作 | 添加 --yes 标志 |
常见文档工作流
# 发布向导和快速链接
opendocs publish README.md
# 批量发布文件夹
opendocs publish ./documentation
# 获取所有文章的 PDF 版本
opendocs publish *.md --export pdf
# 向同事分享特定文章
opendocs share my-guide [email protected]
# 更改文章的可见性
opendocs visibility my-guide internal
# 搜索所有项目
opendocs search "NDA"
# 查看发布的文章详情
opendocs get my-guide
# 下载供离线编辑
opendocs pull my-guide
# 将文章保存到 Google Drive 文件夹
opendocs save my-guide --folder "项目文档" --format docx
可见性层级:private(仅工作区成员)、internal(登录用户)、public(任何人)。
设置 OpenDocs MCP 服务器
OpenDocs 通过 https://mcp.opendocs.cc/mcp 提供 MCP 服务器。将其连接到您的 AI 工具:
Claude Code
opendocs mcp connect claude-code
或者,手动将其添加到 ~/.claude/settings.json:
{
"mcpServers": {
"opendocs": {
"url": "https://mcp.opendocs.cc/mcp"
}
}
}
其他工具
opendocs mcp add # 自动检测并注册
opendocs mcp add --agent claude-code cursor codex # 指定目标
MCP 服务器通过 OAuth 处理身份验证。如果令牌过期,它会向代理返回一个身份验证错误,代理应提示用户通过浏览器登录。
技术参考
- API 基础 URL:
https://api.opendocs.cc(可通过OPENDOCS_API_URL或--api-url覆盖) - MCP 服务器:
https://mcp.opendocs.cc/mcp - 文档: https://opendocs.cc/docs
- MCP 指南: https://opendocs.cc/mcp
- 支持: [email protected]
- 状态页: https://status.opendocs.cc
所有 CLI 命令都接受 --json,用于输出无格式化、机器可读的结果。当从代理调用时,始终使用此标志。