n8n × PopNow
n8n에서 AI 이미지와 영상 만들기
설치할 것이 없습니다. n8n 기본 HTTP Request 노드가 PopNow API를 직접 호출하므로 n8n Cloud와 자체 호스팅 모두에서 동작합니다. 워크플로를 붙여 넣고 키만 넣으면 실행됩니다.
네 단계로 설정하기
- n8n에서 Header Auth 자격 증명을 추가합니다. Name은 Authorization, Value는 Bearer와 공백 한 칸, 그 뒤에 sk-popnow-(으)로 시작하는 키입니다.
- 아래 워크플로를 복사해 빈 캔버스에 Ctrl + V(Mac은 Cmd + V)로 붙여 넣습니다.
- Create task 노드를 열어 자격 증명을 고르고, 모델과 프롬프트를 바꿉니다.
- 실행합니다. 마지막 노드가 파일 URL을 주니, 뒤에 Google Drive, Slack, S3 노드를 붙여 파일을 보관하세요.
워크플로
작업을 만들고, 기다리고, 확인하고, 끝날 때까지 반복한 뒤 파일 링크를 다음 노드로 넘깁니다.
- Start
- Create task
- Wait 5 seconds
- Check task
- Done?
- File URL
↺ Done? → Wait 5 seconds
{
"name": "PopNow: generate and get the file",
"nodes": [
{
"id": "b1f0c1a2-0001-4c55-9a10-000000000001",
"name": "Start",
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
0,
0
],
"parameters": {}
},
{
"id": "b1f0c1a2-0002-4c55-9a10-000000000002",
"name": "Create task",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
220,
0
],
"parameters": {
"method": "POST",
"url": "https://api.popnow.ai/api/v1/jobs/createTask",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Idempotency-Key",
"value": "={{ $execution.id }}"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "{\n \"model\": \"google/nano-banana-2.1/text-to-image\",\n \"input\": {\n \"prompt\": \"A ceramic teapot on a linen cloth, soft window light, muted palette\",\n \"aspect_ratio\": \"16:9\",\n \"resolution\": \"1k\",\n \"output_format\": \"png\"\n }\n}",
"options": {}
}
},
{
"id": "b1f0c1a2-0003-4c55-9a10-000000000003",
"name": "Wait 5 seconds",
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
440,
0
],
"parameters": {
"amount": 5
},
"webhookId": "4d3c2b1a-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
},
{
"id": "b1f0c1a2-0004-4c55-9a10-000000000004",
"name": "Check task",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
660,
0
],
"parameters": {
"url": "https://api.popnow.ai/api/v1/jobs/recordInfo",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "taskId",
"value": "={{ $('Create task').item.json.data.taskId }}"
}
]
},
"options": {}
}
},
{
"id": "b1f0c1a2-0005-4c55-9a10-000000000005",
"name": "Done?",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
880,
0
],
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "loose"
},
"conditions": [
{
"id": "c0ffee00-0000-4000-8000-000000000001",
"leftValue": "={{ ['succeeded','failed','canceled','expired'].includes($json.data.state) && !($json.data.output?.assets ?? []).some(a => a.pending && !a.unavailable) }}",
"rightValue": "",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
}
},
{
"id": "b1f0c1a2-0006-4c55-9a10-000000000006",
"name": "File URL",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1100,
-100
],
"parameters": {
"assignments": {
"assignments": [
{
"id": "c0ffee00-0000-4000-8000-000000000002",
"name": "state",
"value": "={{ $json.data.state }}",
"type": "string"
},
{
"id": "c0ffee00-0000-4000-8000-000000000003",
"name": "fileUrl",
"value": "={{ $json.data.output?.assets?.[0]?.url ?? '' }}",
"type": "string"
},
{
"id": "c0ffee00-0000-4000-8000-000000000004",
"name": "error",
"value": "={{ $json.data.errorMessage ?? '' }}",
"type": "string"
}
]
},
"options": {}
}
}
],
"connections": {
"Start": {
"main": [
[
{
"node": "Create task",
"type": "main",
"index": 0
}
]
]
},
"Create task": {
"main": [
[
{
"node": "Wait 5 seconds",
"type": "main",
"index": 0
}
]
]
},
"Wait 5 seconds": {
"main": [
[
{
"node": "Check task",
"type": "main",
"index": 0
}
]
]
},
"Check task": {
"main": [
[
{
"node": "Done?",
"type": "main",
"index": 0
}
]
]
},
"Done?": {
"main": [
[
{
"node": "File URL",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait 5 seconds",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
}
}그대로 쓰는 n8n JSON입니다. 모델과 input은 이 페이지에서 가져와 그대로 검증을 통과합니다.
바꿀 곳
지출 관리하기. 콘솔에서 n8n용 키에 일일 한도와 허용 모델을 따로 정해 두세요. 반복이 멈추지 않아도 한도에서 멈춰 잔액을 다 쓰지 않습니다.
model- 모델 이름입니다. API 섹션의 각 모델 페이지에 복사 버튼과 함께 나와 있습니다.
input- 그 모델의 프롬프트와 옵션입니다. 모델의 API 페이지에 모든 필드의 범위와 기본값이 있습니다.
callBackUrl- 선택 사항입니다. n8n Webhook 노드를 가리키면 대기 반복이 필요 없습니다. 완료된 작업을 그곳으로 보내 드립니다.
Idempotency-Key- 실행 ID가 들어가 있어서, 노드를 다시 시도해도 같은 실행에 두 번 청구되지 않습니다.
처음 쓰기 좋은 모델
자동화에 알맞은 빠르고 합리적인 모델입니다. 링크를 열면 모델 이름, 파라미터, 가격을 볼 수 있습니다.
n8n 질문
PopNow 커뮤니티 노드가 필요한가요?
아닙니다. 이 워크플로는 n8n에 기본으로 들어 있는 Manual Trigger, HTTP Request, Wait, If, Edit Fields 노드만 씁니다. n8n Cloud와 자체 호스팅 모두에서 동작합니다.
앞 노드의 이미지를 쓰려면 어떻게 하나요?
이미지 필드에 공개 https 링크를 넘기세요. 파일이 n8n 안에만 있다면 먼저 API로 업로드한 뒤 돌려받은 popnow:// 참조를 쓰세요.
한 번 실행하는 데 얼마인가요?
웹사이트와 같은 크레딧으로 호출마다 청구됩니다. Nano Banana 이미지는 몇 크레딧이고, 영상은 초 단위로 청구됩니다. 실패한 작업은 환불됩니다.
한 번 실행하는 데 얼마나 걸리나요?
이미지는 보통 1분 안에, 영상은 몇 분 안에 끝납니다. 대기 반복은 5초마다 확인하며, callBackUrl을 쓰면 기다릴 필요가 없습니다.

