插件開發(fā):實現(xiàn) Obsidian 同步到 Hexo
近兩年一直使用 Obsidian 進(jìn)行最終文字的輸出,除了發(fā)公眾號,還會同步發(fā)布到博客中,博客使用的 hexo,現(xiàn)在發(fā)布博客的步驟是:
- 將文章標(biāo)題在翻譯軟件中翻譯為英文,并以橫線隔開每個單詞,作為 hexo 的文件名。
- vs code 打開 hexo 的代碼,執(zhí)行 hexo n '英文的文件名' 。
- 將 Obsidian 中的文章內(nèi)容復(fù)制到新創(chuàng)建的 md 文件中。
- 修改內(nèi)容最上方的 Front Matter 信息,例如:categories、tags、date 等。
- 執(zhí)行下面命令完成構(gòu)建和發(fā)布:
hexo g
hexo d
這個步驟還是有點繁瑣,所以經(jīng)常會忘記更新,忘記不是因為我懶,而是方式不是最優(yōu),最終影響到了執(zhí)行。平時工作也是同樣的道理,一件事情如果很繁瑣,不順利,就得停下來看看方法是不是用錯了。
最近在嘗試使用各類 AI 工具,就想著這個問題是可以寫個 Obsidian 的插件來減少工作量的,于是花了一個晚上搞定了。
使用的工具是 Windsurf,模型還是用的 Cloude 3.5 sonnet ,之所以沒用 DeepSeek,是因為通過這幾天的試用,感覺 Windsurf 對 Cloude 3.5 sonnet 的調(diào)教更優(yōu)一些(個人感覺)。
遵循一次性對話盡可能只讓 AI 完成一件事的原則,我先讓生成一個 Obsidian 插件的基礎(chǔ)文件,核心邏輯在 main.ts 文件中:
接著就按照我上面提到的步驟一步一步引導(dǎo) Windsurf 來完成開發(fā)。
- 獲取文章標(biāo)題調(diào)用翻譯 API 轉(zhuǎn)換為英文,并添加橫線隔開,翻譯 API 一開始使用的騰訊,幾輪下來還是存在問題,換成百度的翻譯 API 就運行成功了
- 將文章內(nèi)容復(fù)制到 hexo 的 _posts 目錄,獲取 Obsidian 文章中的 tag 和 categories,自動轉(zhuǎn)換為 hexo 需要的 Front Matter 格式
- 過程中如果遇到錯誤,可以打開 Obsidian->View->Toggle Developer Tools (和網(wǎng)頁的 F12 一樣),將錯誤信息提供,幾輪下來基本都能解決
代碼寫完,執(zhí)行 npm run build 進(jìn)行構(gòu)建,構(gòu)建完成后,會生成一個新的 main.js 文件,Obsidian 插件需要的是包含 main.js 在內(nèi)的三個文件,如下圖:
怎么安裝到 Obsidian,具體步驟也可以在 Windsurf 中詢問:
- 需要注意的是重新覆蓋了 main.js 文件后,需要重新加載插件(禁用后重新啟用)才能生效。
首次安裝后,在 Obsidian 的第三方插件中就可以看到自己開發(fā)的插件了:
因為使用了百度的翻譯、又要將文章內(nèi)容同步到 hexo 中,所以需要在插件的設(shè)置中配置相關(guān)參數(shù):
在文檔中點擊右鍵,菜單中選擇「Publish to Hexo」就可以完成發(fā)布了。發(fā)布按鈕可以放在以下位置,可以讓 Windsurf 根據(jù)需要自行選擇:
- 左側(cè)按鈕欄
- 頁面菜單項(Page Menu,也就是右上角的三個點菜單)
- 編輯器菜單項(Editor Menu,右鍵菜單)
- 命令面板(原有的位置,可以通過 Ctrl/Cmd + P 調(diào)出)
文章內(nèi)容同步到 hexo 后,在 hexo 的根目錄執(zhí)行 hexo g hexo d 便可發(fā)布了。
插件代碼已經(jīng)上傳到 Github,地址如下: