ComfyUI वर्कफ़्लो सेटअप
Marinara Engine लोकल ComfyUI सर्वर को इमेज और वीडियो की रिक्वेस्ट भेज सकता है, और ComfyUI चलाने वाले RunPod Serverless एंडपॉइंट को इमेज रिक्वेस्ट भेज सकता है। लोकल इमेज मॉडल Marinara का बिल्ट-इन बेसिक वर्कफ़्लो इस्तेमाल कर सकता है। वीडियो और एडवांस्ड इमेज सेटअप आपका अपना API फ़ॉर्मैट वाला वर्कफ़्लो इस्तेमाल करते हैं, यानी ComfyUI से JSON के रूप में एक्सपोर्ट किया गया वर्कफ़्लो।
Marinara में पेस्ट किया गया JSON एक स्नैपशॉट होता है। Marinara, ComfyUI में खुले वर्कफ़्लो से कोई लाइव लिंक नहीं रखता। ComfyUI में वर्कफ़्लो बदलने पर उसे टेस्ट करें, दोबारा एक्सपोर्ट करें और Marinara में सेव किया हुआ JSON बदल दें।
शुरू करने से पहले
ComfyUI इंस्टॉल करें, वर्कफ़्लो के लिए ज़रूरी चेकपॉइंट और कस्टम नोड जोड़ें, और उसका सर्वर चालू करें। आम लोकल पता http://127.0.0.1:8188 होता है।
अगर ComfyUI आपके होम नेटवर्क के किसी दूसरे कंप्यूटर पर चलता है, तो उसका सर्वर ऐसे पते पर सुनना चाहिए जहाँ तक Marinara पहुँच सके। इमेज अकाउंट के लिए Marinara की .env में IMAGE_LOCAL_URLS_ENABLED=true भी चाहिए, देखें सर्वर कॉन्फ़िगरेशन रेफ़रेंस। कनेक्शन फिर भी न बने तो दूसरे कंप्यूटर का फ़ायरवॉल जाँच लें।
लोकल लैंग्वेज मॉडल और इमेज मॉडल एक साथ GPU मेमोरी में शायद न समाएँ, खासकर 8 GB कार्ड पर। Marinara की इमेज क्यू इमेज जॉब को एक साथ चलने से रोकती है, पर वह दो लोड किए हुए मॉडल को एक ही VRAM में नहीं समा सकती। मेमोरी कम पड़े तो क्लाउड लैंग्वेज मॉडल इस्तेमाल करें, ComfyUI किसी दूसरे डिवाइस पर चलाएँ, या एक मॉडल अनलोड करके दूसरा इस्तेमाल करें।
Marinara कनेक्शन बनाएँ
- Connections (कनेक्शन) पर क्लिक करें, फिर Add (जोड़ें) पर। Add account (अकाउंट जोड़ें) विंडो में Images & video (इमेज और वीडियो) के नीचे लोकल सर्वर के लिए ComfyUI या RunPod एंडपॉइंट के लिए RunPod Serverless (ComfyUI) चुनें।
- लोकल ComfyUI के लिए उसका पता (
http://127.0.0.1:8188) डालें। API कुंजी की ज़रूरत नहीं है। ComfyUI workflow (optional) फ़ील्ड खाली रहने पर Marinara बिल्ट-इन बेसिक टेक्स्ट-टू-इमेज वर्कफ़्लो इस्तेमाल करता है। - RunPod के लिए अपनी API कुंजी और RunPod endpoint ID (RunPod एंडपॉइंट ID) डालें। यहाँ कस्टम वर्कफ़्लो ज़रूरी है।
- इमेज मॉडल पर Local image defaults (लोकल इमेज डिफ़ॉल्ट) सेट करें। ये वैल्यू आपके वर्कफ़्लो के मिलते-जुलते प्लेसहोल्डर की जगह लेती हैं।
- वर्कफ़्लो पेस्ट करें, सेव करें और Test image (इमेज टेस्ट करें) पर क्लिक करें।
अगर यह काम नहीं किया, तो समस्या-समाधान देखें।
वर्कफ़्लो बनाएँ और एक्सपोर्ट करें
- ComfyUI में Marinara के लिए अलग वर्कफ़्लो बनाएँ।
- अपने चेकपॉइंट, LoRA, VAE, प्रॉम्प्ट एन्कोडर, लेटेंट-इमेज या इमेज-इनपुट नोड, सैंपलर और आउटपुट नोड हमेशा की तरह सेट करके जोड़ें।
- ComfyUI में वर्कफ़्लो क्यू करें और जाँच लें कि उससे मनचाही इमेज बनती है।
- एक आउटपुट नोड ज़रूर रखें। SaveImage सबसे सुरक्षित विकल्प है, क्योंकि Marinara पूरी हुई इमेज या एनिमेशन ComfyUI की वर्कफ़्लो हिस्ट्री से पढ़ता है।
- एडिट होने लायक वर्कफ़्लो को कोई पहचानने लायक नाम देकर सेव करें, जैसे
Marinara_Workflow। - वर्कफ़्लो को API फ़ॉर्मैट में एक्सपोर्ट करें। ComfyUI फ़्रंटएंड के वर्ज़न के हिसाब से इस विकल्प का नाम Save (API Format), Export (API) या Export to API हो सकता है। यह न दिखे तो ComfyUI के डेवलपर या dev-mode विकल्प चालू करें।
- एक्सपोर्ट की हुई
.jsonफ़ाइल किसी टेक्स्ट एडिटर में खोलें।
API फ़ॉर्मैट वाला वर्कफ़्लो सामान्य विज़ुअल-एडिटर वर्कफ़्लो से अलग होता है। उसकी टॉप-लेवल कुंजियाँ नोड ID होती हैं, और हर नोड में आम तौर पर class_type और inputs होते हैं। API वाला वर्ज़न ही एक्सपोर्ट करें, एडिटर के विज़ुअल लेआउट वाली सामान्य वर्कफ़्लो फ़ाइल पेस्ट न करें।
ComfyUI वीडियो वर्कफ़्लो
Images & video के नीचे एक ComfyUI अकाउंट जोड़ें और उसका वीडियो मॉडल खोलें। ज़रूरी ComfyUI workflow (optional) फ़ील्ड में API फ़ॉर्मैट वाला वर्कफ़्लो पेस्ट करें। WAN 2.2 और दूसरे लोकल वीडियो ग्राफ़ तब तक चलते हैं, जब तक वही वर्कफ़्लो ComfyUI में चले और कोर SaveVideo जैसे किसी आउटपुट से MP4 सेव करे।
वीडियो वर्कफ़्लो में ये प्लेसहोल्डर उद्धरण-चिह्नों के अंदर रखकर इस्तेमाल किए जा सकते हैं:
| प्लेसहोल्डर | Marinara जो वैल्यू देता है |
%prompt% | तैयार सीन या एनिमेशन प्रॉम्प्ट। |
%width%, %height% | 480p के लिए 832×480 और 720p के लिए 1280×720, 9:16 में उलटे हुए। |
%seed% | नया रैंडम 32-बिट सीड। |
%length% | क्लिप की लंबाई, 16 fps पर फ़्रेम की गिनती के रूप में। |
%model% | कनेक्शन की Model वैल्यू, जब कोई सेट हो। |
%reference_image_name% | ComfyUI के LoadImage नोड के लिए अपलोड की गई पहली फ़्रेम की फ़ाइल का नाम। |
Marinara वर्कफ़्लो को /prompt से क्यू करता है, /history पोल करता है, और gifs या images आउटपुट में बताई गई MP4 डाउनलोड करता है। इमेज-टू-वीडियो वाली जेनरेशन %reference_image_name% देती है, पर सिर्फ़ टेक्स्ट वाले कनेक्शन टेस्ट नहीं देते। इसलिए जब एक ही वर्कफ़्लो को दोनों के साथ चलना हो, तो वह इनपुट ऑप्शनल रखें।
लोकल WAN रेंडर मिड-रेंज GPU पर 30 मिनट से भी ज़्यादा ले सकते हैं। ComfyUI के वीडियो जॉब VIDEO_GEN_TIMEOUT_MS इस्तेमाल करते हैं, सिर्फ़ इमेज वाला COMFYUI_GEN_TIMEOUT नहीं। सही वर्कफ़्लो बीच में ही कट जाए तो वीडियो टाइमआउट बढ़ाएँ और Marinara दोबारा चालू करें।
Marinara के प्लेसहोल्डर जोड़ें
जिन वैल्यू पर Marinara का नियंत्रण चाहिए, उन्हें नीचे दिए गए प्लेसहोल्डर से बदल दें।
लोकल ComfyUI कनेक्शन में हर प्लेसहोल्डर JSON के उद्धरण-चिह्नों के अंदर ही रखें। Marinara पहले वर्कफ़्लो पार्स करता है, फिर "%width%" जैसे पूरी तरह संख्या वाले प्लेसहोल्डर को असली नंबर में बदल देता है। इसलिए यह उन नोड के लिए भी सही रहता है जिन्हें संख्या वाला इनपुट चाहिए।
RunPod Serverless (ComfyUI) कनेक्शन में "%prompt%", "%model%" और "%sampler%" जैसे टेक्स्ट प्लेसहोल्डर उद्धरण-चिह्नों में रखें, लेकिन %width%, %height%, %seed%, %steps%, %cfg%, %denoise% और %clip_skip% जैसे संख्या वाले प्लेसहोल्डर बिना उद्धरण-चिह्न के छोड़ें। RunPod में यह बदलाव Marinara के वर्कफ़्लो पार्स करने से पहले होता है, इसलिए जुड़ी हुई संख्या भेजे गए JSON को सही बनाती है। कनेक्शन एडिटर इस टेम्पलेट को कुछ देर के लिए गलत JSON बता सकता है, क्योंकि बिना उद्धरण-चिह्न वाला टोकन जेनरेशन के समय ही बदला जाता है। इस चेतावनी के बावजूद टेम्पलेट सेव हो जाता है।
एक बेसिक लोकल API वर्कफ़्लो के काम के हिस्से कुछ ऐसे दिख सकते हैं:
{
"3": {
"class_type": "KSampler",
"inputs": {
"seed": "%seed%",
"steps": "%steps%",
"cfg": "%cfg%",
"sampler_name": "%sampler%",
"scheduler": "%scheduler%",
"denoise": "%denoise%"
}
},
"5": {
"class_type": "EmptyLatentImage",
"inputs": {
"width": "%width%",
"height": "%height%",
"batch_size": 1
}
},
"6": {
"class_type": "CLIPTextEncode",
"inputs": {
"text": "portrait, %prompt%, masterpiece"
}
},
"7": {
"class_type": "CLIPTextEncode",
"inputs": {
"text": "watermark, %negative_prompt%"
}
}
}यह सिर्फ़ एक हिस्सा है। अपने एक्सपोर्ट किए हुए वर्कफ़्लो के नोड लिंक और बाकी इनपुट बनाए रखें। तय टैग आगे या पीछे जोड़ने के लिए प्रॉम्प्ट प्लेसहोल्डर को किसी लंबी स्ट्रिंग के अंदर भी रख सकते हैं। संख्या वाला प्लेसहोल्डर आम तौर पर पूरी वैल्यू होना चाहिए। वर्कफ़्लो की RunPod कॉपी में उन संख्या वाले टोकन के उद्धरण-चिह्न हटा दें। जिस सेटिंग को Marinara के कनेक्शन डिफ़ॉल्ट से बदलवाना नहीं है, उसे वर्कफ़्लो में सीधे तय वैल्यू पर भी छोड़ सकते हैं।
| प्लेसहोल्डर | Marinara जो वैल्यू देता है |
%prompt% | पॉज़िटिव इमेज प्रॉम्प्ट। यह न हो तो कनेक्शन एडिटर चेतावनी देता है। |
%negative_prompt% | नेगेटिव इमेज प्रॉम्प्ट। |
%width%, %height% | माँगी गई इमेज की माप। |
%seed% | कनेक्शन का सीड, -1 देने पर नया रैंडम सीड बनता है। |
%model% | कनेक्शन पर सेव किया हुआ मॉडल। अपने लोडर नोड को जिस चेकपॉइंट वैल्यू की उम्मीद है, ठीक वही डालें। |
%steps% | सैंपलिंग स्टेप। |
%cfg% | CFG स्केल। %cfg_scale% और %scale% भी चलते हैं। |
%sampler% | सैंपलर का नाम। |
%scheduler% | शेड्यूलर का नाम। |
%denoise% | डीनॉइज़िंग की मात्रा। %denoising_strength% भी चलता है। |
%clip_skip% | किसी अनुकूल नोड के लिए Clip Skip वैल्यू। |
एडिट करने के बाद JSON सेव करें, पूरी फ़ाइल कॉपी करें, उसे इमेज मॉडल के ComfyUI workflow (optional) में पेस्ट करें, सेव करें और Test image पर क्लिक करें।
रेफ़रेंस इमेज इस्तेमाल करें
जेनरेशन शुरू करने वाले फ़ीचर के पास भेजने लायक इमेज हों, तो Marinara चार तक रेफ़रेंस इमेज दे सकता है। कस्टम वर्कफ़्लो में इसके लिए अनुकूल इनपुट नोड और प्लेसहोल्डर होने चाहिए। सिर्फ़ प्लेसहोल्डर जोड़ने से वे नोड अपने आप न बनते हैं, न जुड़ते हैं।
लोकल ComfyUI: LoadImage के लिए अपलोड फ़ाइल नाम
सामान्य ComfyUI LoadImage नोड के लिए फ़ाइल नाम वाला प्लेसहोल्डर इस्तेमाल करें:
{
"12": {
"class_type": "LoadImage",
"inputs": {
"image": "%reference_image_name%",
"upload": "image"
}
}
}Marinara रेफ़रेंस को ComfyUI की इनपुट डायरेक्ट्री में अपलोड करता है और प्लेसहोल्डर की जगह ComfyUI से मिला फ़ाइल नाम रख देता है। %reference_image_name% का मतलब है पहली इमेज। कई रेफ़रेंस इनपुट वाले वर्कफ़्लो %reference_image_name_01% से %reference_image_name_04% तक इस्तेमाल कर सकते हैं।
अगर वर्कफ़्लो को हर बार इमेज इनपुट चाहिए ही, तो Local image defaults में 1x1 प्लेसहोल्डर अपलोड करने वाला विकल्प चालू करें। फिर रिक्वेस्ट में असली रेफ़रेंस न होने पर Marinara एक छोटी सी प्लेसहोल्डर इमेज भेज देता है।
रॉ base64 इमेज डेटा
पहली रॉ base64 इमेज के लिए %reference_image% इस्तेमाल करें, और गिनती वाले इनपुट के लिए %reference_image_01% से %reference_image_04% तक। इन वैल्यू में data:image/... प्रीफ़िक्स के बिना base64 डेटा होता है, और ये सिर्फ़ उन्हीं कस्टम नोड के साथ चलती हैं जो यह फ़ॉर्मैट सीधे लेते हैं।
RunPod वर्कफ़्लो में रॉ base64 प्लेसहोल्डर चलते हैं। फ़ाइल नाम वाले अपलोड प्लेसहोल्डर सिर्फ़ लोकल ComfyUI के लिए हैं और RunPod हैंडलर से नहीं चलते।
हर कैरेक्टर के लिए अलग वर्कफ़्लो रखें
जिस कैरेक्टर को कोई खास चेकपॉइंट, LoRA स्टैक, ControlNet सेटअप या रेफ़रेंस-इमेज ढाँचा चाहिए, उसके लिए अलग एक्सपोर्ट किया हुआ वर्कफ़्लो और अलग Marinara इमेज कनेक्शन बना सकते हैं। जहाँ भी वह कैरेक्टर या इमेज फ़ीचर इमेज मॉडल चुनने देता है, वहाँ मेल खाता इमेज मॉडल चुन लें।
इससे एक ही सामान्य वर्कफ़्लो के मुकाबले नतीजे ज़्यादा एक जैसे मिल सकते हैं, पर हर मॉडल फिर भी JSON की अपनी अलग कॉपी रखता है। ComfyUI में किसी कैरेक्टर का वर्कफ़्लो बदलने के बाद उस कनेक्शन के लिए एक्सपोर्ट, एडिट, कॉपी और पेस्ट वाले स्टेप दोबारा करें।
समस्या-समाधान
| समस्या | क्या जाँचें |
| Marinara कहता है कि वर्कफ़्लो JSON गलत है | लोकल ComfyUI के लिए, प्लेसहोल्डर जोड़ने के बाद उद्धरण-चिह्न, अल्पविराम और ब्रैकेट जाँचें। RunPod के लिए, सिर्फ़ संख्या वाले प्लेसहोल्डर बिना उद्धरण-चिह्न के रहने चाहिए, बाकी सारे टेक्स्ट प्लेसहोल्डर और पूरे टेम्पलेट का JSON सिंटैक्स सही होना चाहिए। |
| प्रॉम्प्ट या प्लेसहोल्डर अक्षरशः नोड तक पहुँच जाता है | जाँच लें कि टोकन की वर्तनी ठीक वैसी ही है जैसी सूची में दी है, और पेस्ट किया गया वर्कफ़्लो अभी-अभी एक्सपोर्ट किया गया API वर्ज़न ही है। |
| इमेज माँगी गई माप को अनदेखा कर देती है | %width% और %height% उसी लेटेंट-इमेज या समकक्ष साइज़ नोड में डालें जो असल में सैंपलर को फ़ीड करता है। |
| ComfyUI को मॉडल नहीं मिलता | लोडर को जिस चेकपॉइंट नाम की उम्मीद है ठीक वही इस्तेमाल करें, या %model% की जगह वर्कफ़्लो में चेकपॉइंट सीधे तय कर दें। |
| ComfyUI कहता है कि कोई नोड या इनपुट नहीं मिला | वही कस्टम-नोड पैकेज इंस्टॉल करें जो वर्कफ़्लो बनाते समय इस्तेमाल हुए थे, और जाँच लें कि उनके इनपुट नाम नहीं बदले हैं। |
| जॉब पूरा हो जाता है पर Marinara को इमेज नहीं मिलती | जुड़ा हुआ SaveImage आउटपुट जोड़ें और वर्कफ़्लो को सीधे ComfyUI में दोबारा टेस्ट करें। |
| रेफ़रेंस-इमेज वाला नोड फ़ेल हो जाता है | सामान्य लोकल LoadImage नोड के लिए %reference_image_name...% वाला प्लेसहोल्डर इस्तेमाल करें। रॉ base64 सिर्फ़ उसी नोड के साथ चलाएँ जो इसी के लिए बना हो, और जाँच लें कि Marinara के फ़ीचर ने सचमुच कोई रेफ़रेंस भेजा था। |
| रिमोट या LAN वाला ComfyUI URL ब्लॉक हो जाता है | इमेज कनेक्शन के लिए IMAGE_LOCAL_URLS_ENABLED चालू करें। ComfyUI को नेटवर्क इंटरफ़ेस पर सुनने लायक बनाएँ और होस्ट का फ़ायरवॉल जाँचें। बिना पहचान-जाँच वाले ComfyUI सर्वर को सार्वजनिक इंटरनेट पर मत खोलें। |
एरर: Outbound response exceeded N bytes | जवाब तय सीमा से बड़ा हो गया, जो डिफ़ॉल्ट रूप से 30 MiB है। वर्कफ़्लो या रेफ़रेंस इमेज का एम्बेड किया हुआ मेटाडेटा इसकी वजह हो सकता है। ComfyUI में मेटाडेटा बंद करें, या Marinara की .env में IMAGE_GEN_MAX_RESPONSE_BYTES बढ़ाकर Marinara रीस्टार्ट करें। |
| लंबी इमेज जेनरेशन टाइमआउट हो जाती है | Marinara की .env में COMFYUI_GEN_TIMEOUT बढ़ाएँ। यह वैल्यू सेकंड में होती है और डिफ़ॉल्ट 2400 है। |
| लंबी वीडियो जेनरेशन टाइमआउट हो जाती है | Marinara की .env में VIDEO_GEN_TIMEOUT_MS बढ़ाएँ। यह वैल्यू मिलीसेकंड में होती है और डिफ़ॉल्ट 1800000 (30 मिनट) है। |
| जेनरेशन में GPU मेमोरी कम पड़ जाती है | इमेज की माप या मॉडल का आकार घटाएँ, लोकल लैंग्वेज मॉडल अनलोड करें, रिमोट लैंग्वेज मॉडल इस्तेमाल करें, या ComfyUI को दूसरे डिवाइस पर ले जाएँ। |
मिलती-जुलती गाइड
- इमेज जेनरेशन प्रोवाइडर और सेटअप में सारी सपोर्टेड इमेज सेवाओं और साझा इमेज सेटिंग्स के बारे में बताया गया है।
- सीन वीडियो जेनरेशन में वीडियो कनेक्शन और सीन वीडियो की हर जगह के बारे में बताया गया है।
- Game Mode में LTX 2.3 स्टोरीबोर्ड में LTX Director API वर्कफ़्लो, प्लेसहोल्डर और सुझाई गई Game सेटिंग्स के बारे में बताया गया है।
- इमेज स्टाइल प्रोफ़ाइल में Marinara की दोबारा इस्तेमाल होने वाली प्रॉम्प्ट स्टाइल समझाई गई हैं।
- Illustrator एजेंट में सीन की अपने आप होने वाली इलस्ट्रेशन के बारे में बताया गया है।
- सर्वर कॉन्फ़िगरेशन रेफ़रेंस में लोकल नेटवर्क एक्सेस और ComfyUI टाइमआउट का ब्योरा है।
- ComfyUI वर्कफ़्लो के मूल सिद्धांत में आधिकारिक ComfyUI डॉक्यूमेंटेशन वर्कफ़्लो समझाती है।