论坛
Obsidian 笔记系统搭建和常用插件配置
引用于 程序员子悠 在 2024年8月13日, 下午11:38慢也好,步伐小也罢,是往前走就好。 —— 《网易云音乐热评》 · 佚名
笔记相关的软件有很多,常用的比如印象笔记,
Notion
,语雀,OneNote
,Bear
,Trilium
,思源笔记等等,更简单的可以直接使用备忘录,Typora
。一个笔记系统必备的功能是书写和检索,书写的体验往往决定了我们是否会持续的创作和记录;而高效的检索和查看则是因为笔记往往是需要被重温学习的。
记录下来的笔记如果永远无法被检索查看,那跟没记又有什么区别。
对我自己来说,最早用的印象笔记,后面使用过备忘录和语雀, 也搭建过私有化的
Trilium
,之前写文章用的是Typora
,现在用的最多的是Obsidian
,整个笔记系统也经历了不少变化和踩过不少坑,但是整体都是基于书写和检索两个必备条件来迭代的。每个笔记软件都有自己的优缺点,下面按照我自己的使用情况简单说明下。
印象笔记
印象笔记作为最老牌的笔记软件,功能很全面,支持的文档格式也很丰富,也是我最早使用的一款笔记软件。
但是印象笔记给人最深的一个印象就是慢,随着功能越来越多,整个笔记软件的速度也变得越来越慢,搜索的时候也会很明显的感觉到慢,另外非会员的话,还会有一些广告。
而且在前几年
markdown
语法蓬勃发展的时候,印象笔记却迟迟不支持,导致流失了部分用户,虽然现在支持了,但是不支持及时渲染,整个屏幕一半写文章一半预览,体验不太好。备忘录
后面尝试过使用苹果系统的备忘录,备忘录可以多端同步,手机电脑都能使用,但是怎么说呢,就一个字:吃藕丑~~
不过备忘录的功能也很强大,跟 iOS 和 macOS 深度集成,支持扫描文档,但是对于写一些长篇的图文文章来说,不太擅长。
语雀
语雀作为一个知识库文档软件的存在,支持多种文档格式,在公司内部已经深度体验使用过了,对于私人用户来说体验也很不错,虽然有些功能需要开会员才能使用,非会员的知识库也有数量限制,但是整体来说也还是够用的。
不过语雀最让人头疼的是之前的版本不支持文档本地存储,完全依赖云端,之前就出过一次故障,所有端的语雀都打不开,并且持续了好几个小时。
虽然最新的版本支持个别知识库本地存储,但是对于一个笔记软件来说,把自己的内容完全交给别人,不能自己掌控,着实是没有安全感。
Trilium
Trilium
是一款开源的笔记软件,我也尝试过搭建一个,支持网页和移动端访问,但是移动端支持不太友好,虽然是开源,但是整体使用上没那么方便。Typora
Typora
是一款很棒的markdown
写作软件,及时渲染,所见所得,写出来的文章整个样式和布局都非常不错,虽然新版本开始收费了,但是老版本依然是可以用的。但
typora
更多的可能是作为编辑器的存在,不太适合做一个系统化的笔记软件,适合平常写一些独立的文章,缺少一些插件体系去辅助。因为笔记除了写,更多的时候还要查,这块
Typora
就不太合适了。Obsidian
Obsidian
是我最近的新宠,未来如果没有出现什么颠覆性的产品的话,这将是我最后一款笔记软件了。首先
Obsidian
支持markdown
及时渲染,完全支持本地存储,同时也支持多端同步,本身开源,其次插件体系也非常丰富,同时可定制化程度也很高。目前使用下来整个体验非常不错,再结合一些插件,可以打造出符合自己使用习惯的笔记系统。我目前使用到的插件有下面这些:
Homepage
;dataview
;templater
;weread
;QuickAdd
;切换到
Obsidian
的时候做了一些前期的调研,因为要配合很多插件搭建整个笔记系统,所以对自己的笔记系统做了简单的梳理,主要分为笔记类型和笔记结构,笔记结构分为基础元数据和扩展元数据。笔记类型主要用来后面的笔记模板创建使用,笔记结构和标签元数据主要用来后面的数据统计使用。
笔记类型
我写的笔记主要分下面几类
- 总结类:主要是年终或者一个阶段的总结;
- 年终总结
- 不定期感悟,随笔等
- 书评类:主要是阅读完一本书后的读书笔记、评论读后感;
- 读后感
- 技术类:主要是一些自己平常学习到的新技术或者解决的问题记录;
- 遇到的问题解决方案
- 自己搭建服务器或者部署的私有项目等
- 知识类:这一类主要是只针对某种技术或者课程的专属学习笔记,或者分享专题专栏等;
- 学习的课程笔记
- 输出的课程笔记
- 临时类:这类主要是一些临时任务或者灵感,主要是记录一些零零散散的记录、想法,方便后期整理成文
- todo list
- 灵感
针对上述的五种形式的笔记,需要设计一套对应的笔记类目和标签,从而方便后续根据类目和标签进行数据统计和查看,才能实现一些插件的功能。
笔记结构
定好了笔记类型,就需要考虑如何组织笔记的文档结构,一种思路是按照笔记类型建立文件夹,一种类型创建一个文件夹,类型文件夹下面根据年份再创建每年的子文件夹;另一种思路是先按照年份创建文件夹,在每年的文件夹下面创建对应的类型文件夹。
经过思考考虑用第二种方式,也就是先按照年份创建文件夹,然后在年份文件夹中创建对应的类型文件夹。
之所以这样设计是因为在一年中会写多种类型的笔记,如果按照笔记类型再进入对应的年份中会增加操作成本和不方便管理。
在同一个年份的文件夹中创建多个类型的子文件夹更方便管理笔记和写笔记,毕竟还是把每年记录的内容放在一个文件夹里面更便捷。
笔记标签
为了方便使用
DataView
进行数据统计,每篇笔记都需要有文档属性,用于标记笔记的一些元数据,针对每种类型可以有扩展的笔记元数据,但是需要定义一套基础的元数据,用于后续的数据统计和分析。基础元数据
metadata description from createtime 创建时间,文档创建的时间,不可空,创建过后不可变 base category 笔记类型,category: review,book,tech,knowledge,temp base doc_type 同类型笔记中可能会有子类型,比如 review 总结类型笔记,可以有 daily,month,year 等 base tags 笔记自身的 tag,比如技术笔记 java,docker 等 base weekday 周几 高德 location 位置 高德 weather 天气 高德 temperature 温度 高德 扩展元数据
category metadata description book bookId 书籍 id author 书籍作者 cover 书籍封面 readingStatus 阅读状态 progress 阅读进度 readingTime 阅读时长 finishedDate 读完日期 isbn isbn 号 lastReadDate 最近阅读日期 reviewCount 评论数量 noteCount 笔记数量 有了上面的笔记系统的设计,就可以配合相应的插件,进行笔记系统的搭建了,下面介绍下各个插件是如何使用的,以及对应的效果。
Homepage
插件可以设置指定笔记文档为首页,这样每次打开
Obsidian
都可以看到,相当于设置一个欢迎页面。目前我设置的欢迎页面主要包含四部分。第一部分由当天的日期,剩余的年度时间百分比和从微信读书摘录下来的一句话构成,摘录的语句是会动态变化的。
第二部分是近期阅读,主要展示的是近期微信读书的书籍内容,会包含作者和阅读进度,这些内容也是会实时更新。
第三部分展示的是近期的笔记内容,会列出最近写的几篇笔记以及对应的分类出来。
第四部分是列出一些 todo 内容,会把整个笔记软件中的所有标记了
todo
的内容都列出来,方便管理。
dataview
插件前面提到在
Homepage
展示的四个部分都是动态获取的,那如何动态获取这些内容就是dataview
这个插件来实现的。简单来说就是
dataview
这个插件支持类似于SQL
语法,可以从我们的笔记软件中搜索出符合条件的数据进行展示。比如展示近期阅读的语法如下
看起来语法相对简单,不过功能很强大,
dataview
除了支持很多内置的方法之外,同时也支持JS
语法,可以实现一些更复杂的功能。
templater
插件
templater
也是一个强大的插件,它支持创建模板笔记,而且这个模板笔记支持动态语法,可以设置动态数据。比如说我创建一个模板笔记,在这个模板笔记里面通过
templater
语法,调用高德的开放接口,自动获取当前位置的地理信息,以及对应的天气信息,然后自动给笔记加上这些标签。后续再使用模板笔记创建笔记的时候,每一篇笔记都会自动带上上面的内容,非常方便,还可以针对不同类型的笔记,创建多个不同的模板再配合
QuickAdd
插件,可以快速创建对应的模板的笔记,非常方便,模板代码如下。<%*
let weatherUrl = 'https://restapi.amap.com/v3/weather/weatherInfo'
let ipUrl = 'https://restapi.amap.com/v3/ip';
let key = '高德开放 API Key'
let ipResult = await fetch("https://restapi.amap.com/v3/ip?key=78c4ef788d3913e7b5874d1e623efdc3")
.then(res => res.json())
let adcode = ipResult.adcode
let 位置 = ''
let 天气 = ''
let 温度 = ''
let 风向 = ''
await fetch(weatherUrl + `?key=${key}&city=${adcode}&extensions=all`)
.then(res => res.json())
.then((data) => {
let info = data.forecasts[0]
位置 = info.province + '-' + info.city
天气 = '🌅' + info.casts[0].dayweather + ' / 🌃' + info.casts[0].nightweather
温度 = '🌅' + info.casts[0].daytemp_float + '℃' + '/ 🌃' + info.casts[0].nighttemp_float + '℃'
})
-%>
---
createtime: <% tp.file.creation_date("YYYY-MM-DD HH:mm:ss") %>
weekday: <% tp.file.creation_date("dddd") %>
location: <% 位置 %>
weather: <% 天气 %>
temperature: <% 温度 %>
category: temp
doc_type:
tags: todo
---
weread
插件
weread
插件,是我最爱的一个插件,它可以绑定微信读书,一键同步微信读书的阅读书籍到Obsidian
上,同步的内容,包含书籍的元数据信息,比如书名,作者,出版社这些,也可以同步阅读进度和阅读时长等信息。同时也可以同步每个书籍中的划线和评论内容,以及一些书评,之所以喜欢这个插件就是因为可以同步这些信息都笔记中。而且通过上面的几个插件,把划线内容再随机在主页进行展示,可以加深自己的记忆,真的很棒。
这样就形成了一个循环,平时在微信读书上面看书,遇到不错的内容就进行划线和评论,晚上有空的时候再通过
weread
插件,同步到Obsidian
中,在Obsidian
中可以看到每本书的阅读进度,总的来说体验还是挺不错的。总结
总得来说,一款好用的笔记软件除了数据安全之外,还需要具备书写的美观和高效的检索,截止目前
Obsidian
给我的使用体验还是挺好的,配合上一些插件,可以使用的更加得心应手。当然笔记软件最最重要的还是笔记内容的本身,软件再好,不记录内容也是白搭,所以坚持创作和记录才是王道。
慢也好,步伐小也罢,是往前走就好。 —— 《网易云音乐热评》 · 佚名
笔记相关的软件有很多,常用的比如印象笔记,Notion
,语雀,OneNote
,Bear
,Trilium
,思源笔记等等,更简单的可以直接使用备忘录,Typora
。
一个笔记系统必备的功能是书写和检索,书写的体验往往决定了我们是否会持续的创作和记录;而高效的检索和查看则是因为笔记往往是需要被重温学习的。
记录下来的笔记如果永远无法被检索查看,那跟没记又有什么区别。
对我自己来说,最早用的印象笔记,后面使用过备忘录和语雀, 也搭建过私有化的 Trilium
,之前写文章用的是 Typora
,现在用的最多的是 Obsidian
,整个笔记系统也经历了不少变化和踩过不少坑,但是整体都是基于书写和检索两个必备条件来迭代的。
每个笔记软件都有自己的优缺点,下面按照我自己的使用情况简单说明下。
印象笔记
印象笔记作为最老牌的笔记软件,功能很全面,支持的文档格式也很丰富,也是我最早使用的一款笔记软件。
但是印象笔记给人最深的一个印象就是慢,随着功能越来越多,整个笔记软件的速度也变得越来越慢,搜索的时候也会很明显的感觉到慢,另外非会员的话,还会有一些广告。
而且在前几年 markdown
语法蓬勃发展的时候,印象笔记却迟迟不支持,导致流失了部分用户,虽然现在支持了,但是不支持及时渲染,整个屏幕一半写文章一半预览,体验不太好。
备忘录
后面尝试过使用苹果系统的备忘录,备忘录可以多端同步,手机电脑都能使用,但是怎么说呢,就一个字:吃藕丑~~
不过备忘录的功能也很强大,跟 iOS 和 macOS 深度集成,支持扫描文档,但是对于写一些长篇的图文文章来说,不太擅长。
语雀
语雀作为一个知识库文档软件的存在,支持多种文档格式,在公司内部已经深度体验使用过了,对于私人用户来说体验也很不错,虽然有些功能需要开会员才能使用,非会员的知识库也有数量限制,但是整体来说也还是够用的。
不过语雀最让人头疼的是之前的版本不支持文档本地存储,完全依赖云端,之前就出过一次故障,所有端的语雀都打不开,并且持续了好几个小时。
虽然最新的版本支持个别知识库本地存储,但是对于一个笔记软件来说,把自己的内容完全交给别人,不能自己掌控,着实是没有安全感。
Trilium
Trilium
是一款开源的笔记软件,我也尝试过搭建一个,支持网页和移动端访问,但是移动端支持不太友好,虽然是开源,但是整体使用上没那么方便。
Typora
Typora
是一款很棒的 markdown
写作软件,及时渲染,所见所得,写出来的文章整个样式和布局都非常不错,虽然新版本开始收费了,但是老版本依然是可以用的。
但 typora
更多的可能是作为编辑器的存在,不太适合做一个系统化的笔记软件,适合平常写一些独立的文章,缺少一些插件体系去辅助。
因为笔记除了写,更多的时候还要查,这块 Typora
就不太合适了。
Obsidian
Obsidian
是我最近的新宠,未来如果没有出现什么颠覆性的产品的话,这将是我最后一款笔记软件了。
首先 Obsidian
支持 markdown
及时渲染,完全支持本地存储,同时也支持多端同步,本身开源,其次插件体系也非常丰富,同时可定制化程度也很高。
目前使用下来整个体验非常不错,再结合一些插件,可以打造出符合自己使用习惯的笔记系统。我目前使用到的插件有下面这些:
Homepage
;dataview
;templater
;weread
;QuickAdd
;
切换到 Obsidian
的时候做了一些前期的调研,因为要配合很多插件搭建整个笔记系统,所以对自己的笔记系统做了简单的梳理,主要分为笔记类型和笔记结构,笔记结构分为基础元数据和扩展元数据。
笔记类型主要用来后面的笔记模板创建使用,笔记结构和标签元数据主要用来后面的数据统计使用。
笔记类型
我写的笔记主要分下面几类
- 总结类:主要是年终或者一个阶段的总结;
- 年终总结
- 不定期感悟,随笔等
- 书评类:主要是阅读完一本书后的读书笔记、评论读后感;
- 读后感
- 技术类:主要是一些自己平常学习到的新技术或者解决的问题记录;
- 遇到的问题解决方案
- 自己搭建服务器或者部署的私有项目等
- 知识类:这一类主要是只针对某种技术或者课程的专属学习笔记,或者分享专题专栏等;
- 学习的课程笔记
- 输出的课程笔记
- 临时类:这类主要是一些临时任务或者灵感,主要是记录一些零零散散的记录、想法,方便后期整理成文
- todo list
- 灵感
针对上述的五种形式的笔记,需要设计一套对应的笔记类目和标签,从而方便后续根据类目和标签进行数据统计和查看,才能实现一些插件的功能。
笔记结构
定好了笔记类型,就需要考虑如何组织笔记的文档结构,一种思路是按照笔记类型建立文件夹,一种类型创建一个文件夹,类型文件夹下面根据年份再创建每年的子文件夹;另一种思路是先按照年份创建文件夹,在每年的文件夹下面创建对应的类型文件夹。
经过思考考虑用第二种方式,也就是先按照年份创建文件夹,然后在年份文件夹中创建对应的类型文件夹。
之所以这样设计是因为在一年中会写多种类型的笔记,如果按照笔记类型再进入对应的年份中会增加操作成本和不方便管理。
在同一个年份的文件夹中创建多个类型的子文件夹更方便管理笔记和写笔记,毕竟还是把每年记录的内容放在一个文件夹里面更便捷。
笔记标签
为了方便使用 DataView
进行数据统计,每篇笔记都需要有文档属性,用于标记笔记的一些元数据,针对每种类型可以有扩展的笔记元数据,但是需要定义一套基础的元数据,用于后续的数据统计和分析。
基础元数据
metadata | description | from |
---|---|---|
createtime | 创建时间,文档创建的时间,不可空,创建过后不可变 | base |
category | 笔记类型,category: review,book,tech,knowledge,temp | base |
doc_type | 同类型笔记中可能会有子类型,比如 review 总结类型笔记,可以有 daily,month,year 等 | base |
tags | 笔记自身的 tag,比如技术笔记 java,docker 等 | base |
weekday | 周几 | 高德 |
location | 位置 | 高德 |
weather | 天气 | 高德 |
temperature | 温度 | 高德 |
扩展元数据
category | metadata | description |
---|---|---|
book | bookId | 书籍 id |
author | 书籍作者 | |
cover | 书籍封面 | |
readingStatus | 阅读状态 | |
progress | 阅读进度 | |
readingTime | 阅读时长 | |
finishedDate | 读完日期 | |
isbn | isbn 号 | |
lastReadDate | 最近阅读日期 | |
reviewCount | 评论数量 | |
noteCount | 笔记数量 |
有了上面的笔记系统的设计,就可以配合相应的插件,进行笔记系统的搭建了,下面介绍下各个插件是如何使用的,以及对应的效果。
Homepage
插件
可以设置指定笔记文档为首页,这样每次打开 Obsidian
都可以看到,相当于设置一个欢迎页面。目前我设置的欢迎页面主要包含四部分。
第一部分由当天的日期,剩余的年度时间百分比和从微信读书摘录下来的一句话构成,摘录的语句是会动态变化的。
第二部分是近期阅读,主要展示的是近期微信读书的书籍内容,会包含作者和阅读进度,这些内容也是会实时更新。
第三部分展示的是近期的笔记内容,会列出最近写的几篇笔记以及对应的分类出来。
第四部分是列出一些 todo 内容,会把整个笔记软件中的所有标记了 todo
的内容都列出来,方便管理。
dataview
插件
前面提到在 Homepage
展示的四个部分都是动态获取的,那如何动态获取这些内容就是 dataview
这个插件来实现的。
简单来说就是 dataview
这个插件支持类似于 SQL
语法,可以从我们的笔记软件中搜索出符合条件的数据进行展示。
比如展示近期阅读的语法如下
看起来语法相对简单,不过功能很强大,dataview
除了支持很多内置的方法之外,同时也支持 JS
语法,可以实现一些更复杂的功能。
templater
插件
templater
也是一个强大的插件,它支持创建模板笔记,而且这个模板笔记支持动态语法,可以设置动态数据。
比如说我创建一个模板笔记,在这个模板笔记里面通过 templater
语法,调用高德的开放接口,自动获取当前位置的地理信息,以及对应的天气信息,然后自动给笔记加上这些标签。
后续再使用模板笔记创建笔记的时候,每一篇笔记都会自动带上上面的内容,非常方便,还可以针对不同类型的笔记,创建多个不同的模板再配合 QuickAdd
插件,可以快速创建对应的模板的笔记,非常方便,模板代码如下。
<%*
let weatherUrl = 'https://restapi.amap.com/v3/weather/weatherInfo'
let ipUrl = 'https://restapi.amap.com/v3/ip';
let key = '高德开放 API Key'
let ipResult = await fetch("https://restapi.amap.com/v3/ip?key=78c4ef788d3913e7b5874d1e623efdc3")
.then(res => res.json())
let adcode = ipResult.adcode
let 位置 = ''
let 天气 = ''
let 温度 = ''
let 风向 = ''
await fetch(weatherUrl + `?key=${key}&city=${adcode}&extensions=all`)
.then(res => res.json())
.then((data) => {
let info = data.forecasts[0]
位置 = info.province + '-' + info.city
天气 = '🌅' + info.casts[0].dayweather + ' / 🌃' + info.casts[0].nightweather
温度 = '🌅' + info.casts[0].daytemp_float + '℃' + '/ 🌃' + info.casts[0].nighttemp_float + '℃'
})
-%>
---
createtime: <% tp.file.creation_date("YYYY-MM-DD HH:mm:ss") %>
weekday: <% tp.file.creation_date("dddd") %>
location: <% 位置 %>
weather: <% 天气 %>
temperature: <% 温度 %>
category: temp
doc_type:
tags: todo
---
weread
插件
weread
插件,是我最爱的一个插件,它可以绑定微信读书,一键同步微信读书的阅读书籍到 Obsidian
上,同步的内容,包含书籍的元数据信息,比如书名,作者,出版社这些,也可以同步阅读进度和阅读时长等信息。
同时也可以同步每个书籍中的划线和评论内容,以及一些书评,之所以喜欢这个插件就是因为可以同步这些信息都笔记中。而且通过上面的几个插件,把划线内容再随机在主页进行展示,可以加深自己的记忆,真的很棒。
这样就形成了一个循环,平时在微信读书上面看书,遇到不错的内容就进行划线和评论,晚上有空的时候再通过 weread
插件,同步到 Obsidian
中,在 Obsidian
中可以看到每本书的阅读进度,总的来说体验还是挺不错的。
总结
总得来说,一款好用的笔记软件除了数据安全之外,还需要具备书写的美观和高效的检索,截止目前 Obsidian
给我的使用体验还是挺好的,配合上一些插件,可以使用的更加得心应手。
当然笔记软件最最重要的还是笔记内容的本身,软件再好,不记录内容也是白搭,所以坚持创作和记录才是王道。