醫學生的K書法・加強版:用Obsidian to Anki實現「筆記資料庫」x「複習引擎」的高效率學習workflow

鞠雨融(Yvonne Jiu )
19 min readDec 28, 2022

--

本文摘要

  • 以Obsidian作為筆記資料庫,Anki作為複習引擎,可以實現高效率的學習Workflow,本文將分享實際的執行方法。
  • 但Obsidian是一個有些複雜的軟體,為了讓從未接觸過Obsidian的讀者也能快速上手,本文提供以「建立與Anki結合的Obsidian筆記資料庫」為導向的,現成Obsidian模版,以及Obsidian操作入門。

前言

以前,我介紹了我如何使用Anki來建立一個陪伴自己成長的學習牌組(醫學生的K書法:Anki使用心得(上)-基礎概念&模版分享)。採取的是「多問一答」的筆記模版,以某則筆記為核心,針對單一概念發展數個問答。

不過,因為Anki畢竟只是個單字卡軟體,如果直接在Anki內做筆記的話,排版、管理、查找筆記等需求難以達成。還是需要Evernote、Notion等專門的筆記軟體才能建構對我而言堪用的筆記資料庫。因此,我通常是將筆記做在Evernote,再將完成的筆記內容複製、截圖,貼到Anki,然後在Anki出題、新增卡片。

這樣的工作流程雖然可行,但還是有些不完美。

  • 其一:學習的連貫性問題。做筆記時使用evernote,接著必須打開Anki將筆記轉換成考題,不能一步到位,容易因此偷懶。
  • 其二:同步問題。兩邊的內容都可能都會被我在複習的過程中做出修改,這時必須手動將修改內容同步到另一邊,等於有兩個資料庫要維護。
舊有的工作流程:做筆記、出考題的工作流程不連貫,且有兩個資料庫之間的版本同步問題。舊有的工作流程:做筆記、出考題的工作流程不連貫,且有兩個資料庫之間的版本同步問題。
舊有的工作流程:做筆記、出考題的工作流程不連貫,且有兩個資料庫之間的版本同步問題。

而在我遇到Obsidian這個筆記軟體之後,我發展出了一個更簡單而易用的工作流程,包含了三個要素:

  • 由Anki作為單字卡複習引擎,
  • 由Obsidian這個筆記軟體作為筆記資料庫,
  • 而「Obsidian to Anki」這個Obsidian的第三方插件,則能夠自動化地將Obsidian筆記轉入Anki,而且還能在日後的修訂中持續保持同步。
新的工作流程:Obsidian是全職的筆記資料庫,Anki擔任單字卡複習引擎,各司其職,中間的整合則由Obsidian to Anki自動化。

從此以後,在Obsidian中,我能完全專注於「學習」這項任務(這包含了做筆記,以及針對筆記重點思考有意義的複習問題),打開Anki的時候則完全專注於牌組的複習。無趣的手動同步則由Obsidian to Anki自動化。

其執行方法也頗為單純,我只是利用了Obsidian to Anki最基礎的欄位填入功能(Field Formatting),搭配我自己設定的Anki Note Type(多問一答的筆記模版)。如果是對Obsidian to Anki的使用已經有一點經驗的讀者,我在此直接分享我使用的Anki與Obsidian模版,應該打開來玩一下就能馬上上手了。

模版下載點:

而針對初次接觸Obsidian to Anki,甚至是初次接觸Obsidian的讀者,以下將提供詳細教學,希望對各位的學習有所幫助。

教學

給已經熟悉Obsidian的讀者

如果是已經熟悉Obsidian的讀者,可以下載我提供的demo vault,也可以直接在你的Obsidian vault的模版(Template)資料夾裡面新增下面這個模版,然後跳過下一段,直接前往〈Anki端的設定〉這個段落。

START
9Qs
title:
content:
Q1:
A1:
END

給初次接觸Obsidian的讀者:Obsidian簡介、安裝(demo vault分享)

為了第一次聽說Obsidian的讀者們,以下提供一個從零開始的簡易教學。

