用途:本技能用于在 Astro 项目中集成 Keystatic CMS。Keystatic 写入受 Git 跟踪的文件,Astro 通过 Content Layer(getCollection、getEntry、render)读取,不使用 createReader。
主要能力:涵盖配置位置(keystatic.config.ts、src/content.config.ts、cms/{name}.keystatic.ts、cms/{name}.astro.ts、astro.config.mjs、cms/utils/loader.ts);双文件模式,每个内容类型配 Keystatic schema 与 Astro defineCollection 两个文件,共享枚举与路径从 Keystatic 文件导出;内容结构支持 MDX、YAML、JSON 集合与 singleton,含多文件 singleton;MDX 自定义块分三层(block 配置、Astro 渲染、可选预览),并建议禁用内置 MDX 图片;远程/抓取集合提供四种模式(内存抓取、抓取加 JSON 回退、抓取到磁盘加 glob、本地镜像合并远程)。
使用方式:集合需在 keystatic.config.* 与 src/content.config.ts 注册;每个 Astro 集合需 loader,通常用 astro/loaders 的 glob() 或 file(),共享 helper 形如 glob({ base, pattern: **\/[^_]*.${format} }),排除下划线前缀文件;schema 变更后运行 astro sync 生成类型;页面用 getCollection、getEntry、render 消费内容,MDX 渲染时传入共享组件。
适用场景:新增或修改 Keystatic 集合/singleton、配置内容注册表、选择内容格式与目录布局、添加 MDX 块与图片处理、构建时抓取外部数据、区分本地 CMS 与 API 内容。
限制:需匹配项目 package.json/lockfile 中的 @astrojs/* 与 @keystatic/* 版本;静态生产构建应关闭 @keystatic/astro;远程集合只注册在 src/content.config.ts;避免重复枚举/路径、使用 createReader、启用原生 MDX 图片等反模式。具体 API 细节以官方文档为准。