软件

Obsidian 搭建个人知识管理体系

波比AI · 5月2日 · 2025年本文共2758个字 · 预计阅读10分钟6次已读

一、现状

  • 文件夹层级太多,杂乱,且一层层点下去,比较麻烦

  • 笔记逐渐增加后,标签系统紊乱

  • 孤岛笔记太多,经常在写笔记时,没没加双链

  • 纯文件夹管理笔记,造成文件夹层级复杂

  • 纯标签管理笔记,查找不便,且 Obsidian 最大特色的双链接,没有得到施展

二、弊端

三、解决

参考:Obsidian双链框架AMOC,更简单的PARA、卡片笔记方法 – 经验分享 – Obsidian 中文论坛 根据自己实际使用情况,进行了如下修改:

  • 文件夹层级不超过两成

  • 结合 templater、dataview、quickadd,实现一一定程序的自动化

Obsidian 搭建个人知识管理体系

步骤 1:上级索引

AMOC步骤中最关键的一点,就是在笔记中我们要告诉它,它的上级索引是谁,并写上:

up:: [[上层目录]]

双冒号为Dataview能识别的属性,后续步骤的Dataview都基于此项进行双链识别。

步骤 2:同级索引

当 A 笔记及其他笔记都存在 up:: [[Z笔记]] ,即同时指向Z笔记时,在A笔记中加入下面的code,即可实现同级AMOC,无需理解直接Copy Paste即可。

list
where up !=undefined and contains(up,this.up) and !contains(file.path,”模板”)
sort file.name
limit 10

步骤 3:下级索引

当B、C、D笔记都输入了up:: [[A笔记]],即同上级索引指向A笔记时,在A笔记中加入下面的Code,即可实现BCD的集合。

list
where up !=undefined and contains(up,this.file.link) and !contains(file.path,”模板”)
sort file.name
limit 10

这段代码的差别仅仅只是把步骤2的this.up 换成了 this.file.link,即可实现。

不管我们是从笔记外部调整了它的树状图还是标bobyai签,都不会产生任何影响。如果你修改笔记名字,Obsidian的双链功能会自动同步全局更改。专注笔记本身,不产生过多的焦虑和担忧。

同时读取两层:

const listLimit =10
const calloutSytle = “>> [!abstract] “

//过滤掉日记、excalidraw、canvas的MOC 和模板
let filterPages = dv.pages()
.filter(p =>
p.file.path.contains(“模板”)==0 &&
p.up )
.sort(p => p.file.name,”asc”)

let pages = filterPages.filter(p => String(p.up).contains(dv.current().file.link))

let formatMulti = “> [!multi-column]\n> “
let nextlevel = pages.map(async(page) => {
return calloutName + page.file.link
})
//console.log(arr)
for (let page of pages) {
var uplink = page.file.link
formatMulti += “\n” + calloutSytle +bobyai page.file.link

if(filterPages.where(p => String(p.up).contains(uplink)).file.length!=0)
formatMulti += “\n>> – “+filterPages.where(p => String(p.up).contains(uplink)).limit(listLimit).file.link.join(“\n>> – “)
else
formatMulti += “\n>> 无”
formatMulti += “\n>”

}

dv.paragraph(formatMulti)

考虑到它的易用性和可维护性,2层AMOC足够,适可而止。

AMOC在不同操作下的简单之处:

  • 新建:任何位置新建,笔记中写上up:: [[上级目录]],自动添加到目录当中。

  • 修改:分类、归档等调整,笔记中修改up:: [[新的上级目录]],自动纳入到新的目录,如Inbox、Done、Achieve当中。

    • 一开始的时候,《摄影》的 上层AMOC为《橙猫涉影》,但因为用的太多,需要多层AMOC跳转,我直接对《摄影》修改up:: [[Homepage]]即可建立新的AMOC。
  • 延伸:采用了contains 写法而不是 up=this.up,提供了更多的可拓展性,让笔记的 up 可以指向多个AMOC笔记。
    • 这篇文章一开始放在公众号下,但后来忘记了,去 ‘Obsidian MOC’ 下找不到,这种有交叉属性的,可以同时放到up中up:: [[公众号]], [[obsidian MOC]],当然也可以用标签来实现,只是个人更喜欢AMOC的方式,我的标签有另外用途。

基于 AMOC 搭建 PARA

PARA在笔记中很受欢迎,我用AMOC组织了相关文件,模板文末有提供下载。 搭建PARA,只需要5个笔记:

  • 结构中心.md laoxiongb2c作为总控

  • 代表PARA的4个笔记,粘贴下面内容即可:

up:: [[PARA结构中心]]

[!note]- 最近编辑:当前文件夹下

dv.table(["文件","修改时间"],dv.pages()  
.filter(p => p.file.folder.contains(dv.current().file.folder) && p.file.name!=dv.current().file.name)  
.sort(p => p.file.mtime,"desc")  
.limit(10)  
.map(item => {return [item.file.link,item.file.mtime]}))  

=this.file.name

YAML中的cssclasses采用list-card,横向显示list,需搭配主题Minimal使用

AMOC

[!note]- AMOC Standard

LIST  
where up !=undefined and contains(up,this.up) and !contains(file.path,"模板")  
sort file.name  
limit 10  

[!note]- AMOC Down

LIST  
where up !=undefined and contains(up,this.file.link) and !contains(file.path,"模板")  
sort file.folder asc  
limit 10  

Templater 自动化

使用Templater函数,获取索引目录下当前创建文件的索引笔记,填充到 up:: 和 tag ““中

<%* const link = "其他/索引/" + tp.file.folder() const tag = "#" + tp.file.folder() -%>
<% tag %>
up:: [[<% link %>]]
[toc]

功能

[Total: 0 Average: 0]
0 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!