簡單介紹Obsidian:因簡單而強大的「檔案+資料夾」結構

在Obsidian中,整個筆記庫被稱為一個「Vault」。第一次打開Obsidian時,Obsidian會要求我們選擇電腦上的一個資料夾來作為Vault。

接著,當我們在Obsidian裡面新增筆記時,每一則筆記都會作為一個純文字Markdown檔案(.md檔案),被儲存在作為Vault的資料夾中,我們也可以在Vault中無限地新增子資料夾來達到巢狀結構,一切看起來就跟使用「檔案+資料夾」來管理筆記一樣單純。不過,透過Obsidian這個介面以後,這一個個的.md檔案之間可以連動,並配合不同的插件(Plugin),發揮單純的「檔案+資料夾」結構所無法達到的強大功能。

因此,Obsidian兼備了以下的兩者的優點:

  1. 筆記軟體如Evernote、Notion等等的優點:專為筆記而生的軟體,比單純的文字編輯軟體更好操作,所有筆記在一個軟體中被整合,筆記資訊之間可以建立連結。
  2. 單純的「檔案+資料夾」結構的優點:所有的資料都是你的,就算不透過Obsidian軟體本身,也能用常見的軟體(比如內建的文字編輯器)直接存取,不會被鎖在軟體的黑盒子裡面,不會被上傳到軟體公司的伺服器,可以用自己喜歡的任何方式進行資料備份。

以下,就用Obsidian來打開我提供的模版筆記庫 demo Vault,開始建立Obsidian to Anki的工作流程吧。

(一)下載模版檔案(OtA Demo.zip )後,解壓縮,放在任意的位置。

(二)從Obsidian的官方網站,即可下載安裝所需的版本。

(三)安裝完成點開以後,首先會看到如下的畫面。

點選 1. Obsidian Sandbox 可以觀看官方提供的基礎教學檔案,點選 2. Create 可以創建一個新資料夾當作自己的vault,在這裡因為要使用我提供的模版vault,我們則點選3. Open Folder as Vault,並選擇在步驟一解壓縮好的資料夾。

(四)初次打開demo vault,會看到下列這個提示訊息,選擇Trust即可。

Obsidian介面基本介紹

正式的Obsidian介面主要分成三個區塊,如下圖所示:

  • 1. 工具列(在英文版的教學會稱為Ribbon)
  • 2. 工具面板,左右側各有一個,點擊按鈕(藍框)可以展開/收合。
  • 3. 筆記編輯區

工具面板與檔案目錄

點擊 2. 工具面板 上端的tab可以切換到不同的工具面板,比如此處左側的工具面板tab(紅框)依序是「檔案目錄」、「搜尋」、「已加星號」。

目前顯示的是檔案目錄(紫框),可以看到第一行顯示著vault的名稱(「OtA demo」),底下列出了整個vault的檔案結構:有三個資料夾,「Demo folder」、「Media」、「Template」,以及一個直接放在根目錄中的檔案「Demo Note」。

在此先補充說明,在這個vault中,有兩個資料夾被指定來負責特殊的功能:「Media」用來存放圖片等附加檔案,「Template」用來存放「Templates」這個插件的模版檔案。這可以在設定介面中調整,詳後述。

從這裡點選檔名,該檔案就會被開啟在隔壁的 3. 筆記編輯區 中。(除此之外,Obsidian提供各種不同功能的工具面板,可以日後再探索。)

筆記編輯區

3. 筆記編輯區就是主要撰寫筆記的地方,這裡的結構類似網頁瀏覽器的tab,可以同時打開多則筆記。直接點選就可以編輯了,所有編輯的內容會自動儲存(就像在Evernote裡面一樣),不需要特別進行存檔的動作。

如果發現無法編輯的話,很可能是因為現在處在「檢視模式」而非「編輯模式」,點選右上角(上圖中的粉紅框內)的書本(切換成檢視模式)或鉛筆(切換成編輯模式)符號就可以切換。

