在之前系列文章中,我有讲解了SuperMemo在学习场景中与其它软件协同的操作流程,包括如何在SuperMemo中导入Obsidian笔记进行增量学习的具体操作。很快几个月过去了,通过对Obsidian软件这段时间的使用和学习,我现在对两个软件的结合使用又有了一些新的想法,因此便有了此文。
如果你还未阅读原文,可参考如下原文链接,来了解SuperMemo在学习中的协同使用流程:
在两个软件联用的场景中,SuperMemo主要是在于它强大的内容排序,内容筛选,优秀的内容排重及学习安排调度算法,以及直观方便的操作界面。它在此文担任学习安排,增量处理,间隔复习的角色,Obsidian主要完成笔记整理、内容聚合、知识双链,以及思维发散的作用。
由于对Obsidian与SuperMemo之前的一番探索,以及各种其它原因,我在集成方案上排除了一直在关注的 RemNote / ANKI / Mochi 等软件方案;这里我们还是直接开始具体实践吧!
一、内容导入或大纲导入
如上链接原文所述,对 PDF 材料提供了两种SuperMemo学习方案,一种是用工具转换pdf到html,并导入SuperMemo学习;另一种是导入pdf文件大纲至SuperMemo作为索引并借助于Keyboard Maestro 或AHK等工具来辅助操作。对于Obsidian笔记内容亦是如此,因此如下介绍obsidian笔记在SuperMemo中的两种学习方法,一种内容导入,一种大纲导入。
1.内容导入
内容导入整体思路:先把markdown转化为html,用IE打开并导入SuperMemo。因此借助了如下的两个小工具,它们功能上一个转化md至html,另一个托管html图片用于网络访问:
GitHub – krissrex/obsidian-html: A simple tool to convert an Obsidian vault into HTML
在安装了 Python 的机器上,Python自带了一个WEB服务器SimpleHTTPServer。 我们可以很简单的使用 python -m SimpleHTTPServer 来快速搭建一个http服务,它提供一个文件浏览的web服务。你也可以用obsidian的static file server 插件来搭建http服务。这里我直接用python演示了。
先修改obsidian图片引用链接,并开启服务器,不然访问不了图片。
1.说明:按如下形式,替换markdown笔记中的图片链接。![[Pasted image 20210628195122.png]] 用visual studio code替换为下一行样式:<img src="http://192.168.101.32:8000/Pasted image 20210628195122.png"/>2.说明: 进入bash环境及Obsidian图片附件目录,用python后台开启http服务。Likey@Laptop 附件 % conda deactivate Likey@Laptop 附件 % pwd /Users/Likey/Documents/ObsidianDoc/附件Likey@Laptop 附件 % nohup python -m SimpleHTTPServer 8000 &[1] 70816Likey@Laptop 附件 % appending output to nohup.out3.访问如上图片URL链接,确保能正常显示图片,最后把要处理的md笔记放入vault库的html目录。
使用oboe命令转换markdown文件,out目录生成md文件对应网页。
说明:转换当前的vault内html目录(放了要处理的md笔记)中的md,并生成至out目录。Likey@Laptop ObsidianDoc % pwd/Users/Likey/Documents/ObsidianDocLikey@Laptop ObsidianDoc % oboe usage: oboe [-h] [-o OUTPUT_DIRECTORY] [-t TEMPLATE] [-d [SUB_DIRECTORIES …]] [-f FILTER [FILTER …]] [-e] [-l LOG_LEVEL] [-b] vaultoboe: error: the following arguments are required: vault说明:转换vault库下html目录中的md至html,并放在out目录,可加-f参数用标签过滤。Likey@Laptop ObsidianDoc % oboe . -o ./out -d htmlINFO: Found 4 notes! (/usr/local/lib/python3.9/site-packages/oboe/Vault.py)INFO: Filtered out notes containing tags: []INFO: Created Vault object with root "/Users/Likey/Documents/ObsidianDoc"
最后在out目录生成了包含图片的html,用IE打开out目录中的html,导入至SuperMemo中即实现了Obsidian 笔记的内容导入。这样你便可以用操作网页的方式来操作Obsidian笔记了。
2.大纲导入
同SuperMemo中的pdf处理类似,我比较推荐导入材料大纲到SM软件来处理,因为我们的笔记内容会经常修改,这样SM软件与Obsidian的笔记内容会经常不一致;而且所有的笔记放入SM直接处理,可能会在后面的渐进学习时,造成内容冗余,丢失原文的上下文语义;同时在Obsidian中强大的双链及引用功能,也没有了用武之地。关于这些,我在之前的视频有讲解到一些,你可以参考如下的视频看看。
SuperMemo18 操作介绍(五) – 增量学习及提取制卡
一只小胖子的视频
· 2474 播放
那接下来,我们就对Obsidian大纲导入SuperMemo及后续的使用,来进行具体的一番操作:
1.说明:如下为笔记原文结构,只作示例并作了内容省略,主要是每个笔记都含Tags:文本串## 大纲Tags:`=this.file.tags`—### 这是标题1#### 这是标题1.1### 这是标题2#### 这是标题2.1##### 这是标题2.1.12.说明:我用text expand语法及模板来生成内容,$header:. 不生效,因此直接写死3-6级标题了“`expander/^(.*)Tags:(.*)/$header:###$header:####$header:#####$header:######$filename::obsidian://open?vault=ObsidianDoc&file=$path |-“`
最终生成的结果如下图所示:我们把内容拷贝至SuperMemo中,并按|-符号Split处理即可:
处理后生成结构如下图所示:我们用之前SuperMemo系列操作中 KM 脚本辅助方式来阅读即可。同时我们还可以在每次执行expander代码块,或使用Obsidian的TOC插件生成新的TOC信息后,酌情手工同步新TOC信息至SM软件中,来保持Obsidian与SuperMemo的TOC一致。
这样便可通过 SuperMemo 来记录我们的学习进度及数据,智能安排要学习的笔记内容,或者由我们自己在分支中检索、筛选、排序、取内容集合、或延期后,再点击 Learn 来开始我们的学习,让我们的学习更有计划性及可见性。
在SuperMemo中点击 Learn开启学习时,我们借助了KM的辅助插件来跳转至源学习材料来学习,比如跳转至源PDF、网页、视频、Obsidian笔记等。而且跳转至Obsidian的笔记时,通过如下的插件是可以支持定位至笔记的标题及块位置的。
Advanced Obsidian URl 插件官方链接及写法如下:
Vinzent03/obsidian-advanced-uri: Advanced modes for Obsidian URI (github.com)
Examples:Write "Hello World" to "my-file.md": obsidian://advanced-uri?vault=<your-vault>&filepath=my-file&data=Hello WorldOverwrite "This text is overwritten" to "my-file.md": obsidian://advanced-uri?vault=<your-vault>&filepath=my-file&data=This text is overwritten&mode=overwriteOpen workspace "main": obsidian://advanced-uri?vault=<your-vault>&workspace=mainOpen heading "Goal" in "my-file.md" (Important: Without syntax, only Goal): obsidian://advanced-uri?vault=<your-vault>&filepath=my-file&heading=GoalOpen block-id "12345" in "my-file.md" (Important: Without syntax, only 12345): obsidian://advanced-uri?vault=<your-vault>&filepath=my-file&block=12345Append "Hello World" to today's daily note. obsidian://advanced-uri?vault=&daily=true&data=Hello World&mode=append
而在后面探讨中,我们着重再讲一下增量处理,间隔复习相关的知识。
二、增量处理,间隔复习
在学习中增量处理及间隔复习是有多种方案的,它们原理上大都是通过队列、优先级、随机及权重因子来对内容进行排序,并返回给用户。以下我只介绍下我使用过的两种常见的方案吧。
1.Obsidian插件方案
还记得之前介绍的Incremental Writing以及Spaced Repetition插件吗?之前在Obsidian单独使用场景中,我会采用这两个插件来实现增量处理及间隔复习功能。但这两个插件相比于今天的主角 SuperMemo 而言,功能上还是太简陋,个人觉得它们还是比较适合待办笔记安排或简单的算法复习等场景。
同样,在前面我们抛弃了ANKI 的方案,因此这里也不再介绍Obsidian与ANKI的整合。之前有一篇文章,我大体介绍了增量处理插件IW的使用,具体参考链接如下:
这里我也补充下SR插件的基本使用:使用指定标签以及分割语法,便可实现间隔复习效果。
1.点Obsidian主界面的Review flashcards后,复习界面如下:(这里展示的是最后一个问答)
2.其它高级的用法,如多处文本、多处图片挖空或遮挡制卡的一些用法展示及(参考)如下:
说明:如下为内容多处挖空用法### 挖空制卡#flashcards 引用链接:[20 rules of formulating knowledge in learning](https://www.super-memory.com/articles/20rules.htm)`The 20 rules of formulating knowledge in learning`1.Do not ==learn== if you do not ==understand==
说明:如下为图片多处挖空用法#flashcards “`leafletid: leaflet-mapimage: https://pic2.zhimg.com/v2-632790ceb34e88a9f9b971ed87b1c779_720w.jpg?source=3af55fa1height: 500pxlat: 50long: 50height: 500pxminZoom: 1maxZoom: 10defaultZoom: 5unit: metersscale: 1marker: default, 39.983334, -82.983330, [[Note]]darkMode: true“`?[[Obsidian 基于插件的增量阅读初探]]of "multiline" the promptcan be on multiple lines—“`leafletimage: [[Pasted image 20210810133142.png]]id: 1height: 500pxlat: 50long: 50height: 500pxminZoom: 1maxZoom: 10defaultZoom: 5unit: metersscale: 1“`?[[Obsidian 基于插件的增量阅读初探]]of "multiline" the promptcan be on multiple lines
2.SuperMemo方案
这里不再重复之前的内容了,按之前SuperMemo系列挖空制卡操作即可,请参考链接如下:
较于Obsidian中挖空制卡,在SuperMemo中则不会改动markdown笔记原文内容,同时在图片遮挡制卡的场景下,我们可以使用上传至 PicGo 的网络图片,节省存储空间,方便内容备份及迁移;另外,我们可以在SuperMemo每个Topic下直观的添加子Item卡片。当然最重要的还是SuperMemo的复习排重算法,优先级调度能力,丰富的自定义筛选、排序及良好的UI交互。
如上图所示,SuperMemo提供了和学习内容相关的很多属性字段,方便我们更好的对学习内容进行管控,同时它在延迟及提前学习,优先及随机调配上的能力,也比ANKI强了很多,当然还有其它很多的功能,也没法在此一一例举。
最后放上之前在SuperMemo系列学习专栏中,录制的一期视频。大家有兴趣可以了解一下:
SuperMemo18 操作介绍(四) – 学习流程及材料导入
一只小胖子的视频
· 2643 播放
补充链接:
结束:
至此,本文结束…. 欢迎小伙伴们一起探讨和评论!