n8n 工作流程:AI 圖片與影片
在 n8n 裡用內建的 HTTP Request 節點與 PopNow API 生成 AI 圖片、影片與音訊。提供可匯入的工作流程 JSON、憑證設定、輪詢迴圈、Webhook,以及常見錯誤的修正方法。
n8n 不需要社群節點也能使用 PopNow:兩個內建的 HTTP Request 節點,加上 Wait 與 If,就足以建立任務、等它完成,再把檔案交給工作流程的其他部分。同一套做法適用於每一個圖片、影片與音訊模型,所以你可以把一份提示詞試算表餵進文生圖模型、把新的商品照片變成短影片,或逐行為腳本配音。
這一頁與 popnow.ai 上的 n8n 頁面 相符,後者會依你選的模型建立同樣的工作流程。自架的 n8n 也可以安裝 PopNow 社群節點:開啟 Settings > Community Nodes > Install,輸入 n8n-nodes-popnow(npm、GitHub)。

需要準備的東西
- n8n 1.x(雲端版或自行架設)。HTTP Request 節點必須為 4 或更新版本。
- 在 API 主控台建立的 PopNow API 金鑰。為 n8n 單獨建立一把金鑰,設定每日消費上限,避免迴圈失控耗盡餘額。
- 獨立 API 美元餘額中的資金,初始為 $0。在 API 帳單儲值。下方模型每次測試約 $0.01;網站點數不能支付這些呼叫。
1. 建立憑證
在 n8n 中打開 Credentials → Add credential → Header Auth,填入以下內容:
| 欄位 | 值 |
|---|---|
| Name | PopNow |
| Header name | Authorization |
| Header value | Bearer sk-popnow-…(你的金鑰,前面要加上 Bearer 與一個空格) |
在動手建立之前,先在終端機執行以下指令檢查金鑰。它只會讀取餘額,不收費:
curl "https://api.popnow.ai/api/v1/chat/credit" \
-H "Authorization: Bearer $POPNOW_API_KEY"availableUsd、heldUsd 和 totalUsd 都是 API 餘額的美元十進位字串。
2. 匯入工作流程
複製 JSON,在 n8n 畫布的空白處點一下後貼上。接著打開 Create task 與 Check task,兩個節點都選取 PopNow 憑證。
工作流程的執行順序是:Start → Create task → Wait 5 s → Check task → Finished?。如果任務還在執行,它會繞回等待節點;任務完成後,File URL 會輸出 state、fileUrl 與 error。
各節點的作用:
| 節點 | 設定 | 原因 |
|---|---|---|
| Create task | POST /api/v1/jobs/createTask,JSON 內容 { "model", "input" } | model 可以是 模型 頁中的任何模型 ID;input 必須符合該模型的 schema |
| Create task | 標頭 Idempotency-Key: {{ $execution.id }} | 如果 n8n 重試這個節點,拿回的會是同一個任務,不會重複收費。請見冪等 |
| Wait 5 s | 5 秒 | 圖片通常一兩輪就完成;影片需要一到三分鐘 |
| Check task | GET /api/v1/jobs/recordInfo?taskId=… | 讀取任務的 state 與 output |
| Finished? | state 已是終止狀態,且沒有檔案仍在複製中 | succeeded、failed 與 expired 都是終止狀態;請見任務 |
| File URL | data.output.assets[0].url | 有效期約 20 分鐘的簽名連結。如果要保存檔案,請在下一個節點下載它 |
更換模型或輸入
編輯 Create task 的 JSON 內容。每個模型的頁面都列出它的 ID、欄位與價格;以下是幾個常見的替換:
| 目標 | model | input |
|---|---|---|
| 圖片中的文字更清楚 | google/nano-banana-2.1/text-to-image | prompt、aspect_ratio、resolution(1K 為 $0.048) |
| 編輯照片 | google/nano-banana-2.1/edit | prompt、image_urls |
| 照片轉影片 | minimax/h3/image-to-video | prompt、image_url、duration_seconds(768p 的 5 秒為 $0.185) |
| 配音 | google/gemini-3.8-flash-tts/text-to-speech | text、voice_id |
要使用前面節點的資料,把內容改成運算式,例如:
{{ JSON.stringify({ model: 'alibaba/z-image-turbo/text-to-image', input: { prompt: $json.prompt, aspect_ratio: '16:9' } }) }}前面節點產生的檔案需要公開的 https 網址,或先上傳;上傳與下載 列出三個上傳呼叫,它們可以對應到三個 HTTP Request 節點。
用 Webhook 取代輪詢
對於較長的影片任務,讓 PopNow 主動呼叫 n8n,而不是不斷迴圈查詢。在第二個工作流程中加入一個 Webhook 觸發節點(POST),複製它的正式網址,並把它放進 Create task 的內容中,作為 callBackUrl:
{
"model": "minimax/h3/image-to-video",
"input": { "image_url": "https://media.popnow.ai/movie/lighthouse.webp", "prompt": "The waves roll in slowly" },
"callBackUrl": "https://your-n8n.example.com/webhook/popnow"
}Webhook 網址必須是公開的 HTTPS,所以本機的 n8n 需要通道。每次送達都有簽章;Webhook 說明如何在 Code 節點中驗證簽章,以及為什麼要儲存 request_id 來忽略重複送達。
n8n 以外的同一個呼叫
在貼進節點之前,先用這個測試內容很方便。
curl -X POST "https://api.popnow.ai/api/v1/jobs/createTask?wait=60" \
-H "Authorization: Bearer $POPNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"model": "alibaba/z-image-turbo/text-to-image", "input": {"prompt": "A small red fox curled up in a teacup, soft morning light, studio photo", "aspect_ratio": "1:1"}}'import os, uuid, requests
res = requests.post(
"https://api.popnow.ai/api/v1/jobs/createTask",
params={"wait": 60},
headers={"Authorization": f"Bearer {os.environ['POPNOW_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
json={"model": "alibaba/z-image-turbo/text-to-image", "input": {"prompt": "A small red fox curled up in a teacup, soft morning light, studio photo", "aspect_ratio": "1:1"}},
timeout=90,
).json()
print(res["data"]["state"], res["data"].get("output", {}).get("assets", [{}])[0].get("url"))const res = await fetch('https://api.popnow.ai/api/v1/jobs/createTask?wait=60', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.POPNOW_API_KEY}`,
'Content-Type': 'application/json',
'Idempotency-Key': crypto.randomUUID(),
},
body: JSON.stringify({
model: 'alibaba/z-image-turbo/text-to-image',
input: { prompt: 'A small red fox curled up in a teacup, soft morning light, studio photo', aspect_ratio: '1:1' },
}),
});
const { data } = await res.json();
console.log(data.state, data.output?.assets?.[0]?.url);價格
工作流程只在 Create task 中花費 API 美元,查詢任務免費。失敗或到期任務不收費,以同一個 Idempotency-Key 重試節點不會重複收費。大量執行前,先用 jobs/quote查詢模型價格,規則請見 API 餘額與退款。
常見錯誤
| n8n 顯示 | 原因 | 解法 |
|---|---|---|
Create task 出現 401 | 憑證缺少,或值沒有 Bearer | 標頭值必須是 Bearer sk-popnow-… |
msg 中帶有欄位名稱的 code: 400 | 某個欄位不在模型的 schema 中,或值超出範圍 | 查看模型頁面;不認得的欄位會被拒絕 |
code: 40201 | API 美元餘額不足以保留這個任務所需的金額 | 在 API 帳單儲值,或換較便宜的模型或設定 |
code: 40202 | 會超過這把金鑰的消費上限 | 在 API 控制台提高這把金鑰的上限 |
code: 429 | 請求太多 | 拉長等待時間,或減少同時執行的項目;請見速率限制 |
| 迴圈永遠不結束 | 任務仍在執行,或 Finished? 讀到了錯誤的欄位 | 影片可能需要好幾分鐘;請確認 Check task 讀取的是 Create task 的 taskId |
fileUrl 一開始能用,之後回傳 403 | 簽名連結約 20 分鐘後失效 | 在同一次執行中下載檔案,或重新讀取任務以取得新連結 |
state: failed | 模型無法完成,或拒絕了內容 | 沒有收費;請讀取 errorCode,並參閱錯誤碼 |
有 n8n 的官方社群節點嗎?
有。n8n-nodes-popnow 已發布在 npm,並在 GitHub 上開源。自架的 n8n 可以打開 Settings > Community Nodes > Install,輸入 n8n-nodes-popnow 並確認;也可以在終端機的 ~/.n8n/nodes 中執行 npm install n8n-nodes-popnow,然後重新啟動 n8n。它目前還不是認證節點,所以 n8n Cloud 無法安裝它。你其實不需要它:內建的 HTTP Request 節點涵蓋 API 的所有功能,在 n8n Cloud 上也能用,而且本頁的工作流程貼上一次即可匯入。
n8n 能同時執行多個生成嗎?
可以。每個到達 Create task 的項目都會成為自己的任務,並且平行生成。請留意速率限制,並為金鑰設定消費上限。
要怎麼把生成的檔案存到 Google Drive 或 S3?
在 File URL 之後加一個 HTTP Request 節點,把 fileUrl 下載為檔案(回應格式選 File),再把它傳給 Google Drive、S3 或其他儲存節點。

