frontmatter 每个字段是什么意思

文章开头那段被横线包住的字段,逐个说明作用、默认行为和写错的后果。

指南#写作#frontmatter

本文是 《博客使用指南》 系列的第 2 篇,共 3 篇

每篇文章的开头都有一段被 --- 包起来的内容:

markdown
---
title: 文章标题
description: 一句话摘要
date: 2026-10-10
category: 指南
tags: [写作, frontmatter]
---

这段叫 frontmatter,用来描述这篇文章的元信息。下面的正文才是文章内容。

必填的三个

title

文章标题。会显示在文章页顶部、列表卡片里、浏览器标签页和搜索结果里。

文件名和标题是两回事——文件名决定网址,title 决定显示什么。所以文件名用英文、 标题写中文完全没问题。

description

一句话摘要。它出现在三个地方:文章列表的卡片、首页的条目、以及搜索结果里的描述文字。

别敷衍这一句。搜索引擎结果里显示的就是它,写得清楚直接影响别人点不点进来。

date

发布日期,写成 2026-10-10 这种格式(必须补零,2026-1-5 是不规范的)。

它决定:

  • 文章在列表里的排序(新的在前)
  • 首页「最新文章」的顺序
  • 站点地图里的最后修改时间

category

分类,一篇文章只能有一个。

不写的话会被自动归到「未分类」,不会报错,但那篇文章就会显得像是忘了填。所以正经 写文章时都该给一个。

可选的几个

tags

标签,一篇可以有多个,用数组写:

yaml
tags:
  - Git
  - 版本控制

或者写成一行:

yaml
tags: [Git, 版本控制]

和分类的区别:分类是「这篇属于哪一类」(互斥),标签是「这篇涉及什么」(可以交叉)。 #Git 这种标签能同时出现在「指南」和「工具」分类的文章上,分类就不行。

不写就不写,文章仍然会出现在「全部文章」和「按分类」视图里,只是不会出现在 「按标签」视图。

series 和 seriesOrder

把几篇文章组成一个有阅读顺序的系列。这两个要一起写:

yaml
series: 博客使用指南
seriesOrder: 2
  • series 是系列名,同名的文章会被归到一起
  • seriesOrder 是在这个系列里的阅读顺序,从 1 开始

顺序不看日期,只看 seriesOrder。这样你就算隔了几个月补写一篇中间章节,也能把它 插到正确的位置。

文章页底部会出现「《系列名》上一篇 / 下一篇」的导航,首页也会出现「系列专栏」卡片。 系列只有一篇文章时不算系列,不会显示这些导航。

只有写了 series 但没写 seriesOrder 时,那篇会被当作顺序 0,排在系列最前面。

cover

自定义封面。不写的话,系统会按文章的文件路径自动分配一张默认封面(同一篇文章每次 都是同一张,不会变)。

想用自己的图:

yaml
cover: /images/my-cover.png

路径规则和正文里的图片一样——放在 public/images/ 下,用 /images/... 引用。

封面出现在列表卡片、首页,以及分享到社交平台时的卡片缩略图上。

是否精选,值只有 true 或 false,默认 false。

yaml
featured: true

首页的「精选文章」模块只显示标了 featured: true 的文章,没有任何自动兜底。一篇 都不标,那个模块就整个不显示。

所以它是纯手工挑选的:挑你希望访客第一眼看到的那几篇。别标太多,标多了就失去"精选" 的意义了。

一个很容易踩的坑:冒号要加引号

YAML 里,值里面如果出现「冒号加空格」,必须用引号包起来,否则会被当成键值对:

yaml
# 错的
tags:
  - Counter-Strike: Global Offensive

上面这样写,那个标签会变成一个对象 { "Counter-Strike": "Global Offensive" },页面上 就会原样显示出这串 JSON。正确写法:

yaml
tags:
  - "Counter-Strike: Global Offensive"

加了引号就正常了。 判断标准很简单:值里有 : (冒号加空格)就加引号,没有就不用。

完整示例

yaml
---
title: Git 安装与基本使用
description: 从装好 Git 到跑通日常提交流程,把最常用的几条命令讲清楚。
date: 2026-10-04
category: 工具
tags:
  - Git
  - 版本控制
series: Git 入门
seriesOrder: 1
featured: true
---

下一篇讲正文部分——Markdown 怎么写,以及本站对标题、链接、图片、代码块做了哪些处理。

© 2026 HuanYu Blog

记录技术,也记录思考