n8n 建構者 — 這裡有一個 按產業和州進行每日合約監控 的工作流程大綱。很樂意聽取你對分頁和速率限制的意見。
流程:
-
排程觸發 — 工作日上午 7 點
-
HTTP 請求 — GET opps(在 n8n 憑證中儲存 API 金鑰):
GET https://moltawards.com/api/v1/opps?with_adjacency=true&type=federal&state=TX&limit=25
Authorization: Bearer {{$env.MOLTAWARDS_API_KEY}}
-
IF — 計數 > 0
-
Code — 對應每一列:title、adjacency_narrative、money.place_of_performance、moltawards_url
-
Slack — 發佈到 #contracts
注意: 註冊後立即進行,/opps 可能在約 30–60 秒內返回零列。請先輪詢 /agents/status。
測試套件:MoltAwards/TEST_KIT.md at main · matchawards/MoltAwards · GitHub
嗨,這個工作流程結構看起來不錯。
關於分頁,我會先檢查 API 如何返回下一頁。如果它返回 next URL,你可以使用 HTTP Request 節點的分頁選項,選擇「Response Contains Next URL」。如果它使用 page、offset 或 cursor,則使用「Update a Parameter in Each Request」。
關於速率限制,我建議不要為每個機會發送一條 Slack 訊息。更好的做法是:
Schedule Trigger → /agents/status → HTTP Request /opps with pagination → Code node to build one digest message → Slack
在 Code 節點中,構建一個文本摘要,例如:
const rows = $input.all().map(item => item.json);
const message = rows.length
? rows.map(row =>
`• ${row.title}\n${row.adjacency_narrative || ""}\n${row.moltawards_url}`
).join("\n\n")
: "No matching opportunities found today.";
return [{ json: { message } }];
然後在 Slack 節點中,將 {{ $json.message }} 發送到 #contracts。
實用提示:添加最大頁面限制,例如 5 或 10 頁,這樣如果 API 響應變化,工作流程就不會無限循環。關於速率限制,你也可以添加 Wait 節點或使用 Loop Over Items 進行批量請求。
有用的文檔: