직접 만들고, 내 생각을 더하다
세상의 트렌드를 읽고 싶어하는 한 사람으로, 목공 DIY를 좋아하고, AI, n8n을 사용해 자동화 프로세스를 배우고 있다.

n8n에서 ComfyUI API 활용한 이미지 생성 자동화 완전 정복기: 초보자도 3일 만에 성공하는 실전 가이드

n8n과 ComfyUI API를 연동한 이미지 생성 자동화 구축기입니다. 월 5달러로 300장의 고품질 이미지를 생성하며 90% 비용 절약을 실현한 실전 가이드를 제공합니다.

 n8n에서 ComfyUI API 활용한 이미지 생성 자동화 완전 정복기: 초보자도 3일 만에 성공하는 실전 가이드

"매번 이미지 하나 만들려고 ComfyUI 켜고, 프롬프트 입력하고, 기다리고... 이 과정을 자동화할 수 없을까?"

지난 달, 유튜브에서 n8n ComfyUI 연동 영상을 보고 나서 이런 생각이 들었다. 매일 블로그용 썸네일을 만들기 위해 ComfyUI를 실행하고, 똑같은 과정을 반복하는 것이 너무 비효율적이라고 느꼈기 때문이다. 특히 콘텐츠 제작자라면 누구나 공감할 텐데, 아이디어는 넘쳐나는데 이미지 제작에만 하루 2시간 이상씩 쓰고 있는 현실이 답답했다.

그래서 시작한 n8n에서 ComfyUI API 활용 워크플로우 작성. 결론부터 말하면 성공이었다. 이제는 블로그 글 제목만 입력하면 10분 안에 3가지 스타일의 썸네일이 자동으로 생성되고, Google Drive에 정리까지 되어 있다.

오늘은 3일간의 삽질기와 함께 초보자도 따라할 수 있는 실전 가이드를 솔직하게 공유해보려고 한다.

🤔 왜 굳이 n8n + ComfyUI 조합을 선택했을까?

처음에는 ChatGPT나 Midjourney API만 써도 되지 않을까 생각했다. 하지만 실제로 계산해보니 현실이 달랐다.

기존 방식의 한계점

  • 비용 문제: Midjourney Standard는 월 $30, ChatGPT Plus도 월 $20(API 사용시 이미지당 $0.02 수준)
  • 자유도 부족: 내가 원하는 스타일을 정확히 구현하기 어려움
  • 의존성: 외부 서비스에 100% 의존하는 위험성

n8n + ComfyUI 조합의 장점

  • 비용 효율: 로컬에서 돌리면 전기세만, 클라우드 사용해도 생성당 $0.009-$0.016
  • 완전한 자유도: 내가 만든 ComfyUI 워크플로우를 그대로 API로 활용
  • 확장성: 한 번 구축하면 무한 확장 가능

실제로 한 달 운영한다고 가정하면, 월 5달러로 300장 정도의 고품질 이미지를 생성할 수 있다. 같은 비용으로 Midjourney에서는 25장밖에 못 만든다는 점을 생각하면 10배 이상의 효율성이다.

🛠️ 실제 구현 과정: 3일간의 여정

1일차: 환경 설정과 첫 번째 좌절

가장 먼저 필요한 것은 n8n-nodes-comfyui 패키지 설치였다. n8n에 Settings에 들어가서 Community nodes에서 검색한 후 설치하면 된다.

npm install n8n-nodes-comfyui

설치는 간단하게 했지만, 첫 번째 문제가 바로 나타났다. ComfyUI의 API 주소를 127.0.0.1:8188로 설정했는데 n8n에서 접근이 안 되는 것이었다.

해결책: 난 ComfyUI를 Docker에 설치해서 사용하고 있어, 동일 컴퓨터에 설치한 Docker 주소를 불러와서 사용해야 했다. 

  • 127.0.0.1 대신 http://host.docker.internal:8188 형태로 설정

2일차: JSON 워크플로우 이해와 설정

