我正在嘗試使用 n8n 和 Buffer 自動化向 Facebook、Instagram、X、YouTube 和 TikTok 發布社交媒體內容。我的原計畫是讀取本機檔案,將其同步到 Google Drive 以獲得公開網址,然後將該網址傳遞給 Buffer。但我無法使用 Google Drive 對 n8n 進行身份驗證,出現連線逾時錯誤。
錯誤:connect ETIMEDOUT 74.125.199.95:443
更多詳情
連線失敗。視窗現在可以關閉。
我懷疑這是由於來自中國大陸的網路限制??但我的所有其他東西執行得非常好。
我如何解決此連線問題,或者有沒有其他方法或變通方案可以實現相同的目標,即在不依賴 Google Drive 的情況下為 Buffer 取得影片網址?
@Aria
針對你所在地區,最穩定且最容易使用的替代方案是 Cloudflare R2。這是一個 S3 相容的物件儲存服務,通常更容易取得,並且提供直接產生公開 URL 的方式。
請按照以下指南操作:
1. 設定 Cloudflare R2
- 登入你的 Cloudflare 控制板 → R2 → Create Bucket。
- 為你的貯存桶命名(例如
social-media-assets)。
- 重要步驟: 前往貯存桶的 Settings → Public Access。
- 啟用 R2.dev 子網域(用於測試)或連結 自訂網域(建議用於生產環境)。這將提供你的基礎 URL(例如
https://pub-aaa.r2.dev 或 https://cdn.yourdomain.com)。
2. 設定 n8n S3 節點
由於 R2 使用 S3 協定,請在 n8n 中使用 S3 節點:
- 認證資訊: 建立 S3 認證。
- Access Key ID 和 Secret Access Key: 從 Cloudflare 中 R2 的「Manage R2 API Tokens」頁面取得這些。
- 端點: 使用你的 R2 S3 端點(例如
https://<accountid>.r2.cloudflarestorage.com)。
- 操作:
Upload a File。
- 貯存桶:
social-media-assets。
- 檔案內容: 傳遞來自你的本機檔案讀取節點的二進位資料。
3. 構建公開 URL
S3 節點會上傳檔案,但不會自動「返回」公開 URL。你可以使用 Set 節點或表達式輕鬆構建它:https://your-public-endpoint.com/{{ $json.key }}(其中 {{ $json.key }} 是 S3 節點返回的檔案名稱/路徑)。
4. 將 URL 傳遞給 Buffer
現在,使用 HTTP Request 節點呼叫 Buffer API:
- 方法:
POST
- URL:
https://api.bufferapp.com/1/updates/create.json
- Body (JSON):
{
"profile_ids": ["YOUR_PROFILE_ID"],
"text": "Your awesome caption!",
"media": {
"photo": "https://your-public-endpoint.com/video.mp4"
}
}
嘿 @Aria 那個逾時是防火牆的問題,不是 n8n 的問題。74.125.x.x 是 Google 的 IP 範圍,Google API(包括 Drive)在中國大陸被屏蔽。OAuth 視窗失敗是預期的。你的其他節點可以運作,因為它們沒有連接 Google。
kjooleng 的 R2 方案在架構上是合理的,但在你投入時間之前有一件值得澄清的事:Cloudflare 並不是繞過防火牆的可靠方法。Cloudflare IP 會根據省份和 ISP 被大防火牆節流和重置,而公開的 r2.dev 子域名特別有在中國大陸被屏蔽的歷史。如果你用 R2,要用自訂網域名,不要用 r2.dev。
但這才是對你的設置真正重要的部分。只有其中一個環節需要穿過防火牆:你的 n8n 虛擬主機上傳檔案。Buffer 從它在中國境外的伺服器拉取 URL,所以一個 URL 在中國被屏蔽不會影響 Buffer。這翻轉了問題。它不是「URL 在中國能否訪問」,而是「我的 n8n 實例能否連接到儲存端點進行上傳」。
所以在決定之前:
- 從你的 n8n 主機測試上傳端點。對於 R2,那是
curl -I https:// <accountid>.r2.cloudflarestorage.com。如果它卡住了,上傳也會卡住。
- 如果它很不穩定,就跳過這場戰鬥,改用中國本土物件儲存:阿里雲 OSS 或騰訊 COS。兩者都相容 S3,都給你一個 Buffer 可以拉取的公開 URL,都不依賴大防火牆條件每天保持穩定。對於在大陸運營的人來說,這通常是維護成本較低的方案。
不管怎樣都是同樣的模式:上傳檔案、構建公開 URL、傳給 Buffer。唯一的真實決定是你的 n8n 虛擬主機能可靠地連接到哪個儲存端點。
Mike
阿里雲 OSS 或騰訊 COS 是正確的方向,因為你在長城防火牆內,但在接入之前,也要從中國外部測試實際的 URL。有些區域 CDN 在本地看起來是公開的,但排程器的伺服器無法連接到它們,這只是把連接問題反過來了。
無論你選擇什麼存儲方案,當排程器取得它時,URL 必須保持公開且永不過期,而不是只在你 10 分鐘前測試時公開。簽署的 URL 在發佈前過期是一個非常常見的故障,看起來像是平台錯誤。
我在從 n8n 運行 blotato 時遇到了同樣的問題類別。根本原因是預覽/臨時 URL 而不是真正的公開檔案。一個有用的診斷方法是:媒體取得錯誤有時會顯示回應的第一個字符,所以「e」可能指向過期的 URL。如果 Google 雲端硬碟稍後恢復,請使用帶有檔案 ID 的 drive.usercontent.google.com/download 格式。普通的 /view 連結不適用於此。
感謝您讓我們知道這一點,我們已建立 CV-10 作為內部開發票證來進行調查。
我們已檢視此問題,但無法確認這是一個錯誤。目前我們已關閉內部工單,但如果它開始看起來像是一個錯誤,我們的審核團隊會再次標記。
kjooleng 的 Cloudflare R2 方法是正確的方向。如果你在中國內部運行自託管的 n8n,請注意以下幾點:
-
在中國外部託管 n8n:如果你的 n8n 實例在防火牆內,所有對 Google API(不僅僅是 Drive)的出站呼叫都會遇到相同的 ETIMEDOUT 錯誤。考慮在中國大陸以外的伺服器上部署 n8n(例如香港、新加坡地區),並從那裡排程工作流程。
-
影片 URL 的替代方案:如果你只需要一個公開 URL 來將影片傳遞給 Buffer,你也可以使用阿里巴巴雲 OSS (aliyuncs) 或騰訊 COS — 兩者在中國內部都很可靠,並支援預簽署/公開 URL。n8n S3 相容節點與兩者都相容。
-
Buffer API 說明:Buffer 接受直接的影片 URL,因此任何公開 CDN URL(R2、OSS、COS)只要可公開存取就都能運作。
嘿!你的懷疑完全正確。
IP 74.125.199.95 屬於 Google。connect ETIMEDOUT 錯誤表示你的 n8n 實例正在嘗試與 Google 的 API 伺服器進行 TCP 握手,但連線被網路防火牆完全斷開了(這對中國大陸的限制來說非常普遍)。
既然你的目標只是取得一個公開 URL 來傳遞給 Buffer,你有兩種方式可以解決:
選項 1:透過代理伺服器傳送 n8n 流量(如果你必須使用 Google Drive)
如果你有一個位於受限區域外的代理伺服器,可以強制 n8n 透過它路由流量。你需要在 n8n 的 docker-compose.yml 中新增這些環境變數:
environment:
- HTTP_PROXY=[http://your.proxy.server.ip](http://your.proxy.server.ip):port
- HTTPS_PROXY=[http://your.proxy.server.ip](http://your.proxy.server.ip):port
- NO_PROXY=localhost,127.0.0.1 # 至關重要,以免本機 n8n webhook 透過代理路由
選項 2:替代雲端儲存服務(強烈建議用於 Buffer)
如果設定代理伺服器太麻煩,最佳的解決方案是完全略過 Google,改用未被封鎖且更適合媒體處理的服務。
-
Cloudinary: 這老實說是社群媒體貼文的最佳選擇。它具有專用的 n8n 節點、通常不被普遍封鎖,並會自動為圖片/影片生成優化的公開 URL。(工作流程:讀取本機檔案 → Cloudinary 上傳 → 將 Cloudinary URL 傳遞給 Buffer)
-
AWS S3 / DigitalOcean Spaces / Bunny.net: 標準物件儲存。你可以在那裡上傳二進位檔案(在受限區域外託管儲存桶)並構建公開唯讀 URL 來發送給 Buffer。
改用 Cloudinary 或 S3 對於你的自動化社群媒體管道來說可能會更穩定,而不是與防火牆爭奪 Google Drive 的存取權。希望能幫到你!