系列已经写了二十多篇关于知识库搭建的话题。从分层架构到标签体系,从 Dataview 到模板工具,基本覆盖了搭建知识库的主要环节。但有个贯穿所有环节的基础设施,我一直没专门聊过——就是每篇笔记最顶上那几行 YAML。
听起来不太起眼。但 Dataview 查询靠它,搜索排序靠它,模板自动填充靠它,跨笔记关联也得靠它。元数据写清楚了,后面所有自动化都有据可依。写不清楚,再好的工具链也白搭。

## 元数据长什么样
如果用过 Obsidian,大概率见过这个:
“`
—
title: “笔记标题”
created: 2026-07-19
tags:
– “AI”
– “知识管理”
status: draft
—
“`
两个「—」之间的内容就是 YAML frontmatter。它不像正文那样被渲染出来,而是作为笔记的属性面板,供 Obsidian 和 Dataview 这类插件读取。
很多人只放一个 tags 字段就完事了。但如果你想把知识库真正跑起来,需要一套更完整的方案。
## 我的元数据字段
用了这么久,我逐步固定下来一套字段。不多,9 个,覆盖从创建到归档的全生命周期。
### 基础字段(每篇笔记必填)
**title** — 标题。注意跟文件名是两回事。文件名可以叫 `2026-07-19_元数据体系.md`,但 title 写「我的元数据方案」。Dataview 展示时用 title 字段,比文件名直观得多。
**created** — 创建日期。格式 `YYYY-MM-DD`。Dataview 排序最常用的字段。
**tags** — 标签。我分三层:领域(AI、运维)、状态(draft、stable)、类型(教程、笔记)。比如一篇关于 AI 工具的笔记,标签可能是 `[AI, draft, 工具]`。
### 管理字段(可选但推荐)
**updated** — 最后修改日期。每次改笔记顺手更新。配合 Dataview 可以自动生成近期修改视图。
**status** — 状态。分四级:draft(草稿)、review(待审核)、stable(已定稿)、archived(已归档)。每周扫一遍 draft 状态的笔记,决定推进还是删掉。
**description** — 一句话描述。30 字内概括笔记核心。在 Dataview 列表模式下,description 作为摘要展示,比只看到标题有用得多。
### 关联字段(按需使用)
**related** — 关联笔记。用 wikilink 列表指向相关笔记。比如一篇讲标签体系的笔记,related 里可以指向讲 Dataview 的笔记。
**source** — 来源。如果笔记来自某篇公众号文章或网页,这里放原始 URL。方便追溯信息的原始出处。
**version** — 版本号。仅用于安装/部署类笔记,记录软件版本。比如 Hermes 升级后,笔记里的 version 从 0.8.2 更新到 0.9.0。
## 用模板自动填充
手动写这 9 个字段太累。靠模板。
我用 Templater 插件。按一次快捷键,自动弹一个模板,把 created 和 title 提前填好:
“`
—
created: <% tp.date.now("YYYY-MM-DD") %>
title: “<% tp.system.prompt("标题") %>”
tags:
status: draft
—
“`
created 自动填当天日期,title 弹输入框。写完笔记顺手补 tags 和 description 就行,不用每次从零敲 YAML。

## Dataview 怎么吃元数据
元数据写好了,Dataview 才能干活。
生成近期修改列表:
“`
TABLE file.link AS “笔记”, updated AS “更新日期”, status AS “状态”
FROM “笔记”
WHERE updated != null
SORT updated DESC
LIMIT 20
“`
过滤需要处理的草稿:
“`
TABLE file.link AS “笔记”, created AS “创建日期”, description AS “摘要”
FROM “”
WHERE status = “draft”
SORT created ASC
“`
按标签聚合:
“`
TABLE rows.file.link AS “相关笔记”
FROM “”
FLATTEN tags AS tag
WHERE contains(tags, “AI”)
GROUP BY tag
“`
没有 status 字段,第一个查询就查不出来。没有 updated,排序就没依据。元数据的质量直接决定 Dataview 查询的可用性。

## 几个常见坑
**字段名不统一。** 有人用 date,有人用 created,有人用 create-date。同一套知识库里三个名字同时存在,Dataview 没办法一次性查。选一个就别改了。
**只填 created 不填 updated。** 改完笔记忘改 updated,Dataview 排序永远按创建日期排,看不出哪些是最近动过的。
**tags 和 status 混在一起。** 把 draft 当标签用而不是独立字段。想查所有稳定发布的教程,得同时匹配两个标签条件,查询变得冗长。我的做法:status 独占一个字段,tags 只放领域和类型。
## 习惯比工具重要
元数据这件事,工具层面没什么门槛。Templater 模板写好了,敲几下键盘就搞定。
真正的门槛是养成习惯。每次新建笔记顺手填 status 和 description,每次修改笔记顺手更新 updated。最开始那两周需要刻意提醒自己,两周后就是条件反射了。
系列写了这么多篇,这篇可能是最不炫的。没有自动化工作流,没有高级插件,就是几个字段的规范。但恰恰是这些不起眼的规范,决定了知识库能不能从一堆文件变成可查询的系统。
下一篇准备聊聊知识库的收藏夹管理——怎么处理那些先存着以后看的内容。