[Obs#105] Obsidian外掛 Local REST API 提供外部整合服務
安裝並啟用了Local REST API外掛後,當Obsidian啟動後同時會啟用提供Local REST API服務的伺服器,本機的應用程式就可以對它送出下列HTTP請求:
- HTTPS請求:https://127.0.0.1:27124/
- HTTP請求:http://127.0.0.1:27123/
在這次的示範裡,我會先介紹設定步驟與當做本機應用程式的Chrome瀏覽器擴充Obsidian Web,最後再用AutoHotkey撰寫另一個應用程式,在不彈出Obsidian視窗的狀況下,將輸入的訊息直接寫入指定的筆記。
1. 設定準備
API Key與SSL金鑰都是在安裝時隨機產生。
- 到Local REST API外掛選項裡複製API Key到剪貼簿
- 點擊【download this certificate】鏈接或直接瀏覽 https://127.0.0.1:27124/obsidian-local-rest-api.crt 以取得外掛的自簽SSL憑證
2. 安裝SSL憑證
雙擊前一步驟下載的憑證檔 obsidian-local-rest-api.crt。
- 按完成
- 【您要安裝此憑證?】回答是
- 匯入執行成功
3. API檢視
開啟API說明文件並瀏覽,以了解提供有那些API可以使用。
4. 命令行測試
Windows cmd.exe裡用cUrl測試;Linux或macOS將 ^
改成 \
:
curl -X GET https://127.0.0.1:27124/vault/test.md ^
-H "accept: text/markdown" ^
-H "Authorization: Bearer 4c1f7a807f92a153944269bfd610571970a887b3952a9b2161b9cb98e9f8708a"
5. 網頁測試
6. Obsidian Web擴充選項
到Chrome線上應用程式商店安裝Obsidian Web並啟用
▼ 由網頁建立新的筆記
6.1. 模板能使用的變數
網頁模板變數 | 說明 |
---|---|
{{page.url}} | 網頁網址 |
{{page.title}} | 網頁標題 |
{{page.content}} | 網頁內容 |
{{page.selectedText}} | 選取文字 |
輔助模板變數 | 說明 |
---|---|
{{date}}、{{date "Format"}} | 系統日期時間 |
{{filename FIELD}} | FIELD是網頁模板變數 |
{{json FIELD}} | 加上雙引號 |
{{quote FIELD}} | 將指定變數開頭加上> |
{{uuid}} |
[!INFO] 模板引擎
Handlebars
6.2. Create new note
- PUT /vault/{{filename page.title}}.md
- Content:
---
page-title: {{json page.title}}
url: {{page.url}}
date: "{{date}}"
---
{{#if page.selectedText}}
{{quote page.selectedText}}
{{/if}}
- 說明
- {{json page.title}}: 網頁標題前後加上雙引號
- 如果有選取文字,將選取文字開頭加上
>
- 檔名可以用別的變數,例如
/vault/{{uuid}}.md
或/vault/{{date "yyyyMMdd-HHmmss"}}.md
6.3. Patch a note
搜尋符號的標題,將內容加在標 題的開頭或結尾處。
- PATCH /vault/檔名路徑.md
- HTTP Headers:
Content-Insertion-Position: beginning
Heading: 標題
Heading-Boundary: ::
- Content:
- {{date}} [{{page.title}}]({{page.url}})
6.4. Append to current daily note
- POST /periodic/daily/
- Content:
## 2. {{page.title}}
URL: {{page.url}}
{{#if page.selectedText}}
{{quote page.selectedText}}
{{/if}}
6.5. Capture page snapshot
- PUT /vault/{{filename page.title}}.md
- Content:
---
page-title: {{json page.title}}
url: {{page.url}}
date: "{{date}}"
---
{{#if page.selectedText}}
{{quote page.selectedText}}
---
{{/if}}{{page.content}}
6.6. Append to existing note
- POST (空值)
- Content:
## {{date}}
{{#if page.selectedText}}
{{quote page.selectedText}}
{{/if}}
[!WARNING] 注意❗
實測皆會接收到404錯誤。只能自行變更網址為POST /vault/{{filename page.title}}.md
7. AutoHotkey整合腳本
用AutoHotkey腳本在命令行直接產生訊息到指定的筆記。最簡單的方法是用Run執行cUrl.exe,下方腳本則是使用COM物件來調用。
/*
;; fleet.ahk "message"
;; Windows cmd.exe 多行分隔號用 ^
curl -X "POST" ^
"https://127.0.0.1:27124/vault/030-Inbox/fleet.md" ^
-H "accept: */*" ^
-H "Authorization: Bearer 4c1f7a807f92a153944269bfd610571970a887b3952a9b2161b9cb98e9f8708a" ^
-H "Content-Type: text/markdown" ^
-d "## This is my document something else here"
*/
#SingleInstance Force
MSG = %1%
if (MSG == "") {
MsgBox Please add message.
return
}
API_KEY := "4c1f7a807f92a153944269bfd610571970a887b3952a9b2161b9cb98e9f8708a"
URL := "https://127.0.0.1:27124/vault/030-Inbox/fleet.md"
;;TEXT := "# 測試筆記`n`nLocal REST API 測試`n" . "Time: " . A_HOUR . A_MIN . A_SEC
TEXT =
(
## %A_YYYY%:%A_MM%:%A_DD% %A_HOUR%:%A_MIN%:%A_SEC%
%MSG%
---
)
oHTTP := ComObjCreate("WinHttp.WinHttpRequest.5.1")
oHTTP.Open("POST", URL , False)
oHTTP.SetRequestHeader("Content-Type", "text/markdown")
oHTTP.SetRequestHeader("Authorization", "Bearer " . API_KEY)
oHTTP.Send(TEXT)
sResponse := oHTTP.ResponseText
if (sResponse == "") {
oHTTP.Open("GET", URL , False)
oHTTP.SetRequestHeader("Content-Type", "text/markdown")
oHTTP.SetRequestHeader("Authorization", "Bearer " . API_KEY)
oHTTP.Send()
sResponse := oHTTP.ResponseText
}
;; w=width, h=height, r=rows
Gui, Add, Edit, w400 h100 r10, % sResponse
Gui, Add, Edit, w400 h100 r10, % oHTTP.GetAllResponseHeaders
Gui, Show, AutoSize Center
return
GuiClose:
ExitApp
8. 相關鏈接
- Local REST API外掛GitHub coddingtonbear/obsidian-local-rest-api: Get, change, and otherwise interact with your notes in Obsidian via a REST API.
- Obsidian Web擴充 GitHub coddingtonbear/obsidian-web: Connect your web browser with your notes in Obsidian.
- Local Rest API for Obsidian: Interactive API Documentation
9. 教學影片
##
您可能也會有興趣的類似文章
- [Obs#85] 分享使用中與外觀有關的10個外掛 (0則留言, 2022/05/01)
- Obs140|Obsidian進階全文檢索與複製結果的外掛-Query Control、Better Search View、Float Search、Text Expand、File Cooker (0則留言, 2023/09/15)
- [Obs#96] Obsidian分頁調整: CSS樣式與外掛,讓分頁操作更簡便 (0則留言, 2022/09/10)
- [Obs#45] 軟體工程師必備的6個Obsidian外掛 (0則留言, 2021/08/13)
- [Obs#12] Obsidian v0.8.4~v0.8.9的新增功能 (0則留言, 2020/09/06)
- [Obs#86] 分享與編輯器相關的21個Obsidian外掛 (0則留言, 2022/05/08)
- [Obs#88] 綜合練習:快速設定的6種方法─使用8個Obsidian外掛 (0則留言, 2022/05/21)
- Obs152|終於能產生書籤與頁碼了!與PDF相關的外掛:Better Export PDF&PDF++ | 修訂 (0則留言, 2024/02/18)
- Obs157|用Copilot外掛使用本地AI模型服務-使用Ollama與LM Studio (0則留言, 2024/03/17)
- [Obs#56] 快速新增靈感/閃念筆記(Fleeting Note)的3種方法 (0則留言, 2021/10/10)
- [Obs#92] Obsidian彙編文章的簡單方法:2個外掛+1個CSS片段 (0則留言, 2022/07/16)
- Obs126|Obsidian 2023/04 7個新外掛介紹與評析 (0則留言, 2023/04/29)
- Obsidian 1.0新手教學—打造個人知識管理利器,專屬的第二大腦 (2022年) (4則留言, 2022/10/22)
- [Obs#31] 美化提示方塊的外掛:Admonitions和方便選用的AutoHotkey腳本 (0則留言, 2021/04/05)
- Obs154|Obsidian交互式表格!超強表格控制:視覺美化、分頁、排序、過濾、搜尋 (0則留言, 2024/03/02)
Sorry, 很久沒用Google sc…