두 번째 허들은 ComfyUI의 JSON 워크플로우 형식이었다. ComfyUI에서 "Save (API Format)" 버튼으로 추출한 JSON 파일을 설치한 Comfyui노드에 붙여넣기를 해야 한다.



  1. ComfyUI에서 API 형식으로 워크플로우 저장
  2. JSON 파일을 텍스트 에디터로 열어 구조 파악
  3. n8n의 Comfyui 노드의 Workflow JSON에 붙여넣기
    (seed 랜덤 배정을 위해 산식 수정, 저장 위치와 날짜 수정)
// n8n Comfyui 노드 예시
{
  "3": {
    "inputs": {
      "seed": {{ Math.floor(Math.random() * 3435973836) + Date.now() % 8000000 + (Math.floor(Math.random() * 3) * 1000000) + 100000 }},
      "steps": 50,
      "cfg": 5,
      "sampler_name": "uni_pc",
      "scheduler": "simple",
      "denoise": 1,
      "model": [
        "70",
        0
      ],
      "positive": [
        "16",
        0
      ],
      "negative": [
        "40",
        0
      ],
      "latent_image": [
        "53",
        0
      ]
    },
    "class_type": "KSampler",
    "_meta": {
      "title": "KSampler"
    }
  },
  "8": {
    "inputs": {
      "samples": [
        "3",
        0
      ],
      "vae": [
        "55",
        0
      ]
    },
    "class_type": "VAEDecode",
    "_meta": {
      "title": "VAE Decode"
    }
  },
  "9": {
    "inputs": {
      "filename_prefix": "n8n//comfyui_{{ $now.format('yyyy-MM-dd-HH-mm') }}",
      "images": [
        "81",
        0
      ]
    },
    "class_type": "SaveImage",
    "_meta": {
      "title": "Save Image"
    }
  },
  "16": {
    "inputs": {
      "text": "{{ $json.prompt }},korean lifestyle photography, natural beauty, authentic emotion",
      "clip": [
        "54",
        0
      ]
    },
    "class_type": "CLIPTextEncode",
    "_meta": {
      "title": "Positive Prompt"
    }
  },
  "40": {
    "inputs": {
      "text": "duplicate person, same person twice, vertical division, stacked images",
      "clip": [
        "54",
        0
      ]
    },
    "class_type": "CLIPTextEncode",
    "_meta": {
      "title": "Negative Prompt"
    }
  },
  "53": {
    "inputs": {
      "width": 768,
      "height": 1344,
      "batch_size": 1
    },
    "class_type": "EmptySD3LatentImage",
    "_meta": {
      "title": "EmptySD3LatentImage"
    }
  },
  "54": {
    "inputs": {
      "clip_name1": "hidream\\clip_l_hidream.safetensors",
      "clip_name2": "hidream\\clip_g_hidream.safetensors",
      "clip_name3": "sd3_flux\\t5xxl_fp8_e4m3fn_scaled.safetensors",
      "clip_name4": "hidream\\llama_3.1_8b_instruct_fp8_scaled.safetensors"
    },
    "class_type": "QuadrupleCLIPLoader",
    "_meta": {
      "title": "QuadrupleCLIPLoader"
    }
  },
  "55": {
    "inputs": {
      "vae_name": "flux\\ae.safetensors"
    },
    "class_type": "VAELoader",
    "_meta": {
      "title": "Load VAE"
    }
  },
  "70": {
    "inputs": {
      "shift": 3.0000000000000004,
      "model": [
        "76",
        0
      ]
    },
    "class_type": "ModelSamplingSD3",
    "_meta": {
      "title": "ModelSamplingSD3"
    }
  },
  "76": {
    "inputs": {
      "unet_name": "hidream_i1_full_fp8.safetensors",
      "weight_dtype": "default"
    },
    "class_type": "UNETLoader",
    "_meta": {
      "title": "Load Diffusion Model"
    }
  },
  "81": {
    "inputs": {
      "upscale_method": "nearest-exact",
      "width": 1296,
      "height": 2304,
      "crop": "disabled",
      "image": [
        "83",
        0
      ]
    },
    "class_type": "ImageScale",
    "_meta": {
      "title": "Upscale Image"
    }
  },
  "82": {
    "inputs": {
      "model_name": "4x_NMKD-Siax_200k.pth"
    },
    "class_type": "UpscaleModelLoader",
    "_meta": {
      "title": "Load Upscale Model"
    }
  },
  "83": {
    "inputs": {
      "upscale_model": [
        "82",
        0
      ],
      "image": [
        "8",
        0
      ]
    },
    "class_type": "ImageUpscaleWithModel",
    "_meta": {
      "title": "Upscale Image (using Model)"
    }
  }
}

