이 ComfyUI 워크플로는 Wan 2.1 VACE를 사용해 비디오를 아웃페인팅(원본 콘텐츠는 유지하면서 캔버스를 확장)하는 방법을 안내합니다. LoadVideo로 소스 클립을 불러오고 GetVideoComponents 및 PreviewImage로 크기와 프레임 수를 추출합니다. 그런 다음 ImagePadForOutpaint와 ImageToMask/MaskToImage로 만든 마스크를 사용해 확장할 위치를 정의하고, RepeatImageBatch로 시간축 전체에 마스크를 복제합니다. 프롬프트는 CLIPTextEncode로 인코딩하고, 생성은 KSampler에서 ModelSamplingSD3 스케줄링을 통해 Wan 2.1 VACE UNet/Decoder 스택(UNETLoader, VAELoader)으로 실행되며, VAEDecode가 잠재 데이터를 프레임으로 변환합니다. WanVaceToVideo가 비디오 전용 조건화를 처리하고, TrimVideoLatent가 시간축 형태가 맞도록 보정합니다. 결과는 CreateVideo로 조립하고 SaveVideo로 저장합니다.
기술적으로 안정적인 추론을 위해 두 가지 정렬 규칙이 중요합니다. 아웃페인팅에 설정하는 공간 크기는 16으로 나누어떨어져야 하며(WanVaceToVideo 및 VAE 제약), 시퀀스 길이는 시간 제약(Length - 1이 4로 나누어떨어짐)을 만족해야 하는데 TrimVideoLatent가 이를 처리합니다. 핵심 Comfy 노드가 아직 비디오 크기/프레임 수 유틸리티를 노출하지 않기 때문에, 이 템플릿은 실용적인 우회로로 PreviewImage를 사용합니다. 사용 가능하다면 커스텀 유틸리티 노드로 교체할 수 있습니다. 워크플로에는 Wan2.1-VACE-1.3B(가벼움, 480p 권장) 및 Wan2.1-VACE-14B(더 높은 품질, 리소스가 허용되면 720p 같은 더 높은 해상도에 적합) 모델 그룹이 포함되어 있습니다. 기본 생성 설정은 steps: 20 및 cfg: 6.0이며, 선택적으로 CausVid LoRA 튜닝은 steps: 2–4 및 cfg: 1.0입니다.
API
코드에서 이 워크플로우 사용하기
모든 Comfy 워크플로우는 JSON 그래프입니다. 아래 페이로드는 이 워크플로우 그 자체로, ComfyUI에서 실행되는 것과 동일합니다 — URL에서 가져오거나, 버전 관리에 보관하거나, ComfyUI에서 불러와 노드별로 실행할 수 있습니다.
Comfy SDK로 TypeScript 또는 Python에서 실행하세요. 동일한 코드는 Comfy Cloud 또는 직접 호스팅하는 ComfyUI 모두에 적용됩니다 — 기본 URL만 다릅니다.
// Install (beta)
npm i @comfyorg/sdk
// Run "Wan2.1 VACE 아웃페인팅" (TypeScript)
import { Comfy } from "@comfyorg/sdk";
const client = new Comfy({ apiKey: "comfyui-..." });
// This workflow, exported in API format (see note below)
const wf = await client.workflows.fromFile("video_wan_vace_outpainting_api.json");
wf.setInput("6", "text", "your prompt here"); // CLIPTextEncode
const job = await client.run(wf);
await job.getOutputs("69")[0].toFile("output.png"); // SaveVideoSDK는 API 형식의 워크플로우를 사용합니다: 이 워크플로우를 ComfyUI에서 열고 파일 → 워크플로우 내보내기(API)를 사용하세요.
FAQ















