写博客最怕的不是没内容,而是内容写完了,页面却是空的。少一个冒号、日期格式不对、字段名拼错,都可能让文章悄悄消失。
Astro 的内容集合把这类问题从「发布后才发现」提前到了「构建时直接报错」。
Frontmatter 是文章的第一层结构
文章标题。归档、搜索、RSS 和分享卡片都会用到。
发布日期,决定归档位置和列表排序。格式必须是 YYYY-MM-DD。
false草稿开关。开启后只在开发环境可见,正式构建会被排除。
[]标签数组,会进入标签聚合页。中文标签会直接作为展示文本。
::::
这些字段看起来简单,但它们共同决定了一篇文章在站点里的位置、可见性和关联关系。
一个最小但完整的例子
title: 你好,新网站published: 2026-10-31description: 第一篇正式文章。tags: - 随笔 - 建站category: 随笔draft: false只要 title 和 published 存在,文章就能被识别。其余字段都有默认值,不需要为了「填满模板」而写一堆空字段。
写作流程已经固定下来
从新建到发布
生成骨架
运行
pnpm.cmd new-post my-post,脚手架会按站点时区写好日期。写正文
文件名就是 URL slug,正文直接使用 Markdown 和自定义语法。
本地预览
运行
pnpm.cmd dev,在浏览器里确认排版、图片和链接。正式发布
确认
draft为false,执行构建并部署dist/。
这套流程的价值在于:写作时只需要关心内容,结构检查交给工具。
分类、标签和系列不是三套系统
一开始我以为分类、标签、系列要分别维护,后来发现它们其实都从文章字段长出来:
tags聚合出标签页;category聚合出分类页;series指向系列实体,seriesOrder决定阅读顺序。
文章是唯一的数据源,其他页面都是它的投影。这样做的好处是不会出现「文章改了标签,标签页却没更新」的同步问题。
一点心得
内容集合最容易被低估的地方,是它把「写作规范」变成了可以执行的代码。规范写在文档里,靠人记住;schema 写在代码里,构建时会替你检查。
对于一个人维护的博客来说,后者的价值更大——因为没有人会替你 review frontmatter。
本站技术手记
连载中分享文章
生成精美分享图或复制链接,与更多人分享本文。
继续阅读
换条路线
从其他文章中稳定抽取
最后更新于 ,距今已过 9 天
部分内容可能已过时