編輯的方式是使用Markdown語法來達到格式需求,因此從頭到尾都是輸入純文字,不像在word裡面會使用工具列來套用格式。Markdown相當簡單,網路上也有不少學習資源可以參考,這裡提供一個簡單的中文版cheat sheet。

而實際例子,可以來看看「Demo Note」這個檔案。Obsidian會自動把Markdown語法轉譯成格式,比如前後被「==」符號包起來的文字會被顯示成用螢光筆畫起來的樣子,而「==」符號本身則會被隱藏起來。如果想要看到純文字的原始碼的話,可以點選視窗左上角的三個點,把「Source Code」這個選項勾起來。其效果如下圖所示。

一般的編輯模式,Markdown被轉譯成格式而顯示出來
Source mode,可以看到Markdown的原始碼

Obsidian 編輯進階:內部連結(Wikilinks)與嵌入檔案(Attachment)

除了基礎的Markdown格式以外,真正讓Obsdiain強大的則是內部連結與嵌入檔案的功能。「Demo Note」的後半段也針對這些功能作了示範。

內部連結&嵌入檔案(嵌入圖片)的示範。左側是Markdown原始碼,右側是顯示出來的效果。

內部連結的寫法很簡單,用兩個中括弧 [[]] 把想連結過去的檔名包起來即可(見上圖的藍色框框),點擊連結就可以跳轉到該則檔案。

嵌入圖片的方法更簡單了,直接把圖片複製貼上、或拖曳到想要的位置即可。這時檢視檔案目錄,會發現剛才貼上的圖片被放進了「Media」這個資料夾裡面(見上圖的紫色框框);而檢視原始碼,則會發現這張圖片的檔名跟內部連結一樣,被雙中括弧包起來,只不過前面多了一個驚嘆號 !,這就是「在這裡嵌入這個檔案」的意思。

最棒的是,這些要素都能正確地被Obsidian to Anki轉入Anki,因此我們的Anki卡片能夠圖文並茂!

補充:貼上圖片的存放位置設定。

如下圖,打開設定的「Files & Links」,可以設定要把附加檔案放在哪裡,demo vault提供的設定是把所有附加檔案都放在一個叫做「Media」的資料夾裡面。可以根據自己的需求更改設定。

附加檔案的存放位置設定。

核心插件(Core Plugin)與快捷鍵設定

(一)打開Templates插件:點選1. 左下角的齒輪打開設定頁面,進入2. Core Plugin,然後確認3. Templates這個插件是打開的。(如果是下載demo vault來使用,應該會是已經開啟的狀態)

開啟core plugin — Templates

Templates這個插件的功能如其名,是讓我們可以指定一些檔案為模版,在任意位置中插入該檔案的內容。

(二)指定Templates資料夾:點選Templates旁邊的小齒輪,進入插件自身的設定,可以看到 Template Folder Location 這個選項,後面會指定一個資料夾路徑,這裡已經設定為一個名為「Template」的資料夾。也就是說,所有被放在「Template」資料夾中的檔案都會被視為模版,可以隨時叫出來插入到其他地方。

Template Folder Location設定

(三)接著,要設定插入模版使用的快捷鍵。同樣從設定頁面,點選「Hotkeys」,在上面的搜尋框中搜尋「Template」,然後修改「insert template」的快捷鍵。點選旁邊的「+」符號,然後在鍵盤上按想要設定的快捷鍵即可。在這裡我是設定成 option + L

Templates 快捷鍵設定

如此就完成了設定,接著可以測試一下。

創建一個新筆記(按新增按鈕,或使用快捷鍵command/ctrl + N),把游標放在筆記內文區,按下剛才設定的快捷鍵,就會跳出視窗讓你選擇模版,選擇想要套用的模版檔名後,就可以看到該檔案中的內容已經被插入在剛才游標所放置的位置了。

以上Obsidian基本的準備已經完成,接著要進入Obsidian to Anki的設定。

