Anydocs Documents
核心概念

页面与内容

了解页面模型、关键字段和发布状态。

页面是 Anydocs 的基本内容单元。它不仅包含 canonical 正文,还承载发布状态、模板化 metadata,以及面向搜索 / AI 的可派生文本输出。

一个 canonical page 至少包含什么

页面文件同时服务于编辑、发布和机器读取。

  • `id`:页面唯一标识,也是导航引用使用的 pageId
  • `lang`:页面所属语言
  • `slug`:reader URL 路径片段,要求在同语言内唯一
  • `title` 与 `description`:页面标题和摘要
  • `status`:`draft`、`in_review`、`published` 三种发布状态
  • `tags`:可选标签列表
  • `content`:页面正文的 canonical `DocContentV1` 事实来源
  • `render.markdown` 与 `render.plainText`:面向搜索和 AI 的可选派生文本输出,通常由 `content` 重新生成

模板、metadata 与 review

除了正文和基础字段,页面还可以带结构化模板信息。

  • `template`:页面使用的模板 id
  • `metadata`:由模板 schema 定义的结构化字段值,不是任意自由对象
  • `review`:审核要求与审批结果,决定是否允许直接发布
  • 公开机器可读产物只暴露 visibility 为 `public` 的 metadata;`internal` 字段不会进入公开 `mcp/pages.<lang>.json`

状态和公开边界

页面是否对外可见,不取决于文件是否存在,而取决于状态。

  • `draft`:保留在源项目中,不进入 reader 或公开产物
  • `in_review`:等待审核,仍不进入 reader 或公开产物
  • `published`:进入 reader、搜索索引、`llms.txt`、`llms-full.txt` 和 `mcp/` 产物

维护建议

日常维护应优先通过 Studio 或 MCP 完成,这样可以保持 `content`、`render`、状态和校验规则一致。

page_set_status({ projectRoot: "/path/to/project", lang: "zh", pageId: "guide", status: "published" })
状态切换不要走 page_update: 内容更新和状态更新应拆开处理。需要发布时,请使用 `page_set_status`。