Obsidian / RoamResearch 等笔记工具的 Daily Notes 有哪些优秀实践?

原文链接

我很少如此喜欢一款软件。 在此之前,也从未想过软件的力量可以如此强大。无论是知识管理还是工作生活,都因为它的加入而变得不一样。它就是用了折腾一年的本地的免费的笔记管理软件 Obsidian。

为什么是 Obsidian

运营摄影视频自媒体,需要写稿、修图、剪视频,刚开始在做这些事的时候,还是嵌入式开发工程师,同时也能能用 C#、Android、Python、js 写出辅助工具优化工作流的水平。而这一切的记录管理,包括后来去讲脱口秀的稿件,都依赖着老牌著名笔记软件:印象笔记。今年已是 10 年老用户了。

我的印象笔记

所有的事情加在一起,数量越来越多,复杂度也越来越高,以至于无法回顾总结等等,甚至别的事情都没有精力和时间去处理。早在 2 年前印象笔记满足不了需求,但又没意识到「人是会被软件卡脖子的」,毕竟常用的 Keil、IAR、Ps、Lr 都是几十年如一日。2021 年底,阴差阳错接触到笔记软件,了解到有更新换代的说法,马上把推荐的 Obsidian、Notion、语雀、logseq、wolai 等,都用了一遍。最早偏爱 Notion,因网络原因放弃而转向本地的笔记软件,选择了热度最高的 Obsidian。随着深入使用,发现这次是遇到了真爱。第一爱好编程,第二爱好摄影,Obsidian 居然能让它们结合起来,一款能编程自动化、带插件系统、全平台免费的笔记软件!

比起别的软件打开就能上手,打开 Obsidian,让人无从下手,菜单都没有。Slogan 是"A second brain,for you, forever",看上去却是一张白纸。

接下来的分享,不是基础向,给出相关链接学习,毕竟也是从他们身上学过来的。

从日记功能开始

相关功能:核心插件-日历、Calendar、Templater

ob 强大的离不开它的插件系统,每个用途都离不开。在白纸上的学习是从自带的日记功能开始,过渡起来相对比较简单。随着使用的深入慢慢往里面加自己想要的东西,需求在使用中诞生。当自带功能满足不了,于是便跟着教学安装了插件 Templater。

  • Templater:模板文件,比自带的功能更多,支持 JavaScript
  • Calendar:日历视图,直观查看日记

最早日记与现在日记

最早是记录了当天完成了什么事情,附上一张自己的摄影作品,没太多想法。除了探索 Obsidian,还有从富文本到 md 格式,这个过程痛苦迷茫又混乱。

后来对 Obsidian 和 MD 越来越熟悉,学会了增加 Heading 标题,既能分类,又能集中记录在日记中。用到的功能涉及核心插件-日历、第 3 方插件 Calendar、Templater。

每日语录

一开始是来一些名言警句,总觉得少了点意思,然后演变成从读过的书里随机一本,再找出一句有意义的话作为语录,温故知新,形成闭环。解决了我太久不回顾而忘记的知识,以一种舒服又轻松的方式,没有增加任何的压力。随机摄影作品的展示,最大程度发挥了摄影的价值。

天气

看天气是摄影做规划的一个环节,也是每个日子都有的属性,也顺带为此学了 JavaScript,学习修改调用 API 显示天气,后来学了正则表达式又折返回来优化,编程技能也发挥了它的最大价值,而不是只能用于工作的技能。

简单实用的方法:来自 我的 Obsidian 入门之旅 ,在Templater的相关介绍章节中。

当想要更多天气信息时,学了需要编程的方法:Obsidian 使用技巧:为你的笔记添加一个天气视图吧!

当然,不懂的,只需要打开插件商城,搜索 weather 也能找到相关下载。

Todo

