打开一篇 Hexo 文章,最上面的两段横线之间就是 Front Matter。它看起来像一小段 YAML,却决定了文章的标题、时间、归档位置、标签页显示内容,以及文章是否进入正式生成结果。

正文写得再好,如果 Front Matter 缩进错了或漏了必填字段,构建时仍然可能失败。把这些字段理解清楚,写作会轻松很多。

一份完整的示例

当前博客的文章可以从下面这个最小但完整的结构开始:

---
title: Hexo Front Matter 详解:标题、分类、标签与摘要怎么写
date: 2026-07-31 20:10:00
updated: 2026-07-31 20:10:00
tags:
  - Hexo
  - Markdown
categories:
  - 技术折腾
description: 一句话说明文章解决的问题和阅读价值。
cover:
draft: false
---

两行 — 必须各自独占一行。字段名使用半角冒号,列表项比 tags 或 categories 多缩进两个空格。仓库检查脚本会寻找必填键,但不会替你修复 YAML 结构,所以缩进仍然要自己保持一致。

主要字段各自负责什么

title 是文章标题,会出现在页面标题、列表和归档中。它可以使用中文,不需要和文件名完全一样。

date 是文章在站点上的时间,当前配置会把它用于 URL 的年月日部分。updated 用来记录重要修改时间,方便读者判断内容是否更新过。

tags 是细粒度关键词,categories 是稳定的栏目。分类应该少而稳定,例如技术折腾;标签可以更具体,例如 Hexo、Docker 或 Markdown。同一概念尽量只保留一种写法,否则标签页会出现多个近义入口。

description 是摘要和搜索结果中的一句话说明。它不是正文第一段的简单复制,而应该告诉读者这篇文章能解决什么问题。写完后可以单独读这一句,确认它在列表页上也有意义。

cover 是可选封面。只有当图片地址已经确认存在、适合长期公开时才添加。没有可靠封面时留空,比引用一个未来可能失效的地址更稳。

draft 控制文章是否作为草稿。准备发布的文章写 false;还在整理的文章可以先写 true,并在本地预览阶段显式查看。

分类和标签怎么取舍

我会先问“这篇文章属于哪个栏目”,再问“读者可能用哪些词找到它”。前一个答案放 categories,后一个答案放 tags。

一篇文章通常只需要一个分类,最多两个。标签建议控制在 2–5 个,既能帮助检索,又不会把标签页变成词典。对于 Hexo 指南,Hexo 几乎总是主标签,其他标签再根据内容选择 Markdown、Docker、Nginx 等。

不要为了覆盖搜索词给一篇文章塞十几个标签。标签越多,单个标签的区分度越低;稳定、可复用比数量更重要。

YAML 最常见的错误

第一种错误是把列表项和字段放在同一列:

tags:
- Hexo
- Markdown

有些 YAML 解析器可能接受这种写法,但在多人维护时很难快速看出层级。统一使用缩进列表更清楚:

tags:
  - Hexo
  - Markdown

第二种错误是混用 Tab 和空格。YAML 缩进使用空格,不要按 Tab 键。第三种错误是把带冒号的 URL 或复杂字符串写得含糊;需要时用引号包住值,尤其是 cover、描述或包含特殊符号的字段。

日期也要保持同一种格式,例如 2026-07-31 20:10:00。不要一会儿写年月日,一会儿写自然语言时间,否则归档排序和时区理解都容易出问题。

用检查脚本把错误挡在构建前

写完一篇文章后,先运行:

pwsh ./ops/check.ps1

它会检查仓库关键目录和文章是否包含 title、date、tags、categories、description。检查通过后,再打开本地预览检查标题、摘要和归档位置。

检查脚本不是完整的内容审稿器。它不知道一个标签是否最合适,也不会判断描述是否准确。它的作用是把结构性错误快速挡住,把人工时间留给表达和事实核对。

小结

Front Matter 是文章的索引卡:title 负责被看见,date 和 updated 负责时间,categories 和 tags 负责归档,description 负责摘要,cover 负责可选视觉入口,draft 负责发布状态。字段不多,但每一项都有稳定职责。

如果你还没熟悉本地预览,可以先读Hexo 本地写作与预览;下一步可以了解图片、代码和站内链接,最后用构建与部署排障指南完成发布。