最近我給自己安排了一個很有意思的專案:把家裡一台沒在用的低階 AMD 筆電重新利用起來,部署一套名為 OpenClaw 的 AI 助理系統(我幫它取名為「小龍蝦」),並讓它與家裡的 Synology NAS 以及 Blogger 進行深度串接。
這台老筆電雖然規格平平、效能低階,但跑起來其實非常安靜,完全沒有想像中老機器狂轉的喧囂。更重要的是,它耗電極低,還自帶電池當作不間斷電源(UPS),成了最完美的 24 小時邊緣伺服器。這篇文章將完整紀錄我們從系統初始配對、網路權限對決、NAS 媒體庫整理,到最終打通 Blogger 自動發文的完整過程與踩坑心得。
---一、 起點與命名:誕生在 Gateway 裡的數位夥伴
開局第一步,是讓 AI 系統在 OpenClaw Gateway 環境中初始化。在確認了底層模型運行正常後,我為它定名為「小龍蝦」,並設定了清醒、直接、俐落且帶有溫度的溝通基調。
為了確保未來的協作效率,我們建立了結構化的互動規範:結論先行(TL;DR)、極簡精準、拒絕無意義的客套,並在面對複雜問題時直接提供 2~3 個帶有成本分析的方案。這為後續幾個小時高強度的除錯打下了非常好的基礎。
---二、 跨平台連線踩坑:Discord 頻道與配對授權
為了能在手機上隨時隨地召喚助手,我們開始串接 Discord 頻道。這一段過程看似簡單,實則藏滿了細節坑:
1. 憑證與 Token 驗證陷阱
一開始在設定 Discord Bot Token 時,我們遭遇了連線拒絕(401 Unauthorized)。經排查發現,複製憑證時如果夾帶了遮蔽字元或格式不全,系統會直接無效化。此外,必須在 Discord Developer Portal 中明確開啟 MESSAGE CONTENT INTENT,否則機器人即使連上線也無法讀取文字訊息。
2. 伺服器與配對機制(Pairing Mode)
Discord 機器人無法直接對陌生用戶發起私訊,必須確保機器人與用戶處於同一個伺服器內。建立伺服器並邀請 Bot 加入後,第一次私訊會觸發 OpenClaw 的安全機制——Pairing Mode(配對模式)。Bot 會在私訊中傳送一組一次性的驗證碼(例如 2JOVXL3S),必須由管理員在後端執行 openclaw pairing approve 完成授權,雙方的直連管道才算真正打通。
三、 NAS 媒體庫自動化整理:從 SSH 阻擋到 WebDAV 突破
連線打通後,我給小龍蝦的第一個重頭戲任務是:盤點並整理 NAS 上的影片資料庫。要求將所有散落的影片統一歸位到獨立資料夾,資料夾與檔名一律採用 中文片名 English Title (年份),並標註解析度規格,同時處理簡繁字幕與垃圾清理。
1. SSH 存取限制與 402 權限迷局
起初我們嘗試透過 SSH 或 Synology API 進行操作,但系統不斷回傳 402 Permission Denied。經過深度排查,發現 Synology DSM 7 有兩個獨特的防護機制:
- SSH 權限隔離:DSM 預設僅允許
administrators管理員群組成員走 SSH,一般使用者帳號即使密碼正確也會被拒絕。 - API 登入機制差異:單純呼叫
auth.cgi常會因為安全性原則被判定權限不足。
2. 終極解法:WebDAV + Web Session 雙軌突破
既然限制在於 API 驗證,我們採取了更聰明的做法:
- Web Session 模擬:透過
webman/login.cgi模擬瀏覽器登入取得 Cookie,成功繞過 API 驗證限制。 - WebDAV 檔案操作:在 NAS 上開通 WebDAV 服務(HTTPS 5006 連接埠),透過 Basic Auth 與原生的 PROPFIND、MKCOL、MOVE、DELETE 請求進行遠端控制。這不需要管理員權限,一般帳號即可順暢運作。
3. 自動化整理與精準比對
打通 WebDAV 後,小龍蝦執行了自動化指令:
- 真實規格解析:不靠檔名猜測,而是直接讀取影片的檔頭標頭(Header)與 track 資訊,自動在檔名加上解析度。
- 廢棄檔案清理:自動清理了 30 多個垃圾檔(如
Thumbs.db、jpg等)。
四、 部落格自動化發布:Google OAuth 2.0 踩坑記
最後一個關卡,是讓小龍蝦能自動將寫好的文章發布到 Blogger。
1. OOB 流程廢除與憑證遮蔽
在設定 Google Cloud Console 時,我們遇到了兩個大坑:
- Google 已全面廢除舊版的
urn:ietf:wg:oauth:2.0:oob(Out-of-Band)授權流程,點擊會直接跳出400 invalid_request錯誤。必須將應用程式類型設定為「桌面應用程式 (Desktop app)」,並使用http://localhost作為重新導向 URI。 - 在聊天介面傳送 Client Secret 時,中間字元常會被前端遮蔽(變成
GOCSPX...xxxx),導致後端 Token 交換時跳出invalid_client。最後我們直接上傳原生的client_secret_xxx.json憑證檔案,讓後端腳本直接讀取 JSON,成功解決了字元遮蔽問題。
2. 取得 Refresh Token 與全自動 API 發文
拿到正確的 Client ID 與 Secret 後,透過標準的 OAuth 2.0 授權碼(Authorization Code)順利換取了長效的 refresh_token。現在,助理隨時可以透過背景腳本向 https://www.googleapis.com/blogger/v3/blogs/{blogId}/posts/ 發送 POST 請求,做到真正的全自動排版與發文。
五、 實戰心得與總結
這趟折騰下來,最棒的體會是:不用盲目追求昂貴的高配硬體或雲端大模型。一台閒置的舊 AMD 筆電,只要搭配適當的架構(OpenClaw Gateway)、正確的網路協定(WebDAV、OAuth 2.0),就能變成一個功能極其強大、反應迅速且完全專屬於你的自動化管家。
從最初的連線報錯,到最後看著它順利幫我盤點完幾十 GB 的資料庫、自動發布文章,這種「把雜亂系統調教得井井有條」的過程,正是 DIY 自動化最迷人的地方。 🪶
留言
張貼留言