Anki端的設定(Anki模版分享)

  1. 打開Anki,開啟到想要使用的個人檔案。
  2. 安裝「Anki Connect」這個Add-on:點選 Tools > Add-ons > Get Add-ons,並輸入代碼 2055492159 即可。
  3. 選擇Tool > Add-ons > Get Add-ons
  4. 輸入代碼 2055492159,按OK
  5. 修改「Anki Connect」的設定:點選,Tools > Add-ons > Anki Connect > Config,把程式碼修改成如下所示:
{
"apiKey": null,
"apiLogPath": null,
"ignoreOriginList": [],
"webBindAddress": "127.0.0.1",
"webBindPort": 8765,
"webCorsOriginList": [
"http://localhost",
"app://obsidian.md"
]
}
  • 接著,重新啟動Anki以套用設定。
  • 下載我所提供的Anki模版「9Qs」,輸入到Anki中。

「Obsidian to Anki」插件設定

初始設定

  1. 打開設定 > Community Plugins > Browse,搜尋並安裝「Obsidian to Anki」
  2. 在Anki開啟,並打開要使用的個人檔案的狀態下,回到Obsidian的Community Plugins頁面,啟動「Obsidian to Anki」(把旁邊的開關點成開啟狀態即可)

接著,會看到畫面右上角跑出一些提示訊息,最後看到「All done」之類的成功訊息跑出來以後,就代表初始設定已經完成,Obsidian跟Anki被連結起來了。

Note Type Table設定

接著要進入「Obsidian to Anki」本身的設定(1),首先會看到最上面有Note Type Table這行字(2),點擊後可以展開,得到下圖所示的表格。

  • 這個表格的橫列會顯示出你的Anki設定檔中的所有Note Type,如果已經匯入我提供的Anki模版,應該就會看到「9Qs」這個Note Type
  • 而三個直欄則是三種設定項目,其中「Custom Regexp」是這次不會用到的欄位,可以留空不管,
  • 剩下的是「File Link Field」和「Context Field」(3),點開下拉選單,會看見該Note Type的所有欄位,把Note Type 「9Qs」的設定更改如下:
  • 「File Link Field」設定為「Obsidian Link」,
  • 「Context Field」設定為「Context」

接著在同樣頁面往下滑,看其他設定。

「Syntax Settings」、「Folders Settings」都維持預設即可,不必修改。

「Default」部分則要做一點修改

  • Tag:幫所有經由Obsidian to Anki產生的Anki卡加上標籤。我再這裡是設定加上一個「Obsidian_to_Anki」標籤。如此一來在Anki端可以快速地過濾出所有來自Obsidian的卡片。
  • Deck: Obsidian to Anki產生的卡片會預設被加入這個排組。我這裡是設定加入「Default」排組
  • 將「Add File Link」、「Add Context」、「ID comments」這三個功能打開。

嘗試產生第一張卡片

完成上述設定之後,可以開始新增卡片了!首先要在Obsidian中建立可供轉換的筆記。

「Obsidian to Anki」將筆記填入Anki的邏輯

「Obsidian to Anki」將筆記填入Anki的標準格式是這個樣子:

START
{Note Type名稱}
{欄位名1}: 要填在欄位1中的內容
換行以後的內容
也都會被填在欄位1裡面
{欄位名2}:{欄位名n}:END

相當簡單,在「START」與「END」包起來的範圍之中,先指定要使用的Note Type,接著依序指定欄位名與想填入的內容即可。

因此,在應用我的多問一答9Qs Anki Note Type時,相對應的Obsidian template會是這個樣子:

START
9Qs
title:
content:
Q1:
A1:
END

「9Qs」模版欄位說明:

必填欄位:

  • title:筆記標題。這個欄位在Anki中被設定為筆記的識別欄位,所以不能和同一個Note type中的其他則筆記狀標題喔。這個欄位如果留空白的話這則Anki筆記就不會被產生。
  • content:筆記內容。全都放在這裡。可以有好幾行,支援所有基本markdown的排版,也可以插入圖片、表格、超連結網址。
  • Q1 ~ Q9:題目的題幹。填幾個這則筆記就會產生幾張卡片
  • A1 ~ A9:相對應的答案。

