115 lines
9.5 KiB
Markdown
115 lines
9.5 KiB
Markdown
---
|
|
id: comfyui-workflow-json
|
|
title: "ComfyUI Workflow JSON"
|
|
category: "10_Wiki/Topics"
|
|
status: "draft"
|
|
verification_status: "conceptual"
|
|
canonical_id: ""
|
|
aliases: ["워크플로우 JSON", "workflow_api.json"]
|
|
duplicate_of: ""
|
|
source_trust_level: "B"
|
|
confidence_score: 0.85
|
|
created_at: 2026-05-19
|
|
updated_at: 2026-05-19
|
|
review_reason: ""
|
|
merge_history: []
|
|
tags: ["research", "Comfyui workflow json 생성 방법", "ComfyUI", "JSON"]
|
|
raw_sources: ["NotebookLM Synthesis"]
|
|
applied_in:
|
|
- "DanielPFlorian/ComfyUI-WorkflowGenerator/README.md"
|
|
- "comfyui-workflow-to-api-converter-endpoint/README.md"
|
|
- "pydn/ComfyUI-to-Python-Extension/README.md"
|
|
github_commit: "82df278, bc85382, 6cdcc23"
|
|
---
|
|
|
|
# [[ComfyUI Workflow JSON]]
|
|
|
|
## 🎯 한 줄 통찰 (One-line insight)
|
|
ComfyUI Workflow JSON은 복잡한 노드 기반 생성 AI 프로세스를 직렬화하여 가시적인 UI 레이아웃과 프로그램적 실행 로직 간의 상호 운용성을 보장하는 핵심 청사진이다 [1, 2].
|
|
|
|
## 🧠 핵심 개념 (Core concepts)
|
|
1. **포맷의 이분화 (Bifurcation):** 사용자의 시각적 편집을 위한 '프런트엔드 포맷(workflow.json)'과 서버 실행에 최적화된 '백엔드/API 포맷(workflow_api.json)'으로 나뉜다 [3-6].
|
|
2. **메타데이터 임베딩 (Metadata Embedding):** 생성된 PNG 이미지의 tEXt/zTXt 청크 내에 워크플로우 데이터를 숨겨 저장함으로써 이미지 자체가 백업 및 공유 수단이 된다 [7-9].
|
|
3. **노드 레지스트리 기반 스키마:** 각 노드는 고유 ID, 클래스 타입, 입력/출력 슬롯 및 연결 정보를 담고 있으며, 이는 JSON Schema v1.0 규격을 따른다 [10-12].
|
|
4. **프로그램적 제어 (Programmatic Automation):** JSON 구조를 직접 수정하거나 전용 라이브러리를 통해 워크플로우를 동적으로 생성 및 실행할 수 있다 [13-15].
|
|
|
|
## 🧩 추출된 패턴 (Extracted patterns)
|
|
- **실행 모델 역전 (Execution Model Inversion):** 엔진은 출력 노드(Save Image 등)에서 시작하여 역방향으로 그래프를 탐색하며 필요한 의존성만 식별하여 실행한다 [16].
|
|
- **3단계 생성 파이프라인 (LLM):** 자연어 설명을 기반으로 논리적 구조 합성(Generator), 노드 이름 검증(Validator), 실행 가능한 JSON 컴파일(Builder) 순으로 워크플로우를 자동 생성한다 [17-19].
|
|
- **헤드리스 변환 패턴:** 시각적 노드 그래프를 순수 Python 스크립트(.py)로 변환하여 GUI 없이 독립적으로 실행하는 구조를 가진다 [20, 21].
|
|
|
|
## 📖 세부 내용 (Details)
|
|
ComfyUI 워크플로우는 AI 이미지 생성 프로세스를 설명하는 노드 네트워크를 직렬화한 데이터이다 [22, 23]. 주요 생성 및 관리 방법은 다음과 같다.
|
|
|
|
**1. 포맷별 특성 및 생성**
|
|
* **프런트엔드 JSON:** 노드 위치, 크기, 그룹, 색상 등 시각적 정보를 포함하며 Litegraph 표준을 따른다 [3, 5, 24]. 일반적인 'Save' 버튼이나 `Ctrl+S`로 생성한다 [8, 25].
|
|
* **API JSON:** UI 메타데이터를 제거하고 실행 로직(노드 타입, 입력값, 연결 관계)만 남긴 효율적인 포맷이다 [3, 6, 26]. 설정에서 'Dev mode Options'를 활성화한 후 'Save (API Format)'를 통해 추출할 수 있다 [27-30].
|
|
|
|
**2. 이미지 메타데이터 활용 및 추출**
|
|
ComfyUI에서 생성된 모든 이미지는 워크플로우 데이터를 내부 메타데이터에 포함한다 [31, 32]. 사용자는 PNG 파일을 캔버스에 드래그 앤 드롭하여 워크플로우를 즉시 복원할 수 있다 [7, 33, 34]. 대량의 이미지에서 JSON을 추출하기 위해 `exiftool`이나 전용 CLI 도구, 웹 기반 추출기(`Weird Wonderful AI Art` 등)가 사용된다 [35-37].
|
|
|
|
**3. 자동화 및 변환 도구**
|
|
* **Python API 연동:** `json` 라이브러리를 사용하여 시드, 프롬프트 등 특정 노드 파라미터를 직접 수정하고 `/prompt` 엔드포인트로 전송할 수 있다 [13, 15].
|
|
* **변환 엔드포인트:** `comfyui-workflow-to-api-converter-endpoint`와 같은 커스텀 노드는 비-API 포맷을 API 포맷으로 서버 측에서 변환하는 기능을 제공한다 [38, 39].
|
|
* **코드 변환:** `ComfyUI-to-Python-Extension`은 JSON 워크플로우를 독립 실행 가능한 Python 코드로 번역하여 자동화 및 실험의 효율성을 높인다 [14, 21].
|
|
|
|
**4. LLM 기반 동적 생성**
|
|
`ComfyUI-WorkflowGenerator`는 Qwen2.5와 같은 거대언어모델을 활용하여 "SDXL을 이용한 텍스트 투 이미지 워크플로우 생성"과 같은 자연어 명령을 즉시 노드 그래프로 구축한다 [40-42]. 이 과정에서 로컬 노드 카탈로그를 스캔하여 유효성을 검증한다 [43, 44].
|
|
|
|
## ⚖️ 모순 및 업데이트 (Contradictions & updates)
|
|
* **버전 호환성:** ComfyUI의 잦은 업데이트로 인해 구버전 JSON 파일이 최신 버전에서 제대로 작동하지 않을 수 있다는 경고가 존재한다 [33].
|
|
* **메타데이터 소실:** 압축 소프트웨어나 소셜 미디어 플랫폼을 통해 이미지를 전송할 경우 임베딩된 워크플로우 정보가 삭제될 수 있다 [9, 33].
|
|
* **API 포맷의 단점:** API 포맷으로만 저장된 파일은 UI 정보를 포함하지 않아 캔버스에 로드 시 노드가 겹치거나 시각적 구조가 무너진 '스켈레톤' 상태로 나타난다 [45].
|
|
|
|
## 🛠️ 적용 사례 (Applied in summary)
|
|
* **DanielPFlorian/ComfyUI-WorkflowGenerator:** LLM을 이용해 자연어 설명을 실행 가능한 워크플로우 JSON으로 변환하는 파이프라인 구현 (커밋: `82df278`) [19, 42, 46].
|
|
* **comfyui-workflow-to-api-converter-endpoint:** 클라이언트 사이드 자바스크립트 로직을 파이썬으로 이식하여 `/workflow/convert` 엔드포인트를 통해 JSON 포맷을 변환 (커밋: `bc85382`) [38, 39, 47].
|
|
* **pydn/ComfyUI-to-Python-Extension:** JSON 워크플로우를 `.py` 파일로 내보내어 단독 실행 가능한 스크립트 생성 환경 구축 (커밋: `6cdcc23`) [48, 49].
|
|
* **Mystic Pipeline:** 사용자의 커스텀 워크플로우 JSON을 서버리스 엔드포인트에 배포하여 API 형태로 서빙 [50, 51].
|
|
|
|
## ✅ 검증 상태 및 신뢰도
|
|
- **상태:** draft
|
|
- **검증 단계:** conceptual (다양한 오픈소스 프로젝트 및 공식 문서에서 적용 사례 확인됨)
|
|
- **출처 신뢰도:** B (Official Documentation / Primary Source via NotebookLM)
|
|
- **중복 검사 결과:** 신규 생성 (New discovery)
|
|
|
|
## 🔗 관련 문서 링크 (Related document links)
|
|
|
|
### 상위/유사 개념
|
|
#### [아키텍처/기반 기술]
|
|
- [[Nodes]]
|
|
- 연결 이유: 워크플로우 JSON의 기본 구성 단위 [22, 52].
|
|
- 이 개념을 통해 더 깊게 이해할 수 있는 부분: 노드 간의 링크 연결 방식 및 데이터 흐름 구조 [23, 53].
|
|
- [[Litegraph]]
|
|
- 연결 이유: 프런트엔드 JSON 포맷의 시각적 직렬화 표준 [3, 5].
|
|
- 이 개념을 통해 더 깊게 이해할 수 있는 부분: 캔버스 레이아웃과 노드 좌표 관리 원리 [4].
|
|
|
|
#### [구현/활용 도구]
|
|
- [[ComfyUI Manager]]
|
|
- 연결 이유: JSON 로드 시 누락된 커스텀 노드를 감지하고 설치하는 도구 [54-56].
|
|
- 이 개념을 통해 더 깊게 이해할 수 있는 부분: 워크플로우 공유 시 발생하는 의존성 해결 방법 [55].
|
|
- [[Comfy GPT]]
|
|
- 연결 이유: LLM 기반 워크플로우 생성의 원형이 되는 연구 [19, 40].
|
|
- 이 개념을 통해 더 깊게 이해할 수 있는 부분: 자연어-그래프 변환 알고리즘의 발전 방향 [57].
|
|
|
|
### 심층 후속 질문 (Deeper Research Questions)
|
|
- 프런트엔드 JSON과 API JSON 간의 구조적 차이가 실제 서버 실행 성능에 미치는 정량적 차이는 무엇인가? [3, 4]
|
|
- PNG 외에 WebP나 MP4 메타데이터에 워크플로우를 효율적으로 내장하고 추출하는 기술적 표준은 어떻게 정의되는가? [58]
|
|
- 'Execution Model Inversion'이 복잡한 루프 구조를 가진 워크플로우에서도 일관된 순서를 보장하는가? [16]
|
|
- LLM 기반 생성기에서 새로운 커스텀 노드 출현 시 실시간으로 카탈로그를 업데이트하고 반영하는 효율적인 전략은 무엇인가? [57, 59]
|
|
- `.cpack.zip`과 같은 워크플로우 패키징 방식이 기존 JSON 방식의 모델 경로 문제를 어떻게 완전히 해결할 수 있는가? [60]
|
|
|
|
### 실무 적용 맥락 (Practical Application Contexts)
|
|
- **Implementation:** `/prompt` 엔드포인트를 호출할 때 API JSON의 특정 노드 ID 값을 가로채어 동적으로 파라미터를 삽입함 [13, 15].
|
|
- **System Design:** 시각적 편집 환경(프런트엔드)과 배포 환경(백엔드)을 분리하여 효율적인 AI 프로덕션 파이프라인 구축 [3, 50, 61].
|
|
- **Operation / Maintenance:** `ComfyUI Manager`를 통해 외부 공유 워크플로우의 커스텀 노드 누락 문제를 모니터링하고 해결 [54, 55].
|
|
- **Learning Path:** 기본 워크플로우 템플릿 로드에서 시작하여, 메타데이터 추출을 통한 타인 워크플로우 분석, 최종적으로 API 기반 자동화 단계로 발전 [62-64].
|
|
|
|
### 인접 주변 주제 (Adjacent Topics)
|
|
- [[Custom Nodes]]
|
|
- 확장 방향: JSON 내 `class_type`이 참조하는 실제 기능 구현체 및 의존성 관리 [8, 55, 65].
|
|
- [[Model Hashing]]
|
|
- 확장 방향: JSON 파일 내 하드코딩된 모델 경로 문제를 SHA-256 해시를 이용해 해결하는 방법 [66].
|
|
|
|
## 📝 변경 이력 (Change history)
|
|
- 2026-05-19: Initial draft generated via Datacollector_MAC P-Reinforce engine. (Source indices: [1-186]) |