콘텐츠로 이동

· 빠른 시작 · 다음: 워크플로우 이해

기본 Text-to-Image 시작 템플릿

빠른 시작의 7노드 구성을 직접 불러오고, 설치된 체크포인트를 골라 첫 결과를 만듭니다.

워크플로우 가져오기

복사해서 붙여넣거나, 파일로 받아 캔버스에 끌어다 놓습니다.

① 복사해서 붙여넣기

JSON 펼치기

코드 블록 오른쪽 위 복사 버튼을 누른 다음, ComfyUI 캔버스를 클릭하고 Ctrl + V로 붙여넣습니다. 파일을 받지 않아도 같은 워크플로우가 만들어집니다.

{
  "last_node_id": 7,
  "last_link_id": 9,
  "nodes": [
    {
      "id": 1,
      "type": "CheckpointLoaderSimple",
      "pos": [40, 40],
      "size": [315, 98],
      "flags": {},
      "order": 0,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {"name": "MODEL", "type": "MODEL", "links": [1]},
        {"name": "CLIP", "type": "CLIP", "links": [2, 3]},
        {"name": "VAE", "type": "VAE", "links": [8]}
      ],
      "properties": {"Node name for S&R": "CheckpointLoaderSimple"},
      "widgets_values": [""]
    },
    {
      "id": 2,
      "type": "CLIPTextEncode",
      "pos": [400, 20],
      "size": [400, 200],
      "flags": {},
      "order": 1,
      "mode": 0,
      "inputs": [{"name": "clip", "type": "CLIP", "link": 2}],
      "outputs": [{"name": "CONDITIONING", "type": "CONDITIONING", "links": [4]}],
      "title": "CLIP Text Encode (Positive Prompt)",
      "properties": {"Node name for S&R": "CLIPTextEncode"},
      "widgets_values": ["a small red cabin beside a calm lake, pine forest, soft morning light, cinematic composition, detailed digital illustration"]
    },
    {
      "id": 3,
      "type": "CLIPTextEncode",
      "pos": [400, 260],
      "size": [400, 160],
      "flags": {},
      "order": 2,
      "mode": 0,
      "inputs": [{"name": "clip", "type": "CLIP", "link": 3}],
      "outputs": [{"name": "CONDITIONING", "type": "CONDITIONING", "links": [5]}],
      "title": "CLIP Text Encode (Negative Prompt)",
      "properties": {"Node name for S&R": "CLIPTextEncode"},
      "widgets_values": ["blurry, low quality, distorted, text, watermark"]
    },
    {
      "id": 4,
      "type": "EmptyLatentImage",
      "pos": [430, 470],
      "size": [315, 106],
      "flags": {},
      "order": 3,
      "mode": 0,
      "inputs": [],
      "outputs": [{"name": "LATENT", "type": "LATENT", "links": [6]}],
      "properties": {"Node name for S&R": "EmptyLatentImage"},
      "widgets_values": [1024, 1024, 1]
    },
    {
      "id": 5,
      "type": "KSampler",
      "pos": [850, 130],
      "size": [315, 474],
      "flags": {},
      "order": 4,
      "mode": 0,
      "inputs": [
        {"name": "model", "type": "MODEL", "link": 1},
        {"name": "positive", "type": "CONDITIONING", "link": 4},
        {"name": "negative", "type": "CONDITIONING", "link": 5},
        {"name": "latent_image", "type": "LATENT", "link": 6}
      ],
      "outputs": [{"name": "LATENT", "type": "LATENT", "links": [7]}],
      "properties": {"Node name for S&R": "KSampler"},
      "widgets_values": [123456, "fixed", 25, 6.0, "euler", "normal", 1.0]
    },
    {
      "id": 6,
      "type": "VAEDecode",
      "pos": [1220, 170],
      "size": [210, 46],
      "flags": {},
      "order": 5,
      "mode": 0,
      "inputs": [
        {"name": "samples", "type": "LATENT", "link": 7},
        {"name": "vae", "type": "VAE", "link": 8}
      ],
      "outputs": [{"name": "IMAGE", "type": "IMAGE", "links": [9]}],
      "properties": {"Node name for S&R": "VAEDecode"},
      "widgets_values": []
    },
    {
      "id": 7,
      "type": "SaveImage",
      "pos": [1480, 150],
      "size": [315, 270],
      "flags": {},
      "order": 6,
      "mode": 0,
      "inputs": [{"name": "images", "type": "IMAGE", "link": 9}],
      "outputs": [],
      "properties": {"Node name for S&R": "SaveImage"},
      "widgets_values": ["learning/basic-text-to-image"]
    }
  ],
  "links": [
    [1, 1, 0, 5, 0, "MODEL"],
    [2, 1, 1, 2, 0, "CLIP"],
    [3, 1, 1, 3, 0, "CLIP"],
    [4, 2, 0, 5, 1, "CONDITIONING"],
    [5, 3, 0, 5, 2, "CONDITIONING"],
    [6, 4, 0, 5, 3, "LATENT"],
    [7, 5, 0, 6, 0, "LATENT"],
    [8, 1, 2, 6, 1, "VAE"],
    [9, 6, 0, 7, 0, "IMAGE"]
  ],
  "groups": [],
  "config": {},
  "extra": {"workflowRendererVersion": "LG"},
  "version": 0.4
}

② 파일로 받기

workflow.json을 우클릭해 다른 이름으로 저장을 고른 뒤 캔버스에 끌어다 놓습니다. 링크를 그냥 누르면 브라우저에 글자만 표시됩니다.

함께 있는 파일

  • params.ymlworkflow.json에 담기지 않는 체크포인트 파일명, ComfyUI 버전, 결과 관찰을 적는 빈 서식입니다. 복사해서 채웁니다
  • 기본 연결도 — 노드 7개가 어떤 포트로 이어지는지 그린 도식입니다

실행 순서

  1. 위 두 방법 중 하나로 워크플로우를 캔버스에 올립니다. 받은 파일은 Workflows → Open으로 열어도 됩니다.
  2. Load Checkpointckpt_name에서 설치한 SDXL 체크포인트를 선택합니다.
  3. 모델이 SD 1.5라면 Empty Latent Image를 512×512로 바꾸고, SDXL이면 1024×1024로 둡니다.
  4. Positive·Negative 프롬프트를 확인합니다.
  5. KSampler의 control_after_generatefixed인지 확인한 뒤 Run 버튼을 누릅니다.
  6. 사용한 모델 파일명과 결과 관찰을 params.yml 사본에 기록합니다.

템플릿 시작값

항목
해상도 1024×1024(SDXL 기준)
steps 25
cfg 6.0
sampler_name euler
scheduler normal
denoise 1.0
seed 123456
control_after_generate fixed

모델 제작자가 권장값을 제공했다면 그 값을 우선합니다. 이 파일은 모델 가중치를 포함하지 않으며, Load Checkpoint에서 사용자가 설치한 모델을 직접 선택해야 합니다.

완료 기준

네 가지를 모두 만족했다면 이 장을 끝냈습니다.

  • JSON을 열었을 때 7개 노드와 연결이 복원된다.
  • 체크포인트를 선택하고 이미지 한 장을 생성했다.
  • Seed를 고정한 상태에서 프롬프트 또는 CFG 하나만 바꿔 비교했다.
  • 실제 사용한 모델과 설정을 params 파일에 기록했다.

다음 단계


· 빠른 시작 · 다음: 워크플로우 이해