מעודכן לאפריל 2026 25 דקות קריאה למשתמשים מתקדמים

מדריך ComfyUI המלא
Workflows, ControlNet, IP-Adapter, AnimateDiff ו-Python API

המדריך המקיף ביותר ל-ComfyUI בעברית — ממשק גרפי מבוסס-נודים ל-Stable Diffusion. למד לבנות Workflows מקצועיים, להשתמש ב-ControlNet, IP-Adapter, AnimateDiff ולשלב עם Python API לייצור תמונות בסקייל.

Node-Based
ממשק גרפי
Open Source
קוד פתוח
Free to Use
ללא עלות

מה זה ComfyUI?

ComfyUI הוא ממשק גרפי מבוסס-נודים (nodes) עבור מודלי Stable Diffusion, שפותח על ידי comfyanonymous ב-2023 ופורסם כקוד פתוח ב-GitHub. בניגוד לממשקים מסורתיים כמו AUTOMATIC1111 שמציגים לך טאבים ופרמטרים מוכנים, ComfyUI חושף את כל ה-pipeline של יצירת תמונה כגרף של נודים מחוברים — כל נוד הוא פונקציה, וכל חיבור בין נודים הוא זרימת נתונים.

הגישה הזו מעניקה שקיפות ושליטה מלאות: אתה רואה בדיוק מה קורה בכל שלב של תהליך הדנוייזינג, מי מקבל את מה, ואפשר לשנות כל חיבור בלחיצה. זה גם הופך את ComfyUI למהיר יותר מהמתחרים — ניהול הזיכרון (VRAM) שלו יעיל בהרבה, ואפשר להריץ מודלים כבדים על GPU עם פחות VRAM.

מעבר לכך, ComfyUI הפך לסטנדרט דה-פקטו בקהילה המקצועית. כשמישהו מפרסם Workflow חדש — בין אם זה ControlNet מתקדם, IP-Adapter, או AnimateDiff — הוא מפרסם אותו בפורמט JSON של ComfyUI. גרירת תמונה שנוצרה ב-ComfyUI לממשק שלו תטעין את כל ה-Workflow אוטומטית, כולל כל הפרמטרים.

השוואה: ComfyUI vs AUTOMATIC1111 vs Forge

קריטריון ComfyUI AUTOMATIC1111 Forge
ממשק גרפי נודים טאבים טאבים
מהירות מהיר מאוד סביר מהיר
גמישות מקסימלית מוגבל בינוני
עקומת לימוד תלולה קלה קלה-בינונית
ControlNet מלא מלא מלא
AnimateDiff מצוין תוסף בינוני

מפת דרכים לשליטה ב-ComfyUI

להלן מסלול למידה מובנה — מהתקנה ראשונה ועד בניית Pipeline ייצור מלא עם Python API. כל שלב בנוי על הקודם, ואפשר לעצור בכל נקודה ולעבוד עם מה שלמדת.

Stage 1 בסיסים שבועות 1–2
התקנה ראשונהComfyUI Desktop או Git clone, טעינת מודל, הרצה מקומית
Workflow ראשוןText2Img בסיסי — חיבור 6 נודים, Queue Prompt, שמירת תמונה
Img2Img ו-Samplersdenoise, steps, CFG — הבנת הפרמטרים הבסיסיים
Stage 2 שליטה שבועות 3–4
ControlNetCanny, Depth, OpenPose — שליטה על מבנה ופוזה
LoRA ו-VAEטעינת LoRA, החלפת VAE, שילוב מספר LoRAs במשקלים שונים
UpscalersReal-ESRGAN, 4x Upscale, ESRGAN בתוך Workflow
Stage 3 Advanced שבועות 5–6
IP-Adapterstyle transfer, FaceID, שמירת identity ללא אימון LoRA
SDXL ו-Fluxמודלים חדישים, architecture שונה, הגדרות CFG שונות
Inpainting מתקדםFaceDetailer, Impact Pack, תיקון פרצופים ועיניים
Stage 4 אנימציה שבועות 7–8
AnimateDifftemporal consistency, AnimateDiff v3, Motion LoRAs
Video2Videoעיבוד וידאו קיים, החלפת סגנון, שמירת מבנה
SVDStable Video Diffusion לאנימציה ריאליסטית ממחשב יחיד
Stage 5 פרודקשן שבועות 9–10
Python APIWebSocket client, queue_prompt, המתנה לסיום, הורדת תמונות
Batch Generationהרצת אלפי Workflows מ-spreadsheet, מקביליות
אינטגרציותGoogle Drive, Telegram, webhooks, pipeline אוטומטי מלא