主要记录当天做了什么或者要去做的事情,分为工作(隐私原因已移除)、摄影、生活、记账,都是在过去 1 年的使用中慢慢演变而来。这一块感触很深,看别人分享的分类都好像是一件很容易很简单的事情。但从一张白纸开始,思考起来混乱不知所措。当梳理完成的时候,又有一种「真的掌握了」的成就感。

日记方法

在学习了这位大佬的基础上进行的调整:玩转 Obsidian 07 :自动化「间歇式日记」

我没有研究区分自带和插件的之间会有什么影响,就把设置都放出来。我的日记命名格式为"2023-01-11:星期三",在日记插件对应设置:

日记设置

利用 Templater 的编程模板,实现了随机读取图片(图床格式)功能、随机获取已阅书籍、天气信息,"日记模板.md"完整内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<%*
let today = tp.date.now("YYYY-MM-DD")// 日期
before_date = window.moment(today, "YYYY-MM-DD", true).add(-1,"days").format("YYYY-MM-DD:dddd")
after_date = window.moment(today, "YYYY-MM-DD", true).add(1,"days").format("YYYY-MM-DD:dddd")
-%>
<%*
const files = this.app.vault.getMarkdownFiles()//图片
let imageUrl ="![](https://cmsy.oss-cn-guangzhou.aliyuncs.com/image/Picgo/DSC01492.jpg)"
for (let i = 0; i < files.length; i++) {
if(files[i].path.indexOf("ImageBed")!=-1){
let aaa = this.app.vault.read(files[i])
await aaa.then(res =>{
let fileContents = res.match(/\!\[.*\)/g)//找出所有图片![](...)
let lineNo = Math.floor(Math.random()*fileContents.length)
lineNo = Math.floor(Math.random()*fileContents.length)
imageUrl = fileContents[lineNo]
return
})
}
}
-%>
<%*
var books =[]// 存储书籍
let arrb =0
for (let i = 0; i < files.length; i++) {
if(files[i].path.indexOf("Books")!=-1){// 我的书md文件都带有"Books"字符串,
books[arrb] = files[i].name
arrb++
}
}
let bookNo = Math.floor(Math.random()*arrb)
-%>

<< [[<% before_date %>]] | [[<% after_date %>]] >>
## ️每日语录
- ——[[<% books[bookNo].replace(".md","") %>]]
- <% imageUrl %>

## ⛅天气
- 广州{{time}},<% tp.user.weatherLine("weatherLine") %>

## ✅Todo
### CMSY

### Life

### Finances

#日记

记账功能

相关功能:Dataview,Admonition

刚毕业那几年,挺好奇自己一年的开销是多少,开始去记账。每一次手动录入记账软件,3 年之后发现每年差不多,就停了下来,毕竟也不是一件很轻松的事情。后来有了自己的自媒体频道,要区分钱哪些用在了《橙猫涉影》上,哪些是个人开销,记账变成了一件「必须做」的事情。每个月把微信记账本和支付宝记帐本一条一条手动输入到传统的笔记里,很像去银行「零存整取」。消耗半天时间去整理,心里实在不想去做这件事,产生拖延。

“想做”和“必须做”,这两者对于我们处理事情造成很大的差异。 ——《怎样说话才打动人》

把「必须做转化成想做」,就是下一步的事情。探索了很长时间,到底用新的记账软件还是嵌入表格,还是回归 excel。出于对编程的爱好,最终选择了「过程最复杂结果最简单」的方式,借助插件 Dataview 的 js 功能,把记账功能放在 ob 日记里,在我想起来的时候、发呆的时候、不知道要干嘛的时候,写上开销,「用琐碎的时间做琐碎的事」。

比起零存整取,这是零存自动取。当然记账软件都能做到。但因为 Ob 一直打开的缘故,这里的录入没有零存的烦躁,没有「刻意」的操作,过程非常丝滑。每次记账都减少了打开 APP 关闭 APP 的一系列操作,「每少一个步骤,就多一分动力」。这种方式也丰富了 All in one 的笔记管理。这次用到的 2 款插件:Dataview 和 Admonition

  • Dataview:根据 yaml 格式化生成索引,表格展示之类
  • Admonition:美化显示