選用欄位:

  • t1 ~ t9 :如果需要考拼字(語言學習類的筆記等等)、一字不差的簡答題的話,可以選用這個欄位。
  • source url:在這裡填入來源網址的話,會以超連結的形式顯示在卡面上

由「Obsidian to Anki」自動產生與填入的欄位:

  • Obsidian link:通往該則筆記的超連結。會顯示在卡面上(卡片最下方),點擊就可以從Anki跳轉回Obsidian,察看該則筆記
  • Context:該筆記的上下文:file path與headings。會顯示在卡面上(卡片最下方)。
  • 上述這兩個欄位,就是我們在前面準備過程中在Note Type Table所設定的「File Link Field 」與「Context Field」。只要設定中的「Add File Link」、「Add Context」有打開,Obsidian to Anki就會自動產生資訊填入這些欄位。

根據上述欄位與筆記格式設定,產出的卡片會像這個樣子(以demo vault中的蘋果單字卡為例):

9Qs Note Type圖解

點擊「scan vault」將Obsidian筆記轉入Anki

點選Obsidian最左側工具列上的Anki標誌,就會掃描整個Obsidian筆記庫,將所有符合「Obsidian to Anki」標準格式的筆記內容都轉入Anki之中。

點擊「scan vault」將Obsidian筆記轉入Anki

新增完成以後(會在右上角得到「All done!」一類的提示訊息),就可以在Anki的預設牌組中看到新卡片了!

如果是使用我提供的demo vault的話,應該會看到Anki中產生了兩則Note(各有兩張Card,一共是四張Card),如下圖所示。

從OtA demo vault進行「scan vault」所得的Anki卡片

成功被轉入Anki的文字段落會得到一個Obsidian to Anki ID

在按下「scan vault」按鈕將筆記轉入Anki以後,會發現筆記中「END」的前面會多出一行文字,如下圖所示:

這是由Obsidian to Anki所產生的ID,用來識別、對應Obsidian跟Anki中的筆記。當這段文字的內容有更新時,Obsidian to Anki會根據這個ID去尋找正確的Anki Note進行更新。也就是說,之後不管怎麼針對筆記內容作修改(改title也沒有關係),只要不要不小心更動到ID,都能夠被正確地更新到同一則Anki筆記,也不會影響到個別Anki卡的複習排程。

另外,標示ID的這行字被包在一個 <!----> 之間,是HTML的comment格式,因此在「Reading View」中是不會被顯示的。

總結

總結一次整個Obsidian to Anki的工作流程如下:

A 初次設定(只需設定一次):

  • 安裝Anki connect
  • 安裝、啟動Obsidian to Anki
  • Obsidian to Anki設定:Note Type Table中設定「File Link」與「Context」的填入欄位
  • Obsidian to Anki設定:打開default設定中的「Add File Link」與「Add Context」功能。

B 工作循環

一、在Obsidian中新增筆記

  • 插入「to Anki template」
  • 將主要筆記內容寫在content:之後。
  • 給與筆記標題 title:

TIPS:如果這個筆記只是先寫起來,還沒想好要出什麼題目,可以先不給title,如此一來這則筆記就還不會被轉入Anki。

  • 針對筆記內容出題,依次填在Q1-Q9A1-A9t1-t9

二、在同時開啟Anki(到要使用的設定檔)與Obsidian的狀況下,按下工具列上的「scan vault」按鈕。

三、每次對筆記有所修改後,也再次按下「scan vault」將更動同步到Anki。

補充:自動「scan vault」設定

如果懶得每次更動之後手動按「scan vault」也可以在設定中將「scheduling interval」的功能打開,比如這裡設定成「30」,就是每隔30分鐘會自動執行一次「scan vault」的動作。

以上,就是我結合Obsidian與Anki,建立一個完整的「筆記資料庫」x「複習引擎」的工作流程。

謝謝你的閱讀!

--

--