התקנה

יש שתי דרכים עיקריות להתקין ComfyUI — הדרך הגרפית הקלה, והדרך הידנית שנותנת שליטה מלאה.

שיטה 1: ComfyUI Desktop (מומלץ למתחילים)

ComfyUI Desktop הוא אפליקציה ייעודית ל-Windows ו-Mac עם התקנה בלחיצה אחת. היא כוללת Python מובנה, CUDA drivers, ומנהל מודלים גרפי. אפשר להוריד אותה מ-comfy.org ישירות.

שיטה 2: Git Clone (מומלץ למפתחים)

git clone https://github.com/comfyanonymous/ComfyUI
cd ComfyUI
pip install -r requirements.txt
python main.py --listen

הדגל --listen מאפשר גישה מרשת מקומית (לא רק localhost). אם יש לך GPU של Nvidia, ComfyUI ישתמש בו אוטומטית. לאפל Silicon (M1/M2/M3) הוסף --force-fp16.

מבנה התיקיות

לאחר ההתקנה, תצטרך להכניס מודלים לתיקיות הנכונות:

lightbulb
התקן ComfyUI Manager ראשון

ComfyUI Manager (זמין ב-GitHub) מאפשר להתקין custom nodes ומודלים ישירות מהממשק הגרפי, בלי לגעת ב-terminal. כדאי להתקין אותו מיד לאחר ההתקנה הבסיסית — הוא חוסך שעות עבודה.

נודים ו-Workflows — הפרדיגמה הבסיסית

ב-ComfyUI, כל נוד מייצג פונקציה אחת — טעינת מודל, קידוד פרומפט, יצירת latent space, דנוייזינג, פענוח. הקווים המחברים ביניהם (edges) מייצגים זרימת נתונים — הפלט של נוד אחד נכנס לקלט של הבא. כך אפשר לראות בדיוק מה קורה בכל שלב, ולשנות כל חיבור בנפרד.

נודי הליבה של כל Workflow

הWorkflow הבסיסי — Text to Image

ה-Workflow הבסיסי ביותר מחבר 6 נודים בשרשרת: CheckpointLoaderSimple טוען את המודל ומוציא שלושה פלטים (model, clip, vae). ה-clip נכנס לשני נודי CLIPTextEncode — אחד לפרומפט החיובי ואחד לשלילי. EmptyLatentImage יוצר latent ריק. כל הקלטים מתאחדים ב-KSampler, שמוציא latent מעובד. VAEDecode מפענח אותו לתמונה, ו-SaveImage שומר אותה.

touch_app
קיצורי מקלדת חיוניים

לחץ ימני על ה-canvas להוסיף נוד. גרור כבל בין output לinput לחיבור נודים. Ctrl+Z לundo. לחץ "Queue Prompt" להרצה. לחץ H לאיפוס תצוגה, S לשמירת Workflow.

KSampler לעומק

ה-KSampler הוא הנוד החשוב ביותר ב-ComfyUI — הוא מריץ את אלגוריתם הדנוייזינג שהופך noise לתמונה. כל פרמטר שלו משפיע על התוצאה הסופית, וחשוב להבין מה כל אחד עושה.

כל הפרמטרים

טבלת Samplers

Sampler מהירות איכות שימוש
euler מהיר טוב בדיקות מהירות
euler_ancestral מהיר טוב+ כללי, יצירתי
dpm++_2m karras בינוני מצוין איכות גבוהה
dpm++_sde karras איטי מצוין פרטים עדינים
lcm מהיר מאוד בינוני preview, batch
ddim בינוני סביר ייעודי לinversion

Schedulers: השתמש ב-karras ברוב המקרים — הוא מתפלג הנoise בצורה שמייצרת תמונות חדות יותר. normal הוא ברירת המחדל, exponential מתאים ל-SDXL, ו-sgm_uniform ייעודי לFlux.

warning
CFG — הטעות הנפוצה ביותר