3일차: 성공과 최적화

마지막 날에는 드디어 첫 번째 이미지 생성에 성공했다! 하지만 생성 시간이 5분이나 걸렸다. 이는 개선이 필요해 보였다.

성능 최적화 과정:

  1. 모델 최적화: Hidream full에서 Hidream dev로 변경 → 생성 시간 50% 단축
  2. 스텝 수 조정: 28 steps → 20 steps → 품질은 유지하면서 속도 향상
  3. 업스케일 적용: 기본 이미지 크기로 생성후 업스케일러 적용 1296 x 2304 크기로 → 속도 향상

최종 결과: 평균 45초만에 고품질 이미지 생성 성공!

📊 현실적인 비용과 성능 분석

비용 비교 (월 300장 기준)

방식 월 비용 장당 비용 장점 단점
n8n + ComfyUI (로컬) $0 $0 무제한, 완전 제어 하드웨어 필요
n8n + ComfyUI (클라우드) $4.8 $0.016 하드웨어 불필요 네트워크 의존
Midjourney API $30 $0.2 간편함 비싸고 제한적
ChatGPT DALL-E $30 $0.2 통합 환경 비싸고 제한적

성능 측정 결과 (RTX 5070 Ti 기준)

  • 평균 생성 시간: 45초 (768x768), 1분 30초 (1024x1024)
  • 메모리 사용량: 12GB VRAM (Hidream dev)
  • 성공률: 91% (첫 시도에서 사용 가능한 이미지)
  • 전력 소비: 시간당 약 0.2kWh (전기세 25원 예상)

😅 삽질기: 이런 실수는 피하자

1. IP 주소 설정 실수

문제: localhost127.0.0.1 사용 

해결: IP 주소 확인 후 사용

# Windows에서 IP 확인
ipconfig
# Mac/Linux에서 IP 확인  
ifconfig

2. 포트 충돌

문제: ComfyUI 기본 포트 8188이 이미 사용 중 

해결: 다른 포트로 변경

python main.py --port 8189 --listen

3. JSON 형식 오류

문제: ComfyUI 워크플로우가 n8n에서 인식 안 됨 

해결: API 형식으로 저장 후 불필요한 부분 제거

4. 메모리 부족

문제: 생성 중 Out of Memory 에러 해결:

  • 모델 크기 줄이기 (full → dev or fp8, GGUF)
  • 이미지 해상도 낮추기
  • --lowvram 옵션 사용

🎯 실제 운영 결과와 놀라운 변화

지금까지 운영한 결과를 솔직하게 공유하면:

Before (수동 작업)

  • 하루 썸네일 제작 시간: 2시간
  • 월 이미지 제작 비용: $30 (외부 서비스 이용)
  • 스타일 일관성: 60% (매번 다른 느낌)

After (n8n 자동화)

  • 하루 썸네일 제작 시간: 20분
  • 월 이미지 제작 비용: $5 (전기료)
  • 스타일 일관성: 95% (워크플로우 고정)

시간 절약: 일일 1시간 40분 절감으로 월간 약 50시간 절약 

비용 절약: 90% 비용 절감 

품질 향상: 일관성 있는 브랜드 이미지

가장 놀라운 변화는 창작에 집중할 수 있는 시간이 늘어났다는 점이다.
이미지 제작에 쓰던 시간을 콘텐츠 기획과 글쓰기에 투자할 수 있게 되었다.

🚀 초보자를 위한 단계별 시작 가이드

혹시 여러분도 시작해보고 싶다면, 이렇게 단계별로 접근해보자:

