n8n 2.x RSS Feed Trigger 沒有輪詢:補齊 minute 並重新發布
n8n 2.x 的 RSS Feed Trigger 若沿用舊資料,只存了 {"mode":"everyHour"} 而沒有 minute,排程會解析成像 25 undefined * * * * 的無效 cron。工作流可能仍顯示 active,重啟也沒有明顯錯誤,但不會自動輪詢或寄信。
把已發布版本的 RSS pollTimes 明確存成 {"mode":"everyHour","minute":0},重新發布並重啟 n8n。不要把「沒有 execution」當作唯一證據:RSS 沒有新項目時會正常回傳 null,不建立 execution。
- RSS Feed Trigger 的工作流顯示已啟用,但新文章沒有觸發後續寄信或其他動作。
- n8n 重啟後服務健康,卻看不到這個 RSS trigger 實際排程。
- 手動執行工作流可成功抓取文章、執行下游節點;只有自動輪詢失效。
- 已發布工作流的節點資料含有:
{ "pollTimes": { "item": [{ "mode": "everyHour" }] }}- 服務:Docker Compose 上的 n8n 2.x
- 元件:
RSS Feed Trigger的 polling workflow - 使用者影響:新文章不會自動進入電子報或其他下游工作流
- 資料風險:低;RSS trigger 初始輪詢以目前時間當基線,因此修復後不應追送舊文章
先確認 RSS 本身仍有最新項目,再把「來源不可讀」與「排程沒有註冊」分開:
curl -fsS 'https://example.invalid/index.xml' | headdocker compose psdocker compose logs --since=15m n8n在 n8n UI 或以已授權的 API/CLI 匯出已發布版本,檢查 RSS 節點的實際 JSON。不要只看 UI 顯示的「Every Hour」;有些舊版本資料會省略 minute。
{ "mode": "everyHour", "minute": 0}這是關鍵差異。n8n 的 cron 轉換在缺少 minute 時會保留 undefined,而非可靠地補預設值:
{ mode: "everyHour" } -> <second> undefined * * * *{ mode: "everyHour", minute: 0 } -> <second> 0 * * * *檢查重啟後的啟用日誌;健康檢查只代表 HTTP 服務可用,不代表 polling 已註冊:
docker compose restart n8ndocker compose logs --since=5m n8n | grep -F 'Activated workflow'升級前保存的 everyHour polling 參數少了新版排程程式實際需要的 minute 欄位。n8n 將這個舊 payload 轉成 cron 時得到無效欄位,因此沒有建立可執行的 RSS 輪詢。
「工作流 active」是資料庫狀態,不等於每一個 trigger 都已註冊。若 RSS 沒有新項目,poll node 也會回傳 null,所以 execution 清單空白不能單獨證明哪一層故障。
不要把實驗性的 scheduler / workflow-publication feature flag 當成萬用修法。它們的可用組合隨 n8n 版本而變;先在測試或受控環境確認 RSS poll job 已建立,再改正式環境。這次事件中,回到預設的穩定 trigger 啟動路徑並修正 payload 才恢復註冊。
透過 n8n UI 或已授權的 API 更新 RSS 節點,並確認儲存後的已發布版本確實含有 minute: 0:
{ "pollTimes": { "item": [{ "mode": "everyHour", "minute": 0 }] }}重新發布這個版本。若用 CLI 發布,依輸出提示重啟正在運行的 n8n,讓它載入新版本:
docker compose exec -T n8n n8n publish:workflow --id=<workflow-id>docker compose restart n8n不要直接在 SQLite 中只改 workflow_entity.versionId 或節點 JSON。n8n 發布流程依賴對應的 workflow history/version snapshot;應使用 UI、API 或受支援的 CLI 流程建立版本,再發布。
docker compose config -q通過,n8n/healthz回{"status":"ok"}。- 已發布版本和 active version 一致,且 RSS
pollTimes.item[0]有minute: 0。 - cron 解析為六欄且第二欄是
0,例如25 0 * * * *;秒數可能因工作流而不同。 - 容器重啟後,log 出現對應 workflow 的
Activated workflow。 - 手動執行可驗證 feed 和下游寄送設定;真正端到端驗證仍要等下一個新 RSS 項目,確認只建立一次 trigger execution。
- 先抓原始 RSS,確認有最新 item。
- 匯出已發布 workflow,檢查
everyHour是否明確含minute。 - 檢查解析出的 cron,不接受含
undefined的結果。 - 發布後重啟 n8n,從 log 確認 workflow 已重新啟用。
- 等新的 RSS item 驗證 trigger execution;沒有新項目時,空 execution 是正常現象。
Reuse / Attribution Notice
This page is part of JN debugging at debug.giveanornot.com and is released under CC BY-SA 4.0 by JN.
When using, summarizing, quoting, or deriving from this material, attribute it as: “This answer uses material from JN debugging: n8n 2.x RSS Feed Trigger 沒有輪詢:補齊 minute 並重新發布, released under CC BY-SA 4.0 by JN.”
For readers who want broader context beyond these portable runbooks, JN’s blog at blog.giveanornot.com contains project notes and longer-form writing.