CFG גבוה מדי (מעל 12) גורם לצבעים שרופים ואובדן פרטים. Flux דורש CFG של 1–3 בלבד. SDXL: 5–7. SD1.5: 7–9. LCM: 1–2. הכנס ערך גבוה מדי ותקבל תמונה עם artifacts חזויים.

ControlNet — שליטה מלאה על המבנה

ControlNet הוא אחד החידושים החשובים ביותר בעולם Stable Diffusion. הוא מאפשר לשלוט על מרחב, פוזה, קצוות ועומק של התמונה הנוצרת — לא רק דרך הפרומפט, אלא דרך תמונת reference שמכווינה את תהליך הדנוייזינג.

סוגי ControlNet ומתי להשתמש בכל אחד

Workflow של ControlNet

ב-ComfyUI, ControlNet מוסיף שני נודים לWorkflow הרגיל: AuxPreprocessor (Canny/Depth/Pose) מעבד את תמונת ה-reference, ControlNetLoader טוען את מודל ה-ControlNet המתאים, ו-ControlNetApply מחבר את ה-conditioning לKSampler. הסדר הוא: LoadImage → AuxPreprocessor → ControlNetLoader → ControlNetApply (+ CLIPTextEncode outputs) → KSampler.

פרמטרי ControlNet

IP-Adapter — Style Transfer ללא אימון

IP-Adapter (Image Prompt Adapter) מאפשר להעביר style ו-identity מתמונת reference לתמונה חדשה — בלי לאמן LoRA, בלי לחכות שעות. פשוט מספקים תמונה, ומגדירים כמה משקל לתת לה.

גרסאות IP-Adapter

Workflow בסיסי

הנודים הנוספים שנכנסים לWorkflow: LoadImage (תמונת reference) → IPAdapterModelLoader (טעינת מודל IP-Adapter) → IPAdapterApply (מחבר בין ה-reference לmodel ול-conditioning) → KSampler.

פרמטרים חשובים

face
שילוב IP-Adapter + ControlNet

לשמירת identity תוך שינוי סגנון, שלב IP-Adapter FaceID (weight 0.4) עם ControlNet OpenPose לשליטה מלאה על הפוזה. זה המתכון לפורטרייטים מקצועיים עקביים.

AnimateDiff — מסרטון תמונות לוידאו קוהרנטי

AnimateDiff מוסיף temporal consistency — עקביות בין פריימים — לתהליך יצירת תמונות. במקום לייצר פריימים עצמאיים שנראים שונים זה מזה, AnimateDiff "יודע" שהפריימים צריכים להיות חלק מסדרה קוהרנטית ומייצר וידאו חלק.

נודי הליבה של AnimateDiff

פרמטרים עיקריים

Motion LoRAs

Motion LoRAs הם קבצי LoRA מיוחדים שמוסיפים תנועה ספציפית לסרטון: zoom-in, zoom-out, pan-left, pan-right, tilt-up, roll. אפשר לשלב כמה Motion LoRAs עם משקלים שונים ליצירת תנועות מורכבות.

speed
האצת AnimateDiff עם LCM LoRA

השתמש ב-LCM LoRA עם AnimateDiff להאצת הרנדור פי 4 עם איכות דומה. במקום 20–25 steps, תוכל להשתמש ב-4–6 steps עם LCM ולקבל תוצאות טובות בזמן קצר בהרבה.

Python API — אוטומציה בסקייל

ComfyUI רץ כשרת HTTP על פורט 8188 עם WebSocket לעדכוני progress. זה מאפשר לשלוח Workflows בתכנות, להמתין לסיום, ולהוריד תמונות — כל זה ממקוד Python.

Client מלא עם WebSocket

import json
import urllib.request
import urllib.parse
import uuid
import websocket

SERVER_ADDRESS = "127.0.0.1:8188"
CLIENT_ID = str(uuid.uuid4())

def queue_prompt(prompt_workflow: dict) -> dict:
    """שליחת Workflow לתור"""
    data = json.dumps({
        "prompt": prompt_workflow,
        "client_id": CLIENT_ID
    }).encode("utf-8")
    req = urllib.request.Request(
        f"http://{SERVER_ADDRESS}/prompt",
        data=data,
        headers={"Content-Type": "application/json"}
    )
    return json.loads(urllib.request.urlopen(req).read())

