Markdown 基础

md 文件开头的 --- 是什么?
frontmatter(笔记属性)讲清

.md 文件顶上被两行 --- 包住的那块,叫 YAML frontmatter:这篇笔记的元数据,比如标题、标签、日期。它属于文件,但不属于正文。认识它的工具会读取或收起它;不认识的工具就把它当文字显示出来。两种都不算坏。

长什么样

---
title: 阅读清单
tags: [读书, 2026]
aliases: [待读]
---

# 笔记正文从这里开始

规则很少:第一个 --- 必须是文件的第一行,第二个 --- 收尾,中间是 YAML,也就是一行行 键: 值。收尾横线之后,就是正常的 Markdown 正文。

这块东西是谁写进去的

frontmatter 起源于静态建站工具,靠读 titledate 这些字段来生成页面。但你现在盯着的这块,多半来路更近:

  • Obsidian 管它叫属性(Properties)。你在属性面板里设的每个标签、别名,实际都以 frontmatter 的形式存在 .md 文件本体里。
  • AI 工具和 agent 生成笔记时经常带上一块,把标题、日期、标签放在别的软件找得到的地方。
  • 各类笔记应用也把它当成纯文本文件里放元数据的标准位置。

这正是这个格式安静的优点:元数据装在文件里,文件搬到哪它跟到哪。Obsidian 笔记之所以可移植,一半功劳在这。

为什么有时候显示得很怪

frontmatter 是个约定,不在 CommonMark 规范里,所以各家查看器的处理并不一致:

  • 认识这个约定的查看器会把它藏起来,或者显示成一块整齐的属性区。
  • GitHub 在仓库里查看普通 .md 时,把它渲染成正文上方的一个小表格
  • 不认识的查看器把原始几行当文字显示,甚至可能把第二个 --- 渲染成一条分割线,因为在文档中间 --- 本来就是这个意思

所以别人发来的文件顶上出现「怪表格」、一条孤零零的横线、或者一段 键: 值 文字,都不是文件坏了。是同一块内容,遇上了意见不同的查看器。其他「看着像没渲染」的情况也是同一套思路,见Markdown 不渲染的常见坑:先问文件里真实存了什么,再问查看器拿它怎么办。

NoteLoom 怎么处理它

NoteLoom 按 Obsidian 的方式对待 frontmatter,所以两边可以共用一个库,不需要任何转换。你看到什么,取决于视图:

视图 你看到的
源码(source) 显示原始 YAML,连横线一起
编辑(live) 隐藏;改属性走属性面板
阅读(reading) 隐藏;笔记从第一个标题干干净净开始

编辑和阅读视图的工具栏上有个属性按钮:点开是一个小表单,改 tagsaliasestitle,改完直接写回本地文件的 frontmatter。源码视图里这个按钮是禁用的,因为你本来就在看 YAML。要是 YAML 写坏了,面板会显示警告而不是放任表单编辑把字段覆盖掉;你在源码视图里把它修好。

常见问题

Markdown 文件必须有 frontmatter 吗?
不用。它是可选的元数据。没有这块的 .md 完全正常,有这块的也还是纯文本文件。认识它的工具会去读,不认识的工具当普通文字对待。
为什么我的 .md 在 GitHub 上顶部多了个表格?
仓库里的普通 .md 如果开头有 frontmatter,GitHub 会把这块渲染成正文上方的一个小表格。那是 GitHub 在展示元数据,不是你的文件坏了。
能不能直接把这块删掉?
能,下面的正文不受影响。但元数据会跟着没:标签、别名、其他工具存的属性都在里面。如果文件来自 Obsidian 或某个笔记应用,删掉这块等于删掉那些属性。
AI 生成的笔记为什么带 frontmatter?
因为这是 Markdown 文件里放机器可读元数据的标准位置。AI 写笔记时常把标题、日期、标签放进去,方便其他软件接住。留着没有任何坏处。
里面的 YAML 写坏了会怎样?
解析它的工具会报错或退回纯文本。比如 NoteLoom 的属性面板会显示一条只读警告、不允许表单编辑,防止把字段覆盖丢。修法是切到源码视图手工把 YAML 改对。
frontmatter 里的 title 和正文的 # 标题是一回事吗?
不是,两者互相独立。title 字段是给工具读的元数据,# 标题是看得见的正文。一个文件可以两个都有、只有一个,或者都没有。

看看这块东西和它服务的笔记

用 Chrome / Edge / Arc 打开 NoteLoom,挂上文件夹:阅读视图把 frontmatter 收起来,笔记从第一个标题开始;源码视图看原始 YAML;属性面板改标签不用手写一行。本地文件进,本地文件出。

打开 NoteLoom 试试