从500篇到5000篇!手把手教你用Obsidian搭好个人知识库
从0到1 构建AI 知识工作流,Obsidian笔记进阶·高级玩法
各位今天来看 Obsidian 进阶,学完你对Obsidian会有比较深入的了解!
文章从0到1 构建AI 知识工作流,Obsidian笔记入门各位看官今天来聊 Obsidian ,学完你也可以拥有一个第二大脑! 先说结论:笔记软件用过一圈,有道云、Notion 都用过,折腾到最后,所有笔记搬进了一个本地文件夹。 笔记应该是文件,不是别人服务器上的一行数据。...
目录
一、块引用 —— 把笔记拆开,再拼到别处
二、Callout —— 让重点自己跳出来
三、搜索进阶 —— 按属性搜、按路径搜
四、Templater —— 让模板动起来
五、Dataview —— 把库当数据库查
六、Canvas —— 一块白板理清关系
七、MOC —— 比入口笔记更进一步
八、批量维护 —— Linter 和批量改属性
九、同步的进阶 —— 三种方案怎么选、冲突怎么办
十、把库变成网站 —— 免费的和付费的
十一、大库维护 —— 几千篇之后
十二、进阶坑集锦
十三、速查表(进阶)
一、块引用:把笔记拆开,再拼到别处
上一篇讲了 [[双链]] 和 ![[图片]]。这一篇先补上第三个。
简要说:块引用是把一篇笔记里的某一段,单独拎出来引用或嵌入。
先给段落起一个名字
在任意一个段落的末尾,敲一个空格,加 ^ 和一个自己起的名字:
RAG 的核心是先把文档切片,再按语义检索。 ^rag-core
这个 ^rag-core 就是这段的坐标。它不显示在阅读视图里,只在编辑模式能看到。
命名规则:只能字母、数字、横杠,不能有空格和中文。
两种用法:链接和嵌入
链接(点一下跳过去):
[[Obsidian 进阶#^rag-core]]
嵌入(把那一段直接显示在当前笔记里):
![[Obsidian 进阶#^rag-core]]
链接和嵌入差一个感叹号,效果差别很大。链接是"去看那里",嵌入是"把内容搬过来"。
嵌入的好处是:原文改一次,所有引用它的地方一起变。 一段结论被五篇文章引用,改一处,五处同步。
不只是块,整节也能嵌
不用给块起名,直接嵌一个小标题下面的全部内容:
![[从0到1 构建AI 知识工作流,Obsidian笔记入门#三层架构:raw / wiki / output]]
这个用法适合"汇总页":把散在各篇里的相关小节,嵌到同一页上,读起来是连贯的一段。
一个提醒: 别嵌得太深。A 嵌 B、B 嵌 C、C 又嵌回 A,Obsidian 会陷进去。嵌入保持一层就够。
二、Callout:让重点自己跳出来
简要说:Callout 是一段带类型、带颜色、能折叠的特殊引用块。
上篇的名词表里提过 Callout,没展开。它其实很简单,就是普通引用前面加一个方括号。
最小语法
> [!note] 这是一个标题 > 这里面是正文。
渲染出来是一个带图标的彩色块。[!note] 那个词叫类型,决定颜色和图标。
常用的几种类型

warning 和 danger 是这两个最实用的。 写教程的时候,"这一步会清空数据"用 danger,读者一眼就知道要停一下。
折叠:默认收起
在类型后面加一个减号,这个块默认是收起来的,点一下才展开:
> [!warning]- 点开看三个坑 > 坑一…… > 坑二……
加号 + 则是默认展开、可以手动收起。
长文里折叠特别值钱。 一篇教程里塞了十几条坑,全文铺开会把人吓走;收起来,读者想看的自己点开。
一个容易忘的细节
Callout 里面的每一行,前面都要带 >。少一个,那一行就掉出块外面了。
三、搜索进阶:按属性搜、按路径搜
上一篇讲了 Cmd+Shift+F 全局搜索。这一篇讲三个更精确的搜法。
按位置搜:file 和 path
file:日记 #文件名里带"日记" path:"100 日记" #路径在"100 日记"这个文件夹下 content:复盘 #正文里有"复盘"
file: 和 content: 的区别,就是搜标题还是搜正文。
按属性搜:frontmatter 变现的地方
上篇定了 frontmatter 五个字段。这一篇告诉你它们能用来干什么。
Obsidian 较新版本支持按属性搜索,写法是方括号:
[type:permanent] #所有永久笔记 [tags:AI] #所有打了 AI 标签的 [created:2026-09] #九月份建的
这就是规范 frontmatter 的真正回报。 字段填得规范,库就变成了一个能按条件筛的小数据库。
搜"还没整理的"最有用:
[type:fleeting]
出来一堆闪念笔记,扫一眼就知道该处理哪些。
组合起来
path:"02 个人知识" [tags:AI] content:RAG
意思是:在个人知识文件夹里,找出打了 AI 标签、正文提到 RAG 的笔记。 条件叠得越多,结果越准。
把搜索存下来
在笔记里写一个 query 代码块,这段搜索结果会实时显示在这篇笔记里:
[type:fleeting]
它是一张活的清单。 处理完一条,它自己就从列表里消失,不用手动维护。
四、Templater:让模板动起来
上篇讲了核心的「模板」插件。它有个短板:只能插固定文字,不能算日期、不能取文件名。
Templater 补的就是这个。上篇把它列在"想清楚再装"里,现在可以装了。
装和设
社区插件里搜 Templater,装上、启用。
设置里指定一个模板文件夹,比如 98 模板。之后插入模板的姿势和自带模板一样。
三个最常用的变量
<% tp.date.now("YYYY-MM-DD") %> #今天的日期 <% tp.file.title %> #当前笔记的文件名 <% tp.file.cursor() %> #光标停在这里
[tp.date.now]()() 是核心。 日记模板里写死 created: 2026-10-03,第二天用还是这个日期;写成变量,用哪天就是哪天。
一个日记模板的骨架:
--- title: <% tp.date.now("YYYY-MM-DD") %> created: <% tp.date.now("YYYY-MM-DD") %> type: fleeting tags: [] summary: --- ## 今日要事 - [ ] <% tp.file.cursor() %>
新笔记一建出来,日期、标题全填好了,光标停在待办那一行。 比手打快,也不会漏字段。
和自带模板怎么分工

只用固定模板的话,自带的够。 一旦发现"每次都手动改日期",就换 Templater。
再来一个例子:读书笔记
日记模板只用到日期。更日常的场景是"每本书一篇笔记":
--- title: <% tp.file.title %> created: <% tp.date.now("YYYY-MM-DD") %> type: permanent tags: [reading] summary: --- ## 这本书讲了什么 ## 三个关键观点 ## 和我的关系 ## 原文摘录
新建笔记时把书名当文件名,title 就自动填上了,不用再手打一遍。
规律是:变量填的地方,都是"每次不一样、又必须填"的那几个。 日期、标题、文件名,全都是这一类。
常用变量
三个之外,这几个也常用:
<% tp.date.now("YYYY-MM-DD", 7) %> #七天后的日期 <% tp.date.yesterday("YYYY-MM-DD") %> #昨天 <% tp.file.creation_date("YYYY-MM-DD") %> #笔记创建的时间 <% tp.file.folder() %> #当前笔记所在的文件夹 <% tp.system.prompt("输入项目名") %> #插入时弹框现填
tp.date.now() 的第二个参数是天数偏移,填 7 就是一周后。
tp.system.prompt() 适合"每次都要换个名字"的字段,比如项目名、客户名。插入模板的那一刻弹一个小框,填完就进正文。
让它自己套模板
手动插模板,还是会忘。Templater 里有个文件夹模板:约定"某个文件夹下的新笔记,自动用某个模板"。
比如把 100 日记/ 绑到日记模板,把读书笔记那个文件夹绑到读书模板。
配好之后,在对应文件夹里新建笔记,模板自己就上去了。 这是 Templater 比自带模板强得最明显的一处。
想再强一点:写一行 JS
<% %> 是输出结果,<%* %> 是执行一段 JS 但不输出。
多了一个 *,就能干"改文件名""挪文件夹"这类动作:
<%* await tp.file.rename("2026-10-03 会议纪要") %>
这一层新手用不上,知道有这么个口子就够。等哪天发现"这个动作每天重复三遍",再回来查。
五、Dataview:把库当数据库查
上篇把 Dataview 列在"想清楚再装"里。它是 Obsidian 里最能改变用法的一个插件,但也最容易装完不会用。
一句话:Dataview 用一段查询,把散在各篇笔记里的属性,汇总成一张动态的表。
前提:frontmatter 得规范
Dataview 只认 frontmatter。 字段名写错一个字母,它就查不出来。
所以顺序是:先把上一篇那五个字段用起来,攒上一两百篇,再来装 Dataview。顺序反了,会觉得它没用。
三种查询:LIST、TABLE、TASK
使用时要用这两个包裹dataview
由于推特编辑器语法不兼容,用图片示例,下方的只留有文字,前后使用的语法自行加上
LIST:列出一组笔记的链接
LIST FROM "02 个人知识" WHERE type = "permanent" SORT created DESC
TABLE:把属性做成表格
TABLE created AS "创建", summary AS "摘要" FROM #AI SORT created DESC LIMIT 10
TASK:把所有待办汇总出来
TASK FROM "100 日记" WHERE !completed
TASK 这个最实用。 日记里随手写的 - [ ],散在几十篇里,这一条查询把它们全捞出来,汇成一张总待办。
语法就四块
LIST / TABLE / TASK 查什么形状 FROM 从哪查(文件夹、标签、链接) WHERE 筛什么条件 SORT / LIMIT 怎么排、要几条
会这四块,日常够用了。 剩下的嵌套、分组、计算,用到再查。
它和 Bases 的关系
Obsidian 后来出了原生的数据库功能(.base 文件),想法和 Dataview 类似,但不用装插件。
两者取舍: 想少装插件、跟官方走,可以试原生那个;想要更细的查询语法,用 Dataview。具体在你客户端里是哪个版本、长什么样,以你界面为准——这类新功能更新快,我不替你打包票。
六、Canvas:一块白板理清关系
简要说:Canvas 是一张无限大的白板,上面可以放笔记卡片,再用线连起来。
左上角新建时选 Canvas,就得到一块空白画布。
三种放法
双击空白 → 新建一张卡片
从左侧文件树拖一篇笔记进来 → 变成一张引用卡,编辑原笔记它跟着变
拖图片、拖 PDF 进来 → 也能放
两张卡片之间拖一条线连起来,还能在线上写个字说明关系。
三个真正好用的场景
一、主题地图。 一个主题下所有相关笔记,摊在一张画布上,谁和谁近、哪块是空白,一眼看清。这比图谱好用——图谱是自动生成的,画布是你亲手摆的,带判断。
二、项目规划。 左边放"要做的",右边放"做完的",用线标出依赖。比纯列表多一个空间维度。
三、梳理一篇文章的论证。 论点放中间,论据围一圈,连上"支持"或"反驳"。
两个要知道的
画布文件是 .canvas,内容是 JSON。 里面存的是笔记的路径引用,不是笔记本身。所以别随便改笔记的文件名,改了画布上的卡片会断开。
别用画布当仓库。 它适合理关系,不适合存内容。内容还是放笔记里,画布只放链接。
七、MOC:比入口笔记更进一步
上篇的入口笔记是"把这一层列出来"。MOC 是它的升级版。
MOC 全称 Map of Content,内容地图。一句话:围绕一个主题,把相关笔记按逻辑排成一页。
和入口笔记差在哪

入口笔记是目录,MOC 是文章。 目录告诉你有哪些东西,MOC 告诉你这些东西之间是什么关系。
一个 MOC 长什么样
# RAG · 内容地图 ## 先看这几篇 - [[什么是 RAG]] —— 一句话讲清楚它是什么 - [[向量检索 vs 关键词检索]] —— 两种路子的对比 ## 往下走 - [[embedding 是怎么算出来的]] - [[切片的三种策略]] ## 相关但另开一页 - [[向量数据库]] —— 已经是独立主题,单独成 MOC ## 还没想明白的 - 混合检索到底在什么场景下反而不如纯向量?
最后那一块"还没想明白的"是关键。 它把"我卡在哪"也记下来了,下次接着想。
什么时候该建 MOC
一个主题攒到七八篇笔记的时候。 少于这个数,直接看标签就够了;多了,才需要一个地方把逻辑理出来。
MOC 不用一次写完。 先列条目,读到新的往里加,理解变了就调整顺序。它是一份一直在长的东西。
八、批量维护:Linter 和批量改属性
库用久了,会出现一堆不一致:有的笔记 frontmatter 少字段,有的标题前后空行不一样,手工改几十上百篇不现实。这一节讲两个批量处理的办法。
Linter:一键统一格式
社区插件搜 Linter,装上。
它能做的事:统一 frontmatter 字段顺序、补上缺失的字段、统一标题层级、删掉多余空行、统一列表符号。
配置好规则,可以设置成"保存时自动整理"。 之后每篇笔记一存,格式自动对齐。
注意:第一次全库跑之前先 commit。 Linter 会动很多文件,改坏了要有退路。
批量改属性:交给 AI
格式之外的事——改内容、改分类、统一叫法——交给 AI:
扫描 02 个人知识/ 下所有笔记,做三件事: 1. 把 tags 里的大写统一成小写(#AI → #ai) 2. 检查每篇是否有 title、created、type、summary,缺的补上 3. 输出一份改动清单,不要直接改,先给我看 不要删除任何内容,只做上面三件事。
三个细节:
先说"先给我看",别让它直接动手。看一眼清单,确认没问题再让它执行。
一次只做一类改动。 同时改标签、补字段、改分类,出了问题分不清是哪一步。
先 commit,再跑。 这条和上一篇讲 Git 时是同一个道理。
九、同步的进阶:三种方案怎么选、冲突怎么办
上篇提了三种同步方式。这一篇讲怎么选,和出了冲突怎么办。
三种方案对比

最省心的是官方 Sync,最省钱的是 Git。 两个都想省钱又省心,往往最后两个都没配好——先选一个跑起来。
冲突是怎么产生的
两台设备同时改了同一篇笔记,同步工具不知道该听谁的,就会生成一个副本:
笔记名 (冲突副本 2026-10-03).md
根本原因是"两边都改"。 所以最省事的规矩是——同一时间只在一台设备上编辑。手机上只记不整理,就是这个道理。
出了冲突怎么办
别急着删副本。两个文件都打开,对比一遍,把要的内容并到主文件里,再删副本。
如果用了 Git,git diff 能直接看出两个版本差在哪,比人眼比快得多。
一条经验
同步目录别放在会实时双向同步的网盘里,这条上一篇的坑 1 讲过。真要放,用手动单向上传,不要双向。
Git 同步:怎么配
思路很简单:整库放进一个私有仓库,每台设备各克隆一份。配之前先定两件事。
一、.gitignore 先忽略工作区文件。 .obsidian/workspace.json 记的是"当前开着哪几个标签页",开开关关就变,同步它只会攒一堆没意义的提交。
.obsidian/workspace.json .trash/ .DS_Store
二、.obsidian/ 的其余部分,看需求。 这里面存的是插件列表、主题、快捷键。想让几台设备长得一模一样,就同步它;想各配各的,就一起忽略。
手机端怎么办
移动端跑不了命令行,Git 得靠第三方插件,出问题不好修。
能用电脑同步就用电脑。手机只当"查看 + 随手记"的终端——这跟前面"同一时间只在一台设备编辑"是一个思路。
接着上一条说:网盘同步的两个麻烦
iCloud、坚果云、Dropbox 直接指到库文件夹,是最省事的。两个麻烦绕不开:
一、.obsidian/ 被一起同步,两台设备的插件设置互相打架。 结果是每换一台设备,侧边栏和插件都变样。
二、文件一多,网盘会卡。 几千个小文件,增量同步经常转圈。
能排除 .obsidian/ 就排除;不能排除,就别指望它在几千篇的库上还顺畅。 判断标准只有一条:同步完,两台设备打开是同一个样子。
最后补一句:同步不等于备份
同步做的事,是把改动在设备之间传开——两边一起删,就是真的没了。
重要的库另外留一份离线快照:导出个压缩包,或者定期推到 Git 远端。同步管的是"多设备一致",备份管的是"出事能回来",是两件事。
十、把库变成网站
库是纯文本,所以它能直接变成一个网站。这一节讲两条路。
付费的:Obsidian Publish
官方出的发布服务,选几篇笔记,点一下就上线,还带搜索和关系图。
好处是零配置,把哪些笔记公开,勾一下就行。代价是付费,而且样式定制空间有限。
免费的:Quartz
Quartz 是一个开源项目,能把 Obsidian 库编译成一个静态网站。生成的站点可以直接放 GitHub Pages。
流程大致是:
bash
git clone https://github.com/jackyzha0/quartz.git cd quartz npx quartz create #指向你的库 npx quartz build #本地看效果 npx quartz sync #推到 GitHub Pages
它认 Obsidian 的语法,双链、Callout 都能正常渲染,双链点进去能跳转到对应页面。
免费的代价是要会一点命令行。 但配好之后,npx quartz sync 一条命令就更新。
发之前一定要想清楚的一件事
哪些笔记能公开。
库里往往混着日记、工作记录、还没定稿的想法。发布前必须过一遍:
日记要不要发?多半不要
99 归档/ 要不要发?多半不要
带别人名字、带客户信息的,一定要排除
做法: 发布工具的配置里写死"只发布哪些文件夹",比"排除哪些文件夹"安全——默认不发,主动挑着发。
十一、大库维护:几千篇之后
库小的时候什么问题都没有。过了几千篇,会开始出现几个症状。
三个常见症状
一、图谱变成一团毛线。 节点太多,连线糊成一片,看不出东西。
二、出现一堆孤儿笔记。 没有任何链接指向它们,也从不被搜到。
三、同一个概念散在多篇里。 三篇笔记都在讲同一件事,互相不知道。
定期做一次体检
每隔一两个月,让 AI 扫一遍:
扫描整个 vault,报告三类问题: 1. 孤儿笔记:没有任何双链指向的笔记,列出文件名 2. 疑似重复:内容主题高度相近的两三篇,列出来 3. 空笔记:只有 frontmatter 没有正文的 只报告,不要改动。
先让它报告,不动手。 看完报告,再决定哪些要合并、哪些要补链接、哪些直接归档。
归档,不要删
不用的笔记,移到 99 归档/,别删。
理由: 双链还在。删掉一篇,所有指向它的链接变成断链;归档,链接还通,只是内容不在主流里了。
性能上的三个开关
库变卡,八成是这三样:

这三条都不是"库不行了",是可清理的地方堆多了。
十二、进阶坑集锦
七个坑,踩过才知道。
坑一:块 ID 手打错。 ^rag-core 写成 ^ragcore,引用就断了,而且不报错,只是嵌不出来。块 ID 尽量用复制,别手打。
坑二:frontmatter 不规范就上 Dataview。 字段名大小写不一致、有的有有的没有,Dataview 查出来是空的。以为插件坏了,其实是数据没规整。先规范,再查询。
坑三:Templater 覆盖了已有内容。 插入模板时不小心把整篇选中替换掉,原内容没了。插入模板前先光标归位,别全选。有 Git 的话,一条命令能救回来。
坑四:直接手改 .canvas 文件。 画布是 JSON,手改一个括号,整个画布打不开。要改就在画布里拖,别去动源文件。
坑五:发布网站时把自己日记带出去了。 发布配置写成"排除某些文件夹",新加一个文件夹就漏了。反过来配:默认不发,主动挑要发的。
坑六:批量改属性之前没 commit。 AI 一口气改了三百篇,改完发现标签全错了,又没退路。动批量的活之前,先 commit 一次。
坑七:把画布当成仓库用。 往画布卡片里写长内容,越用越乱。画布只放链接和短结论,长内容留在笔记里。
十三、速查表(进阶)
# 块引用 ^我的块名 在段落末尾定义一个块 [[笔记名#^我的块名]] 链接到这个块 ![[笔记名#^我的块名]] 把这一段嵌进来 ![[笔记名#小标题]] 嵌入一个小节 # Callout > [!note] 标题 > 正文 > [!warning]- 默认收起的警告 > [!danger] 危险操作 # 搜索 file:关键词 搜文件名 path:"文件夹名" 搜路径 content:关键词 搜正文 [type:permanent] 按属性搜 path:"02 个人知识" [tags:AI] 组合搜 # Templater <% tp.date.now("YYYY-MM-DD") %> 今天日期 <% tp.file.title %> 当前文件名 <% tp.file.cursor() %> 光标停这里 # Dataview 骨架 LIST / TABLE / TASK 查什么 FROM "文件夹" / #标签 从哪查 WHERE 条件 筛 SORT 字段 DESC 排 LIMIT 10 要几条
一条总原则:进阶玩法的前提,是基础规范先做到。 frontmatter 填规范了,属性搜索和 Dataview 才有东西可查;笔记分好类了,MOC 和画布才理得清。先把基础用三个月,再来加这些。
最后
这一篇讲的东西,入门阶段可能不怎么用得上。但它们决定你的库是停在五百篇,还是能长到五千篇。就是数据越多,你还是需要了解更多高阶技巧的!
这三条先记下来就够:
块引用和 Callout 是给长文用的。 短笔记不用,长教程离不开。
属性搜索和 Dataview 的回报,来自 frontmatter 的规范。 规范是投入,查询是回报。
画布和 MOC 是"想"的工具,不是"存"的工具。 存内容还是靠笔记。
上一篇结尾说,难的是先想清楚拿它干什么。这一篇可以补一句:想清楚之后,规范先做到位,高级玩法才有价值。 顺序反了,装再多插件也是花架子。
篇幅有限,还有没讲到的——QuickAdd 快速捕获、间隔重复复习、CSS 片段改样式,以后考虑单独开篇。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