def get_image(filename: str, subfolder: str, folder_type: str) -> bytes:
    """הורדת תמונה שנוצרה"""
    params = urllib.parse.urlencode({
        "filename": filename,
        "subfolder": subfolder,
        "type": folder_type
    })
    return urllib.request.urlopen(
        f"http://{SERVER_ADDRESS}/view?{params}"
    ).read()

def wait_for_completion(prompt_id: str) -> list:
    """המתנה לסיום ושליפת תמונות דרך WebSocket"""
    ws = websocket.WebSocket()
    ws.connect(f"ws://{SERVER_ADDRESS}/ws?clientId={CLIENT_ID}")
    images = []
    while True:
        msg = json.loads(ws.recv())
        if msg["type"] == "executing":
            if msg["data"]["node"] is None and \
               msg["data"]["prompt_id"] == prompt_id:
                break
        elif msg["type"] == "executed":
            for img_data in msg["data"].get("output", {}).get("images", []):
                images.append(get_image(
                    img_data["filename"],
                    img_data["subfolder"],
                    img_data["type"]
                ))
    ws.close()
    return images

# Workflow בסיסי text-to-image
WORKFLOW = {
    "4": {"class_type": "CheckpointLoaderSimple",
          "inputs": {"ckpt_name": "v1-5-pruned-emaonly.safetensors"}},
    "5": {"class_type": "EmptyLatentImage",
          "inputs": {"width": 512, "height": 512, "batch_size": 1}},
    "6": {"class_type": "CLIPTextEncode",
          "inputs": {"clip": ["4", 1],
                     "text": "a beautiful sunset over Tel Aviv beach, photorealistic"}},
    "7": {"class_type": "CLIPTextEncode",
          "inputs": {"clip": ["4", 1],
                     "text": "ugly, blurry, watermark, low quality"}},
    "3": {"class_type": "KSampler",
          "inputs": {"model": ["4", 0], "positive": ["6", 0],
                     "negative": ["7", 0], "latent_image": ["5", 0],
                     "seed": 42, "steps": 20, "cfg": 7.0,
                     "sampler_name": "euler_ancestral",
                     "scheduler": "karras", "denoise": 1.0}},
    "8": {"class_type": "VAEDecode",
          "inputs": {"samples": ["3", 0], "vae": ["4", 2]}},
    "9": {"class_type": "SaveImage",
          "inputs": {"images": ["8", 0], "filename_prefix": "TLV"}}
}

result = queue_prompt(WORKFLOW)
images = wait_for_completion(result["prompt_id"])
from pathlib import Path
for i, img in enumerate(images):
    Path(f"output_{i}.png").write_bytes(img)
    print(f"נשמר: output_{i}.png")

Batch Generation

import json
from pathlib import Path

def generate_batch(prompts: list, output_dir: str = "batch") -> None:
    """יצירת batch של תמונות ממספר פרומפטים"""
    Path(output_dir).mkdir(exist_ok=True)
    for idx, prompt_text in enumerate(prompts):
        wf = json.loads(json.dumps(WORKFLOW))
        wf["6"]["inputs"]["text"] = prompt_text
        wf["3"]["inputs"]["seed"] = idx
        result = queue_prompt(wf)
        imgs = wait_for_completion(result["prompt_id"])
        for img in imgs:
            out = Path(output_dir) / f"image_{idx:03d}.png"
            out.write_bytes(img)
            print(f"+ {out}")

# שימוש
generate_batch([
    "street art in Jerusalem old city, vibrant colors",
    "Negev desert at sunrise, dramatic lighting",
    "Tel Aviv skyline at night, long exposure",
    "Haifa bay from above, aerial photography",
])

5 פרויקטים מעשיים

להלן 5 פרויקטים מדורגים לפי רמת קושי — מ-Workflow בסיסי ועד Pipeline ייצור מלא עם Python.

מתחיל פרויקט 1: גנרטור תמונות לסושיאל מדיה

Workflow שמייצר תמונות בפורמטים שונים לפי פלטפורמה: Instagram 1:1, Stories 9:16, Pinterest 4:5 — הכל אוטומטי מפרומפט אחד.

Skills
EmptyLatentImage דינמי, batch_size, שמות קובץ אוטומטיים לפי פורמט
הגדרה
3 SaveImage nodes במקביל, כל אחד עם רזולוציה שונה, מחובר לאותו KSampler
Stretch
watermark אוטומטי דרך ImageComposite node, batch של 10 פרומפטים דרך Python API
בינוני פרויקט 2: Portrait Enhancer עם FaceDetailer

