Anydocs Documents
Core Concepts

Page and Content

Understand the page model, key fields, and publication states.

A page is the basic content unit in Anydocs. It carries canonical body content, publication state, template-driven metadata, and optional derived text output used by search and AI systems.

What a canonical page contains

A page file serves editing, publication, and machine-readable use cases at the same time.

  • `id`: unique page identifier and the target used by navigation references
  • `lang`: the page language
  • `slug`: reader URL path segment that must be unique within its language
  • `title` and `description`: page title and summary
  • `status`: one of `draft`, `in_review`, or `published`
  • `tags`: optional tag list
  • `content`: canonical `DocContentV1` source of truth for the page body
  • `render.markdown` and `render.plainText`: optional derived text output used by search and AI delivery, usually regenerated from `content`

Templates, metadata, and review

Pages can carry structured template information in addition to body content and basic fields.

  • `template`: the template id applied to the page
  • `metadata`: structured values defined by the template schema, not an arbitrary free-form object
  • `review`: review requirements and approval state that can block direct publication
  • Public machine-readable outputs only expose metadata fields whose visibility is `public`; `internal` metadata does not appear in public `mcp/pages.<lang>.json`

Status and public visibility boundaries

Whether a page is public is controlled by status, not by file existence.

  • `draft`: stays in the source project and does not enter the reader or public outputs
  • `in_review`: awaits approval and still does not enter the reader or public outputs
  • `published`: enters the reader, search indexes, `llms.txt`, `llms-full.txt`, and `mcp/` outputs

Maintenance guidance

Prefer Studio or MCP for normal maintenance so `content`, `render`, status, and validation rules stay aligned.

page_set_status({ projectRoot: "/path/to/project", lang: "en", pageId: "guide", status: "published" })
Do not publish through page_update: Keep content edits and status changes separate. Use `page_set_status` when the page is ready to publish.