Outline Wiki Search 是一个用于在 Outline Wiki 工作区内进行只读检索与读取的技能。它通过 Outline Wiki MCP 的只读能力,帮助用户在工作区内定位文档、获取 Markdown 原文与元数据。本技能是 outline-wiki-* 家族中最小的一员,只包含核心能力中的 search(搜索)与 read(读取)两项,不具备任何写操作。写 / 编辑 / 上传相关操作由 outline-wiki-upload 技能负责,MCP 配置由 outline-wiki-setup 技能负责。
【用途与适用场景】 当用户在对话中提到搜索 Outline、查找 Outline 文档、在 Outline 工作区中搜索,或给出文档 ID 要求读取文档、获取 Markdown 原文、打开某篇文档时,使用本技能。具体包括:按关键词进行全文搜索并返回匹配的文档列表;按文档 ID 获取某篇文档的 Markdown 原文与元数据(创建时间、作者、Collection 等);需要先 search 查重或定位,再决定后续动作(无论后续是上传还是编辑)。 不适用的情况包括:写 / 编辑 / 上传 Outline 文档(含图片附件、@mention、评论、Collection 管理、移动、删除、归档),此类操作走 outline-wiki-upload;配置 Outline MCP(首次接入、重启后看不到、401 等),走 outline-wiki-setup;用户使用其他 wiki 或知识库产品(如 Notion、Confluence、Obsidian、GitHub Wiki);分享、导出、权限调整(官方 MCP 文档未列、server 通常也未暴露),需走 Outline Wiki 自身 UI 或直接调用 REST API。此外,写操作前的"先 read 一下"属于 outline-wiki-upload 的读-改流程前置步骤,不属于本技能场景;当用户表达"我要改这篇"时应直接走 upload。
【主要能力】 核心能力分为两组。
- Search(搜索):按关键词在工作区执行全文搜索,返回匹配的文档列表。典型参数包括 query(搜索关键词,必选)、collection_id(可选,限定 Collection 范围)、limit / offset(可选,分页)。具体参数以 tools/list 实际返回为准。
- Read(读取):按文档 ID 获取元数据(标题、Collection、时间、作者等)。典型参数为 id(文档 ID,必选)。在 Claude Code 环境下,MCP fetch 返回的是标题加元数据,不包含 text 正文。 正文读取有一个重要说明:Outline MCP fetch(document) 服务端确实会返回正文,响应含 2 个 text content block,其中 block[0] 为 JSON 元数据、block[1] 为完整 Markdown 正文。但 Claude Code 的 MCP 客户端只呈现首个 content block,block[1] 正文被丢弃,因此在 CC 中 fetch 只能看到元数据。这是 CC 客户端侧已知的多 content block 处理行为,并非 Outline server 问题。获取正文需走 REST POST /api/documents.info 旁路;待 CC 完整支持多 block 后撤销旁路,fetch 将直接返回正文。
【使用方式】 执行前需具备前置条件(由 outline-wiki-setup 负责):MCP 已注册,当前 session 能调用 mcp__outline__* 系列工具;若未注册,先走 outline-wiki-setup,跑完重启后再回来。 标准流程:
- 核实配置与工具:确认 outline 相关 MCP 工具在当前 session 已注册;调 MCP tools/list 取 search / read 的实际工具名与参数 schema。本技能不写死任何工具名,会话开始时必须先调用 MCP 的 tools/list 端点核实当前 MCP server 实际暴露的工具名、参数 schema、返回结构,再据此调用。
- 理解意图:把用户的自然语言指令映射到 search 或 read。
- 执行操作:search 按关键词加可选 collection_id 与分页参数执行;read 元数据走 MCP fetch(resource=document,按文档 ID);read 正文因 CC 截断需走 REST POST /api/documents.info。
- 验证结果:检查返回是否成功。
- 报告:把找到的文档列表 / 读到的 Markdown 原文 / 元数据告诉用户。
- 衔接(可选):如果用户后续要写 / 编辑当前找到的文档,明确告知下一步走 outline-wiki-upload。
【限制与注意事项】 本技能不处理非 Outline Wiki 的知识库;不在 MCP 未启用时尝试操作;不做任何写操作(创建 / 编辑 / 移动 / 删除 / 归档 / 评论);不绕过 tools/list 凭印象调用工具。搜索结果应按相关度排序展示,不要凭缓存的 ID 直接 read(文档可能被归档或重命名)。核心 search / read 通常稳定暴露,但跨 self-hosted 部署仍可能有差异,扩展能力以 tools/list 实际返回为准。
【故障排查要点】 按顺序定位:fetch 只返元数据、读不到正文(最常见)——由 Claude Code 截断 MCP 多 content block 所致,不是文档为空、ID 错误或鉴权问题,拿正文走 REST 旁路,或用 list_documents(query) 的 context 拿正文片段(短文档接近全文,长文档会截断);工具名不匹配——重新调 tools/list 拿当前工具清单;文档 ID 无效——用 search 重新定位拿新 ID;认证失败(401 / 403)——属于 outline-wiki-setup 范畴,先重启或重跑配置脚本;MCP 未启用或连接被拒——走 outline-wiki-setup 排查配置。
【读正文 REST 旁路】 当需要读取正文时,使用 REST 旁路,token 与 base 同 MCP 配置(与 MCP server 同一把 key,setup 时已写好)。命令为: curl -sS -X POST "<base>/api/documents.info" -H "Authorization: Bearer <token>" -H "Content-Type: application/json" -d '{"id":"<docId>"}' | jq -r '.data.text' 其中 <base> 为 outline MCP url 去掉尾部 /mcp。<token> 位置取决于 outline-wiki-setup 当时的 scope:user 位于 ~/.claude.json#mcpServers.outline.headers.Authorization;project 位于仓库根 .mcp.json;local 位于 ~/.claude.json#projects.<path>.mcpServers.outline。
【相关参考】 outline-wiki-setup:MCP 配置与首次接入;outline-wiki-upload:写 / 编辑 outline 文档。文档风格与风格 checklist 属于 outline-wiki-upload,写时参考与核对,不在本技能范围内。