Metadata Menu 深度指南
Metadata Menu 是 Obsidian 属性系统的最强辅助插件——让你像管理数据库一样管理笔记属性。
为什么需要 Metadata Menu
Obsidian 内置的属性系统很好用,但有局限:
| 内置属性 | Metadata Menu 增强 |
|---|---|
| 手动输入文字 | 下拉选项、日期选择器、开关 |
| 每篇笔记单独填写 | 文件夹级默认属性,自动继承 |
| 无校验 | 字段类型约束 + 值校验 |
| 逐个编辑 | 批量编辑多篇笔记属性 |
安装与初始化
markdown
1. 设置 → 第三方插件 → 浏览 → 搜索 Metadata Menu
2. 安装并启用
3. 左侧栏出现 File Class 图标核心概念:字段类型
支持的字段类型
| 类型 | 界面 | 适用场景 |
|---|---|---|
Input | 文本输入框 | 标题、摘要 |
Boolean | 开关 | 已发布、已校对 |
Number | 数字输入 | 评分、优先级 |
Select | 下拉单选 | 状态、分类 |
Multi | 多选标签 | 多标签场景 |
Date | 日期选择器 | 截止日、创建日期 |
DateTime | 日期时间选择 | 会议时间 |
Cycle | 循环切换 | 快速改状态 |
File | 文件选择器 | 关联笔记 |
Media | 图片/文件 | 封面图、附件 |
JSON | JSON 编辑器 | 复杂数据结构 |
Canvas | 画布 | Canvas 节点 |
Object | 嵌套对象 | 子属性 |
Object List | 对象列表 | 作者列表等 |
快速上手:第一个字段类型
创建「状态」下拉字段
1. 打开 File Class 面板(左侧栏图标)
2. 点击 New File Class → 命名 "note-field"
3. 点击 Add Field → 名称: status → 类型: Select
4. 输入选项值:
草稿 | draft
进行中 | in-progress
已完成 | done
已发布 | published创建后在任意笔记的属性区就能看到下拉选择器:
yaml
---
status: draft
---将字段关联到文件夹
文件类别设置 → 勾选「文件夹」 → 选择笔记目录
效果:该文件夹下所有笔记自动拥有此字段文件夹默认属性
最强大的功能之一——新创建的笔记自动带属性:
配置示例
文件设定:
目录: daily/
默认属性:
type: daily
tags: ["日记"]
mood: 😐新建日记自动填充:
yaml
---
type: daily
date: 2024-03-15
tags:
- 日记
mood: 😐
---多层级默认
daily/ → type: daily, tags: ["日记"]
daily/work/ → type: daily, tags: ["日记", "工作"]
daily/personal/→ type: daily, tags: ["日记", "个人"]子文件夹继承父级 + 追加自身属性。
高级功能
批量编辑属性
1. 文件列表选择多篇笔记(Ctrl/Cmd 点击)
2. 右键 → Metadata Menu → 批量编辑
3. 选择属性和新值 → 应用适用场景:批量修改 50 篇笔记的分类标签。
属性值预设
为 Select 和 Multi 字段定义预设值后,属性输入区会显示快捷按钮:
status 字段预设:
📝 草稿 ← 默认
✍️ 写作中
👀 待审阅
✅ 完成文件列表字段显示
启用后,文件列表中直接显示属性列:
文件列表:
├── 笔记 A [📝 草稿] [技术]
├── 笔记 B [✅ 完成] [生活]
└── 笔记 C [👀 审阅] [技术]配置:File Class 设置 → 勾选「在文件浏览器中显示」
与 Dataview 联动
Metadata Menu 管理的属性,Dataview 可以直接查询:
dataview
TABLE status, rating, deadline
FROM "projects/"
WHERE status != "done"
SORT deadline ASC动态仪表板
dataview
TABLE
status as "状态",
priority as "优先级",
deadline as "截止日"
FROM "projects/"
WHERE type = "task"
SORT priority DESC按文件夹默认属性筛选
dataview
TABLE file.ctime as "创建时间", rating as "评分"
WHERE tags AND contains(tags, "书评")
SORT rating DESC
LIMIT 10自动化工作流
场景一:书评管理系统
文件类别: book-review
字段:
- title (Input) — 书名
- author (Input) — 作者
- rating (Number) — 评分 1-5
- status (Select) — 在读/已读/弃读
- tags (Multi) — 分类标签
- cover (Media) — 封面图片
文件夹: books/在 books/ 下新建笔记,自动填充上述字段,只需填写具体值。
场景二:项目进度追踪
文件类别: project
字段:
- status (Cycle) → 规划中 → 进行中 → 已完成
- priority (Select) → P0/P1/P2/P3
- deadline (Date) → 截止日期
- assignee (Input) → 负责人
- progress (Number) → 0-100
文件夹: projects/Cycle 类型让状态切换只需点击属性值循环切换。
场景三:Zettelkasten 笔记增强
文件类别: zettel
字段:
- type (Select) → 文献笔记/永久笔记/主题笔记
- source (Input) → 来源
- stage (Cycle) → 种子 → 生长 → 成熟
- links (Multi) → 相关概念与 Templater 集成
利用 Metadata Menu 的字段值,Templater 可以智能填充:
markdown
---
type: <% tp.frontmatter.type %>
status: draft
created: <% tp.date.now("YYYY-MM-DD") %>
tags: <% tp.frontmatter.tags %>
---
# <% tp.frontmatter.title %>
> 状态: `INPUT[inlineSelect(option(草稿), option(写作中), option(完成)):status]`
## 笔记内容INPUT[...] 语法让属性值可以在正文中直接编辑,无需跳转到属性区。
常见问题
Q: 已有大量笔记,如何批量添加字段?
A: 使用「批量编辑」功能,选择笔记后右键 → Metadata Menu → 添加属性。
Q: 字段值能否跨笔记联动?
A: 可以。修改 File Class 的字段定义会影响所有关联该类的笔记。
Q: 与 Properties 核心功能冲突吗?
A: 不冲突。Metadata Menu 是属性系统的增强层,可以配合核心属性功能使用。
Q: 能自动根据文件名推断属性值吗?
A: 配合 Templater 模板可以实现。创建笔记时自动填入当前日期、从路径提取分类等。
相关资源
- 属性系统详解 — Obsidian 原生属性
- Templater 高级教程 — 模板系统
- Dataview 实战 — 数据查询
- Dataview 高级案例 — 复杂查询案例