콘텐츠로 이동

문서 지도

문서 작성 규약

이 학습서를 쓰고 고칠 때 지키는 규칙입니다. 새 장을 추가하거나 기존 장을 수정하기 전에 확인합니다.

이 문서가 정하는 것

  • 장의 구성 순서와 각 절의 역할
  • 예제를 재현 가능한 형태로 남기는 파일 규격
  • 도식과 이미지의 제작 기준, 색상이 뜻하는 것
  • 문서를 분할하는 기준과 반영 전 점검 절차

편집 원칙

Diffusion 원리를 ComfyUI 노드와 연결해 배우는, 실험 중심 한국어 오픈 교재.

공식 자료로 최신성과 정확성을 확인하고, 생성형 이미지의 원리와 실습을 한국어로 만들어 나갑니다.

문서의 양보다 학습자의 첫 성공, 재현, 설명, 응용을 우선합니다. 구체적으로 다음을 지킵니다.

  • 학습 순서를 하나로 잇습니다. 앞 장이 뒤 장의 전제가 되도록 배치하고, 전제가 없는 내용을 앞에 두지 않습니다.
  • 한 변수 실험을 넣습니다. Seed를 고정하고 값 하나만 바꿔 비교하는 절차를 실습에 포함해, 결과의 원인을 스스로 짚게 합니다.
  • 설정값의 근거를 밝힙니다. 노드 입력의 범위와 기본값은 실제 구현을 확인해 적고, 커스텀 노드가 필요한 기능은 그 사실을 함께 표시합니다.
  • 깊은 주제를 회피하지 않되 부담을 나눕니다. 배경 원리와 참조 정보는 접이식으로 두어 필요할 때만 펼치게 합니다.
  • 정본을 복사하지 않습니다. 같은 내용을 두 곳에 두지 않고 링크로 연결합니다.

표준 장 템플릿

새 장을 만들거나 기존 장을 고칠 때 아래 순서를 씁니다. 본문 장 29개가 이 구조입니다. 섹션 인덱스, 참조표, 용어 사전은 학습 절이 없어 일부 항목이 빠집니다.

# 장 제목

> 한 문장 목표

## 이 장에서 배우는 것

- 이 장의 결론을 서술형 두세 줄로 적습니다. 같은 내용을 명사형 목록으로 겹쳐 쓰지 않습니다.

<div class="guide-meta" markdown>
**대상** 누가 읽는가 · **사전 이해** 앞서 끝냈어야 할 것 · **시간** 예상 소요

**이럴 때 읽으세요** 이 문서를 찾게 되는 상황
</div>

## 1. 첫 절

본문. 절 번호는 한 문서 안에서 통일합니다. 붙인 문서와 붙이지 않은 문서가 섞여 있어도 됩니다.
배경 원리와 참조 정보는 접이식 블록에 넣습니다.

## 완료 기준

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

- 관찰 가능한 행동으로 적습니다.

## 다음 단계

- 다음 문서로 가는 링크 하나와, 그 문서가 다루는 것 한 줄

설명과 실습의 권장 비율은 입문 40:60, 중급 50:50, 심화 60:40입니다. 비율 자체보다 한 화면 이상 읽은 뒤 바로 손을 움직일 기회가 있는지가 중요합니다.

재현 가능한 예제 규격

워크플로우 하나를 추가할 때 다음 네 파일을 한 디렉터리에 둡니다.

examples/<topic>/<example-name>/
├── README.md       목적, 준비물, 실행 순서, 관찰 질문
├── workflow.json   ComfyUI에서 불러올 워크플로우
├── preview.webp    그 워크플로우로 만든 대표 결과 한 장
└── params.yml      모델, Seed, Steps, CFG, Sampler, 해상도, 검증일

ComfyUI의 Save Image는 워크플로우 정보를 PNG 메타데이터로 넣습니다. webp로 바꾸면 그 정보가 사라지므로, 복원용 원본은 같은 폴더의 workflow.json이 맡습니다. preview.webp는 결과를 보여 주는 용도입니다.

결과 이미지 필수 메타데이터

  • 사용 모델의 정확한 이름과 다운로드 출처
  • 모델·LoRA·입력 이미지 라이선스
  • Positive/Negative prompt 전문
  • Seed, Steps, CFG/Guidance, Sampler, Scheduler, 해상도
  • ComfyUI 버전 또는 검증일
  • 커스텀 노드 이름과 버전
  • 후처리 여부

실제 ComfyUI 결과와 장식용 AI 생성 이미지를 혼동하지 않도록 캡션에 용도를 표시합니다.

시각 자료 원칙

종류 언제 사용 제작 기준
UI 스크린샷 클릭 위치·에러 위치가 핵심일 때 필요한 영역만 자르고 번호/테두리 표시, 버전 기록
결과 비교 파라미터 효과를 배울 때 Seed와 나머지 값을 고정, 같은 크기로 나란히 배치
SVG 흐름도 데이터 흐름과 구조를 설명할 때 색만으로 구분하지 않고 라벨 병기, 확대해도 선명하게
개념 일러스트 첫 이해와 흥미를 도울 때 실제 결과가 아님을 캡션에 표시, 핵심 구조를 왜곡하지 않기
짧은 영상/GIF 드래그·마스킹처럼 움직임이 핵심일 때 20초 안팎, 정지 이미지 대체 설명 제공

