<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SDXL on To the Moon</title><link>https://junstellar.github.io/tags/sdxl/</link><description>Recent content in SDXL on To the Moon</description><generator>Hugo -- gohugo.io</generator><language>ko-kr</language><lastBuildDate>Sat, 04 Jul 2026 18:00:00 +0900</lastBuildDate><atom:link href="https://junstellar.github.io/tags/sdxl/index.xml" rel="self" type="application/rss+xml"/><item><title>집 컴퓨터로 AI 가상 인물 만들기 — 무료로 '말하는 아나운서' 영상까지</title><link>https://junstellar.github.io/p/ai-virtual-human/</link><pubDate>Sat, 04 Jul 2026 18:00:00 +0900</pubDate><guid>https://junstellar.github.io/p/ai-virtual-human/</guid><description>&lt;img src="https://junstellar.github.io/p/ai-virtual-human/cover.png" alt="Featured image of post 집 컴퓨터로 AI 가상 인물 만들기 — 무료로 '말하는 아나운서' 영상까지" /&gt;&lt;p&gt;요즘 유튜브나 뉴스에서 **AI가 만든 가상 인물(버추얼 휴먼)**이 부쩍 많이 보입니다. 실존하지 않는 사람이 아나운서처럼 또박또박 설명을 하죠. &amp;ldquo;저거 만들려면 비싼 서비스 써야 하는 거 아냐?&amp;rdquo; 싶은데, 결론부터 말하면 &lt;strong&gt;집에 있는 게이밍 노트북 한 대로, 돈 한 푼 안 들이고&lt;/strong&gt; 꽤 그럴듯하게 만들 수 있습니다. 이 글은 실제로 &amp;lsquo;아리&amp;rsquo;라는 가상 아나운서를 만들어 자기소개 영상까지 뽑아본 기록입니다.&lt;/p&gt;
&lt;h2 id="결과부터--아리의-자기소개"&gt;결과부터 — &amp;lsquo;아리&amp;rsquo;의 자기소개
&lt;/h2&gt;&lt;p&gt;말보다 영상이 빠르죠. 아래가 이번에 만든 결과물입니다. 실존하지 않는 사람이고, 목소리도 얼굴도 전부 AI로 생성했습니다.&lt;/p&gt;
&lt;video controls playsinline poster="cover.png" style="width:100%;max-width:520px;border-radius:14px;display:block;margin:1.2rem auto;"&gt;
 &lt;source src="ari-intro.mp4" type="video/mp4"&gt;
&lt;/video&gt;
&lt;p style="text-align:center;color:#888;font-size:0.9em;margin-top:-0.4rem;"&gt;"안녕하세요, 저는 AI로 생성된 아리입니다. 반갑습니다."&lt;/p&gt;
&lt;h2 id="가상-인물-영상은-3가지-재료로-만들어집니다"&gt;가상 인물 영상은 &amp;lsquo;3가지 재료&amp;rsquo;로 만들어집니다
&lt;/h2&gt;&lt;p&gt;챗GPT나 클로드 하나로 &amp;ldquo;영상 만들어줘&amp;rdquo; 하면 되는 게 아닙니다. 말하는 가상 인물은 &lt;strong&gt;세 가지를 각각 만들어서 합치는&lt;/strong&gt; 작업이에요.&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;재료&lt;/th&gt;
					&lt;th&gt;하는 일&lt;/th&gt;
					&lt;th&gt;이번에 쓴 도구&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;① 얼굴&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;존재하지 않는 인물의 사진&lt;/td&gt;
					&lt;td&gt;SDXL (로컬 이미지 생성)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;② 목소리&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;대본을 사람 음성으로&lt;/td&gt;
					&lt;td&gt;edge-tts (무료)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;③ 입 움직임&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;음성에 맞춰 입을 립싱크&lt;/td&gt;
					&lt;td&gt;SadTalker (무료·로컬)&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;셋 다 &lt;strong&gt;무료이고, 인터넷 없이 내 GPU에서&lt;/strong&gt; 돌아갑니다. 하나씩 볼게요.&lt;/p&gt;
