如何管理 Obsidian 的元数据 Frontmatter?

lxiol

原文链接:https://mp.weixin.qq.com/s/oI7DLm_KMMRZubaXAsLavA

Frontmatter 是 Obsidian 给笔记打的”机器可读”标签,核心用途是查询筛选而非描述完整。设计字段要遵循”用来查才写”原则:从 tags、aliases、status 三个最小字段起步,按需扩展,配合 Dataview 让笔记库变成可检索的数据库。

一开始看到笔记顶部的 和下面那些 `tags:aliases:` 的东西,觉得就是给笔记打个招呼用的。随手照着抄,写完就不管了。后来看到有人把 Frontmatter 写得密密麻麻,十几个字段都有,我又觉得这东西是不是很重要,要好好设计。

两种极端都踩过之后,我才慢慢摸到了门道。

01|Frontmatter是什么?

说白了,Frontmatter 就是每篇笔记最顶端那段用 `` 包围的 YAML 代码。你在 Obsidian 里写笔记,最顶部经常会自动出现它,或者你手动写进去的,像这样:

1
2
3
4
`tags:
  - card/PN
aliases: 黄金圈
id: PN-20260326`

Obsidian 看到这段代码,就知道这篇笔记叫”黄金圈”,它属于 PN 这类卡片,有特定编号。这些信息 Obsidian 认识,Dataview 认识,很多插件也认识。但你自己写的正文内容,Frontmatter 里的字段不一定能读懂。

这是 Frontmatter 最核心的特点:它是给工具看的,不是给人看的。

明白了这一点,设计字段的思路就清楚了——不是为了把笔记”描述”得更完整,而是为了让工具能够”找到”和”处理”这篇笔记。

02|Frontmatter有什么作用?

查询和筛选

这是 Frontmatter 最大的价值所在。当你有一百篇笔记的时候,靠翻文件夹根本找不到想要的那篇。Frontmatter 里的字段可以让你用工具快速筛选:找出所有状态为”进行中”的项目笔记、找出所有标签包含”思维模型”的卡片、找出本周创建的所有文件。

Dataview 就是这个能力的放大器——它能读懂 Frontmatter 里的每个字段,让你的笔记库变成一个可查询的数据库。

链接和别名

aliases 字段解决的是同一个概念有多种叫法的问题。黄金圈也可以叫”Golden Circle”,也可以叫”西蒙·斯涅克法则”。你在正文里写 [[黄金圈]] 可以链接到这篇笔记,写 [[Golden Circle]] 同样可以,只要别名里写了,Obsidian 就能识别。

状态跟踪

status 字段是我最常用的字段之一。一篇笔记是”待整理”还是”已发布”,是”在读”还是”已读”,靠这个字段一眼就能分辨。用 Dataview 筛一下,所有待整理的笔记就都出来了。

组织和管理

对于项目笔记来说,project 和 next-action 字段撑起了一个最简单的任务管理系统。日记模板里的 weathermoodtemperature 则记录了每天的状态,积累一个月就能分析自己心情和天气的相关性。

03|Frontmatter语法

Frontmatter 用的是 YAML 格式,规则很简单:

基本结构

1
2
`key: value
key2: value2`

三个短横线 包裹内容,开头顶格写,不能有空格。内容写在 和 `` 之间。

键值对

最基础的写法,冒号后面有一个空格,然后是值:

1
2
`title: 我的笔记标题
project: 公众号写作`

列表

用短横线和缩进表示多个值:

1
2
3
`tags:
  - card/PN
  - 思维模型`

注意三点:

  • • 短横线后面有一个空格
  • • 同级列表对齐
  • • Obsidian 的一些插件和 Dataview 更习惯这种格式,不推荐用逗号分隔的写法如 tags: [card/PN, 思维模型]

注释

YAML 不支持行内注释,只能单独起一行:

1
2
`# 这是注释
status: 🟠进行中`

常见错误

  • • 缩进不一致:YAML 对缩进敏感,用空格不要用 Tab
  • • 键名有空格:key: value 可以,但 key name: value 不行
  • • 冒号后没空格:title:笔记 会被解析成字符串”笔记”,不会报错但值不对

04|Obsidian官方识别的常用字段及用法

Obsidian 原生支持一些字段,填了就有对应的功能,不需要装插件。

别名:aliases

1
2
3
4
`aliases:
  - 黄金圈
  - Golden Circle
  - 西蒙·斯涅克法则`

别名是检索的补充入口。一个概念在不同场合有不同叫法,别名就是用来覆盖这些变体的。你在 Obsidian 里用 [[别名]] 写链接,只要别名匹配,Obsidian 就能跳转到对应笔记。这个字段 Obsidian 自动维护,不需要额外操作。

标签:tags

1
2
3
`tags:
  - card/PN
  - 思维模型`

