MUKI AI Summary
Zapier 自動化工具可將訂閱的 RSS 文章摘要,翻譯成中文後發佈到 Obsidian 的 Capture 資料夾。Zapier 使用 Webhook 解決不支援新增 markdown 文件的問題。需準備 Zapier.com、Ngrok.com 和 Obsidian 的 Local REST API 插件。
Zaps 流程包括接收 RSS、用 ChatGPT 摘要文章、翻譯標題、調整時間格式,並透過 Webhook 發佈到 Obsidian。需安裝 Ngrok 以曝光本機 API,讓 Zapier 連接。測試成功後,可在 Obsidian 資料夾看到檔案。免費版 Zapier 有限制,可能需考慮付費方案和主機服務。...
Zapier 自動化工具的厲害之處,相信大家都知道了,我其實不太需要自動化的情境應用,最近終於硬給我想到了一個使用情境 XXD,就是我想將我訂閱的 RSS 的文章摘要,翻譯成中文後發佈到 Obsidian 的 Capture 資料夾,幫助我整合文章。
其實 Zapier 還蠻好上手的,我也是昨天才剛接觸就已經把整個流程做好了。
唯一困難的地方,就是 Zapier 其實並不支援新增 markdown 文件,又或者有但我沒找到這個服務,總之我自己試了一圈,不管是在 Google Drive 或 Dropbox 新增檔案,最後我是用 Zapier 的 Webhook 解決,但中間的過程有點多,要準備的工具也不少,所以特地寫一篇文章記錄一下。
要準備的工具
我們用會到這些網站、服務與 Obsidian plugin
- Zapier.com:自動化工具
- Ngrok.com:將你本機的 API Sever 曝光,讓外網連得到。
- Local REST API:Obsidian 的 plugin,替 Obsidian 提供了 REST API。
我的 Zaps
這是我建的一個 Zaps,總共有 5 個 steps
前面提過,建立 Zapier 的自動化流程並不困難,所以這邊就快速紀錄每個 Steps
Steps1. 接收 RSS
使用的 APP:RSS by Zapier
▼ Event 選擇 New Items in Multiple Feeds,可以一次塞多個 Feeds,共用一個流程
Steps2. 用 ChatGPT 摘要文章
使用的 APP:ChatGPT
我的 Event 選的是 Conversation,可以設定比較多的參數,也能在 Actions 的 Assistant Instructions 寫比較完整的提示詞
以下是我用的提示詞,是從雷蒙三十的 Readwise Reader 更新:中文 AI 摘要、自訂 Ghostreader prompts 修改過來的:
用正體中文總結文章內容,不能超過 500 個中文字,每句話應該簡潔易讀;回覆時在中文和英文或數字之間,要有一個半形空白,例如:Apple 手機;3 個 AI 工具。 """ 標題:{{title}} {#- 下面的 if-else 邏輯檢查文檔的長度。如果文檔較長,它將使用關鍵句子以避免超出 GPT 提示窗口的限制。我們強烈建議除非您知道自己在做什麼,否則不要更改此設置。-#} {% if (document.content | count_tokens) > 2000 %} {{content}} {% else %} {{raw_content}} {% endif %} """ 在文章總結下方換行後,基於本文重點,請創建 3 個有關問題及其答案。每個問題應能幫助深入理解文章的關鍵概念,並加強對重點的印象。請注意,在問題的這一行上,使用粗體的 markdown 格式讓文字更顯眼,排版要遵守在中文和英文或數字之間,要有一個半形空白。 {#- 創建問答 -#} ** 問題 1:{# 基於重點內容構建的問題 #} ** 答案:{# 對應問題 1 的答案,應該包含對應的重點內容 #} ** 問題 2:{# 同上 #} ** 答案:{# 對應問題 2 的答案,應該包含對應的重點內容 #} ** 問題 3:{# 同上 #} ** 答案:{# 對應問題 3 的答案,應該包含對應的重點內容 #}
Step3. 翻譯標題
使用的 APP:Translate by Zapier
我會需要將標題翻譯成中文,是因為想將它做成 markdown 的檔名,這部分就見仁見智,你如果喜歡英文不一定要翻譯。不過假設要翻譯,可以試試 Translate by Zapier,我覺得他翻的就很棒了。
Step4. 調整時間格式
使用的 APP:Formatter by Zapier
▼ 我在 Obsidian 新增文件時,有一個固定的 yml 屬性叫做 created
我希望透過 Zapier 新增的文章,也能維持這個時間格式,所以可以先透過 Formatter by Zapier 幫我格式化。
▼ 我要轉換的是文章發佈的原始時間,另外 timezone 記得選你要的時區,不然預設是 UTC+0
Step5. 透過 Webhook 發佈到 Obsidian
最後一步,也是最重要的一步,我們要將前面整合好的內容透過 REST API 發佈到 Obsidian。
請先確認你已安裝了 Obsidian 的 Plugin:Local REST API
▼ 打開外掛會看到以下畫面,等等需要用到的資料,我有用紅框處標記起來
參考上圖,發現 HTTP API URL 是 http://127.0.0.1,這組 ip 是你的本機,其他人是無法使用這個網址連進來,就連 Zapier 也不行,所以我們要將這一整組網址 http://127.0.0.1:27123
透過 ngrok 暴露出去,讓 Zapier 可以使用。
安裝 ngrok 很簡單,有用 brew 更簡單:
brew install ngrok/ngrok/ngrok
使用 Windows 的朋友,也可以直接下載 ngrok.exe,打開後輸入指令就行了。
安裝好 ngrok 要先輸入 authtoken,可以從 ngrok 的 Your Authtoken 頁面取得,打開你的 terminal 或 ngrok.exe,輸入以下指令:
ngrok authtoken <你的token>
再輸入我們要曝光的網址與 port,因為網址預設為本機,所以在這裡只需要輸入 port 即可:
ngrok http 27123
▼ 成功後會出現以下畫面,請不要關閉視窗,你必須同時保持電腦與畫面打開的狀況下,Zapier 才能順利連到 Obsidian REST API
回到 Zapier,使用的 APP 工具為 Webhooks by Zapier,特別要注意的是,Event 要選 Custom Request 才能滿足我們的需求唷。
我要做的動作是新增文章,可以透過 Obsidian REST API 的 Swagger 文件,知道新增文章的 api url 是 /vault/{filename}
以及 method 為 put
,將他填在 Webhooks by Zapier 的 Actions 裡
▼ url 開頭就是剛剛透過 ngrok 的曝光網址:https://xxxxxx.ngrok-free.app。另外還有一個重要的設定,為了防止格式跑版,請將 Data Pass-Through 設為 false
▼ Data 欄位就是你的 Obsidian 筆記內容,照平常的格式撰寫即可
▼ Heasers 要填兩組資料,每一組都有兩個欄位要寫
第一組:
第一個欄位填寫 Authorization
,
第二個欄位填寫剛剛在 Obsidian REST API 外掛看到的 API Key,畫面如下
填寫的欄位內容為 Bearer <API key>
的格式,記得 Bearer 和你的 API key 中間要有一個空白,此外不需要換行。
# 假設 API key 為 43d3939203r203202032022 # 那欄位內容就會是: Bearer 43d3939203r203202032022
第二組:
第一個欄位寫 Content-Type
第二個欄位寫 text/markdown
▼ 完成後會跟下圖一樣。Headers 預設只有一組資料,你可以紅框處的「+」新增多組資料進行填寫
測試
最後來測試看看有沒有成功吧~,如果一切順利,你就能在自己的 Obsidian 資料夾裡看到檔案囉。
假設沒有成功,請先檢查以下步驟:
- ngrok 伺服器有沒有開啟
- API 網址有沒有寫錯
- Headers 的
Authorization
格式有沒有寫錯
通常都會是在 Webhook 這一端發生問題,但如果你有在 Zapier 進行測試,他都會給出詳細的錯誤訊息供你排查,根據錯誤訊息修正就可以了。
小結
這樣玩的最大缺點,應該就是燒錢.... 😂
Zapier 的免費版額度是 2 個 steps,而我是昨天新申請的帳號,有 14 天的 Pro 試用期,才能用到 5 個 steps,而處理文章還用到了 OpenAI 的 API key,也是燒燒燒。
此外還有 ngrok 服務,所以電腦要 24小時開機,如果不是固定 ip 的話,還要經常重設 ngrok,所以是麻煩加上麻煩 XD。
但如果這樣的自動化流程,對你的工作或生活有幫助,你也確定想要用的話,也許可以考慮付費 Zapier,並購買像 Linode 這樣的主機服務,就不用開著自己的電腦啦。