Nour_Comfy
Pack custom node SDXL untuk ComfyUI dengan arsitektur modular (bukan single script), supaya lebih mudah di-maintain, di-scale, dan aman untuk workflow production.
Nour_Comfy Pack (Modular)
Pack custom node SDXL untuk ComfyUI dengan arsitektur modular (bukan single script), supaya lebih mudah di-maintain, di-scale, dan aman untuk workflow production.
Struktur Folder
Nour_Comfy/
├─ __init__.py
├─ nour_comfy.py # compatibility shim (legacy import tetap jalan)
├─ nodes/
│ ├─ __init__.py # registrasi NODE_CLASS_MAPPINGS
│ ├─ prompt_forge_xl.py
│ ├─ lora_stack_xl.py
│ ├─ detailer_prompt_xl.py
│ ├─ image_scale_total_pixels.py
│ ├─ checkpoint_hub_xl.py
│ ├─ image_route_toggle.py
│ ├─ latent_route_toggle.py
│ └─ io_bridge_nodes.py
├─ workflows/
│ ├─ Flux_Klein_Workflow.json
│ ├─ Workflow_V1.json
│ └─ Workflow_V2_Anime_FaceRef.json
└─ shared/
├─ __init__.py
├─ comfy_compat.py # fallback safe untuk environment non-Comfy
└─ text_utils.py # helper clean prompt + encode conditioning
Node yang Tersedia
1) Nourivex Prompt Forge XL
Type name (harus sama di workflow): Nourivex Prompt Forge XL
Input utama
clip(CLIP)character_prompt(STRING)positive_base(STRING)negative_base(STRING)style_preset(COMBO)example_prompt(COMBO)size_preset(COMBO)use_custom_size(BOOLEAN)custom_width(INT)custom_height(INT)batch_size(INT)
Output
positive(CONDITIONING)negative(CONDITIONING)latent(LATENT)width(INT)height(INT)positive_text(STRING)negative_text(STRING)
Tips
- Size auto dibulatkan ke kelipatan 64 agar stabil untuk SDXL latent.
- Gunakan
example_promptkalaucharacter_promptbelum diisi detail.
1b) Nourivex Checkpoint Hub XL
Type name (harus sama di workflow): Nourivex Checkpoint Hub XL
Node checkpoint modern untuk loader model SDXL agar pemilihan checkpoint lebih aman saat node default terhapus atau tidak sengaja terganti.
Input utama
checkpoint_name(COMBO)auto_pick_sdxl(BOOLEAN)
Output
MODELCLIPVAEcheckpoint_used(STRING)available_checkpoints(INT)
Tips
- Saat
auto_pick_sdxl = true, node akan memprioritaskan checkpoint SDXL otomatis. - Gunakan output
checkpoint_useduntuk debug checkpoint aktif di workflow.
2) Nourivex LoRA Stack XL
Type name (harus sama di workflow): Nourivex LoRA Stack XL
Input utama
model(MODEL)clip(CLIP)sdxl_profile(Balanced SDXL / Character Focus / Detail Boost)engine_profile(Auto / SDXL / FLUX)flux_clip_strength_multiplier(FLOAT, default0.0)flux_name_hint(STRING token deteksi LoRA Flux)- Slot 1–6:
slotX_enabled(BOOLEAN)slotX_lora(COMBO)slotX_strength_model(FLOAT)slotX_strength_clip(FLOAT)
Output
MODELCLIPapplied_loras(STRING)
Tips
- Mulai dari 2–3 LoRA dulu agar lebih mudah tuning.
- Range aman awal biasanya 0.2–0.8.
applied_lorasdipakai untuk audit stack aktif saat generate.- Untuk LoRA Flux terbaru, set
engine_profile = FLUXagar perilaku strength lebih aman (default clip multiplier0.0).
3) Nourivex Detailer Prompt XL
Type name (harus sama di workflow): Nourivex Detailer Prompt XL
Input utama
clip(CLIP)base_positive(STRING)base_negative(STRING)face_style(COMBO)body_style(COMBO)extra_face(STRING)extra_body(STRING)
Output
face_positive(CONDITIONING)face_negative(CONDITIONING)body_positive(CONDITIONING)body_negative(CONDITIONING)face_prompt_text(STRING)body_prompt_text(STRING)
Tips
- Jalur
face_*untuk detailer utama (wajah). - Jalur
body_*opsional untuk pass tambahan area torso/body.
4) Image Scale To Total Pixels (SDXL Safe)
Type name (harus sama di workflow): Image Scale To Total Pixels (SDXL Safe)
Node ini sudah built-in di pack Nour_Comfy, jadi tidak perlu install pack pihak ketiga hanya untuk scaling berdasarkan total megapixels.
Input utama
image(IMAGE)upscale_method(COMBO: nearest-exact / bilinear / bicubic / area / lanczos)total_megapixels(FLOAT)
Output
IMAGE
Tips
- Untuk tahap polishing SDXL, nilai awal aman di sekitar
1.0 - 1.5 MP. - Method
lanczosjadi default untuk menjaga detail tetap tajam.
5) Nourivex Image Route Toggle
Type name (harus sama di workflow): Nourivex Image Route Toggle
Node utility untuk memilih output image final secara opsional:
- langsung dari decode (tanpa upscale), atau
- dari jalur upscale.
Input utama
image_base(IMAGE)image_upscaled(IMAGE)use_upscale(BOOLEAN)
Output
IMAGE
Tips
use_upscale = falseuntuk preview cepat.use_upscale = trueuntuk output final lebih tajam.
6) Nourivex Load Image
Type name: Nourivex Load Image
Wrapper custom untuk node loader gambar agar workflow konsisten full memakai node pack Nour_Comfy.
Input utama
image(COMBO + upload)
Output
IMAGEMASK
7) Nourivex Preview Image
Type name: Nourivex Preview Image
Wrapper custom untuk preview image. Node ini tetap menampilkan preview dan sekaligus passthrough IMAGE untuk chain workflow.
Input utama
images(IMAGE)
Output
IMAGE
8) Nourivex Upscale Model Loader
Type name: Nourivex Upscale Model Loader
Wrapper custom untuk memilih model upscale.
Input utama
model_name(COMBO)
Output
UPSCALE_MODEL
9) Nourivex Image Upscale With Model
Type name: Nourivex Image Upscale With Model
Wrapper custom untuk proses upscale image menggunakan model upscale.
Input utama
upscale_model(UPSCALE_MODEL)image(IMAGE)
Output
IMAGE
10) Nourivex Latent Route Toggle
Type name: Nourivex Latent Route Toggle
Node utility untuk memilih latent final dari dua jalur input (T2I vs I2I/Inpaint) sebelum masuk sampler.
Input utama
latent_a(LATENT)latent_b(LATENT)use_latent_b(BOOLEAN)
Output
LATENT
Kompatibilitas & Migrasi
- Node type names tidak diubah, jadi workflow lama tetap kompatibel.
nour_comfy.pytetap ada sebagai compatibility shim untuk import lama.- Registrasi utama sekarang ada di
nodes/__init__.py.
Workflow yang Disarankan
Gunakan workflow: user/default/workflows/Workflow_V1.json (sudah disinkronkan untuk versi modular pack).
Catatan: default workflow sudah diset tanpa LoRA Nuwa-BaseMesh karena ada bug pada beberapa skenario detailer.
Catatan tambahan: jalur body detailer Tahap 3 di workflow default sekarang dinonaktifkan agar pipeline lebih stabil.
Catatan tambahan 2: FaceDetailer dilepas dari workflow default; alur default sekarang decode → 4x-UltraSharpV2 → preview.
Catatan tambahan 3: upscale sekarang opsional lewat Nourivex Image Route Toggle (default: OFF untuk preview cepat).
Workflow V2 (Anime + Face Reference)
Workflow: user/default/workflows/Workflow_V2_Anime_FaceRef.json
Fokus V2:
- Gaya anime Japan dengan checkpoint
animagineXLV31_v31.safetensors. - Konsistensi wajah karakter via jalur IPAdapter FaceID.
- Tetap memakai toggle upscale agar iterasi cepat/final render bisa dipilih.
Cara pakai V2:
- Upload gambar referensi wajah di node
LoadImage(Face Reference). - Jalankan workflow dengan
weightFaceID awal di1.0. - Naikkan bertahap ke
1.1 - 1.3bila kemiripan wajah belum cukup. - Jika hasil terlalu kaku/overfit, turunkan
weightataulora_strengthpada loader FaceID.
Troubleshooting V2:
- Jika muncul error
No link found in parent graph for id [7] slot [0] model, berarti inputmodeldiKSamplermengarah ke link lama. - Perbaikan default pada pack ini:
KSampler.modelwajib terhubung ke output model dariIPAdapterFaceID(link id43di workflow V2 saat ini).
Workflow Flux Klein (Text/Image Hybrid + Route Toggle)
Workflow: user/default/workflows/Flux_Klein_Workflow.json
Fokus Flux Klein:
- Hybrid input Text-to-Image + Image-to-Image/Edit dalam satu graph.
- Loader model via
Nourivex Checkpoint Hub XLuntuk checkpoint Flux Klein (auto_pick_sdxl = false). - Prompt text dari
Nourivex Prompt Forge XLdiproses denganCLIPTextEncodeFlux+FluxGuidance(3.5). - Jalur I/O + preview + upscale menggunakan node custom:
Nourivex Load Image,Nourivex Preview Image,Nourivex Upscale Model Loader,Nourivex Image Upscale With Model, dan route akhirNourivex Image Route Toggle.
Arsitektur zona:
-
Zona Input (The Switch)
- Jalur A (T2I):
Nourivex Prompt Forge XL→ latent keNourivex Latent Route Toggle. - Jalur B (I2I):
Nourivex Load Image→VAEEncode→ latent keNourivex Latent Route Toggle. - Bridge inpaint disiapkan via
InpaintModelConditioning(aktifkan dengan rewire latent ke switch sesuai kebutuhan edit area).
- Jalur A (T2I):
-
Zona Mesin (Flux Engine)
- Loader:
Nourivex Checkpoint Hub XL→ (opsional)Nourivex LoRA Stack XL. - Pada
Nourivex LoRA Stack XL, gunakanengine_profile = FLUXuntuk stack LoRA Flux terbaru. - Conditioning:
CLIPTextEncodeFlux(positive + negative), lalu positive lewatFluxGuidance. - Sampler:
KSamplerdengan set wajib:steps:4 - 8cfg:1.0sampler_name:eulerscheduler:simple
- Loader:
-
Zona Perjalanan (Preview & Upscale)
VAEDecodeTiled→Nourivex Preview Image(hasil mentah).Image Scale To Total Pixels (SDXL Safe)di1.5 MP.- Route upscale:
- base: langsung dari output image scale
- upscaled: lewat
Nourivex Image Upscale With Model
- upscaled: lewat
- base: langsung dari output image scale
- Seleksi final pakai
Nourivex Image Route Toggle.
-
Zona Akhir
- Output dari
Nourivex Image Route TogglekeNourivex Preview Imagefinal (atau ganti keSaveImagekalau ingin langsung simpan).
- Output dari
Quick Manual Switch (sebelum run):
- Text-to-Image mode:
Nourivex Latent Route Toggle.use_latent_b = false - Image-to-Image/Edit mode:
Nourivex Latent Route Toggle.use_latent_b = true - Preview cepat (tanpa upscale model):
Nourivex Image Route Toggle.use_upscale = false - Final render (dengan upscale model):
Nourivex Image Route Toggle.use_upscale = true - Flux LoRA terbaru: di
Nourivex LoRA Stack XLsetengine_profile = FLUX
Catatan kompatibilitas Flux:
- Workflow default Flux Klein sekarang tidak lagi bergantung pada
ImpactLatentSwitch, karena sudah memakai node internalNourivex Latent Route Toggle. - Jika CLIP Flux di environment kamu memakai varian node berbeda, mapping ulang node encode ke varian Flux yang tersedia tanpa mengubah alur utama.
Troubleshooting I/O bridge:
- Jika sempat muncul error
Nourivex Load Image requires ComfyUI runtime, update pack ini lalu restart ComfyUI (wrapper sekarang resolve node core lebih robust per module).
Install / Update
- Simpan folder ini di:
ComfyUI/custom_nodes/Nour_Comfy
- Restart ComfyUI.
- Jika node belum muncul:
- hard refresh browser ComfyUI
- cek console startup apakah folder
Nour_Comfyterdeteksi
Best Practice Pack
- Pisahkan logic node per file (
nodes/*) agar clean architecture. - Taruh utility reusable di
shared/*. - Pertahankan
NODE_CLASS_MAPPINGSstabil untuk backward-compat. - Setiap update input/output node, wajib update README agar workflow user tetap sinkron.