记账方法

我是支付宝和微信支付混用,微信记账本和支付宝记账本都开通了(免费的,貌似不开通只保留几个月),做记忆的保底。在日记中开辟一个 heading 作为记账功能。每一笔支出以列表的方式记录,在最前面以"cmsy"来划分 2 个大类别,我只需要不同类别的支出总数额,不对每一项细分。对应代码编写起来就相对简单。

日记中的记账样式,采用无序列表,":“或”:"后面必须接对应的消费金额,如下图:

日记中的记账

Dataview 再搭配插件 admonition 的美化效果,让界面看起来更舒服。 "记账.md"中对 2023 年 1 月的记账 Admonition+Dataviewjs 最终效果如下:

账单展示

其对应的代码块:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
```dataviewjs
const year = "2023";
const curMonth ="01"; // 要统计的月份
const splitChar = "-"; // 日期的间隔符
const keyWords ="cmsy";// 分类标识字符
const moneyHeading = ' Finances';//记账的heading
var p =dv.pages("#日记").filter(b=>(String(b.file.name).split(splitChar )[0]==year)&&(String(b.file.name).split(splitChar )[1]==curMonth)&&(b.file.lists.section.subpath.indexOf(moneyHeading)>-1));// 选定文件范围和时间-年月
let collect ="";
var sumMoney = 0;
var pathTemp ="";
var daySum =0;
for(let i of p.file.lists){
if(i.section.subpath==moneyHeading) {
if(i.text.indexOf(keyWords)==-1){//统计包含cmsy的序列
//if(i.text.indexOf(keyWords)>-1){//不含cmsy的序列,即个人,这2行必须注释一行
delete i.text;
continue;
}
var curSpend = parseFloat(i.text.replace(/\s*/g,"").match(/(?<=[::])\S*/g));// 获取金额,去除了字符串中的空格,然后检测在":"或":"之后的数字作为金额
sumMoney += curSpend// 计算总金额
if(pathTemp!= i.path){//同文件第一个先清0
pathTemp = i.path;
daySum =0;
}
daySum += curSpend
i.finance = Math.round(daySum*100)/100
}else{
delete i.text
}
}
p = p.filter(function(b){
return b.file.lists.finance.length != 0
});
dv.paragraph("一共:"+Math.round(sumMoney*100)/100)
dv.table([curMonth+"月","清单","日统计"],
p.sort(b => b.file.name,"desc")
.map(b => [b.file.link,b.file.lists.text,b.file.lists.finance]))
```

每月初,只需要核对微信记账、支付宝记账和 obsidian 中的金额是否能匹配,时间大幅度削减。

Card View

相关功能:Templater, Dataview, 自带功能 Callout, YAML 格式

Notion 我最喜欢的功能是 Gallery view,为我的照片又提供了一个用途,可视化的记录查看起来非常直观方便,也很适合成为视频的展示素材。

Notion Gallery View

在 Obsidian 中同样也有相似功能,依赖主题搭配 css 去实现。方法参考:由豆瓣建立 Minimal 样式主题的阅读书单卡片

使用前

使用 Dataview 搭配 YAML,可以呈现出表格效果。我用的是 minimal 主题,在 md 文档的 YAML 加入"cssClasses: cards"(需要主题支持)。Dataview 的表格样式就会以卡片的形式显示。

使用后

完整的 md 文档内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
---
cssClasses: cards
---
> [!tldr]- 摄影日志
> ```dataview
> table
> ("![](" + cover + ")") as 封面,
> "主题:"+ theme as theme,
> "模特:"+ model as model,
> "地点:"+ place as place
> from "001-CMSY/004-摄影日志"
> sort date desc
> ```

