매달 나가는 유료 AI 비디오 구독료에 부담을 느끼셨나요? 이제 내 방에 있는 데스크톱 PC와 ComfyUI를 활용해 무제한으로 9:16 세로형 숏츠(Shorts) 영상을 렌더링하는 완벽한 파이프라인을 직접 구축해보겠습니다.
다운로드 링크 : https://github.com/Comfy-Org/ComfyUI
링크로 들어가서 다운로드 받습니다.
저는 엔비디아 RTX4090 GPU로 윈도우 포터블용 Direct link to download(nividia)로 받아서 설치 할 위치에서 압축을 해제 했습니다. 해당 위치에서 run_nvidia_gpu.bat 을 실행하여 웹 브라우저를 실행하여 최초 설치 합니다.
필수 확장 기능 설치를 위해 ComfyUI/custom_nodes로 이동하여 커맨드(CMD)창에 다음 명령어를 입력합니다.
git clone https://github.com/Comfy-Org/ComfyUI-Manager.git
run_nvidia_gpu.bat 다시 실행 합니다.
Diffusion Model, Text Encoder, VAE는 본인의 GPU에 맞게 다운로드 합니다.
다운로드 링크 : https://huggingface.co/

1. 왜 Automatic1111 대신 ComfyUI인가?
과거에는 WebUI(Automatic1111)가 대세였지만, 비디오 생성(AnimateDiff, SVD, CogVideo 등) 영역에서는 ComfyUI가 압도적인 표준으로 자리 잡았습니다. 노드 기반 아키텍처 덕분에 VRAM(비디오 메모리) 관리가 극도로 효율적이며, 중간 텐서(Tensor) 파이프라인을 커스텀하기 매우 유리하기 때문입니다.
핵심 하드웨어 권장 사양
숏츠 해상도(최소 576×1024 or 720×1280)로 초당 16~24프레임 비디오를 원활히 뽑아내려면 NVIDIA VRAM 12GB 이상(RTX 3060 12GB / 4070 Ti 이상)을 강력히 권장합니다. 8GB 환경이라면 --lowvram 및 FP8 양자화 모델 활용이 필수적입니다.
2. 숏츠 생성에 필수적인 커스텀 노드 세팅
ComfyUI를 설치한 뒤 가장 먼저 ComfyUI-Manager를 통해 숏츠 비디오 제작에 특화된 커스텀 노드들을 인스톨해야 합니다.
- ComfyUI-AnimateDiff-Evolved: 고품질 모션 제어의 핵심 엔진
- ComfyUI-VideoHelperSuite (VHS): 비디오 로드, 프레임 결합, MP4 및 GIF 인코딩 필수 노드
- ComfyUI_IPAdapter_plus: 일관된 캐릭터/스타일 참조 이미지 투영
- ComfyUI-Advanced-ControlNet: 모션 흐름 및 포즈(OpenPose) 고정


3. 실전: 9:16 세로형 숏츠 워크플로우 튜닝 팁
숏츠 영상을 뽑을 때 흔히 하는 실수가 바로 '해상도를 무작정 1080x1920으로 두고 처음부터 생성'하는 것입니다. 이 경우 즉시 CUDA Out of Memory를 만나거나 프레임 간 일관성이 심각하게 깨지는 현상이 발생합니다.
| 단계 | 해상도 | 주요 작업 & 노드 | 주의점 |
|---|---|---|---|
| 1단계 (Base Latent) | 512 x 896 또는 576 x 1024 | KSampler + AnimateDiff 모션 모듈 | 프레임 수 16~32프레임으로 뼈대 생성 |
| 2단계 (Latent Upscale) | 768 x 1344 | Latent Upscale + Low Denoise (0.4~0.5) | 모션 디테일 유지하며 해상도 개선 |
| 3단계 (Final Upscale) | 1080 x 1920 (FHD 숏츠) | Ultimate SD Upscale / RealESRGAN | 선명도 극대화 및 프레임 보간(RIFE) 적용 |
Python 스크립트로 ComfyUI API 자동화하기
매번 UI에서 클릭하기 번거롭다면, 워크플로우를 JSON(API 포맷)으로 내보낸 뒤 파이썬 스크립트를 통해 주제어 리스트만 넣고 밤새 숏츠 영상을 대량 렌더링할 수 있습니다.
import json
import urllib.request
import urllib.parse
def queue_prompt(prompt_workflow):
p = {"prompt": prompt_workflow}
data = json.dumps(p).encode('utf-8')
req = urllib.request.Request("http://127.0.0.1:8188/prompt", data=data)
try:
with urllib.request.urlopen(req) as response:
return json.loads(response.read())
except Exception as e:
print(f"[Error] ComfyUI API Queueing Failed: {e}")
return None
# workflow_api.json 파일 로드 후 프롬프트 노드 텍스트 동적 수정 예시
with open("shorts_workflow_api.json", "r", encoding="utf-8") as f:
prompt_data = json.load(f)
# 6번 노드가 CLIP Text Encode(Positive) 노드라고 가정
prompt_data["6"]["inputs"]["text"] = "cinematic shot of a cyber runner, neon city, 9:16 vertical shorts"
response = queue_prompt(prompt_data)
print("Prompt Queued Successfully! Task ID:", response.get('prompt_id'))
4. 숏츠 제작 시 발생하는 트러블슈팅 가이드
- 캐릭터 얼굴 뭉개짐(Flickering):
FaceDetailer노드를 루프 파이프라인 중간에 연결하여 매 프레임별로 인물 마스크를 떠서 0.3 Denoise로 재보정하세요. - 배경 울렁거림: Context Window 옵션에서
Context Length: 16,Stride: 1,Overlap: 4로 설정하면 컷 전환 없는 부드러운 카메라 무빙을 얻을 수 있습니다. - 프레임 보간(Interpolation): 생성된 16fps 비디오를
ComfyUI-Frame-Interpolation (RIFE)노드로 2배 뻥튀기해 32fps 또는 60fps의 부드러운 숏츠로 완성합니다.
🚀 핵심 요약 및 정리
- ComfyUI + AnimateDiff 조합으로 로컬 9:16 숏츠 생성 워크플로우를 완벽 구축할 수 있습니다.
- 저해상도 생성 후 2단계 업스케일(Latent + RealESRGAN) 방식을 취해야 VRAM 낭비 없이 선명한 결과를 얻습니다.
- API 자동화 스크립트를 결합하면 숏츠 양산 체제를 손쉽게 완성할 수 있습니다.
아직 댓글이 없습니다. 첫 댓글을 남겨보세요!