초급 단계 (1주 목표)

  1. n8n 설치: Docker 사용하여 로컬 환경 구축
  2. ComfyUI 설치: 다양한 모델 중 선택(FLUX 또는 Hidream, Qwen Image모델 추천 ) 다운로드
  3. 첫 연동: 간단한 텍스트→이미지 워크플로우 테스트

중급 단계 (2주 목표)

  1. 커스텀 노드 설치: n8n-nodes-comfyui 패키지 추가
  2. 워크플로우 최적화: 생성 시간과 품질의 균형 찾기
  3. 자동 저장: Google Drive 연동으로 파일 관리

고급 단계 (1개월 목표)

  1. 배치 처리: 여러 이미지 동시 생성 시스템
  2. 스타일 자동 선택: 키워드 기반 스타일 변경
  3. 웹훅 연동: 블로그 발행과 동시에 이미지 생성

실전 팁

💡 모델 선택 기준

  • SD 1.5: 빠르고 안정적, 초보자 추천
  • SDXL: 고품질이지만 느림, 중급자 이상
  • FLUX: 최신 모델, 다양한 모델 출시로 선택폭 넓음(고급 하드웨어 필요)
  • Hidream: 최신 모델로 나만의 특색있는 이미지 생성(고급 하드웨어 필요)
  • Qwen Image: 가장 최신 모델, 텍스트와 실사 같은 이미지(고급 하드웨어 필요)

💡 프롬프트 최적화

// 효과적인 프롬프트 구조
const prompt = `${mainSubject}, ${style}, ${quality}, ${lighting}`;
// 예시: "cat, digital art, highly detailed, soft lighting"

💡 비용 절약 팁

  • 개발/테스트: 로컬 환경 사용
  • 대량 생성: 클라우드 서비스 활용
  • 하이브리드: 평상시 로컬, 급할 때만 클라우드

🔮 앞으로의 계획과 확장 아이디어

현재 시스템도 만족스럽지만, 더 발전시킬 계획들이 있다:

1. AI 기반 프롬프트 최적화

  • 제목 분석 → 자동 프롬프트 생성
  • 과거 성공 이미지 패턴 학습
  • A/B 테스트를 통한 최적 프롬프트 찾기

2. 영상 생성 확장

  • 정적 이미지 → 동적 영상 변환(Wan 2.2 활용 검토 모색)
  • 스토리에 따른 이미지 생성 후 이미지를 동영상으로 변환
  • 15초 쇼츠용 영상 자동 생성

3. 커뮤니티 플랫폼 연동

  • 인스타그램 자동 포스팅
  • 유튜브 썸네일 최적화
  • 포트폴리오 사이트 자동 업데이트

💡 마무리: 자동화의 진짜 가치

3일간의 삽질과 최근 몇일 간의 운영을 통해 깨달은 것은, n8n에서 ComfyUI API 활용은 단순한 기술적 성취가 아니라는 점이다.

이것은 창작자의 시간을 되찾아주는 도구다.

반복적인 작업에서 해방되어 정말 중요한 일, 즉 창작과 아이디어 구현에 집중할 수 있게 해준다.
월 50시간을 절약했다는 것은 새로운 프로젝트 하나를 더 시작할 수 있다는 의미이기도 하다.

물론 초기 설정은 까다롭다. 하지만 한 번 구축해놓으면 그 이후의 편리함은 상상 이상이다.
특히 콘텐츠 제작자, 마케터, 디자이너라면 투자할 가치가 충분하다고 확신한다.

📌 핵심 포인트 요약

  • ✅ 로컬에서도 클라우드에서도 활용 가능한 유연한 시스템
  • ✅ 월 $5로 300장의 고품질 이미지 생성 (90% 비용 절약)
  • ✅ 평균 45초 생성 시간, 91% 첫 시도 성공률
  • ✅ 일일 1시간 50분 시간 절약으로 창작에 집중
  • ✅ 초보자도 3일이면 기본 시스템 구축 가능

지금 당장 시작하지 않을 이유가 있을까?
ComfyUI가 이미 설치되어 있다면 오늘 저녁에 n8n부터 설치해보자. 

댓글 쓰기