&lt;h2 id="-얼굴--sdxl로-아리를-빚다"&gt;① 얼굴 — SDXL로 &amp;lsquo;아리&amp;rsquo;를 빚다
&lt;/h2&gt;&lt;p&gt;먼저 세상에 없는 얼굴이 필요합니다. 저는 로컬에서 SDXL(Stable Diffusion XL)로 &amp;ldquo;단정하고 신뢰감 있는 한국 여성 아나운서&amp;quot;를 여러 장 생성한 뒤, 마음에 드는 얼굴을 골랐습니다. 이때 &lt;strong&gt;시드(seed)를 고정&lt;/strong&gt;하면 같은 인물의 표정·각도만 바꿔가며 여러 컷을 뽑을 수 있어요. 이렇게 &amp;lsquo;아리&amp;rsquo;라는 고정 캐릭터가 탄생했습니다.&lt;/p&gt;
&lt;p&gt;&lt;img alt="AI로 생성한 가상 아나운서 ‘아리’의 얼굴" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="1024" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://junstellar.github.io/p/ai-virtual-human/cover.png" srcset="https://junstellar.github.io/p/ai-virtual-human/cover_hu_ffca894a472976fd.png 800w, https://junstellar.github.io/p/ai-virtual-human/cover.png 1024w" width="1024"&gt;&lt;/p&gt;
&lt;h2 id="-목소리--edge-tts로-공짜-한국어-음성"&gt;② 목소리 — edge-tts로 공짜 한국어 음성
&lt;/h2&gt;&lt;p&gt;대본은 아주 짧게 잡았습니다. &lt;em&gt;&amp;ldquo;안녕하세요, 저는 AI로 생성된 아리입니다. 반갑습니다.&amp;rdquo;&lt;/em&gt; 이 문장을 마이크로소프트의 &lt;strong&gt;edge-tts&lt;/strong&gt;(무료 TTS)로 한국어 음성 파일로 만들었습니다. 여성 음성 &lt;code&gt;ko-KR-SunHiNeural&lt;/code&gt;을 쓰면 발음이 꽤 자연스럽습니다.&lt;/p&gt;
&lt;h2 id="-입-움직임--sadtalker로-립싱크"&gt;③ 입 움직임 — SadTalker로 립싱크
&lt;/h2&gt;&lt;p&gt;핵심은 여기입니다. &lt;strong&gt;SadTalker&lt;/strong&gt;는 사진 한 장과 음성 파일만 주면, 음성에 맞춰 입과 표정을 움직이는 영상을 만들어 주는 오픈소스 프로젝트예요. 완전 무료이고 내 GPU에서 돌아갑니다. 얼굴 사진 + 아까 만든 음성을 넣으면 끝.&lt;/p&gt;
&lt;p&gt;그런데 여기서부터 &lt;strong&gt;삽질&lt;/strong&gt;이 시작됐습니다. 그냥은 안 예쁘게 나오더라고요. 실제로 통했던 팁을 공유합니다.&lt;/p&gt;
&lt;h3 id="팁-1-소스-사진은-반드시-입을-다문-얼굴로"&gt;팁 1. 소스 사진은 반드시 &amp;lsquo;입을 다문&amp;rsquo; 얼굴로
&lt;/h3&gt;&lt;p&gt;처음엔 활짝 웃으며 이빨이 보이는 사진을 넣었더니, 입 주변이 뭉개지면서 &lt;strong&gt;에일리언처럼&lt;/strong&gt; 어색했습니다. 알고 보니 SadTalker는 &lt;strong&gt;입을 다문 무표정 사진&lt;/strong&gt;을 소스로 줄 때 립싱크가 훨씬 자연스럽게 나옵니다. 입 벌린 사진은 그 벌어진 입 위에 억지로 립싱크를 얹느라 망가지는 거죠.&lt;/p&gt;
&lt;p&gt;&lt;img alt="입 벌린 소스(왼쪽)는 립싱크가 어색하고, 입 다문 소스(오른쪽)가 훨씬 자연스럽다" class="gallery-image" data-flex-basis="489px" data-flex-grow="203" height="512" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://junstellar.github.io/p/ai-virtual-human/src-comparison.png" srcset="https://junstellar.github.io/p/ai-virtual-human/src-comparison_hu_9d566e9c97ae602d.png 800w, https://junstellar.github.io/p/ai-virtual-human/src-comparison.png 1044w" width="1044"&gt;&lt;/p&gt;
&lt;p&gt;같은 인물(시드 고정)로 &lt;strong&gt;입 다문 버전&lt;/strong&gt;을 새로 뽑아 소스로 교체하니 확연히 좋아졌습니다.&lt;/p&gt;
&lt;h3 id="팁-2-expression_scale은-과하지-않게"&gt;팁 2. &amp;rsquo;expression_scale&amp;rsquo;은 과하지 않게
&lt;/h3&gt;&lt;p&gt;표정 강도 옵션(&lt;code&gt;expression_scale&lt;/code&gt;)을 1.2로 주면 입이 과장돼서 부자연스럽습니다. &lt;strong&gt;1.0 정도&lt;/strong&gt;가 딱 적당했어요.&lt;/p&gt;
&lt;h3 id="팁-3-어깨까지-나오게-하려면-_full-결과물을-쓰세요"&gt;팁 3. 어깨까지 나오게 하려면 &amp;lsquo;_full&amp;rsquo; 결과물을 쓰세요
&lt;/h3&gt;&lt;p&gt;SadTalker는 결과 영상을 두 개 만듭니다. 하나는 &lt;strong&gt;얼굴만 크롭한 버전&lt;/strong&gt;, 다른 하나는 파일명에 &lt;code&gt;_full&lt;/code&gt;이 붙은 &lt;strong&gt;원본 사진 전체(어깨·상반신 포함)에 얼굴을 합성한 버전&lt;/strong&gt;입니다. 얼굴만 크게 나와서 답답하다면 &lt;code&gt;_full&lt;/code&gt; 쪽을 쓰면 됩니다. 저도 이걸 몰라서 한참 헤맸어요.&lt;/p&gt;
&lt;h3 id="팁-4-설치-pytorch는-cu121-조합이-안전"&gt;팁 4. (설치) PyTorch는 cu121 조합이 안전
&lt;/h3&gt;&lt;p&gt;설치할 때 가장 흔한 함정이 GPU용 PyTorch입니다. 최신 그래픽 드라이버가 깔린 PC에서는 오래된 &lt;code&gt;cu118&lt;/code&gt;(torch 2.0.1) 조합이 &lt;code&gt;c10_cuda.dll&lt;/code&gt; 로딩 에러(WinError 127)를 내는 경우가 있어요. &lt;strong&gt;&lt;code&gt;torch 2.1.2 + torchvision 0.16.2&lt;/code&gt; (cu121)&lt;/strong&gt; 조합으로 설치하면 안정적이고, SadTalker가 요구하는 라이브러리와도 호환됩니다.&lt;/p&gt;
&lt;h2 id="어느-정도-gpu가-필요할까"&gt;어느 정도 GPU가 필요할까
&lt;/h2&gt;&lt;p&gt;무겁지 않습니다. &lt;strong&gt;VRAM 8GB면 충분&lt;/strong&gt;해요. 저는 노트북용 RTX 4060(8GB)으로 돌렸고, RTX 3070급이면 동일하게 됩니다. 짧은 6초 클립은 몇 분이면 나오고, 화질 보정(gfpgan)까지 켜도 부담 없습니다. 다만 &lt;strong&gt;8분짜리 긴 영상&lt;/strong&gt;을 통째로 립싱크하면 프레임이 수만 장이라 꽤 오래 걸리니, 긴 강의 영상은 발표자를 화면 한켠에 작게 넣는 식이 현실적입니다.&lt;/p&gt;
&lt;h2 id="솔직한-결론--어디까지-되고-어디부터-안-되나"&gt;솔직한 결론 — 어디까지 되고, 어디부터 안 되나
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;된다:&lt;/strong&gt; 공짜로, 내 PC에서, 세상에 없는 인물이 내 대본을 읽는 영상을 만들 수 있다. 개인 프로젝트·학습·프로토타입엔 충분하다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;한계:&lt;/strong&gt; 아무리 팁을 써도 입 주변은 &amp;lsquo;완벽하게 자연스럽다&amp;rsquo;까진 못 간다. 자세히 보면 티가 난다. &lt;strong&gt;방송급으로 매끈한 걸 원하면&lt;/strong&gt; HeyGen·Synthesia 같은 상업 웹서비스(유료)가 답이다. 이때도 얼굴은 지금처럼 SDXL로 만든 걸 아바타로 넣으면 된다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;라이선스 주의:&lt;/strong&gt; SadTalker는 본래 연구용으로 공개된 프로젝트라, 수익화 콘텐츠에 쓸 땐 라이선스를 한 번 확인하는 게 안전하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;돈 안 들이고 여기까지 만들 수 있다는 것 자체가, AI 도구가 얼마나 문턱을 낮춰놨는지 보여주는 것 같습니다. 다음엔 이 &amp;lsquo;아리&amp;rsquo;에게 슬라이드를 붙여 진짜 강의를 시켜볼 생각입니다.&lt;/p&gt;</description></item><item><title>클로드가 내 노트북에서 직접 그림을 그리게 만들기 — ComfyUI + SDXL 로컬 설치기</title><link>https://junstellar.github.io/p/claude-local-image-generation/</link><pubDate>Thu, 02 Jul 2026 23:30:00 +0900</pubDate><guid>https://junstellar.github.io/p/claude-local-image-generation/</guid><description>&lt;p&gt;클로드(Claude)는 텍스트 AI라서 스스로 그림을 그리지 못한다. 하지만 &lt;strong&gt;로컬 PC에서 돌아가는 이미지 생성 서버를 붙여주면&lt;/strong&gt;, &amp;ldquo;고양이 그려줘&amp;rdquo; 한마디로 클로드가 프롬프트를 다듬어 그림을 만들어내게 할 수 있다. 오늘은 게이밍 노트북(RTX 4060)에 ComfyUI + SDXL을 설치해서 이걸 실제로 구축한 과정을 정리한다. 비용은 0원, 인터넷 없이도 동작한다.&lt;/p&gt;
&lt;h2 id="어떤-도구로-그리게-할까--선택지-3개"&gt;어떤 도구로 그리게 할까 — 선택지 3개
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Automatic1111 WebUI (로컬)&lt;/strong&gt; — 전통적인 웹 UI라 직접 만지기엔 가장 쉽지만, 메모리 관리가 헐거워 VRAM 8GB에서 SDXL이 버겁다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;나노바나나 (클라우드, Gemini API)&lt;/strong&gt; — 설치 없이 API 키만 있으면 되고 품질도 좋지만, 장당 약 50원 + 인터넷 필수 + 워터마크가 박힌다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ComfyUI (로컬) ← 최종 선택&lt;/strong&gt; — 노드 UI가 낯설지만 어차피 클로드가 API로 호출하니 상관없다. 세 후보 중 &lt;strong&gt;VRAM 효율이 가장 좋고&lt;/strong&gt;(8GB 노트북에 결정적), 워크플로 전체가 JSON이라 &lt;strong&gt;프로그램이 호출하기 가장 깔끔하며&lt;/strong&gt;, 무료·무제한·오프라인이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="전체-구조"&gt;전체 구조
&lt;/h2&gt;&lt;p&gt;핵심 아이디어는 간단하다. 클로드는 &amp;ldquo;지휘&amp;quot;만 하고, 그림은 로컬 GPU가 그린다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;사용자: &amp;#34;노을 지는 서울 야경 그려줘&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;클로드: 한국어 요청 → 영어 프롬프트로 변환·보강
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ComfyUI 서버 (로컬, http://127.0.0.1:8188)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SDXL 모델이 RTX 4060에서 이미지 생성 (20~40초)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;클로드가 완성된 PNG를 채팅에 표시
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ComfyUI&lt;/strong&gt;: Stable Diffusion을 돌리는 오픈소스 프로그램. REST API를 제공해서 외부 프로그램(클로드)이 호출할 수 있다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SDXL&lt;/strong&gt;: Stability AI의 이미지 생성 모델. 1024×1024 네이티브 해상도.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="내-pc로-가능할까--사양-확인"&gt;내 PC로 가능할까? — 사양 확인
&lt;/h2&gt;&lt;p&gt;설치 전에 확인한 최소 조건과 내 노트북(HP Victus 16) 사양:&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;항목&lt;/th&gt;
					&lt;th&gt;필요 사양&lt;/th&gt;
					&lt;th&gt;내 노트북&lt;/th&gt;
					&lt;th&gt;판정&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;GPU VRAM&lt;/td&gt;
					&lt;td&gt;8GB 이상 권장 (SDXL)&lt;/td&gt;
					&lt;td&gt;RTX 4060 Laptop 8GB&lt;/td&gt;
					&lt;td&gt;통과&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;RAM&lt;/td&gt;
					&lt;td&gt;16GB&lt;/td&gt;
					&lt;td&gt;16GB&lt;/td&gt;
					&lt;td&gt;통과&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;디스크&lt;/td&gt;
					&lt;td&gt;약 20GB&lt;/td&gt;
					&lt;td&gt;351GB 여유&lt;/td&gt;
					&lt;td&gt;통과&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;VRAM 8GB가 SDXL의 사실상 마지노선이다. 6GB 이하면 더 가벼운 SD 1.5 모델을 쓰는 게 낫다.&lt;/p&gt;
&lt;h2 id="설치-과정-windows-11-기준"&gt;설치 과정 (Windows 11 기준)
&lt;/h2&gt;&lt;h3 id="1-comfyui-클론--가상환경"&gt;1. ComfyUI 클론 + 가상환경
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;git&lt;/span&gt; &lt;span class="n"&gt;clone&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-depth&lt;/span&gt; &lt;span class="mf"&gt;1&lt;/span&gt; &lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="p"&gt;//&lt;/span&gt;&lt;span class="n"&gt;github&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;comfyanonymous&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ComfyUI&lt;/span&gt; &lt;span class="n"&gt;C:&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;ComfyUI&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;python&lt;/span&gt; &lt;span class="n"&gt;-m&lt;/span&gt; &lt;span class="n"&gt;venv&lt;/span&gt; &lt;span class="n"&gt;C:&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;ComfyUI&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="2-pytorch-cuda-버전-설치"&gt;2. PyTorch (CUDA 버전) 설치
&lt;/h3&gt;&lt;p&gt;일반 &lt;code&gt;pip install torch&lt;/code&gt;는 CPU 버전이 설치되므로, &lt;strong&gt;반드시 CUDA 인덱스를 지정&lt;/strong&gt;해야 GPU를 쓴다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;C:&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;ComfyUI&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Scripts&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;python&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;exe&lt;/span&gt; &lt;span class="n"&gt;-m&lt;/span&gt; &lt;span class="n"&gt;pip&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt; &lt;span class="n"&gt;torchvision&lt;/span&gt; &lt;span class="n"&gt;torchaudio&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-index-url&lt;/span&gt; &lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="p"&gt;//&lt;/span&gt;&lt;span class="n"&gt;download&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;pytorch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;org&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;whl&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;cu128&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;설치 후 GPU 인식 확인:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;C:&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;ComfyUI&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Scripts&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;python&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;exe&lt;/span&gt; &lt;span class="n"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;import torch; print(torch.cuda.is_available())&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# True 가 나와야 함&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="3-의존성--sdxl-모델-다운로드"&gt;3. 의존성 + SDXL 모델 다운로드
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;C:&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;ComfyUI&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Scripts&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;python&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;exe&lt;/span&gt; &lt;span class="n"&gt;-m&lt;/span&gt; &lt;span class="n"&gt;pip&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;-r&lt;/span&gt; &lt;span class="n"&gt;C:&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;ComfyUI&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;requirements&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;txt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# SDXL base 모델 (~6.5GB) → models\checkpoints\ 에 저장&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;curl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;exe&lt;/span&gt; &lt;span class="n"&gt;-L&lt;/span&gt; &lt;span class="n"&gt;-o&lt;/span&gt; &lt;span class="n"&gt;C:&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;ComfyUI&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;checkpoints&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;sd_xl_base_1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;safetensors&lt;/span&gt; &lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="p"&gt;//&lt;/span&gt;&lt;span class="n"&gt;huggingface&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;co&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;stabilityai&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;stable-diffusion&lt;/span&gt;&lt;span class="n"&gt;-xl-base&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sd_xl_base_1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;safetensors&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="4-서버-실행"&gt;4. 서버 실행
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;C:&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;ComfyUI&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Scripts&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;python&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;exe&lt;/span&gt; &lt;span class="n"&gt;C:&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;ComfyUI&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;py&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-port&lt;/span&gt; &lt;span class="mf"&gt;8188&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;브라우저에서 &lt;code&gt;http://127.0.0.1:8188&lt;/code&gt;을 열면 노드 기반 UI가 뜨지만, 클로드 연동이 목적이라면 UI를 직접 만질 일은 거의 없다.&lt;/p&gt;
&lt;h2 id="클로드와-연결하기"&gt;클로드와 연결하기
&lt;/h2&gt;&lt;p&gt;ComfyUI의 API는 두 개 엔드포인트가 핵심이다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;POST /prompt&lt;/code&gt; — 워크플로(JSON)를 제출하면 &lt;code&gt;prompt_id&lt;/code&gt;를 돌려준다&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /history/{prompt_id}&lt;/code&gt; — 생성이 끝나면 결과 이미지 파일명이 담겨 온다&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이걸 호출하는 파이썬 스크립트(&lt;code&gt;generate.py&lt;/code&gt;)를 하나 만들고, 클로드 코드(Claude Code)에는 &lt;strong&gt;스킬(skill)&lt;/strong&gt; 하나를 등록했다. 스킬은 &amp;ldquo;이런 요청이 오면 이 스크립트를 실행해라&amp;quot;라는 지침서다:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;name: draw-local
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;description: 사용자가 그림을 요청하면 로컬 ComfyUI로 생성. 한국어 프롬프트는 영어로 번역.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;C:\ComfyUI\venv\Scripts\python.exe C:\ComfyUI\generate.py &amp;#34;PROMPT&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;실행 후 SAVED &amp;lt;경로&amp;gt;가 출력되면 그 PNG를 채팅에 표시할 것.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;이제 클로드에게 &amp;ldquo;~그려줘&amp;quot;라고 하면: ① 서버가 꺼져 있으면 자동 기동 → ② 한국어를 영어 프롬프트로 번역·보강 → ③ 생성 → ④ 채팅에 그림 표시까지 알아서 한다.&lt;/p&gt;
&lt;h2 id="결과물--프롬프트-예시-3개"&gt;결과물 — 프롬프트 예시 3개
&lt;/h2&gt;&lt;p&gt;실제로 이 노트북에서 생성한 이미지들이다. 프롬프트를 어떻게 쓰느냐가 품질의 절반이다.&lt;/p&gt;
&lt;h3 id="예시-1--인물동물--조명-지정"&gt;예시 1 — 인물/동물 + 조명 지정
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;a cute orange cat sitting on a windowsill, warm sunlight, photorealistic
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img alt="창가의 고양이" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://junstellar.github.io/images/comfyui/orange-cat.jpg"&gt;&lt;/p&gt;
&lt;h3 id="예시-2--풍경--분위기-키워드"&gt;예시 2 — 풍경 + 분위기 키워드
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;a serene mountain lake at sunrise, mist over the water, photorealistic
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img alt="새벽 산정호수" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://junstellar.github.io/images/comfyui/mountain-lake.jpg"&gt;&lt;/p&gt;
&lt;h3 id="예시-3--실존-장소--시간대--스타일"&gt;예시 3 — 실존 장소 + 시간대 + 스타일
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Seoul city skyline at sunset, Namsan Tower and Han River, glowing orange and purple sky,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;city lights turning on at dusk, skyscrapers, photorealistic, cinematic lighting, high detail
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img alt="노을 지는 서울 야경" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://junstellar.github.io/images/comfyui/seoul-sunset.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;프롬프트 팁&lt;/strong&gt;: ① 영어로 쓸 것(SDXL은 영어 학습 비중이 압도적) ② &lt;code&gt;photorealistic&lt;/code&gt;, &lt;code&gt;cinematic lighting&lt;/code&gt; 같은 스타일 키워드를 뒤에 붙일 것 ③ 피하고 싶은 요소는 네거티브 프롬프트(&lt;code&gt;blurry, low quality, watermark...&lt;/code&gt;)로 분리할 것.&lt;/p&gt;
&lt;h2 id="실측-성능-rtx-4060-laptop-8gb"&gt;실측 성능 (RTX 4060 Laptop, 8GB)
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;첫 생성: 약 1분 (서버 기동 + 모델 VRAM 로딩 포함)&lt;/li&gt;
&lt;li&gt;이후: &lt;strong&gt;장당 20~40초&lt;/strong&gt; (1024×1024, 28스텝)&lt;/li&gt;
&lt;li&gt;스텝을 20으로 줄이면 ~24초, 품질 차이는 크지 않음&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="정리"&gt;정리
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;8GB VRAM 노트북이면 SDXL 로컬 생성이 충분히 실용적이다.&lt;/li&gt;
&lt;li&gt;클로드 연동의 핵심은 &amp;ldquo;ComfyUI API를 부르는 스크립트 + 스킬 등록&amp;rdquo; 두 가지뿐.&lt;/li&gt;
&lt;li&gt;클라우드 API(나노바나나 등) 대비 장점: 무료·무제한·오프라인. 단점: 품질과 텍스트 렌더링은 클라우드 모델이 우세.&lt;/li&gt;
&lt;li&gt;다음 단계: 나노바나나(Gemini 이미지 API) 연동을 추가해서 로컬/클라우드를 골라 쓰는 것도 고려 중.&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>