核心概念
页面与内容
了解页面模型、关键字段和发布状态。
页面是 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`。