無論您是進行交易,或只是持有以美元計價的資產,您應該都已熟悉這個流程:FOMC 決策、CPI 數據與 NFP 發布在幾秒內就能帶動市場,而您唯一能收到的警告,就是您碰巧開著的那個分頁。這篇文章將帶您建立一個小型 n8n 工作流程,每早輪詢經濟日曆,並將高影響力的美元事件直接推送到 Telegram。總建置時間約 15 分鐘,免費方案下總成本為 $0。
手動查閱 ForexFactory 的問題
ForexFactory 的日曆是零售交易者的事實標準,但它是為人類而非機器設計的:
- 沒有官方 API。 日曆以 HTML 渲染,時區處理在客戶端完成。雖然有非官方的每週 XML 摘要,但解析度粗略、會快取,且過去曾無預警中斷。
- 手動查閱無法擴展。 您可能連續一週都勤勞查閱,卻因為某天沒看而錯過了那一次重要的 CPI 發布。
- 自行爬取很麻煩。 該網站使用 Cloudflare、依賴 session 的時區 cookie,且標記經常變動,天真的爬蟲需要經常維護。
您可以付費訂閱商業經濟日曆 API——大多數提供預測/前值資料的方案每月約需 $30–100。如果您只想要「有大事發生時通知我」,這就太過頭了。
這個 Actor
先聲明:我建立了本教學使用的 Actor,請自行斟酌參考。
economic-calendar-pro 是一個 Apify Actor,負責爬取 ForexFactory 日曆並回傳乾淨的 JSON。它處理了麻煩的部分(時區、session cookie、標記偏移),並提供貨幣與影響力等級的篩選,以及選用的 webhook 通知。每個事件輸出格式如下:
{
"title": "CPI m/m",
"country": "USD",
"currency": "USD",
"impact": "High",
"date_utc": "2026-08-12T12:30:00Z",
"forecast": "0.2%",
"previous": "0.3%",
"actual": "",
"week": "this",
"source": "forexfactory"
}
進入全螢幕模式 離開全螢幕模式
因為它在 Apify 上執行,您無需自行託管——只要呼叫一個 HTTP 端點,就能同步取得資料集項目。
我們要建立的內容
排程(平日 07:00)
→ HTTP Request(執行 actor,取得本週高影響力美元事件)
→ Filter(雙重保險:impact == high, currency == USD)
→ Telegram(每個事件一則訊息)
進入全螢幕模式 離開全螢幕模式
若沒有符合條件的事件,篩選器會捨棄所有項目,不會發送任何訊息。平靜的日子就保持平靜。
先決條件
- 一台 n8n 實例(雲端或自架——
docker run -p 5678:5678 n8nio/n8n即可) - 一個免費的 Apify 帳戶——請從 設定 → 整合 取得 API token
- 一個 Telegram bot:傳訊息給 @BotFather,輸入
/newbot,儲存 token。接著傳訊息給您的 bot,並從https://api.telegram.org/bot<TOKEN>/getUpdates取得 chat ID
步驟 1:排程觸發器
加入一個 Schedule Trigger 節點,將其切換為 cron 運算式:
0 7 * * 1-5
進入全螢幕模式 離開全螢幕模式
這代表每個平日 07:00 觸發,會比 08:30 ET 的發布(CPI、NFP)以及下午的 FOMC 聲明都早。請在 n8n 設定中設定實例時區(若尚未設定)——cron 會以實例時間執行。
步驟 2:以 HTTP Request 節點呼叫 actor
加入一個 HTTP Request 節點(typeVersion 4.x):
- 方法: POST
- URL:
https://api.apify.com/v2/acts/ichigowa~economic-calendar-pro/run-sync-get-dataset-items
進入全螢幕模式 離開全螢幕模式
- 標頭:
Authorization: Bearer YOUR_APIFY_TOKEN
Content-Type: application/json
進入全螢幕模式 離開全螢幕模式
- Body (JSON):
{
"weeks": ["this"],
"currencies": ["USD"],
"impacts": ["High"]
}
進入全螢幕模式 離開全螢幕模式
run-sync-get-dataset-items 端點在此處最實用:它會啟動 actor、等待其完成,並直接在回應本文中回傳資料集項目。無需輪詢執行狀態,也無需第二次請求即可取得結果。請將節點逾時時間調高至約 120 秒,因為冷啟動的 actor 可能需要 30–60 秒。
點擊 執行步驟。在有 CPI 發布的日子,您會收到類似以下的結果:
[
{
"title": "CPI m/m",
"currency": "USD",
"impact": "High",
"date_utc": "2026-08-12T12:30:00Z",
"forecast": "0.2%",
"previous": "0.3%"
},
{
"title": "Core CPI m/m",
"currency": "USD",
"impact": "High",
"date_utc": "2026-08-12T12:30:00Z",
"forecast": "0.3%",
"previous": "0.3%"
}
]
進入全螢幕模式 離開全螢幕模式
n8n 會自動將陣列拆成每個事件一個項目,這正是我們在後續步驟需要的格式。
步驟 3:Filter(雙重保險)
Actor 已在伺服器端完成篩選,但我還是建議在此加入一個 Filter 節點——如果之後您將 actor 輸入擴大到所有貨幣,卻忘記這個工作流程會推送到 Telegram,這能保護您。兩個條件以 AND 結合:
-
{{ $json.impact }}等於High -
{{ $json.currency }}等於USD
零成本的保險。
步驟 4:Telegram 訊息
加入一個 Telegram 節點,操作選擇 Send Message,使用您先前建立的 bot 憑證。設定 chat ID,啟用 Markdown 解析模式,並使用以下範本:
🔔 *{{ $json.title }}*
Currency: {{ $json.currency }} | Impact: {{ $json.impact }}
Time (UTC): {{ $json.date_utc }}
Forecast: {{ $json.forecast || 'n/a' }} | Previous: {{ $json.previous || 'n/a' }}
進入全螢幕模式 離開全螢幕模式
因為篩選器會為每個事件輸出一個項目,您會收到每事件一則訊息。在 FOMC 發布日,通常會收到兩到三則訊息(利率決策、聲明、記者會);大多數日子則是零或一則。
執行
先手動執行整個工作流程一次以確認無誤,然後將其切換為 Active。Telegram 範例輸出:
🔔 Consumer Price Index (CPI) m/m
Currency: USD | Impact: High
Time (UTC): 2026-08-12T12:30:00Z
Forecast: 0.2% | Previous: 0.3%
成本分析
- n8n: 自架免費;雲端方案起價約 €20/月,但這個工作流程適用於任何等級。
- Apify: 免費方案每月提供 $5 平台額度。這個 actor 每天執行一次只需幾分錢——平日早上的排程完全在免費額度內。無需信用卡。
- Telegram: 免費。
疑難排解
使用此設定時,我曾見過幾個常見的失敗情境:
-
Apify 回傳 HTTP 401。 標頭必須寫成
Authorization: Bearer apify_api_xxx...——常見錯誤是貼上 token 時忘了加Bearer前綴,或是使用了帳戶密碼而非 API token。 -
HTTP 408 / sync 端點逾時。
run-sync-get-dataset-items最長等待 300 秒。若 actor 執行時間超過 HTTP 節點逾時時間,請先調高節點逾時時間;actor 本身很少超過一分鐘。 -
預期有事件卻回傳空陣列。
weeks參數會抓取整個日曆週("this"、"next"、"last"),空結果通常代表您的篩選條件過嚴——例如在只有中影響力美元事件的週次設定impacts: ["High"]。影響力值需大寫:High、Medium、Low、Holiday。 -
Telegram 沒有發送訊息,也沒有錯誤。 通常是 bot 尚未先收到訊息(bot 無法主動發起對話),或是 chat ID 是缺少前導
-的群組 ID。 - 編輯後出現重複通知。 若重新啟用工作流程,n8n 可能會視設定執行補發;若收到半夜 2 點的意外訊息,請檢查 Workflow Settings → Timezone/Execution。
值得嘗試的變化
-
更廣泛的監控: 設定
"currencies": ["USD", "EUR", "GBP"]並移除篩選器的貨幣條件。 -
同小時提醒: 加入第二個每 30 分鐘執行的排程,以及類似
{{ $json.date_utc }}在下一小時內的篩選條件,讓您在發布前收到提醒,而非只在早餐時收到。 - 不同通知管道: 將 Telegram 節點換成 Discord/Slack——actor 輸出不會改變。
- 推播而非輪詢: actor 原生支援 webhook 通知,若您想跳過排程,可直接使用 n8n Webhook trigger。
連結
- Actor:apify.com/ichigowa/economic-calendar-pro
- 此工作流程的現成範本(可透過 Workflow → Import from File 匯入):
fomc-cpi-telegram-alert.json,位於 apify-datafeeds 儲存庫。
若有疑問或遇到邊緣案例,歡迎在留言區提出——此 actor 持續維護,問題回報確實有幫助。
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.