Obsidian自动添加文章属性

在 Obsidian 中让文章(笔记)自动带上想要的属性(YAML front‑matter),从 新建笔记时自动填充​ 到 已有笔记批量补全,全部基于 Obsidian 官方功能 + 常用社区插件。


1️⃣ 先弄清楚属性的存放位置——YAML Front‑matter

在笔记最顶部(代码块 ---包裹之间)写的键值对就是属性,例如:

1
2
3
4
5
6
---
title: 我的第一篇文章
date: 2026-01-03
tags: [#写作, #灵感]
author: 小明
---

Tip:Obsidian 读取的属性必须严格放在文件最前面,且使用 ---(或 ...)分隔。


2️⃣ 核心方案概览

方案适用场景是否需要插件关键实现方式备注
Obsidian Core Templates(内置模板)新建笔记一次性填充固定属性Settings → Templates中设定模板文件,使用 Ctrl+Alt+T插入只能手动触发,属性固定
Templater(社区插件)新建笔记自动填充动态属性(日期、文件名、选中的文字等)tp.file.titletp.date.now等脚本写入 YAML支持 文件创建时自动运行Templater → Trigger on new file
Metadata Menu(社区插件)右键/快捷键快速添加/编辑属性,支持批量操作通过 UI 选择属性,或在 Settings → Metadata Menu → Auto‑Add配置自动添加适合需要在已有笔记上随时补全属性
QuickAdd(社区插件)自定义命令/宏,一键创建带属性的笔记创建 “Capture” 模板并绑定快捷键可结合 Templater 脚本,实现更复杂逻辑
Dataview JS​ + Obsidian Automation根据文件夹、标签等规则批量写入/更新属性用 DataviewJS 脚本遍历笔记并写回 YAML适合一次性处理大量旧笔记
Search & Replace(核心)对已有笔记一次性批量添加同一属性Ctrl+Shift+F全局搜索空 front‑matter,替换为完整 YAML只能写入相同内容,无法使用动态变量
ExMemo Tools(社区插件)通过大模型智能生成元数据、自动续写、目录管理配置大模型 API,通过命令面板调用智能编辑功能适合需要 AI 辅助的场景

下面分别演示每种方案的 完整配置步骤,你可以根据自己的需求挑选或组合使用。


3️⃣ 方案细节

3.1 Core Templates(最简版)

  1. 打开设置 → Templates

    • Template folder location设为 Templates(或你喜欢的文件夹)。

    • New file location设为默认笔记所在文件夹(如 文章)。

  2. 新建模板文件(如 article-template.md)并写入:

    1
    2
    3
    4
    5
    6
    
    ---
    title: {{title}}
    date: {{date:YYYY-MM-DD}}
    tags: [#文章, #{{date:YYYY}}]
    author: {{author}}
    ---
    • {{title}}{{date}}Obsidian 内置占位符(仅在 Core Templates 中可用)。
  3. 使用

    • 新建笔记 → 按 Ctrl+Alt+T选取 article-template→ 完成。

    • 缺点:需要手动点快捷键,属性只能是固定占位符,不能根据文件路径或自定义逻辑变化。

3.2 Templater(强大且自动)

推荐:如果你希望 创建笔记时无需任何手动操作,Templater 是首选。

3.2.1 安装 & 基础设置

  1. Community plugins → Browse,搜索 Templater,Install → Enable。

  2. Settings → Templater

    • Template folder locationTemplates(或自定义)。

    • 勾选 Trigger Templater on new file creation(新文件自动执行)。

    • 设定 Trigger folder为你希望自动添加属性的文件夹(如 文章)。

3.2.2 编写自动模板(article-auto.md

1
2
3
4
5
6
7
---
title: <% tp.file.title %>
date: <% tp.date.now("YYYY-MM-DD") %>
created: <% tp.date.now("YYYY-MM-DD HH:mm") %>
tags: [#文章, #<% tp.date.now("YYYY") %>]
author: 小明
---
  • <% … %>js 模板,可以调用所有 tp.*方法。

  • tp.file.title自动取文件名(不含后缀),tp.date.now()支持自定义格式。

3.2.3 自动生效

  • 当你在 **文章**​ 文件夹里新建任意笔记(Ctrl+N),Templater 会自动在文件顶部写入上述 YAML。

  • 若想对 多个文件夹​ 使用不同属性,只需在对应文件夹再建一个 Trigger folder,或在模板里判断 tp.file.folder()

3.3 Metadata Menu(随时补全 & 批量)

  1. 安装:Community plugins → Metadata Menu→ Install → Enable。

  2. 全局自动添加(可选)

    • Settings → Metadata Menu → Auto‑Add→ 勾选 Add default properties on file creation

    • Default properties区域点 Add property,填入键和值(支持 模板变量​ 如 {{date}})。

  3. 手动快速添加

    • 在笔记右侧面板或右键菜单里出现 Metadata Menu,点 Add property,选你预设的属性。

    • 支持 多选,一次性给同一笔记加多个键值。

优势:属性配置是 UI‑driven,非代码;适合不想写模板但仍想自动化的用户。

3.4 QuickAdd(自定义捕获 + 自动属性)

  1. 安装QuickAdd

  2. 创建 Capture

    • Settings → QuickAdd → CaptureAdd new capture,命名如 NewArticle

    • 选择 Template​ → 指向 Templates/article-auto.md(同上 Templater 模板),或直接写 inline​ YAML。

    • 勾选 Insert at cursor​ 或 Create new file(推荐后者)。

  3. 绑定快捷键Settings → Hotkeys → QuickAdd: NewArticle→ 设为 Ctrl+Alt+A

  4. 使用:随时按快捷键,即可在指定文件夹创建带属性的笔记。

3.5 Dataview JS + Automation(批量处理旧笔记)

如果你已经有大量已有笔记,需要一次性补全属性,可用 DataviewJS​ 脚本配合 Obsidian Automation(或手动运行脚本):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
// dataviewjs: 批量为指定文件夹的笔记添加 missing 属性
const folder = "文章";
const pages = dv.pages(`"${folder}"`);
for (let p of pages) {
  // 只处理没有 date 属性的笔记
  if (!p.date) {
    const file = app.vault.getAbstractFileByPath(p.file.path);
    const yaml = dv.current().file.frontmatter || {};
    yaml.title = p.file.name;
    yaml.date = dv.date("today").toISODate();   // 当天日期
    yaml.author = "小明";
    yaml.tags = ["#文章", `#${dv.date("today").year}`];
    // 写回文件
    await app.fileManager.processFrontMatter(file, fm => {
      Object.assign(fm, yaml);
    });
  }
}
  • 将上述代码粘到任意笔记的 DataviewJS​ 代码块(dataviewjs),运行即可。

  • 需要 Dataview​ 插件和 Obsidian Automation(或手动在开发者控制台运行)提供的 processFrontMatter权限。

3.6 Search & Replace(一次性全局添加相同属性)

适用于所有笔记都要加同一属性且不需要动态值:

  1. 打开全局搜索Ctrl+Shift+F,搜索 ^---\n---$(匹配空 front‑matter)或直接搜索 ^---$(文件开头的分隔线)。

  2. 勾选 Use regular expression

  3. 替换为(示例):

    1
    2
    3
    4
    
    ---
    date: 2026-01-03
    tags: [#文章]
    ---
  4. Replace all

注意:此方法会把所有匹配的地方统一替换,没有变量,只能写固定值。

3.7 ExMemo Tools(智能元数据生成)

ExMemo Tools​ 是一款通过 LLM(大模型)自动生成文件元数据的插件,特别适合在阅读文献、整理资料时,让大模型帮助完成事务性工作。

3.7.1 安装与配置

  1. 在社区插件市场中搜索 “ExMemo Tools” 并安装启用

  2. 在插件设置中配置大模型信息(URL、API Key、模型名称)

  3. 支持 OpenAI、DeepSeek、KIMI 等主流大模型

3.7.2 核心功能

智能编辑

  • 选中文字 → Ctrl+P→ 搜索 “ExMemo Tools: LLM 助手”

  • 输入提示词或选择已有提示词,生成内容插入到选中文字之后

续写功能

  • 光标定位 → Ctrl+P→ “ExMemo Tools: 续写下一句”

  • 系统根据上下文自动续写文本

生成元数据

  • Ctrl+P→ “ExMemo Tools: 生成元数据”

  • 自动为当前文件生成标签、摘要等元数据

目录管理

  • Ctrl+P→ “ExMemo Tools: 为当前文件选择目录”

  • 模型智能推荐合适的目录

批量索引

  • Ctrl+P→ “ExMemo Tools: 生成目录索引”

  • 为整个目录生成索引并批量生成元数据

3.7.3 优势特点

  • 智能推荐:高频和近期使用的提示词优先显示

  • 事务性工作自动化:让大模型帮助完成标签生成、目录选择等事务性工作

  • 批量处理:支持为整个目录生成索引和元数据

  • 节省调用成本:相比手动操作,能相对节省大模型调用成本

3.7.4 适用场景

  • 阅读文献时快速标注阅读日期、评分和摘要

  • 为大量笔记批量生成标签和元数据

  • 智能推荐文件存放目录,提升组织效率


4️⃣ 常见需求的「一键解决方案」示例

需求推荐组合示例代码/设置
新建文章自动写入标题、创建日期、作者、年份标签Templater(自动触发) + Core Templates(备份)article-auto.md如上,Settings → Templater → Trigger folder = 文章
所有笔记统一加上 author: 小明,但保持原有属性不变Metadata Menu → Auto‑Add ​ DataviewJS 批量脚本Settings → Metadata Menu → Add property: author = 小明
**一次性给旧笔记补全 date(若缺失)**​DataviewJS 脚本上文 3.5​ 中的脚本
在移动端也能快速创建带属性的笔记QuickAdd(可在手机端通过快捷键或 UI 按钮触发)QuickAdd → Capture → NewArticle
不同文件夹需要不同默认标签多个 Templater 触发文件夹 + 条件判断<% if (tp.file.folder() == "博客") { %>tags: [#博客]<% } else { %>tags: [#随笔]<% } %>
在阅读文献时,快速标注阅读日期、评分和摘要ExMemo Tools(快捷键追加)在插件设置中配置包含 read-dateratingsummary的模板,绑定快捷键如 Ctrl+Shift+P

5️⃣ 小技巧 & 常见坑

场景可能的问题解决办法
软链接共享插件导致属性同步(参考你之前的 “跨库复用插件”)多个库共享同一插件后,插件的 全局配置​ 会在所有库间同步,导致某库想单独关闭某插件时失效。只在需要共享插件的库使用 软链接,其他库改用 方案 2(复用安装包),保持配置独立。
Templater 脚本报错tp.file.title返回 null(文件尚未保存)确保 Templater → Trigger on new file​ 在文件创建后执行,或在模板中使用 tp.file.title.replace(".md","")进行容错。
Metadata Menu 的 UI 不显示自定义属性属性键名使用了非法字符(空格、冒号等)只使用字母、数字、下划线或短横线;若想使用中文键名,确保在插件设置里勾选 Allow non‑ASCII keys(新版已支持)。
DataviewJS 写回 front‑matter 失败没有开启 Dataview → Enable JS API​ 或缺少 processFrontMatter权限Settings → Dataview → Enable JavaScript API打开;若仍报错,检查是否有 Obsidian Automation​ 插件提供的权限。
全局搜索替换误伤代码块正则匹配到 ---代码块内部的分隔线在搜索框前加上 \A---\n(仅匹配文件开头),或先限定搜索范围为 path:article/**
ExMemo Tools 添加的属性位置错误插件将属性添加到了文件末尾或代码块中。确保光标位于 Front‑matter 区域(---内)或文件顶部。该插件设计为"追加",需在 Front‑matter 内使用效果最佳。
ExMemo Tools 模板语法不生效输入的 <% tp.date.now() %>没有被解析。确保在插件设置的模板中正确使用 Templater 语法,且已安装并启用 Templater 插件。

6️⃣ 快速上手脚本汇总(复制粘贴即可)

6.1 Templater 自动模板(article‑auto.md)

1
2
3
4
5
6
7
---
title: <% tp.file.title %>
date: <% tp.date.now("YYYY-MM-DD") %>
created: <% tp.date.now("YYYY-MM-DD HH:mm") %>
tags: [#文章, #<% tp.date.now("YYYY") %>]
author: 小明
---

6.2 Metadata Menu 默认属性(在插件设置里添加)

keyvalue
author小明
statusdraft
source[[来源模板]]

6.3 DataviewJS 批量补全 date(放在任意笔记的代码块中运行)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
const folder = "文章";
for (let page of dv.pages(`"${folder}"`)) {
  if (!page.date) {
    const file = app.vault.getAbstractFileByPath(page.file.path);
    await app.fileManager.processFrontMatter(file, fm => {
      fm.title = page.file.name;
      fm.date = dv.date("today").toISODate();
      fm.author = "小明";
      fm.tags = ["#文章", `#${dv.date("today").year}`];
    });
  }
}

6.4 QuickAdd 捕获命令(在 QuickAdd → Capture 设置里)

  • Name: NewArticle

  • Template: Templates/article-auto.md(或直接写入 YAML)

  • Create new file: ✅

  • Folder: 文章

  • File name: {{date:YYYY-MM-DD}}-{{title}}

绑定快捷键后,Ctrl+Alt+A​ 即可在 文章文件夹生成带属性的笔记。


7️⃣ 小结

  1. 最简:Core Templates + 手动快捷键。

  2. 全自动(推荐):Templater + Trigger on new file​ → 只要创建笔记,属性自动写入。

  3. 属性统一管理Metadata Menu​ → UI 添加/批量同步。

  4. 批量补全DataviewJS​ + Automation​ 或 Search & Replace

  5. AI 辅助ExMemo Tools​ → 大模型智能生成元数据和内容续写。

  6. 跨库复用:如果你已经使用软链接共享插件,请注意插件的全局配置会同步;若想保持每个库的属性独立,使用 “复用安装包” 或 “Metadata Menu” 的独立配置更安全。

把上面的 模板文件插件设置快捷键​ 按需求拷贝到你的 Obsidian 环境里,立刻就能实现 文章自动增加属性,省去手动编写 YAML 的繁琐。祝你写笔记更顺手、管理更高效 🚀!

[[Obsidian不同库复用第三方插件]]
[[Obsidian仅共享指定插件]]
[[Obsidian一键创建跨库插件软链接批处理脚本]]
[[Obsidian双链语法]]

原文链接: https://www.17you.com/tool/obsidian%E6%96%87%E7%AB%A0%E5%B1%9E%E6%80%A7%E8%87%AA%E5%8A%A8%E5%8C%96%E7%AE%A1%E7%90%86%E5%AE%8C%E5%85%A8%E6%8C%87%E5%8D%97/ 已复制!
脚本编程和自动化工具

寻找技术支持帮助和技术合伙人一起搞事。

请点击联系我


相关内容