BananaAPI와 Nano Banana 엔진을 통해 텍스트 힌트로 AI 이미지 생성
고급
이것은Content Creation, Miscellaneous, Multimodal AI분야의자동화 워크플로우로, 16개의 노드를 포함합니다.주로 If, Set, Wait, FormTrigger, HttpRequest 등의 노드를 사용하며. BananaAPI와 Nano Banana 엔진을 통해 텍스트 힌트로 AI 이미지 생성
사전 요구사항
- •대상 API의 인증 정보가 필요할 수 있음
사용된 노드 (16)
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"meta": {
"instanceId": "ae35fcac1ced05e71449f098fbec8ecb6349893e0c2112cc033acbf2f682aad4"
},
"nodes": [
{
"id": "c77e4131-abb7-4f10-bac4-809dc2467d42",
"name": "폼 — 프롬프트 입력",
"type": "n8n-nodes-base.formTrigger",
"position": [
560,
1136
],
"webhookId": "9f404ff0-1029-4086-b044-43cbbd9d1039",
"parameters": {
"options": {},
"formTitle": "Banana API — Image Generator",
"formFields": {
"values": [
{
"fieldLabel": "api_token",
"placeholder": "Bearer xxxxxxx...",
"requiredField": true
},
{
"fieldType": "textarea",
"fieldLabel": "prompt",
"placeholder": "Ví dụ: a neon cyberpunk cat, detailed, 4k",
"requiredField": true
},
{
"fieldType": "dropdown",
"fieldLabel": "Output Format [optional]",
"fieldOptions": {
"values": [
{
"option": "png"
},
{
"option": "jpeg"
}
]
}
},
{
"fieldType": "dropdown",
"fieldLabel": "Image Size [optional]",
"fieldOptions": {
"values": [
{
"option": "16:9"
},
{
"option": "9:16"
},
{
"option": "1:1"
},
{
"option": "3:4"
},
{
"option": "4:3"
}
]
}
},
{
"fieldLabel": "image_url_1 [optional]",
"placeholder": "https://example.com/input.jpg"
},
{
"fieldLabel": "image_url_2 [optional]"
},
{
"fieldLabel": "image_url_3 [optional]"
},
{
"fieldLabel": "image_url_4 [optional]"
},
{
"fieldLabel": "image_url_5 [optional]"
}
]
},
"formDescription": "Enter the prompt and (optionally) the original image link for the Banana API to generate a new image."
},
"typeVersion": 2.2
},
{
"id": "aa769a6a-0170-4851-82b8-0169eca8ec4a",
"name": "제출 — Banana API",
"type": "n8n-nodes-base.httpRequest",
"position": [
1072,
1136
],
"parameters": {
"url": "https://bananaapi.com/api/n8n/generate/",
"method": "POST",
"options": {},
"jsonBody": "={\n \"input\": {\n \"prompt\": \"{{ $json.prompt }}\",\n \"image_size\": \"{{ $json['Image Size [optional]'] }}\",\n \"output_format\": \"{{ $json['Output Format [optional]'] }}\",\n \"image_urls\": [\"{{ $json['image_url_1 [optional]'] }}\",\"{{ $json['image_url_2 [optional]'] }}\",\"{{ $json['image_url_3 [optional]'] }}\",\"{{ $json['image_url_4 [optional]'] }}\",\"{{ $json['image_url_5 [optional]'] }}\"]\n }\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Authorization",
"value": "=Bearer {{ $json.api_token }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "c3522fe8-9442-4fcc-a2d2-cd90ac3fef15",
"name": "5초 대기",
"type": "n8n-nodes-base.wait",
"position": [
1472,
1136
],
"webhookId": "72d55c47-b651-4121-b59f-dab21489cb35",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "037eee00-f9da-41bc-b508-6bb3fa87c68a",
"name": "상태 확인",
"type": "n8n-nodes-base.httpRequest",
"position": [
1632,
1136
],
"parameters": {
"url": "=https://bananaapi.com/api/n8n/image-status/{{$('Submit — Banana API').item.json.taskId}}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "749b2fd0-650c-4b31-9527-c7b84a2c7357",
"name": "5초 대기 (반복)",
"type": "n8n-nodes-base.wait",
"position": [
2048,
1088
],
"webhookId": "b347eefb-f36a-4072-9135-fb4ad8abed5d",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "3d5b6f8d-364b-4a48-82cb-fc5409502788",
"name": "링크 반환",
"type": "n8n-nodes-base.set",
"position": [
2528,
1056
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "80fd7573-3eac-4fc4-aced-b122e5eac718",
"name": "image_url",
"type": "string",
"value": "={{$json.imageUrl}}"
},
{
"id": "26339522-2fe9-48f6-aafd-e1aa9ed89327",
"name": "task_id",
"type": "string",
"value": "={{$('Submit — Banana API').item.json.taskId}}"
},
{
"id": "3e26803c-640d-463d-b857-a3bd29ea2358",
"name": "status",
"type": "string",
"value": "={{$json.status}}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "01a74ecd-93e3-4eb3-ab72-3ab82a008294",
"name": "조건문",
"type": "n8n-nodes-base.if",
"position": [
1808,
1072
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "4e3a3b7c-61e8-49c4-abf7-5eb3db4a3eef",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('Check Status').item.json.status }}",
"rightValue": "=completed"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "0f715abf-ae0a-42d5-8647-5e9488cd3f9d",
"name": "참고 — 개요",
"type": "n8n-nodes-base.stickyNote",
"position": [
400,
448
],
"parameters": {
"color": 3,
"width": 480,
"height": 336,
"content": "## Overview\nThis workflow integrates **BananaAPI.com** with the **Google Nano Banana** image generation engine. Users can submit prompts and optional reference images via a form, then the workflow calls BananaAPI.com, checks the task status in a loop, and finally returns the generated image link.\n\n**Why use it?**\n- Cost effective: only **$0.025 per image**\n- **Pay-as-you-go**: pay only for what you use\n- **Credits never expire**: no monthly subscription pressure\n\nIdeal for creators, marketers, and developers who want affordable and automated image generation."
},
"typeVersion": 1
},
{
"id": "71c558a9-d4e5-4ba2-8dc1-170e8a4ba0db",
"name": "참고 — 필수 조건",
"type": "n8n-nodes-base.stickyNote",
"position": [
880,
448
],
"parameters": {
"color": 3,
"width": 480,
"height": 336,
"content": "## Prerequisites\n- **BananaAPI.com account + API key (Bearer)** — create your key at https://bananaapi.com/api\n- An **n8n instance** (Cloud or self-hosted)\n- Basic knowledge of AI prompts to get the best quality images\n\n⚠️ Never commit or share your API key publicly. Use **n8n Credentials** for production setups."
},
"typeVersion": 1
},
{
"id": "77a8c9f2-61af-4e2e-9ba4-6c3ca1494567",
"name": "참고 — 1단계 (폼 입력)",
"type": "n8n-nodes-base.stickyNote",
"position": [
400,
800
],
"parameters": {
"width": 464,
"height": 496,
"content": "## Step 1 — User Form Input\nThe **Form Trigger** asks the user to provide:\n- `api_token` (required) — Banana API Bearer token\n- `prompt` (required) — image description (e.g. *“a neon cyberpunk cat, detailed, 4k”*)\n- `Output Format [optional]` — choose PNG or JPEG\n- `Image Size [optional]` — 16:9, 9:16, 1:1, 3:4, 4:3\n- `image_url_1 ... image_url_5 [optional]` — reference images for editing or transformation"
},
"typeVersion": 1
},
{
"id": "5ae4ce78-4f6c-4148-8485-a90d21ba32dd",
"name": "참고 — 2단계 (POST 요청)",
"type": "n8n-nodes-base.stickyNote",
"position": [
896,
800
],
"parameters": {
"width": 464,
"height": 496,
"content": "## Step 2 — Submit to Banana API\nThe **HTTP POST** node sends the request:\n- URL: `https://bananaapi.com/api/n8n/generate/`\n- Headers:\n - `Content-Type: application/json`\n - `Authorization: Bearer {{ $json.api_token }}`\n- JSON Body includes:\n - `prompt`\n - `image_size`\n - `output_format`\n - `image_urls` (array of up to 5)\n\nBananaAPI will return a `taskId` to track progress."
},
"typeVersion": 1
},
{
"id": "3c7bfc47-5d0f-45fb-a53f-25c24d2ed1f5",
"name": "참고 — 3단계 (처리 중)",
"type": "n8n-nodes-base.stickyNote",
"position": [
1392,
800
],
"parameters": {
"width": 912,
"height": 496,
"content": "## Step 3 — Processing\nBananaAPI forwards the request to the **Nano Banana** engine, which generates or edits the image based on the prompt and optional input images.\n\n⏱ Average generation time: a few seconds to ~1 minute, depending on complexity and server load.\n- After 5s wait, the workflow calls:\n `GET https://bananaapi.com/api/n8n/image-status/{{ taskId }}`\n- If `status != completed`, the loop waits 5s and retries\n- When `status = completed`, the workflow continues"
},
"typeVersion": 1
},
{
"id": "583222b7-f53c-4376-8958-4c544c4ace60",
"name": "참고 — 5단계 (출력)",
"type": "n8n-nodes-base.stickyNote",
"position": [
2336,
800
],
"parameters": {
"width": 464,
"height": 496,
"content": "## Step 4 — Return Output\nWhen completed, the **Set node** outputs:\n- `image_url` — the final generated image link\n- `task_id` — the task reference ID\n- `status` — task completion state\n\n💡 Tip: Add a **Webhook Response** node to return a clean JSON payload for frontend apps."
},
"typeVersion": 1
},
{
"id": "abfd4d9f-d7be-4a74-87ae-8618a6ff826a",
"name": "참고 — API 참조",
"type": "n8n-nodes-base.stickyNote",
"position": [
2320,
448
],
"parameters": {
"color": 3,
"width": 480,
"height": 336,
"content": "## API Reference\n- **POST** `https://bananaapi.com/api/n8n/generate/`\n- **GET** `https://bananaapi.com/api/n8n/image-status/{taskId}`\n\nDocs: https://bananaapi.com/api\n\n✅ Always include `Authorization: Bearer <token>` in headers."
},
"typeVersion": 1
},
{
"id": "5074a457-5ec7-4a5c-81bc-54c120818b08",
"name": "참고 — 가격 장점",
"type": "n8n-nodes-base.stickyNote",
"position": [
1360,
448
],
"parameters": {
"color": 3,
"width": 480,
"height": 336,
"content": "## Pricing Advantages\n- **Only $0.025 per image** — very cost-effective\n- **Pay-as-you-go**: no monthly subscription\n- **Credits never expire** — use anytime, no rush\n\nPerfect for scaling automation workflows or experimenting without wasted costs."
},
"typeVersion": 1
},
{
"id": "1d11806a-56e9-4e02-9aeb-5dfef750b1ae",
"name": "참고 — 문제 해결",
"type": "n8n-nodes-base.stickyNote",
"position": [
1840,
448
],
"parameters": {
"color": 3,
"width": 480,
"height": 336,
"content": "## Troubleshooting\n- **401/403 Unauthorized** → Check Authorization header (`Bearer token`)\n- **Invalid JSON** → Ensure POST body is valid JSON (double quotes, no trailing commas)\n- **No imageUrl returned** → Task still pending; wait longer or re-check taskId\n- **Slow performance** → Increase wait interval from 5s to 8–10s"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"01a74ecd-93e3-4eb3-ab72-3ab82a008294": {
"main": [
[
{
"node": "3d5b6f8d-364b-4a48-82cb-fc5409502788",
"type": "main",
"index": 0
}
],
[
{
"node": "749b2fd0-650c-4b31-9527-c7b84a2c7357",
"type": "main",
"index": 0
}
]
]
},
"c3522fe8-9442-4fcc-a2d2-cd90ac3fef15": {
"main": [
[
{
"node": "037eee00-f9da-41bc-b508-6bb3fa87c68a",
"type": "main",
"index": 0
}
]
]
},
"037eee00-f9da-41bc-b508-6bb3fa87c68a": {
"main": [
[
{
"node": "01a74ecd-93e3-4eb3-ab72-3ab82a008294",
"type": "main",
"index": 0
}
]
]
},
"749b2fd0-650c-4b31-9527-c7b84a2c7357": {
"main": [
[
{
"node": "037eee00-f9da-41bc-b508-6bb3fa87c68a",
"type": "main",
"index": 0
}
]
]
},
"c77e4131-abb7-4f10-bac4-809dc2467d42": {
"main": [
[
{
"node": "aa769a6a-0170-4851-82b8-0169eca8ec4a",
"type": "main",
"index": 0
}
]
]
},
"aa769a6a-0170-4851-82b8-0169eca8ec4a": {
"main": [
[
{
"node": "c3522fe8-9442-4fcc-a2d2-cd90ac3fef15",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 콘텐츠 제작, 기타, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
제 작업 흐름 3
Veo3 API와 VietVid.com을 사용하여 텍스트나 이미지에서 AI 비디오 생성
If
Set
Wait
+
If
Set
Wait
13 노드Tran Trung Nghia
콘텐츠 제작
대화형 가상 인물 비디오 생성 및 TikTok에 게시
Elevenlabs와 Infinitalk을 사용하여 말할 수 있는 가상 인물 비디오를 만들고 TikTok에 자동으로 게시하기
If
Set
Wait
+
If
Set
Wait
24 노드Davide
콘텐츠 제작
무물감 TikTok 비디오를 구글 드라이브에 다운로드하고 자동으로 테이블에 기록
무물감 TikTok 비디오를 Google 드라이브에 다운로드하고 자동으로 테이블에 로그 기록
If
Wait
Form Trigger
+
If
Wait
Form Trigger
19 노드Evoort Solutions
콘텐츠 제작
3개 Hackernews에서 AI 클론 비디오
Heygen과 Blotato를 사용하여 소셜 미디어에 자동으로 과학 기술 뉴스 AI 가상 인물 비디오를 발행
If
Set
Wait
+
If
Set
Wait
30 노드Sabrina Ramonov 🍄
콘텐츠 제작
Telegram 메시지에서 Nano Banana와 Veo-3를 사용하여 AI 비디오 생성
Nano Banana와 Veo-3를 사용하여 Telegram 메시지에서 AI 비디오 생성
If
Set
Wait
+
If
Set
Wait
26 노드Sulieman Said
콘텐츠 제작
PDF에서 주문으로
AI를 사용한 PDF 구매 주문서를 Adobe Commerce 판매 주문서로 자동 변환
If
Set
Code
+
If
Set
Code
96 노드JKingma
문서 추출