标签是笔记最基础的分类方式。Obsidian 会自动把正文里打的 [#标签]() 也纳入 tags 字段,Frontmatter 里的和正文里打的是同一个系统。

标签不需要很多。我的经验是:标签的价值和数量成反比。二十个标签不如三个真正会用到的核心标签。

样式:cssclasses

1
2
`cssclasses:
  - table-flat`

给笔记应用自定义 CSS 样式。需要配合 Obsidian 的 CSS snippet 使用,属于进阶用法。

创建时间和修改时间

这两个字段 Obsidian 自动生成,自动更新,记录文件的创建时间和最后修改时间。不需要手动填写,但可以在 Dataview 查询里用:

1
2
3
4
5
````dataview
TABLE file.mtime
FROM ""
WHERE file.mtime >= Date.today() - dur(7 days)
````

05|Frontmatter字段支持的数据类型

YAML 本身支持多种数据类型,Obsidian 都能识别。

字符串(最常用)

默认值,不需要引号:

1
`title: 我的标题`

如果字符串本身包含冒号或特殊字符,用引号包裹:

1
`title: "我的标题: 为什么重要"`

单引号和双引号都可以,双引号允许转义字符。

数字

1
2
`rating: 4
temperature: 22~25`

注意:⭐⭐⭐⭐ 这种 emoji 不是数字,如果想排序或比较,用阿拉伯数字更方便。

布尔值

1
2
`published: false
reviewed: true`

注意 YAML 里 yes/noon/off 也可以被解析为布尔值,容易混淆。用 true/false 最明确。

日期

1
2
`started: 2026-05-08
deadline: 2026-06-01`

推荐用 YYYY-MM-DD 标准格式,Obsidian 和 Dataview 都能识别,可以做日期比较和排序。如果需要精确到时间:

1
`meeting: 2026-05-08T14:30:00`

列表

1
2
3
`author:
  - 张坤
  - 王晓宇`

列表里的每个元素可以是字符串、数字、日期,甚至是嵌套的字典。Obsidian 原生对列表的展示效果比较好,尤其是用在标签和别名上。

06|字段设计的核心原则

说了这么多语法,最重要的问题还没回答:字段该怎么设计?

字段是用来查询的,不是用来描述的。

一个字段只有当你真的会在某个时候用它来筛选笔记,才值得存在。如果一个字段填完之后从来没在检索里用过,那它就是在浪费你的时间。

基于这个原则,分层策略:

第一层:必须有的

1
2
3
4
`tags:
  - xxx
aliases:
  - xxx`

第二层:按笔记类型选的

项目类

1
2
3
`status:
  - 🟠进行中
project: 项目名称`

读书/视频类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
`tags:
  - R/书籍
image: https://img1.doubanio.com/view/subject/l/public/s35100248.jpg
published: 2023-06-01
author:
  - 姜胡说
country:
  -   中国
source: 台海出版社
rating: 7.5
status:
  -  未开始
link: https://book.douban.com/subject/36418769/
isbn: 9787516835494`

日记模板

1
2
3
4
`weather: 晴
temperature: 10~15
amount: -115.5
notes: 今天`

第三层:按需添加

不要预设,先用,用到了发现不够用,再加。提前设计过多的字段,是 Frontmatter 最大的坑。字段越多,填写的摩擦越大,越容易变成摆设。

07|Dataview 让字段真正动起来

Frontmatter 写得再漂亮,如果只是躺在那里,就跟没写一样。Dataview 让这些字段真正动起来:

查询所有进行中的项目笔记:

1
2
3
4
5
6
````dataview
TABLE project, next-action, status
FROM ""
WHERE status = "🟠进行中"
SORT modified DESC
````

查询这个月读过的书:

1
2
3
4
5
6
````dataview
TABLE author, rating
FROM ""
WHERE type = "书籍" AND status = "已读"
SORT rating DESC
````

查询本周创建的笔记:

1
2
3
4
5
````dataview
TABLE file.ctime, tags
FROM ""
WHERE file.ctime >= Date.today() - dur(7 days)
````

08|一个最小可用的方案

不想折腾太多的话,从这三个字段开始:

1
2
3
4
5
6
`tags:
  - xxx
aliases:
  - xxx
status:
  - 🔴未开始`

三个字段覆盖了最常见的检索场景:按类型找、按名称找、按状态找。等这三个不能满足需求了,再按需加字段。

Frontmatter 不是一次设计好的系统,是跟着你的使用习惯慢慢长出来的。你查询什么,就加什么字段,不用想太远。

————————————————————

往期推荐

本文转载自微信公众号,如有侵权请联系删除。

  • 标题: 如何管理 Obsidian 的元数据 Frontmatter?
  • 作者: lxiol
  • 创建于 : 2026-06-30 15:35:49
  • 更新于 : 2026-06-30 15:35:49
  • 链接: https://blog.lxiol.cn/2026/06/30/如何管理-Obsidian-的元数据-Frontmatter/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。