# Astro Content Collections 的职责边界

> Content Collections 负责把 Markdown 内容加载为可查询、可校验的数据；真正的发布安全仍需要显式过滤和构建产物检查。

## 结论

Astro Content Collections 很适合定义文章 Schema，并在构建时通过 `getCollection()` 查询内容。但“能被集合读取”不等于“应该公开”，路由、列表、搜索、RSS 和 Sitemap 必须复用同一套发布条件。

最后核验：2026-07-26。

## 集合解决的问题

- 用 loader 指定内容文件范围。
- 用 Schema 校验 frontmatter 的字段、枚举和格式。
- 给页面生成与模板渲染提供一致的数据入口。
- 在构建期发现缺失字段和类型错误。

## 集合不解决的问题

集合不会替项目决定草稿是否生成路由，也不会自动理解 `private` 或 `unlisted` 的业务含义。Pagefind、RSS 和 Sitemap 也有各自的输入范围，因此仍需明确的过滤函数和最终产物扫描。

## 在本项目中的用法

公开候选文章位于 `src/content/articles/`，所有文件都经过同一个 Schema。路由只为已发布的 public 或 unlisted 文章生成；公开聚合与索引进一步排除 unlisted 和 noindex 文章。

真正的私密原始材料位于集合之外的 `content/private/`。这是比单纯依赖 frontmatter 更强的隔离边界。

## 风险与边界

框架 API 会随版本变化，升级 Astro 后需要重新运行类型检查、生产构建与泄漏测试。本文只总结本项目实际使用的职责，不替代官方文档。

## 参考来源

- [Content collections](https://docs.astro.build/en/guides/content-collections/) — Astro，访问于 2026-07-26