我之前把 Markdown 当成“写完就能显示”的文件。真正开始做博客之后,才发现内容也需要一个模型:哪些字段必须有,哪些值允许出现,页面怎样拿到它们。

问题:文章只是文件吗

如果每篇文章的标题、日期和标签都靠自己记住,短期没问题,文章一多就会出现格式漂移。有人写 pubDate,有人写 date,列表页最后只能到处写兼容代码。

于是我先把一篇文章看成一条数据,而不是一段文字:frontmatter 是数据,Markdown 正文是内容,页面负责把两者组合起来。

实验:让 schema 先说清楚

我给 collection 加了最小约束:titledescriptionpubDatecategorystatusstack。新文章如果缺少标题,或者状态不在允许范围内,构建时就直接失败。

这比上线后才发现页面空了一块更好。错误越靠近输入,越容易修。

证据:页面不再猜数据

首页只负责排序和挑选 featured 文章,卡片只负责展示,详情页负责渲染正文。每个组件拿到的数据形状是稳定的,改文案不会牵动路由,改卡片也不会影响 RSS。

好的内容模型,不是让写作变复杂,而是让重复劳动变少。

下一步

下一步想把“系列”和“关联文章”也放进模型里。先不急着做推荐算法,能让一次学习沿着三四篇记录继续走下去,就已经足够有用了。