이미지는 장식이 아니라 다음 질문 중 하나에 답해야 합니다: “어디를 누르나?”, “무엇이 연결되나?”, “값을 바꾸면 어떻게 달라지나?”, “정상과 오류가 어떻게 다른가?”

이미지 배치 클래스

stylesheets/extra.css에 세 가지가 있습니다. 용도가 달라 서로 바꿔 쓰지 않습니다.

클래스 쓰는 곳
.workflow-figure 가로로 긴 전체 배선도 넓은 화면에서 본문 폭을 벗어남
.result-compare 값 하나만 바꾼 결과를 나란히 본문 폭, 화면이 좁아지면 한 열로 접힘
.node-shot 노드 한 개 클로즈업 최대 26rem

노드 한 개짜리 그림에 .workflow-figure를 쓰면 본문 폭까지 늘어나 실제 화면보다 크게 보입니다. 반대로 배선도를 .node-shot에 넣으면 연결선을 읽을 수 없습니다.

폴더 구조는 .filetree를 씁니다. 아이콘을 붙이려면 .filetree--icon을 함께 적습니다. ├── 같은 문자는 글꼴에 따라 선이 어긋나고 화면 낭독기가 기호를 읽으므로 쓰지 않습니다.

이미지 포맷과 화질

용도 포맷 이유
결과 비교 WebP 무손실 손실 압축이 만든 흔적을 파라미터 차이로 오해하면 실습이 성립하지 않습니다
UI 스크린샷 WebP 무손실 글자와 선의 경계가 흐려지면 어디를 누를지 읽기 어렵습니다
개념 일러스트 WebP quality=95 비교 대상이 아니므로 크기를 줄입니다
im.save("out.webp", format="WEBP", lossless=True, method=6)
im.save("out.webp", format="WEBP", quality=95, method=6)

method=6은 압축을 가장 세게 시도합니다. 인코딩이 느려지는 대신 화질은 그대로고 파일만 작아집니다.

같은 이미지를 1024×1024로 인코딩해 잰 값입니다. PNG 640KB, WebP 무손실 462KB, WebP quality=95 128KB였습니다. 무손실이 필요한 경우에도 PNG 대신 WebP를 씁니다.

원본은 ComfyUI가 내보낸 PNG를 그대로 두고 변환합니다. 화면 캡처를 JPEG으로 먼저 저장하면 되돌릴 수 없습니다.

워크플로우 SVG는 다음 기준을 함께 지킵니다.

  • 연결선은 출력 포트 중심에서 시작하고 입력 포트 중심에서 끝냅니다.
  • ComfyUI 워크플로우 도식은 기본 UI처럼 연결 화살표를 쓰지 않고, 오른쪽 출력·왼쪽 입력 포트로 방향을 나타냅니다.
  • 선이 다른 노드 뒤를 통과하지 않게 배치하고, 필요한 경우 ComfyUI가 지원하는 직각 연결선이나 Reroute 방식으로 우회합니다.
  • 색만으로 구분하지 않고 노드명·포트명·데이터 타입을 함께 표시합니다.
  • 실제 UI 노드명은 KSampler, VAE Decode, Save Image처럼 화면 표기와 맞춥니다.
  • python scripts/check-docs.py로 연결선과 포트의 좌표 불일치를 검사합니다.

의미 기반 강조 색상

색상은 장식이 아니라 문서 전체에서 같은 의미를 전달하는 데 씁니다.

의미 색상 역할 함께 표시할 정보
핵심 개념 보라 용어명·굵은 핵심어
실행·설정 파랑 단계명·입력값·코드
결과·완료 초록 결과 제목·완료 체크
주의 주황 주의·경고 라벨
오류·문제 빨강 증상·오류명·해결 제목
  • 색만으로 의미를 구분하지 않고 제목, 라벨, 아이콘 또는 문장을 함께 둡니다.
  • 본문 전체나 긴 문단을 색칠하지 않고 핵심어와 구조 요소에만 적용합니다.
  • 밝은 화면과 어두운 화면 모두에서 대비를 확인합니다.
  • 새 색상을 임의로 추가하지 않고 stylesheets/extra.css의 의미 변수를 재사용합니다.

문서 유지보수 기준

파일 길이

길이 상태 조치
~500줄 적정 유지
500–800줄 주의 실습 또는 주제 단위로 분할 검토
800줄+ 분할 권장 상위 인덱스와 하위 장으로 분리

분할 원칙

  • 논리적 단위와 학습 목표로 나눕니다.
  • 파일명은 의미를 드러내고 part-01 같은 순번 의존을 피합니다.
  • 상위 인덱스에서 새 장을 반드시 링크해 고아 문서를 만들지 않습니다.
  • 같은 정본을 요약본에 복사해 이중 관리하지 않습니다.

반영 전 점검

python scripts/check-docs.py
python scripts/check-nav.py
python scripts/check-style.py
mkdocs build --strict

링크, 네비게이션, 문체·용어, 사이트 빌드가 모두 통과해야 문서 변경을 완료한 것으로 봅니다.

check-style.py는 이 문서가 정한 표현 규칙과 용어 사전 등재 여부를 검사합니다. 새 노드나 기능 이름을 문서에 넣을 때는 용어 사전에 표제어를 만들고, 스크립트의 UI_TERMS 목록에도 추가합니다.

계획과 미결 항목

작업 계획과 미결 항목은 저장소의 이슈로 관리합니다.

다음 단계