--- id: workflow.api.json-(backend-format) title: "Workflow.api.json (Backend Format)" category: "10_Wiki/Topics" status: "draft" verification_status: "conceptual" canonical_id: "" aliases: ["API Format", "Backend JSON", "workflow_api.json"] 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: ["Mystic Pipeline", "Replicate (fofr/any-comfyui-workflow)", "ComfyUI-to-Python-Extension", "comfyui-workflow-to-api-converter-endpoint"] github_commit: "" --- # [[Workflow.api.json (Backend Format)]] ## 🎯 ν•œ 쀄 톡찰 (One-line insight) λΉ„μ£Όμ–Ό 메타데이터λ₯Ό λ°°μ œν•˜κ³  λ…Έλ“œ μ‹€ν–‰ λ‘œμ§μ—λ§Œ μ§‘μ€‘ν•˜μ—¬ μ„œλ²„μΈ‘ μžλ™ν™”μ™€ ν”„λ‘œκ·Έλž˜λ°μ  싀행을 κ°€λŠ₯μΌ€ ν•˜λŠ” μ΅œμ ν™”λœ 데이터 포맷 [1-3]. ## 🧠 핡심 κ°œλ… (Core concepts) - **μ‹€ν–‰ κ·Έλž˜ν”„ (Execution Graph):** UI κ΄€λ ¨ 데이터(μ’Œν‘œ, 크기, κ·Έλ£Ή λ“±)λ₯Ό μ œκ±°ν•˜κ³  λ°±μ—”λ“œ 엔진이 ν”„λ‘¬ν”„νŠΈλ₯Ό μ‹€ν–‰ν•˜λŠ” 데 ν•„μš”ν•œ ν•„μˆ˜ 둜직만 남긴 μŠ€νŠΈλ¦ΌλΌμΈν™”λœ ꡬ쑰 [1, 4]. - **μž„λ² λ””λ“œ μ°Έμ‘° (Embedded References):** 링크 정보가 λ³„λ„μ˜ 객체가 μ•„λ‹ˆλΌ λ…Έλ“œ μž…λ ₯(inputs) ν•„λ“œ 내에 μ†ŒμŠ€ λ…Έλ“œ ID와 좜λ ₯ 슬둯 인덱슀의 리슀트(예: `[node_id, slot_index]`) ν˜•νƒœλ‘œ 직접 포함됨 [1, 2, 5]. - **λ”•μ…”λ„ˆλ¦¬ ꡬ쑰 (Dictionary Mapping):** λ…Έλ“œ IDλ₯Ό μ΅œμƒμœ„ ν‚€λ‘œ μ‚¬μš©ν•˜λ©°, 각 값은 `class_type`κ³Ό `inputs`λ₯Ό ν¬ν•¨ν•˜λŠ” 객체둜 κ΅¬μ„±λœ 단일 JSON 객체 ν˜•μ‹ [6, 7]. - **개발자 λͺ¨λ“œ μ˜μ‘΄μ„± (Developer Mode Dependency):** ν‘œμ€€ μ›Ή UIμ—μ„œλŠ” 숨겨져 있으며, μ„€μ •μ—μ„œ 'Enable Dev mode Options'λ₯Ό ν™œμ„±ν™”ν•΄μ•Όλ§Œ 'Save (API Format)' 메뉴가 λ…ΈμΆœλ¨ [8-11]. ## 🧩 μΆ”μΆœλœ νŒ¨ν„΄ (Extracted patterns) - **UI 데이터 μŠ€νŠΈλ¦¬ν•‘ (UI Data Stripping):** μΊ”λ²„μŠ€ λ ˆμ΄μ•„μ›ƒ 정보λ₯Ό μ‚­μ œν•¨μœΌλ‘œμ¨ 파일 크기λ₯Ό μΆ•μ†Œν•˜κ³  API 호좜의 νš¨μœ¨μ„±μ„ κ·ΉλŒ€ν™”ν•˜λŠ” 섀계 νŒ¨ν„΄ [1, 2, 4]. - **λ…Έλ“œ ID ν‚€μž‰ (Node ID Keying):** 숫자 λ¬Έμžμ—΄(예: "5", "37")을 ν‚€λ‘œ μ‚¬μš©ν•˜μ—¬ μœ μ—°ν•œ κ·Έλž˜ν”„ νŠΈλž˜λ²„μŠ€ 및 νŠΉμ • λ…Έλ“œ νŒŒλΌλ―Έν„°μ˜ 동적 μ˜€λ²„λΌμ΄λ“œλ₯Ό 지원 [6, 7, 12]. - **μž…λ ₯κ°’ μΉ˜ν™˜ (Input Value Substitution):** Python λ“±μ˜ μ–Έμ–΄μ—μ„œ JSON을 λ‘œλ“œν•œ ν›„ νŠΉμ • λ…Έλ“œ ID의 `inputs` ν•„λ“œλ₯Ό 직접 μˆ˜μ •ν•˜μ—¬ μ‹œλ“œ, ν”„λ‘¬ν”„νŠΈ, 이미지 경둜 등을 λ³€κ²½ν•˜λŠ” λ°©μ‹μ˜ μžλ™ν™” νŒ¨ν„΄ [6, 12, 13]. ## πŸ“– μ„ΈλΆ€ λ‚΄μš© (Details) **ν˜•μ‹μ  νŠΉμ„± 및 ꡬ쑰** Workflow API JSON은 Litegraph ν‘œμ€€μ„ λ”°λ₯΄λŠ” ν”„λŸ°νŠΈμ—”λ“œ ν˜•μ‹(`workflow.json`)κ³Ό 달리 ComfyUI λ°±μ—”λ“œμ˜ `/prompt` μ—”λ“œν¬μΈνŠΈμ™€ 직접 ν†΅μ‹ ν•˜κΈ° μœ„ν•΄ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€ [1, 2]. 파일 λ‚΄λΆ€μ˜ 각 ν•­λͺ©μ€ κ³ μœ ν•œ λ…Έλ“œ μ‹λ³„μžλ₯Ό ν‚€λ‘œ ν•˜λ©°, ν•΄λ‹Ή λ…Έλ“œκ°€ μ–΄λ–€ 클래슀(`class_type`)인지와 μ–΄λ–€ μž…λ ₯κ°’(`inputs`)을 μ‚¬μš©ν•˜λŠ”μ§€λ₯Ό λͺ…μ‹œν•©λ‹ˆλ‹€ [4, 7]. μ΄λ•Œ μž…λ ₯κ°’μ—λŠ” μœ„μ ―μ˜ 직접적인 κ°’λΏλ§Œ μ•„λ‹ˆλΌ λ‹€λ₯Έ λ…Έλ“œλ‘œλΆ€ν„° μ˜€λŠ” μ—°κ²° 정보도 ν¬ν•¨λ©λ‹ˆλ‹€ [5]. **생성 및 μΆ”μΆœ 방법** - **GUI 내보내기:** ComfyUI μ„€μ • 메뉴(ν†±λ‹ˆλ°”ν€΄ μ•„μ΄μ½˜)μ—μ„œ 'Enable Dev mode Options'λ₯Ό μ²΄ν¬ν•œ ν›„ μ‚¬μ΄λ“œλ°” 메뉴에 λ‚˜νƒ€λ‚˜λŠ” 'Save (API Format)' λ²„νŠΌμ„ ν΄λ¦­ν•˜μ—¬ μƒμ„±ν•©λ‹ˆλ‹€ [8-11]. - **이미지 메타데이터:** ComfyUIκ°€ μƒμ„±ν•œ PNG 파일의 `tEXt` λ˜λŠ” `zTXt` μ²­ν¬μ—λŠ” ν”„λŸ°νŠΈμ—”λ“œ μ›Œν¬ν”Œλ‘œμš°μ™€ ν•¨κ»˜ 'prompt'λΌλŠ” μ΄λ¦„μœΌλ‘œ API 포맷의 JSON이 ν¬ν•¨λ˜μ–΄ μžλ™ μ €μž₯λ©λ‹ˆλ‹€ [14, 15]. - **μ„œλ²„μΈ‘ λ³€ν™˜:** `comfyui-workflow-to-api-converter-endpoint`와 같은 μ»€μŠ€ν…€ λ…Έλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ ν΄λΌμ΄μ–ΈνŠΈ 츑의 μžλ°”μŠ€ν¬λ¦½νŠΈ 둜직 없이도 μ„œλ²„μ—μ„œ 직접 일반 JSON을 API 포맷으둜 λ³€ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [16, 17]. **ν™œμš© μ‹œλ‚˜λ¦¬μ˜€** 이 포맷은 주둜 μ™ΈλΆ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 톡합에 μ‚¬μš©λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ Python μŠ€ν¬λ¦½νŠΈμ—μ„œ μ›Œν¬ν”Œλ‘œμš° ν…œν”Œλ¦Ώμ„ λ‘œλ“œν•˜κ³  νŠΉμ • λ…Έλ“œμ˜ ν…μŠ€νŠΈ μž…λ ₯을 λ³€κ²½ν•œ ν›„ ComfyUI μ„œλ²„μ— νμž‰ν•˜κ±°λ‚˜, Replicate와 같은 ν΄λΌμš°λ“œ ν™˜κ²½μ—μ„œ μ›Œν¬ν”Œλ‘œμš°λ₯Ό μ‹€ν–‰ν•˜λŠ” 데 ν•„μˆ˜μ μž…λ‹ˆλ‹€ [6, 12, 18, 19]. ## βš–οΈ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & updates) - **가독성 vs νš¨μœ¨μ„±:** API 포맷은 파일 크기가 μž‘κ³  μ²˜λ¦¬κ°€ λΉ λ₯΄μ§€λ§Œ, UI둜 λ‹€μ‹œ λ“œλž˜κ·Έ μ•€ λ“œλ‘­ν–ˆμ„ λ•Œ μ‹œκ°μ  ꡬ쑰(λ…Έλ“œ μœ„μΉ˜, κ·Έλ£Ήν™” λ“±)κ°€ λ³΅μ›λ˜μ§€ μ•ŠλŠ” "λΌˆλŒ€λ§Œ 남은(skeleton)" μƒνƒœκ°€ λ©λ‹ˆλ‹€ [1, 20]. - **λ…Έλ“œ ID의 μ·¨μ•½μ„±:** μ›Œν¬ν”Œλ‘œμš°λ₯Ό UIμ—μ„œ νŽΈμ§‘ν•˜λ©΄ λ…Έλ“œ IDκ°€ 변경될 수 있으며, 이둜 인해 νŠΉμ • IDλ₯Ό ν•˜λ“œμ½”λ”©ν•œ μžλ™ν™” μŠ€ν¬λ¦½νŠΈκ°€ 깨질 μœ„ν—˜μ΄ μ‘΄μž¬ν•©λ‹ˆλ‹€ [6, 21]. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ…Έλ“œ 타이틀 기반 μ ‘κ·Ό 방식이 λŒ€μ•ˆμœΌλ‘œ μ œμ‹œλ˜κΈ°λ„ ν•©λ‹ˆλ‹€ [21, 22]. ## πŸ› οΈ 적용 사둀 (Applied in summary) - **Mystic Deployment:** `pipeline.yaml`κ³Ό ν•¨κ»˜ `new_pipeline.py`μ—μ„œ API JSON을 λ‘œλ“œν•˜μ—¬ μž…λ ₯ ν”„λ‘¬ν”„νŠΈλ₯Ό μ£Όμž…ν•˜κ³  μ„œλ²„λ₯Ό μ‹€ν–‰ν•˜λŠ” ꡬ쑰둜 적용됨 [23, 24]. - **Replicate API:** `fofr/any-comfyui-workflow` λͺ¨λΈμ„ 톡해 API JSON 블둭을 전달받아 이미지λ₯Ό μƒμ„±ν•˜λŠ” μƒμš© μ„œλΉ„μŠ€μ— 적용 [18, 25]. - **ComfyUI-to-Python-Extension:** `workflow_api.json` νŒŒμΌμ„ μž…λ ₯λ°›μ•„ 독립 μ‹€ν–‰ κ°€λŠ₯ν•œ `.py` 슀크립트둜 λ³€ν™˜ν•˜λŠ” CLI λ„κ΅¬μ—μ„œ 핡심 λ°μ΄ν„°λ‘œ μ‚¬μš©λ¨ [26, 27]. - **Workflow Converter:** μ„œλ²„μΈ‘ `/workflow/convert` μ—”λ“œν¬μΈνŠΈλ₯Ό 톡해 λΉ„ API μ›Œν¬ν”Œλ‘œμš°λ₯Ό API 포맷으둜 μ‹€μ‹œκ°„ λ³€ν™˜ν•˜μ—¬ Unity 기반 AI 도ꡬ λ“±μ—μ„œ ν™œμš© [16, 17]. ## βœ… 검증 μƒνƒœ 및 신뒰도 - **μƒνƒœ:** draft - **검증 단계:** conceptual (μ‹€μ œ 적용 사둀 λ‹€μˆ˜ 확인됨) - **좜처 신뒰도:** B (Official Documentation / RunComfy & Replicate API Docs / GitHub Repository READMEs) - **쀑볡 검사 κ²°κ³Ό:** μ‹ κ·œ 생성 (New discovery) ## πŸ“ λ³€κ²½ 이λ ₯ (Change history) - 2026-05-20: Initial draft generated via Datacollector_MAC P-Reinforce engine.