--- id: nodes title: "Nodes" category: "10_Wiki/Topics" status: "draft" verification_status: "conceptual" canonical_id: "" aliases: [] duplicate_of: "" source_trust_level: "B" confidence_score: 0.85 created_at: 2026-05-20 updated_at: 2026-05-20 review_reason: "" merge_history: [] tags: ["research", "Comfyui workflow json 생성 방법"] raw_sources: ["NotebookLM Synthesis"] applied_in: ["ComfyUI-WorkflowGenerator", "ComfyUI-to-Python-Extension", "comfyui-workflow-to-api-converter-endpoint"] github_commit: "82df278, bc85382" --- # [[Nodes]] ## 🎯 ν•œ 쀄 톡찰 (One-line insight) λ…Έλ“œλŠ” ComfyUI의 핡심 μ—”μ§„μ΄μž κΈ°λŠ₯적 λ‹¨μœ„λ‘œμ„œ, κ³ μœ ν•œ 메타데이터와 μž…μΆœλ ₯ 연결을 톡해 μƒμ„±ν˜• AI ν”„λ‘œμ„ΈμŠ€λ₯Ό 유ν–₯ λΉ„μˆœν™˜ κ·Έλž˜ν”„(DAG)둜 μΆ”μƒν™”ν•œλ‹€ [1-3]. ## 🧠 핡심 κ°œλ… (Core concepts) - **λ…Έλ“œ 객체 (Node Object):** ID, νƒ€μž…, μœ„μΉ˜ 정보λ₯Ό ν¬ν•¨ν•˜λ©° νŠΉμ • κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” 독립적인 ν”„λ‘œκ·Έλž¨ λͺ¨λ“ˆμ΄λ‹€ [3-5]. - **μž…μΆœλ ₯ 슬둯 및 링크 (I/O Slots & Links):** λ…Έλ“œ κ°„ 데이터λ₯Ό μ „λ‹¬ν•˜λŠ” ν†΅λ‘œλ‘œ, μž…λ ₯(inputs)은 λ“€μ–΄μ˜€λŠ” μ™€μ΄μ–΄μ˜ IDλ₯Ό, 좜λ ₯(outputs)은 ν•˜λ‚˜ μ΄μƒμ˜ ν•˜λ₯˜ λ…Έλ“œλ‘œ μ—°κ²°λ˜λŠ” 링크 ID 배열을 ν¬ν•¨ν•œλ‹€ [4, 6]. - **λ…Έλ“œ λ ˆμ§€μŠ€νŠΈλ¦¬ (Node Registry):** μ„€μΉ˜λœ λͺ¨λ“  λ…Έλ“œμ˜ 클래슀 이름과 μž…μΆœλ ₯ μŠ€ν‚€λ§ˆ(object_info)λ₯Ό κ΄€λ¦¬ν•˜λŠ” 쀑앙 μΉ΄νƒˆλ‘œκ·Έμ΄λ‹€ [4, 7, 8]. - **μ‹€ν–‰ λͺ¨λ“œ (Mode):** λ…Έλ“œμ˜ ν™œμ„±ν™” μƒνƒœ(active), 우회(bypass) 등을 κ²°μ •ν•˜λ©°, λ°±μ—”λ“œ 엔진은 이λ₯Ό 기반으둜 μ‹€ν–‰ 경둜λ₯Ό κ³„μ‚°ν•œλ‹€ [4, 5, 9]. ## 🧩 μΆ”μΆœλœ νŒ¨ν„΄ (Extracted patterns) - **μ‹€ν–‰ λͺ¨λΈ μ—­μ „ (Execution Model Inversion):** 엔진이 좜λ ₯ λ…Έλ“œ(Save Image λ“±)μ—μ„œ μ‹œμž‘ν•˜μ—¬ μ—­λ°©ν–₯으둜 κ·Έλž˜ν”„λ₯Ό 탐색, κ²°κ³Ό λ„μΆœμ— ν•„μš”ν•œ μ˜μ‘΄μ„± λ…Έλ“œλ§Œ μ‹€ν–‰ν•˜μ—¬ νš¨μœ¨μ„±μ„ κ·ΉλŒ€ν™”ν•œλ‹€ [10]. - **ν˜•μ‹λ³„ λ…Έλ“œ 직렬화:** ν”„λ‘ νŠΈμ—”λ“œ ν˜•μ‹(workflow.json)은 λ…Έλ“œμ˜ μ’Œν‘œ, 크기 λ“± μ‹œκ°μ  메타데이터λ₯Ό μœ μ§€ν•˜λŠ” 반면, API ν˜•μ‹(workflow_api.json)은 싀행에 ν•„μš”ν•œ 둜직과 직접적인 λ…Έλ“œ μž…λ ₯ 참쑰만 남긴닀 [11-13]. - **μžλ™ 검증 및 보정:** μƒμ„±λœ μ›Œν¬ν”Œλ‘œμ˜ λ…Έλ“œ 이름을 둜컬 μ„€μΉ˜ ν™˜κ²½μ΄λ‚˜ μ‹œλ§¨ν‹± μž„λ² λ”©κ³Ό λŒ€μ‘°ν•˜μ—¬ μœ νš¨μ„±μ„ κ²€μ‚¬ν•˜κ³  였λ₯˜λ₯Ό μˆ˜μ •ν•œλ‹€ [14-16]. ## πŸ“– μ„ΈλΆ€ λ‚΄μš© (Details) ### λ…Έλ“œ 객체의 기술적 사양 (v1.0 Schema) ComfyUI μ›Œν¬ν”Œλ‘œ JSON λ‚΄μ—μ„œ 각 λ…Έλ“œλŠ” λ‹€μŒκ³Ό 같은 속성을 ν•„μˆ˜μ μœΌλ‘œ μ •μ˜ν•΄μ•Ό ν•œλ‹€ [4, 5]: - **id:** κ·Έλž˜ν”„ 탐색을 μœ„ν•œ 고유 μ‹λ³„μž (μ •μˆ˜ λ˜λŠ” λ¬Έμžμ—΄) [17]. - **type / class_type:** λ…Έλ“œ λ ˆμ§€μŠ€νŠΈλ¦¬μ˜ 클래슀 이름과 λ§€ν•‘λ˜λŠ” μ‹λ³„μž [5, 18]. - **pos & size:** μΊ”λ²„μŠ€ μ’Œν‘œ [x, y] 및 μ‹œκ°μ  크기 [width, height] (ν”„λ‘ νŠΈμ—”λ“œ μ „μš©) [4, 19]. - **widgets_values:** μŠ¬λΌμ΄λ”, ν…μŠ€νŠΈ λ°•μŠ€, ν† κΈ€ λ“± μ‚¬μš©μž μž…λ ₯ 값을 μ €μž₯ν•˜λŠ” λ°°μ—΄ [4, 20]. - **order:** λ…Έλ“œμ˜ μ‹€ν–‰ λ˜λŠ” λ Œλ”λ§ μˆœμ„œ 인덱슀 [4]. ### μ£Όμš” λ…Έλ“œ μΉ΄ν…Œκ³ λ¦¬ 및 κΈ°λŠ₯ - **λ‘œλ” (Loaders):** Checkpoint, LoRA, VAE, ControlNet λ“± μ™ΈλΆ€ λͺ¨λΈ κ°€μ€‘μΉ˜λ₯Ό μ›Œν¬ν”Œλ‘œλ‘œ λΆˆλŸ¬μ˜¨λ‹€ [21, 22]. - **μƒ˜ν”ŒλŸ¬ (Samplers):** KSampler, SamplerCustom λ“± 잠재 곡간(Latent space)μ—μ„œ λ…Έμ΄μ¦ˆλ₯Ό μ œκ±°ν•˜μ—¬ 이미지λ₯Ό μƒμ„±ν•œλ‹€ [23, 24]. - **쑰건화 및 인코딩 (Conditioning & Encoding):** CLIP Text Encode(ν”„λ‘¬ν”„νŠΈ 처리), VAE Encode/Decode(ν”½μ…€κ³Ό 잠재 곡간 κ°„ λ³€ν™˜) 등을 μˆ˜ν–‰ν•œλ‹€ [20, 21, 24]. - **μœ ν‹Έλ¦¬ν‹° (Utils):** Reroute(μ„  정리), Primitive, Note λ“± μ›Œν¬ν”Œλ‘œμ˜ 쑰직화와 가독성을 λ•λŠ”λ‹€ [23, 25]. ### API 및 μžλ™ν™” ν™˜κ²½μ˜ λ…Έλ“œ 처리 API 기반 μ‹€ν–‰ μ‹œ, λ…Έλ“œλŠ” **API JSON ν˜•μ‹**으둜 μ§λ ¬ν™”λ˜μ–΄ μ‹œκ°μ  정보가 μ œκ±°λœλ‹€ [11, 26]. μ΄λ•Œ λ…Έλ“œ κ°„ 연결은 λ³„λ„μ˜ 링크 배열이 μ•„λ‹Œ `inputs` ν•„λ“œ 내에 상λ₯˜ λ…Έλ“œ ID와 슬둯 인덱슀 ν˜•νƒœλ‘œ 직접 μž„λ² λ”©λœλ‹€ [11, 20]. 독립 μ‹€ν–‰ν˜• μŠ€ν¬λ¦½νŠΈλ‚˜ μ™ΈλΆ€ μ•± 연동 μ‹œμ—λŠ” `Load Image (Base64)` λ…Έλ“œλ₯Ό 톡해 이미지λ₯Ό JSON 내에 직접 ν¬ν•¨μ‹œν‚€κ±°λ‚˜, `SaveImageWebsocket`을 톡해 κ²°κ³Όλ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ μˆ˜μ‹ ν•˜λŠ” νŒ¨ν„΄μ΄ μ‚¬μš©λœλ‹€ [17, 27, 28]. ## βš–οΈ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & updates) - **λ…Έλ“œ 식별 방식:** ν”„λ‘ νŠΈμ—”λ“œ JSON은 μ‹œκ°μ  IDλ₯Ό μ‚¬μš©ν•˜μ§€λ§Œ, API JSON은 κΈ°λŠ₯적 ν‚€(Functional keys)λ₯Ό μ‚¬μš©ν•˜μ—¬ λ°±μ—”λ“œμ™€ λ§€ν•‘ν•œλ‹€ [12]. - **μ»€μŠ€ν…€ λ…Έλ“œ μ˜μ‘΄μ„±:** μ†ŒμŠ€ κ°„ κ³΅ν†΅μ μœΌλ‘œ μ§€μ λ˜λŠ” 문제둜, μ›Œν¬ν”Œλ‘œ JSON에 ν¬ν•¨λœ λ…Έλ“œκ°€ λ‘œμ»¬μ— μ„€μΉ˜λ˜μ–΄ μžˆμ§€ μ•ŠμœΌλ©΄ 'λΉ¨κ°„ λ°•μŠ€(Missing Nodes)' 였λ₯˜κ°€ λ°œμƒν•˜λ©° ComfyUI Managerλ₯Ό ν†΅ν•œ 해결이 ꢌμž₯λœλ‹€ [29-31]. ## πŸ› οΈ 적용 사둀 (Applied in summary) - **ComfyUI-WorkflowGenerator [32, 33]:** μžμ—°μ–΄ μ„€λͺ…을 기반으둜 `Generator` -> `Validator` -> `Builder` 단계λ₯Ό 거쳐 λ…Έλ“œ κ·Έλž˜ν”„λ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•˜κ³  κ²€μ¦ν•˜λŠ” μ‹œμŠ€ν…œμ„ κ΅¬ν˜„ν•¨. - **comfyui-workflow-to-api-converter-endpoint [8, 25, 34]:** `/workflow/convert` μ—”λ“œν¬μΈνŠΈλ₯Ό 톡해 ν”„λ‘ νŠΈμ—”λ“œ λ…Έλ“œ 데이터λ₯Ό API 규격으둜 λ³€ν™˜ν•˜λ©°, `reroute` λ…Έλ“œ λ¬΄μ‹œ 및 `INPUT_TYPES()` 기반 κΈ°λ³Έκ°’ 보정 κΈ°λŠ₯을 포함함 (Commit: `bc85382`). - **ComfyUI-to-Python-Extension [35, 36]:** UI의 λ…Έλ“œ κ·Έλž˜ν”„λ₯Ό μ‹€ν–‰ κ°€λŠ₯ν•œ Python 슀크립트둜 λ³€ν™˜ν•˜μ—¬ μžλ™ν™” ν™˜κ²½μ—μ„œ λ…Έλ“œ λ‘œμ§μ„ μž¬μ‚¬μš©ν•  수 있게 함. - **RunComfy API [7, 37]:** `object_info.json`을 톡해 μΈμŠ€ν„΄μŠ€ λ‚΄ λͺ¨λ“  λ…Έλ“œμ˜ μž…λ ₯/좜λ ₯ μŠ€ν‚€λ§ˆλ₯Ό μ œκ³΅ν•˜μ—¬ μ™ΈλΆ€ 툴의 μœ νš¨μ„± 검사에 ν™œμš©ν•¨. ## βœ… 검증 μƒνƒœ 및 신뒰도 - **μƒνƒœ:** draft - **검증 단계:** conceptual (μ‹€μ œ ν”„λ‘œμ νŠΈ 및 곡식 λ¬Έμ„œ λ‚΄ μŠ€νŽ™ 확인됨) - **좜처 신뒰도:** B (곡식 λ¬Έμ„œ 및 μ˜€ν”ˆμ†ŒμŠ€ ν”„λ‘œμ νŠΈ 기술 λͺ…μ„Έ 기반) - **쀑볡 검사 κ²°κ³Ό:** μ‹ κ·œ 생성 (New discovery) ## πŸ“ λ³€κ²½ 이λ ₯ (Change history) - 2026-05-20: Initial draft generated via Datacollector_MAC P-Reinforce engine. (Sources: [1-6, 8, 11, 33])