n8n इमेज जनरेशन वर्कफ़्लो: Nano Banana और Gemini टेम्पलेट
एक कारगर n8n इमेज जनरेशन वर्कफ़्लो के लिए सिर्फ़ एक नोड काफ़ी नहीं होता। यह आर्टिकल Nano Banana और Gemini टेम्पलेट, HTTP Request सेटअप, प्रॉम्प्ट वेरिएबल, बैचिंग, रीट्राई और तैयार इमेज को स्टोरेज में सेव करने की प्रक्रिया समझाता है। साथ ही PicassoIA से आप पहले प्रॉम्प्ट आज़मा सकते हैं।
ज़्यादातर n8n इमेज ऑटोमेशन एक ही तरीके से टूटते हैं। कोई प्रॉम्प्ट फ़ील्ड को एक नोड से जोड़ता है, पहली बार में एक सुंदर तस्वीर मिल जाती है, और फिर चालीस रो का बैच रेट लिमिट, सेफ़्टी ब्लॉक या ऐसे base64 स्ट्रिंग पर अटक जाता है जो कभी असली फ़ाइल बनती ही नहीं। यह आर्टिकल n8n इमेज जनरेशन वर्कफ़्लो बनाता है जो दूसरी बार चलने पर भी टिका रहे, और इसके लिए Google के Nano Banana परिवार और उसके पीछे के Gemini इमेज एंडपॉइंट का इस्तेमाल करता है।
यहाँ आपको नोड का क्रम, सटीक request body, तीन दोबारा इस्तेमाल होने वाले टेम्पलेट, रीट्राई सेटिंग, लागत का अनुमान, और API कॉल पर एक भी पैसा खर्च करने से पहले PicassoIA पर प्रॉम्प्ट आज़माने का तरीका मिलेगा। Nano Banana Gemini 2.5 Flash Image का nickname है, इसलिए यहाँ लिखी हर बात आप जो भी नाम इस्तेमाल करें, उस पर लागू होती है।
n8n में इमेज वर्कफ़्लो क्यों टूटते हैं
टेक्स्ट वर्कफ़्लो ढीले डिज़ाइन को माफ़ कर देते हैं। अगर कोई LLM नोड थोड़ा अजीब वाक्य लौटाए, तो अगला नोड फिर भी एक स्ट्रिंग ही पाता है। इमेज अलग है: आउटपुट JSON में लिपटा बाइनरी डेटा होता है, कॉल में दस से तीस सेकंड लगते हैं, और एक इनकार भी HTTP 200 लौटा सकता है जिसमें कोई तस्वीर नहीं होती। यही कारण है कि कॉपी किए गए कई टेम्पलेट स्क्रीनशॉट में ठीक दिखते हैं और तीसरी रो पर गिर जाते हैं।
पाँच विफलताएँ जिनकी योजना बनानी चाहिए
लगभग हर टूटा इमेज वर्कफ़्लो इन पाँच में से किसी एक जगह पर फेल होता है:
Base64 कभी फ़ाइल नहीं बनता। API इमेज के बाइट्स एक लंबी टेक्स्ट स्ट्रिंग के रूप में लौटाता है। कन्वर्ज़न स्टेप के बिना आप स्ट्रिंग को स्टोरेज में अपलोड करते हैं और सोचते हैं कि प्रीव्यू खाली क्यों है।
खाली रिस्पॉन्स जो स्वस्थ दिखते हैं। ब्लॉक हुआ प्रॉम्प्ट status 200 के साथ बिना किसी इमेज पार्ट के लौट सकता है। अगला नोड बिना कुछ पाए चलता है।
एक साथ आया ट्रैफ़िक। एक साथ चालीस आइटम भेजने से प्रति मिनट की सीमा पार हो जाती है, और आधे 429 से फेल हो जाते हैं।
गड़बड़ प्रॉम्प्ट इनपुट। स्प्रेडशीट सेल में quotes, लाइन ब्रेक या अंत के स्पेस हाथ से बनी JSON body को तोड़ देते हैं।
स्टोरेज स्टेप नहीं। n8n डिफ़ॉल्ट रूप से पुराने execution डेटा को हटा देता है, इसलिए जो इमेज सिर्फ़ execution के अंदर है, वह आख़िरकार गायब हो जाती है।
एक भरोसेमंद सेटअप को क्या चाहिए
हल सीधा-सादा है, और यही इसकी खूबी है। भरोसेमंद वर्कफ़्लो में API कॉल के बाद एक वैलिडेशन स्टेप, एक कन्वर्ज़न स्टेप जो असली फ़ाइल बनाए, एक स्टोरेज स्टेप जो स्थायी URL लौटाए, और कॉल्स के बीच पेसिंग होती है। इस आर्टिकल की बाकी हर चीज़ इन्हीं चार हिस्सों का एक रूप है।
💡 पहले एक आइटम के साथ बनाएँ। Manual Trigger से पूरी चेन एक ही रो पर चलाएँ। लूप और शेड्यूल तभी जोड़ें जब एक इमेज सही फ़ाइल नाम के साथ स्टोरेज में पहुँच जाए।
Google इमेज मॉडल चुनना
भ्रम के बिना नामकरण
Google के नाम बहुत तेज़ी से बदलते हैं। Nano Banana Gemini 2.5 Flash Image का nickname बनकर शुरू हुआ, और उसके बाद Pro, 2 और Lite वेरिएंट आए। API की तरफ़ हर nickname एक मॉडल ID से जुड़ा है, और ये IDs nicknames से ज़्यादा बार बदलते हैं। ID को अपने पहले Edit Fields नोड के एक ही फ़ील्ड में रखें और हर जगह उसी का संदर्भ दें। जब बेहतर मॉडल आए, तो आप पाँच नोड एडिट करने की बजाय एक वैल्यू बदलेंगे।
एक व्यावहारिक नियम: सस्ते टियर से ड्राफ़्ट बनाएँ और केवल स्वीकृत विजेताओं को Pro टियर से दोबारा जेनरेट करें। उसी वर्कफ़्लो की एक दूसरी ब्रांच, रो के approved मार्क होते ही यह अपग्रेड अपने-आप कर सकती है।
मुख्य वर्कफ़्लो, नोड दर नोड
बेस वर्कफ़्लो में सात नोड हैं। उन्हें इसी क्रम में बनाएँ और हर एक के बाद टेस्ट करें:
Manual Trigger बनाते समय इस्तेमाल करें, बाद में इसे Schedule या Webhook trigger से बदलें
Edit Fields, जिसका नाम Prompt Fields रखें
HTTP Request, जिसका नाम Gemini Image रखें
Code, जिसका नाम Extract Image रखें
Convert to File
S3-compatible upload (Cloudflare R2, AWS S3, या कोई भी मिलता-जुलता bucket)
Edit Fields या Google Sheets जो अंतिम URL दर्ज करे
Trigger और Prompt Fields
Manual Trigger और एक Edit Fields नोड से शुरू करें, जो चार फ़ील्ड बनाए: prompt, aspect_ratio, slug और model। ब्लॉग हेडर के लिए 16:9 और प्रोडक्ट शॉट के लिए 1:1 का उपयोग करें। Slug को छोटे अक्षरों और हाइफ़न के साथ रखें, क्योंकि वही फ़ाइल नाम बनता है।
इस चरण पर प्रॉम्प्ट को {{ $json.prompt.trim() }} जैसे एक्सप्रेशन से साफ़ करें। स्प्रेडशीट से आने वाले अंत के स्पेस और अनचाहे लाइन ब्रेक अजीब परिणामों का एक आश्चर्यजनक रूप से आम कारण हैं।
Gemini HTTP Request कॉल
एक HTTP Request नोड जोड़ें, method को POST सेट करें, और यह URL इस्तेमाल करें, जिसमें मॉडल ID आपके model फ़ील्ड से पढ़ी जाए:
Authentication के लिए, अगर आपके n8n वर्ज़न में HTTP Request नोड के लिए Google Gemini(PaLM) Api credential सूचीबद्ध है तो उसे चुनें। अगर नहीं है, तो Header Auth का उपयोग करें और Google के API दस्तावेज़ीकरण से header का नाम लें। फिर Send Body चालू करें, JSON चुनें, और body को एक्सप्रेशन के रूप में बनाएँ ताकि प्रॉम्प्ट के अंदर के quotes उसे कभी न तोड़ें:
Options के अंतर्गत timeout को 120000 ms तक बढ़ाएँ। इमेज कॉल टेक्स्ट कॉल से धीमी होती हैं, और डिफ़ॉल्ट सीमा एक सही request को भी काट देगी।
💡 n8n में एक नेटिव Google Gemini नोड भी आता है, और उसके इमेज ऑपरेशन वर्ज़न दर वर्ज़न बदलते रहे हैं। अपने इंस्टॉल में ऑपरेशन की सूची जाँचें। यहाँ दिखाया गया HTTP Request तरीका हर वर्ज़न में काम करता है और पूरा रिस्पॉन्स दिखाता है, और यही वैलिडेशन स्टेप को संभव बनाता है।
Base64 को फ़ाइल में बदलना
रिस्पॉन्स में तस्वीर candidates[0].content.parts के अंदर होती है, मॉडल द्वारा जोड़े गए किसी भी टेक्स्ट के साथ। इमेज पार्ट में एक inlineData ऑब्जेक्ट होता है, जिसमें mimeType और base64 data स्ट्रिंग होती है। यह मान न लें कि इमेज पहला पार्ट है। उसे ढूँढें।
एक Code नोड जोड़ें, Run Once for Each Item मोड में:
गायब इमेज पर error फेंकना जानबूझकर है। यह चुपचाप होने वाली विफलता को दिखने वाली विफलता में बदल देता है, और अगले सेक्शन की रीट्राई और error-output सेटिंग्स को अपना काम करने देता है।
इसके बाद Convert to File आता है, जिसका ऑपरेशन Move Base64 String to File है। base64 इनपुट फ़ील्ड को image_b64 पर सेट करें और फ़ाइल का नाम {{ $json.slug }}.png रखें। Gemini इमेज आउटपुट आम तौर पर PNG में आता है, और अगर आप एक्सटेंशन को सख़्ती से जाँचना चाहते हैं तो mimeType पढ़ सकते हैं। आख़िर में S3 नोड से फ़ाइल को अपने bucket में भेजें और सार्वजनिक URL को वहीं लिखें जहाँ आपकी सामग्री रहती है।
तीन टेम्पलेट जो कॉपी करने लायक हैं
n8n की टेम्पलेट लाइब्रेरी में Nano Banana और Gemini इमेज पर बने कई कम्युनिटी वर्कफ़्लो हैं, और कुछ को देखना अलग लेआउट समझने का तेज़ तरीका है। गुणवत्ता अलग-अलग है, इसलिए हर एक को ऊपर की पाँच विफलताओं से मिलाकर जाँचें। नीचे के तीन ढाँचे सबसे ज़्यादा बार सामने आते हैं।
टेम्पलेट एक: हेडर इमेज बैच
इसका उपयोग तब करें जब कंटेंट टीम को स्प्रेडशीट के हर पोस्ट के लिए हेडर इमेज चाहिए।
फ़्लो: Schedule Trigger → Google Sheets (जहाँ status खाली है वे रो) → Loop Over Items (batch size 2) → Prompt Fields → Gemini Image → Extract Image → Convert to File → S3 upload → Google Sheets (image_url और status = done लिखें) → Wait (6 seconds) → वापस लूप पर।
प्रॉम्प्ट को पोस्ट के टाइटल और एक तय स्टाइल सफ़िक्स से बनाएँ, ताकि हर हेडर एक जैसा दिखे: {{ $json.title }}, wide editorial photograph, natural window light, 35mm lens, shallow depth of field, no text। सफ़िक्स को एक ही जगह रखें, तो चालीस इमेज एक ही साइट की लगेंगी।
स्टेटस कॉलम जितना दिखता है उससे ज़्यादा ज़रूरी है। done मार्क की गई रो अगली बार छोड़ दी जाती हैं, इसलिए क्रैश हुआ रन वहीं से फिर शुरू होता है जहाँ रुका था, और एक ही इमेज के लिए दोबारा पैसे नहीं लगते।
टेम्पलेट दो: प्रोडक्ट फ़ोटो वेरिएंट
यह एक मौजूदा फ़ोटो को एडिट करता है और उसके आसपास की सेटिंग बदलता है। अनुरोध पहले जैसा ही है, बस एक अतिरिक्त हिस्सा जुड़ता है: स्रोत फ़ोटो base64 के रूप में। HTTP Request नोड से फ़ोटो डाउनलोड करें, उसे Move File to Base64 String के साथ Extract From File से गुज़ारें, और उसे टेक्स्ट हिस्से के साथ जोड़ें:
फिर हर प्रोडक्ट पर चार प्रॉम्प्ट लूप करें: सुबह की रोशनी में एक संगमरमर का काउंटर, एक हल्की ओक की मेज़, मुड़ा हुआ लिनेन, और एक बाहरी पत्थर की शेल्फ़। वाक्य Keep the product exactly unchanged and change only the surroundings. हमेशा शामिल करें। इसके बिना इमेज मॉडल लेबल को दोबारा डिज़ाइन करना पसंद करते हैं।
टेम्पलेट तीन: Webhook से सोशल पोस्ट
एक Webhook trigger विषय और प्लेटफ़ॉर्म प्राप्त करता है। एक Google Gemini चैट मॉडल वाला Basic LLM Chain फ़ोटोग्राफ़िक प्रॉम्प्ट लिखता है, इमेज कॉल उसके बाद आती है, और तैयार URL उसी को लौटाया जाता है जिसने माँगा था।
इमेज कॉल दस से तीस सेकंड तक चल सकती हैं। अगर n8n के सामने का कोई proxy अनुरोधों को 30 या 60 सेकंड पर काट देता है, तो तुरंत webhook का जवाब एक job ID के साथ दें और बाद में तैयार URL एक callback पते पर भेजें। वरना कॉल करने वाले को timeout दिखेगा, जबकि n8n शांति से काम पूरा करेगा और उसका बिल आपसे वसूला जाएगा।
रीट्राई, रेट लिमिट और लागत
रीट्राई और पेसिंग सेटिंग
रीट्राई और पेसिंग तय करते हैं कि 200 रो का रन रात भर में पूरा होगा या रो 12 पर अटक जाएगा। इन्हें नोड्स पर ही सेट करें:
सेटिंग
मान
क्यों
Retry On Fail (Gemini Image)
चालू, Max Tries 3
अस्थायी 429 और 5xx एरर आम तौर पर अपने-आप ठीक हो जाते हैं
Wait Between Tries
5000 ms या उससे ज़्यादा
प्रति मिनट की सीमा को रीसेट होने का समय देता है
Timeout (HTTP Request option)
120000 ms
इमेज कॉल टेक्स्ट कॉल से धीमी होती हैं
On Error
Continue (using error output)
फ़ेल रो अलग ब्रांच में जाती हैं, रन नहीं रुकता
Loop Over Items batch size
2 से 5
बर्स्ट को सीमा के भीतर रखता है
Wait node between batches
5 से 10 सेकंड
कॉल्स को मिनट भर में फैलाता है
Error output को एक Sheets अपडेट पर भेजें जो failed के साथ एरर मैसेज लिखे। बाद में फ़ेल रो को दोबारा चलाना एक क्लिक का फ़िल्टर बन जाता है, और पैटर्न जल्दी दिखते हैं, जैसे कोई एक प्रॉम्प्ट वाक्यांश जो हर बार सेफ़्टी फ़िल्टर को ट्रिगर करता है।
बिल का अनुमान
Google ने लॉन्च के समय Gemini 2.5 Flash Image की कीमत लगभग $0.039 प्रति इमेज बताई थी। बजट बनाने से पहले मौजूदा प्राइसिंग पेज जाँच लें, लेकिन गणित सीधा है: उस दर पर 500 हेडर इमेज लगभग $19.50 बनती हैं, और हर रीट्राई जो इमेज बनाता है, वह फिर से गिना जाता है। ऊँचे टियर की हर इमेज ज़्यादा महँगी है। तीन आदतें खर्च कम रखती हैं:
प्रॉम्प्ट पहले PicassoIA पर आज़माएँ।Nano Banana 2 वहाँ असीमित जेनरेशन के साथ सूचीबद्ध है, इसलिए प्रॉम्प्ट को बारह बार बदलना मुफ़्त है।
सिर्फ़ फ़ेल हुई रो दोबारा चलाएँ, पूरे बैच नहीं।
ड्राफ़्ट सस्ते में, फ़ाइनल महँगे में। ड्राफ़्ट के लिए हल्का टियर उपयोग करें और केवल स्वीकृत रो को Pro टियर पर दोबारा जेनरेट करें।
प्रॉम्प्ट के पैटर्न जो टिकते हैं
प्रॉम्प्ट LLM से लिखवाएँ
स्प्रेडशीट की एक रो जिसमें लिखा है Remote work setup, प्रॉम्प्ट नहीं है। इमेज कॉल से पहले एक Basic LLM Chain जोड़ें, उसमें Google Gemini चैट मॉडल लगाएँ, और उसे एक तय निर्देश दें: विषय को 50 से 70 शब्दों के एक फ़ोटोग्राफ़िक प्रॉम्प्ट में बदलें, जिसमें subject, setting, रोशनी की दिशा, लेंस और टेक्सचर के ब्योरे हों, और केवल प्रॉम्प्ट लौटाएँ। Gemini 3.5 Flash और Gemini 3 Flash दोनों इस काम के लिए ठीक हैं, क्योंकि काम छोटा है और गहराई से ज़्यादा गति मायने रखती है।
💡 बनाया गया प्रॉम्प्ट अपनी शीट में इमेज URL के बगल में लॉग करें। जब कोई इमेज निराश करे, तो आप देख सकेंगे कि मॉडल से वास्तव में क्या माँगा गया था।
फ़ोटोग्राफ़ी के शब्द जिनका मॉडल सम्मान करता है
इमेज मॉडल आम तौर पर फ़ोटोग्राफ़र की शब्दावली पर अच्छी प्रतिक्रिया देते हैं। यह क्रम इस्तेमाल करें: subject और action, setting, रोशनी की दिशा, कैमरा और लेंस, सतह का टेक्सचर, मूड।
तत्व
कमज़ोर शब्दावली
बेहतर शब्दावली
रोशनी
चमकदार
बाईं ओर से आती नरम खिड़की की रोशनी, देर सुबह
लेंस
अच्छा कैमरा
85mm पर f/1.8, उथली डेप्थ ऑफ़ फ़ील्ड
एंगल
अच्छा एंगल
नीचे से एंगल, थोड़ा ऊपर की ओर देखते हुए
टेक्सचर
विस्तृत
लकड़ी की साफ़ दिखती बनावट, कपड़े की बुनाई, कागज़ के रेशे
टेक्स्ट
टाइटल लिखें
फ़्रेम में कोई टेक्स्ट नहीं
डिफ़ॉल्ट रूप से टेक्स्ट न माँगें। जेनरेट किए गए अक्षर ही वह सबसे आम कारण हैं जिससे अन्यथा अच्छी हेडर इमेज ख़ारिज हो जाती है, और बाद में अपने डिज़ाइन टूल में असली टाइटल जोड़ना कहीं आसान है।
वर्कफ़्लो के अंदर प्रॉम्प्ट डालने से पहले उन्हें ठीक करना सस्ता पड़ता है। PicassoIA पर Nano Banana उसी परिवार का है जिसे आपका HTTP नोड कॉल करता है, इसलिए वहाँ काम करने वाला प्रॉम्प्ट ऑटोमेशन के लिए एक मज़बूत उम्मीदवार है।
प्रॉम्प्ट को ठीक वैसे ही चिपकाएँ जैसा आपका Edit Fields नोड बनाता, स्टाइल सफ़िक्स समेत।
अगर आपका वर्कफ़्लो मौजूदा इमेज एडिट करता है, तो Image Input फ़ील्ड में संदर्भ फ़ोटो जोड़ें। मॉडल एक साथ कई स्वीकार करता है।
आउटपुट फ़ॉर्मेट के रूप में JPG या PNG चुनें।
तीन वर्ज़न जेनरेट करें, हर बार एक ही शब्द बदलते हुए: रोशनी, लेंस, या सेटिंग।
जीतने वाले शब्द वापस n8n में कॉपी करें।
जब अधिक नियंत्रण चाहिए, तब Nano Banana 2 पर जाएँ। इसमें 15 आस्पेक्ट रेशियो विकल्प आते हैं जिनमें 16:9, 9:16 और 4:5 शामिल हैं, 1K, 2K और 4K रिज़ॉल्यूशन, 14 संदर्भ इमेज तक, और वैकल्पिक Google Search grounding। आस्पेक्ट रेशियो सेटिंग आपकी request body के aspectRatio फ़ील्ड से सीधे मैप होती है। गति-प्रधान बैच के लिए Nano Banana 2 Lite है, और फ़ाइनल 4K रेंडर के लिए Nano Banana Pro है।
प्रकाशन से पहले परिणाम निखारें
अच्छे आउटपुट को भी फ़िनिशिंग पास से फ़ायदा होता है। Real-ESRGAN और Crystal Upscaler हीरो प्लेसमेंट के लिए इमेज बड़ी करते हैं, और Bria Remove Background कैटलॉग पेज के लिए प्रोडक्ट शॉट को काटकर अलग करता है। अगर कोई स्टाइल Google के मॉडल में फ़िट नहीं बैठता, तो अपना वर्कफ़्लो बदलने से पहले उसी प्रॉम्प्ट के साथ Seedream 4.5, Flux 2 Pro, और Imagen 4 की तुलना करें। दस मिनट की तुलना एक हफ़्ते के प्रॉम्प्ट ट्वीक करने से बेहतर है।
Picasso IA पर अपना पहला बैच चलाएँ
अब आपके पास पूरी चेन है: वैलिडेटेड request, असली फ़ाइलें, स्टोरेज, पेसिंग, रीट्राई, और ऑटोमेट करने लायक प्रॉम्प्ट। पहले एक रो से बनाएँ, फिर दस से, फिर पूरी शीट से।
उससे पहले Picasso IA पर अपने पाँच सबसे ज़रूरी प्रॉम्प्ट के साथ पंद्रह मिनट बिताएँ। उन्हें Nano Banana 2 पर आज़माएँ, परिणामों की तुलना Nano Banana Pro से करें, और जो शब्द जीतें उन्हें रखें। फिर वे प्रॉम्प्ट अपने Edit Fields नोड में चिपकाएँ और मात्रा का काम n8n को सौंप दें। हर मॉडल picassoia.com/en/all-models पर देखें और अपनी अगली पोस्ट के लिए एक हेडर इमेज से शुरुआत करें।