我鍾意分享自己整嘅嘢。寫一篇網誌文章,然後仲要手動將佢複製貼上去做一條LinkedIn動態(寫文案、貼連結、撳分享),呢種細小又重複嘅雜務,做過四十次之後就會覺得煩。所以我將佢自動化咗。
諗法好簡單:喺呢度發佈一篇文章,幾秒之後佢就會以一條普通動態嘅形式出現喺我嘅LinkedIn個人頁,並帶埋一張指返去完整文章嘅連結預覽卡。唔使複製貼上,唔使重新打文案,亦唔使切換去第二個應用程式。
成個流程嘅樣
我喺homelab入面運行緊一部自行託管嘅自動化伺服器(n8n),成個流程係一串簡短嘅步驟:
- 觸發 — 每當呢個網站有新文章發佈就會觸發。
- 整理文章 — 攞標題、URL同簡短摘要,將佢哋整理成LinkedIn API真正需要嘅格式:動態內文,加埋豐富連結預覽用嘅欄位(標題、描述、來源URL)。
- 解析身份 — 向LinkedIn查詢我係邊個(我嘅會員ID),因為每條動態都必須歸屬去一個特定嘅作者URN。
- 發佈 — 將實際動態送去LinkedIn嘅API,以一條帶住文章式連結卡、指返去呢度嘅公開動態形式發出。
四個步驟,冇咩特別。真正花時間嘅唔係設計部分,而係要令LinkedIn嘅API肯合作。
麻煩出喺邊
LinkedIn嘅API係逐月發版嘅,每個版本只保證大約一年之後就會退役。呢個本身係合理嘅政策。問題係,我一開始用嗰個預製嘅LinkedIn整合組件,將版本號靜靜哋硬編碼喺代碼入面,冇任何從外部覆蓋佢嘅方法。由於嗰個版本已經過期,每次發佈請求都被以「不支援嘅版本」錯誤拒絕,點樣重新設定嗰個節點本身都冇用,因為bug根本唔喺我嘅設定入面,而係喺上游被寫死咗。
解決方法係徹底唔再信任嗰個預製嘅LinkedIn專用整合,改為手動直接對接LinkedIn嘅REST API,自己設定請求標頭,包括我真正想用嘅版本號。呢個解決咗版本問題,但又暴露咗第二個問題:我用嗰個LinkedIn專用憑證類型入面,一樣藏住一個過時版本號做隱藏預設值,靜靜哋覆蓋咗我明確設定嘅標頭。同一個bug疊咗兩層。
真正嘅修復方法係徹底繞開LinkedIn專用嘅工具,改用一個冇任何LinkedIn專屬假設嘅普通通用OAuth2憑證嚟進行身份驗證,手動設定LinkedIn真實嘅授權端點、權限範圍同令牌交換設定。一旦設定好,就再冇嘢被靜靜哋覆蓋,成個流程由頭到尾都行得通。
我想同過去嘅自己講
當一個專門為某個知名服務打造嘅整合組件,連「API版本唔啱」呢種基本問題都會栽跟頭嘅時候,嗰個打磨精緻嘅預製工具通常係隱藏緊一啲你睇唔到嘅假設。最快嘅解決方法往往係往底層再行一步:自己直接對接原始API,令每一個標頭同參數都清晰可見、完全喺你嘅掌控之中。
另一半嘅功夫就係純粹咁同一堆冇乜幫助嘅錯誤訊息死磕到底。呢度大部分嘅除錯工作就係睇懂簡短生硬嘅OAuth錯誤字串,提出一個假設,測試佢,然後重複。唔光鮮,但呢啲先係真實整合工作嘅大部分樣貌。
接下嚟
目前文案係我發文章嗰陣手寫嘅摘要。下一步迭代係令流程自己讀取文章全文,自動生成LinkedIn文案,咁樣發佈一篇文章就真正做到由頭到尾只需一個動作。等佢行得起之後我會再寫一篇講吓。