这个功能是我使用频率最高的。还用在了看过的书、组织的拍摄、产出的视频、衣柜衣服、模特档案、摄影器材库等等,有收集水浒卡的感觉。我一直坚持记录了 2022 年的每一场拍摄,最大的感受就是,「我的记忆不需要记忆了」。

2022 阅读书单

这是 2022 看过的书,我设定的目标是每月一本。对于看书这个问题,我的笔记是偏少的,但又有很多重要的知识点需要记下来,就会配合 chrome 插件微信读书笔记助手,辅助获取热门标注作为更详细的笔记。回顾的时候,就能轻松的过一遍整本书的知识点,结合每日语录实现温故知新。

2022 制作的频道视频

对于制作的视频,第一次有种我的东西还是属于我的舒适感。早在 obsidian 之前,我的视频是属于视频网站,并非我的。借助 Ob 的可视化,利用爬虫爬了自己过去 200 多个视频,整理成了笔记。以后再需要什么视频相关信息的时候,在笔记中搜索即可。

衣柜衣服太多,挑起来很费劲。我把它们全放到 obsidian 里,非常直观。

衣柜

目前还有很多类似的记录在收集的过程中,只要量上来了,这个功能直接成为我的"second brain"!

地图功能,记忆进一步可视化

相关功能:Obsidian-Leaflet

我不是热爱旅游的人,但在一个城市,也会好奇自己去过的地方都有哪些,拍摄地点上重复选择的频率是多少?

拍摄有目的地,朋友/模特有住址,组织活动也要看朋友之间的距离好安排司机,这些信息基本依赖脑海中记忆和对本地的熟悉。我们手机照片都有在地图上显示拍摄地点功能。要是 Obsidian 笔记也有这个功能那该多好。我的想法,一定也是别人的想法,一定有人有这个想法的同时有能力实现它,并且做成了插件。于是就在 Obsidian 的插件市场一个一个的找,还真的找到了。

Obsidian Leaflet:根据 md 文档中的 yaml 的 location 属性,在地图中标注出来。

根据文件路径标注出来:

1
2
3
4
5
6
7
8
9
10
11
```leaflet
id: leaflet-map
lat: 23.125463267494546
long: 113.29981259960813
minZoom: 5
maxZoom: 17
defaultZoom: 12
unit: meters
scale: 1
markerFolder: 001-CMSY/005-摄影资料/模特档案
```

在设置里,可以根据 Tag 标签指定相关图标:

Obsidian Leaflet 设置

对应的笔记格式:

1
2
3
4
5
6
7
8
---
model: 模特A
wechat:
phone:
place: 鹭江
location: [23.096685,113.311895]
tags: 摄影/模特
---

搭配高德的坐标拾取系统:https://lbs.amap.com/tools/picker 需注册账号坐标才精准。标出了过去 5 年 200 多个视频拍摄地点,只能说,真的很累。

Obsidian Leaflet 显示

全平台同步,文件管理

用到功能:Remotely Save,坚果云,阿里云

很坚定用 Obsidian,离不开它的全平台!是全平台,不止是跨平台!利用插件 Remotely Save 实现全平台同步。无论是搭配阿里云腾讯云还是坚果云,它的相关教程很多。配合阿里云搭建同步系统,真正做到了全平台。

同步功能我的用法是 Remotely Save 全平台同步,电脑额外配置坚果云备份,操作失误起码有保底。实际使用过程中出现过很多次误删,过了很多天才发现。非常建议大家注册阿里云,除了同步文档使用,还可以作为图片的图床。我的图片都是以图床的方式存在。

同步与图床使用大半年,大概费用也就一碗猪脚饭。

阿里云费用

8 月的费用变高,是因为买了个域名试水。

衍生品:个人网站

相关功能:Hexo

看着自己打造的各种功能,它们组合起来就好像一个网站,于是就有了一个想法:是不是有网站架构能支持 MD 格式?

