YAML Frontmatter && Markdown 元数据
1352 字
7 分钟
YAML Frontmatter && Markdown 元数据
YAML Frontmatter && Markdown 元数据
[TOC]
概述
是什么
Markdown 文件最开头用 --- 包裹的一段 YAML 格式数据,叫做 ==Frontmatter==(前置信息/元数据)
---title: docker compose容器编排 # 标题published: 2026-05-06updated: 2026-05-06description: 文章描述 # 描述tags: [YAML, Frontmatter, 元数据]category: 知识扩展author: 久棹 # 作者---📌 注意:它不是 ```yaml 代码块!
Frontmatter 的 --- 是裸写的,直接放在文件第 1 行,前后不加反引号
格式规则
| 规则 | 说明 |
|---|---|
| 位置 | 必须在文件最开头,第一行就是 --- |
| 分隔符 | 开头一个 ---,结束一个 --- |
| 内容格式 | 标准 YAML 语法(键值对、列表、嵌套) |
| 可选性 | 不是必须的,没有也行 |
| ⚠️ ==字符串== | 大部分不用,但值含 : # & [ { 时必须加==双引号== |
YAML 语法速查
| 类型 | 写法 | 说明 |
|---|---|---|
| 字符串 | key: value | ==可以不加引号== |
| 数字 | count: 42 | 直接写 |
| 布尔 | draft: true | true=草稿不发布 false=不是草稿 |
| 数组(行内) | tags: [a, b, c] | 方括号 |
| 数组(多行) | tags:\n(换行) - a\n - b | 缩进后紧跟 - |
📌 推荐字段总结
| 字段 | 说明 |
|---|---|
title | 文章标题 |
description | SEO 描述,兼顾搜索引擎和文章摘要 |
summary | 文章列表卡片上的简短导语(👆的足够了) |
date | 发布日期(创建) |
updated | 最后更新日期,区别于创建日期 |
tags | 标签列表,用于检索和相关推荐 |
category | 分类,用于文章归类 |
badge | 文章角标(New / Hot / Beta) |
platform | 默认blog(博客平台)/Wechat(微信) |
author | 作者名 |
cover | 封面图文件名,程序自动从图片目录读取 |
articleId | 唯一标识,用于编辑时定位文件 |
draft | true=草稿不发布 false=不是草稿 |
badge 文章角标
文章列表卡片上显示的状态小标签,不是标准字段,是自己和程序约定好的”暗号”
| 角标值 | 视觉效果 | 适用场景 |
|---|---|---|
New | 🟢 绿色小标签 | 最近发布的新文章(通常 7 天内) |
Hot | 🔴 红色小标签 | 访问量高、读者关注的热门内容 |
Top | 📌 置顶标记 | 长期挂在列表最前面的重要文章 |
Featured | ⭐ 金色精选 | 编辑推荐的高质量内容 |
Beta | 🟡 黄色小标签 | 内容还在完善中,仅供参考 |
Updated | 🔵 蓝色小标签 | 旧文章有重大修订,提示读者回看 |
---title: "docker stack 部署应用实战"---💡 角标本质就是你自己定义的分类标记,想加什么类型都可以,只要代码里对应处理就行
cover 封面的工作方式
- 写图片的文件名即可:
cover: counter-app-cover.png - 程序读取后自动拼完整路径:
./笔记名/counter-app-cover.png - 也支持 CSS 渐变当纯色背景:
cover: "linear-gradient(135deg, #667eea 0%, #764ba2 100%)"
---title: "docker stack 部署应用实战"image: "api"# 封面图放在同目录的 笔记名/ 文件夹下,程序自动读取---articleId 文章唯一标识
给每篇文章一个身份证号,跟文件名解耦
| 对比 | 靠文件名 | 靠 articleId |
|---|---|---|
| 改名后编辑 | ❌ 找不到 | ✅ 仍能精准定位 |
| 文件移动目录 | ❌ 链接失效 | ✅ 不受影响 |
| 唯一性 | 可能重名 | ✅ UUID 全球唯一 |
---title: "docker stack 部署应用实战"---新建文章时程序帮你生成一串 UUID(如
crypto.randomUUID()),你不用手写
自建博客实例
---title: docker stack 部署应用实战description: 在 Swarm 集群上使用 docker stack 部署 Flask + Redis 计数器应用published: 2026-05-06updated: 2026-05-06tags: [YAML, Frontmatter, 元数据]category: 知识扩展author: 久棹image: "api"---💡 这就是你以后搭博客时,Frontmatter 的最小可用集,每个 md 文件顶部写好这些,程序就能自动生成文章列表、标签页、搜索索引
💡 解惑
这些元数据有什么用❓️
就像快递包裹上的快递单
不看包裹内容就能知道里面是什么、谁寄的、什么时候发的
中文值需要加引号吗❓️
==大部分情况不需要==,但以下情况必须加引号:
| 场景 | 错误写法 ❌ | 正确写法 ✅ |
|---|---|---|
值含冒号 : | title: Docker:入门 | title: "Docker:入门" |
值含 # | desc: 关于#标签的用法 | desc: "关于#标签的用法" |
值以 { [ 开头 | text: [重要] 通知 | text: "[重要] 通知" |
值含 & * ! | title: 安装 & 配置 | title: "安装 & 配置" |
| 纯数字值想当字符串 | id: 001(变成数字1) | id: "001" |
💡 保险做法:中文描述类字段(title、description、summary)一律加双引号,省心
description 和 summary 并存还是二选一❓️
两个可以并存,各有分工:
| 字段 | 用途 | 长度建议 |
|---|---|---|
description | 给搜索引擎看(SEO),显示在搜索结果里 | 120-160 字符 |
summary | 给读者看,显示在文章列表/卡片里 | 一句话,30-50 字 |
---title: "docker stack 部署应用实战"description: "在 Docker Swarm 集群上使用 docker stack 命令部署 Flask + Redis 计数器应用,涵盖镜像构建、私有仓库推送、滚动更新与 routing mesh 负载均衡"---如果只保留一个,优先用
description,它兼顾 SEO 又能当摘要用
⚠️ 常见坑
- Frontmatter 必须从第 1 行第 1 列开始写
---,前面不能有空行或空格 - 结束的
---不能忘,否则整个文件都被当成 YAML 解析 - YAML 对缩进敏感,子级必须缩进 2 个空格(不要用 Tab)
- 不要在 Frontmatter 里写 markdown 语法,它是纯 YAML
- 中文值含
:#&等特殊字符时必须加双引号,否则 YAML 解析报错
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
YAML Frontmatter && Markdown 元数据
https://www.kpyun.fun/posts/web/other/yaml-frontmatter/相关文章智能推荐
1
Markdown常用语法
知识扩展Markdown基础语法速查,包括标题、代码块、列表、表格、图片等常用格式
2
Ansible剧本(playbook)
Ansible自动化深入 Playbook 剧本编写实践,掌握 YAML 语法规范、任务编排方法、handlers 触发器机制与多剧本批量执行
3
VS Code 安装
知识扩展VS Code 编辑器下载安装与配置指南,涵盖插件推荐、常用快捷键及前端开发环境搭建
4
函数与数组
Shell脚本Shell函数定义与数组操作,涵盖局部/全局变量、递归函数及数组遍历
5
循环与case多分支
Shell脚本Shell循环结构与case多分支语句,涵盖for/while/until循环及实战脚本
随机文章随机推荐




