Obs165|用Copilot (ChatGPT)與Yanki產生Anki的注音閃卡

簡睿學堂
12粉絲
1 次觀看·2024年8月24日
產生了多個英文的Anki閃卡後,這次來生成國文的注音閃卡,使用到的外掛是:
1. Copilot: 調用ChatGPT生成卡片格式與注音
2. Note Splitter: 依指定的分隔文字將一則筆記產生成多則筆記
3. Yanki: 將產生的多則筆記同步到Anki系統
在影片後段說明了模板與腳本的操作原理。
💡 解說文章: https://jdev.tw/blog/8494/
💡 相關鏈接
✅Copilot: https://github.com/logancyang/obsidian-copilot
✅Note Splitter plugin: https://github.com/decaf-dev/obsidian-note-splitter
✅Yanki plugin: https://github.com/kitschpatrol/yanki-obsidian
✅ 模板範例: https://gist.github.com/emisjerry/eaada7ec56f8ceba24f74490049e645f
════════════════════
✔️ Blog 簡睿隨筆: https://jdev.tw/blog/
💡簡睿學堂熱門播放清單
✅ Obsidian.md與筆記方法: https://ytube.io/3sOc
✅ AutoHotkey教學: https://ytube.io/3sOd
✅ Windows/跨平台軟體介紹: https://ytube.io/3sOe
大家好,這支影片還是繼續使用
Yanki這個外掛來產生跟Anki相關的閃卡
同樣也是使用下面這三個外掛
首先就是用Copilot來產生需要的卡片格式跟中文的注音
再用Note Splitter把ChatGPT產生好的筆記內容
給拆成許多則的筆記
最後再透過Yanki外掛把這些筆記同步到Anki系統
最後就可以形成與國文注音相關的閃卡
以下我們就來看一下整個操作的程序
首先使用下面這個Prompt來生成需要的筆記內容
在這個Prompt裏面,首先定義了11行的格式
這11行就是我們要產生出來的筆記的格式
首先第一行就是完整的一個文字的內容
但是要把雙引號轉成中文的引號
在%BEGIN%跟%END%裏面會放入需要產生的中文
接着第二行到第五行就是Yanki的格式
它會形成一個含了反向卡片的基本型的筆記
第六行就是問題的答案
首先就是要把注音給生成出來
因爲有時候ChatGPT會把聲調給忽略掉
因此在這一邊就特別來指示ChatGPT不可以省略聲調的符號
第七行、第八行、第九行這三行就會形成Extra欄位
也就是反向卡片裏面的第三個欄位
最後在第四行就輸出整個完整的文字
也就是像"釐"清這個字會把雙引號給拿掉
一個完整的文字會放在Extra這個欄位裏面
這個時候就可以透過AwesomeTTS來對第三段來做播音
第十一行就是每一個問題中間的分隔字元
是用三個井號當做分隔的字元
只要有這樣子的一個Prompt以後
就可以讓ChatGPT生成我們需要的這些問題跟答案了
先來整個操作一遍
首先先啓用Copilot外掛
它會跑到右邊側邊
把它移到中間的位置,這樣子內容比較大
接着把這個Prompt複製起來
然後整個把它複製到Copilot裏面
點擊【Send】
這個時候ChatGPT就根據我們的指示
開始來生成需要的內容了
生成完畢以後就直接點擊【Save As Note】
把剛剛生成的內容產生成一個新的筆記
這個就是生成好的筆記了
把原先 ai: 上面的內容整個都刪除掉
最後面它也多生成了三個倒引號
整個都把它刪除掉
這個就是我們要生成閃卡的內容
有了這個筆記的內容以後
就再透過Note Splitter
把這多則的筆記拆成一則一則的筆記
Note Splitter它會先產生在note-splitter這個資料夾裏面
就按下[Ctrl+P],在命令面板裏面輸入splitter
找到Split by delimiter,執行
這個時候它並沒有正確的執行
要看一下Note Splitter的設定
是不是它的分隔字元有被修改掉
輸入Splitter,找到Note Splitter進入它的選項
在這個地方分隔字元改成了 .
事實上我們會需要的是三個井字號
新版的Note Splitter增加了一個
是不是要把分隔字元也同樣輸出的選項
我們不需要
所以這個就把它給刪掉
設定好了以後再回到筆記這一邊
再重新執行一次Note Splitter的Split指令
這個時候已經做完了
可以看到note-splitter裏面就已經產生需要的內容了
像這個是"逛",然後它的注音
這是"遲"到,遲的注音, 聲調也有產生
接着再把note-splitter的這些檔案
複製到060-Anki的資料夾裏面
需要放到060-Anki的Chinese-7A-1這個資料夾
我們一樣透過Multi-Commander來做操作
左邊是Note Splitter的內容
右邊是Chinese-7A-1的內容
我們把這裏面的內容全選起來
按下搬移把內容全部搬移到右邊
這樣子Anki的資料夾裏面已經有檔案了
這個時候再回到Obsidian
再按[Ctrl+P]來執行Yanki
輸入yanki以後再執行它的Sync指令
右邊可以看到它就開始在做同步了
執行Yanki之前當然要確定Anki系統已經啓動
這個時候可以看到Chinese-7A-1
已經產生好新的卡片了
點擊【瀏覽】來看一下它的內容
比如說點擊了"謀"財害命
再點擊這個【預覽】
這個是正面,然後接着是它的背面
就把這個中文閃卡的內容給顯示出來了
要再做一個動作...
原先Anki的這個筆記類型是有做TTS播音的處理
但是我們目前剛剛看到的中文閃卡
並沒有出現播音的符號
這個我們必須要做一個特別的處理
可以從【工具】裏面找到【管理筆記類型】
因爲我們是使用這含了 反向卡片的筆記類型
所以要選擇 And reversed the card with extra
然後點擊【卡片】
在這個地方原先會有一個播音的符號
爲了讓中文不要出現播音的符號
因此在正面模板裏面就做了一個JavaScript的控制
首先就是使用{{#Extra}}來指示
如果Extra有內容的話
就使用英文來播放Extra這個欄位
如果Extra這個欄位沒有內容的話
就用Front來做播音
但是這兩個都是在英文的狀態才需要播音
中文是不需要的
所以就寫了一段JavaScript
來做這個播音符號的隱藏的動作
在script裏面透過兩個{{Deck}}來取得牌組的名稱
如果牌組的名稱是有Chinese這個字樣的話
我們就把上面的Front跟Extra這兩個
都把它給藏起來
這樣子播音符號就可以讓它消失了
所以在這邊先取得FRONT 的物件(元素)
然後把它的style裏面的display改成none
也就是把它隱藏起來
接着再去判斷EXTRA
如果Extra有成功的取到 也是一樣把它隱藏起來
這樣子在中文的閃卡里面
就不會看到播音的符號了
模板裏面的這整個內容
其實各位可以把它想像成:它就是一個網頁
這個網頁它是使用了表達式標籤(Expression Tag)的方法
來把Anki的欄位給鑲(嵌)入在這個網頁裏面
解說文章裏面有做比較多詳細的介紹
模板其實就是一個網頁
{{Front}}的欄位其實就像是PHP或是ASP
或是JSP裏面,Expression Tag的用法
所以在整個模板裏面
就可以用這樣子的方法
來直接取得牌組的名稱
然後也可以對它做JavaScript的控制
因爲它就像是JSP的網頁的操作
這個大括號其實就是
Anki的欄位直接鑲(嵌)入這個網頁裏面的
它在執行的時候就會動態的去取得目前的內容
就可以透過這樣子來做模板的控制了
今天就是又介紹了一個
國文的閃卡的製作的功能
主要還是在說明
模板的JavaScript它的整個操作的原理
希望對於大家在使用
Anki或者是Obsidian上能夠有幫助
如果你覺得我的介紹對於你的學習有幫助的話
請各位記得訂閱、按贊、分享
謝謝各位!