这想法一出,又是折腾,找到嘞 Hexo 这个网站架构,能把本地 md 笔记变成一个网站。学习 Hexo 也基本是半天的事情,因为个人的需求,对它主题进行了大量修改,前前后后就折腾了一个半月左右。

自称最卷摄影师网站,因为一般摄影没有自己网站,也没啥用。对我来说也只是个笔记的衍生品,把 Obsidian 的功能搬上了服务器而已。

网站首页

写作障碍,开始做减法

目前来看,Obsidian 似乎非常完美,也学的足够多了。无论知识管理还是个人管理,一切都在变好。这只是表象,实际却面临着最严重的的障碍:「我无法在 Obsidian 写稿」

各种花里胡哨的功能,什么酷炫样式都有,像极了数据大屏。

  • Templater:“我这里可以做模板,编程多好玩。”
  • Dataview:“不给你的代码来点优化,展示更多有趣内容?”
  • Ob 插件库:“快去看看有什么好玩的东西更新了。”
  • 主题:“不来改改,让我看上去更舒服更有设计感吗?”

一堆诱惑向你招手,就像在说:客官过来玩呀。 根本无法在这样的笔记中静下心来写作。 直到写这篇文章的时,我才找到原因,「我需要的只是一张稿纸」。

开始对各种插件做减法,从 50 多减到 20 多,取消笔记全屏,取消 Stack Tab 的花哨模式,取消 workplace 的切换,隐藏树状文件管理,五颜六色的笔记字体回归黑色,学习了油管的一个博主,在文件中都加入上下层的超链接,开启了类网页的模式。使用 Homepage 做主页,点击完成分类跳转。

笔记首页

每个文件都加入了层次跳转,就像网页的前进后退,非常方便。不需要再占有整个屏幕,随意缩放。

笔记中的链接

管理的时候,它就是一个窗口。写作的时候,它就是一张白纸,这篇长文就是诞生于 Obsidian。我想起了很流行的那句「重器轻用」。它没有变轻,却给了我很轻巧很轻盈的感觉,而这个感觉至关重要。"重"是功能,"轻"是感觉。

开启新世界:白板 Canvas 与 Excalidraw

最早时候我是没能理解,为什么 Excalidraw 插件有着很高的下载量。

后来调整视频方向,用卡片的方式设计短剧情,有的可能只有一句话,最长的就一段话,有的是影视视频的 cut 剪辑。当我去找合适的桥段,要一个个去点击查看,很局限,看不到全局,没了「大局观」,做不到合理挑选。插件 Excalidraw 完美解决了这个问题。每一个卡片都是本地 MD 文件,全平台,工具免费,夫复何求!

Excalidraw 的白板用法

后来官方推出了白板功能 Canvas,完结撒花!Excalidraw 与白板,有功能重叠,也有各自优势。目前我一些脚本的设计、摄影课程的设计,都用上了白板。毕竟是自家人,兼容插件,可直接观看视频。

Obsidian 的 Canvas 白板工具

白板工具试过 Heptabase、氢图、Colube、无边记等等,如果你的需求像我一样简单,而 Obsidian 对你来说又很复杂,那至少试试它的白板,支持 MD、本地、免费。至今也无法忘记,在到处找可以搭配 Obsidian 的白板工具时,突然看到内测白板工具功能那种激动!尤其是它上线的当天,我就阳了!

总结

2022 为一款笔记去折腾去写代码,比起纯粹的笔记,过程很繁琐,使用却很简单,「至繁归于至简」。把记忆提取出来成为笔记,成为你的"second brain",让"first brain"更多用于创作。我是鼓励大家去折腾的,Obsidian 不止"for you"还"for free",折腾也是学习的一个过程,「任何事情过了度,才能找到合适自己的度」。

对我来说,2022 已经折腾完毕,2023 要更多投入视频创作了。