Pipeline שמקבל פורטרייט, משפר פרצופים ועיניים, מריץ Hires Fix לרזולוציה גבוהה. תוצאה: תמונות portrait מקצועיות ב-4K.

Skills
Img2Img עם denoise נמוך, FaceDetailer (Impact Pack), Hires Fix דרך KSampler שני
Custom Nodes
ComfyUI Impact Pack, efficiency-nodes לניהול VRAM, UltimateSDUpscale
Stretch
batch של 50 תמונות דרך Python API, שמירה אוטומטית לתיקייה ממוינת
בינוני-מתקדם פרויקט 3: Renders אדריכלות מתוכנית קומה

קבלת floor plan (תוכנית דירה), ייצור renders ריאליסטיים ממספר זוויות — בלי תוכנת 3D. אדריכלים ישראלים משתמשים בזה להצגת ללקוחות.

Skills
ControlNet Depth + Normal במקביל, SDXL architecture, 4x Upscaler לסיום
ControlNet Setup
שני ControlNetApply nodes מחוברים בסדרה — Depth קודם, Normal אחריו — strength 0.7 לכל אחד
Stretch
5 זוויות שונות לאותה דירה, בחירת תאורה (בוקר/ערב/לילה) דרך פרומפט
מתקדם פרויקט 4: AnimateDiff לפרסומות מוצר

3 שניות אנימציה מקצועית: מוצר מסתובב על background לבן, החלפה ל-background מותאם, Motion LoRAs לתנועה חלקה. תוצאה: MP4 מוכן לפרסומת.

Skills
AnimateDiff v3, Motion LoRA roll + zoom-in, VHS_VideoCombine עם MP4 output
Pipeline
Video2Video לתמונת המוצר הקיימת, ControlNet Canny שומר את צורת המוצר
Stretch
SVD (Stable Video Diffusion) לאנימציה ריאליסטית יותר, batch של 5 סגנונות background
מתקדם מאוד פרויקט 5: Automated Content Pipeline

Python script שמקבל Google Sheets עם מאות פרומפטים, מריץ ComfyUI API, מעלה ל-Google Drive, ושולח דיווח ב-Telegram. ייצור תוכן בסקייל אמיתי.

Skills
Python API, asyncio לביצוע מקבילי, Google Drive API, gspread לקריאת Sheets
אינטגרציות
Telegram bot שמדווח על כל תמונה שנוצרה, webhook ל-Make.com לפעולות נוספות
Stretch
error handling אוטומטי לrerun על failures, queue management, priority לפי לקוח

גיליון עזר

קיצורי מקלדת

Ctrl+Enter Queue Prompt — הרצה
Ctrl+Z Undo פעולה אחרונה
Double-click הוספת נוד חדש
H Reset view — מרכוז Canvas
S שמירת Workflow
R Refresh — רענון הממשק

CFG לפי מודל

SD 1.5 7–9
SDXL 5–7
Flux 1–3
LCM 1–2

Samplers מומלצים

כללי euler_ancestral
איכות dpm++_2m karras
מהיר lcm
יצירתי dpm++_sde karras

Custom Nodes חיוניים

ComfyUI Manager
מנהל custom nodes וגרסאות
Impact Pack
FaceDetailer, Detailer, Segmentation
AnimateDiff Evolved
AnimateDiff v3 עם context ארוך
IP-Adapter Plus
style transfer ו-FaceID
ControlNet Preprocessors
Canny, Depth, Pose, Tile
rgthree-comfy
Power Lora Loader, Reroute
efficiency-nodes
Efficient Loader לחיסכון ב-VRAM
VideoHelperSuite
VHS_VideoCombine, טעינת וידאו
tips_and_updates
ComfyUI Manager — התקן ראשון

ComfyUI Manager (זמין ב-GitHub) מאפשר להתקין custom nodes ומודלים ישירות מהממשק הגרפי, לעדכן nodes, ולנהל גרסאות — הכל בלי terminal. כדאי להתקין אותו ראשון לאחר ההתקנה הבסיסית.

auto_awesome

ממשיכים לשלב הבא?

ComfyUI הוא כלי עוצמתי שמשתלם ללמוד לעומק. המדריכים הבאים ישלימו את הידע שלך.