--- id: frontend-format-(workflow.json) title: "Frontend Format (workflow.json)" 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-19 updated_at: 2026-05-19 review_reason: "" merge_history: [] tags: ["research", "Comfyui workflow json 생성 방법"] raw_sources: ["NotebookLM Synthesis"] applied_in: ["comfyui-workflow-to-api-converter-endpoint", "ComfyUI-to-Python-Extension", "RunComfy Serverless API"] github_commit: "" --- # [[Frontend Format (workflow.json)]] ## 🎯 ν•œ 쀄 톡찰 (One-line insight) Frontend Format(`workflow.json`)은 ComfyUI의 **Litegraph ν‘œμ€€**을 λ”°λ₯΄λ©°, λ…Έλ“œ κ°„μ˜ μ‹€ν–‰ 둜직뿐만 μ•„λ‹ˆλΌ μΊ”λ²„μŠ€μƒμ˜ μ‹œκ°μ  λ ˆμ΄μ•„μ›ƒκ³Ό κ·Έλ£Ή 정보λ₯Ό λͺ¨λ‘ λ³΄μ‘΄ν•˜λŠ” **인간 μ€‘μ‹¬μ˜ 곡유 및 νŽΈμ§‘μš© λΈ”λ£¨ν”„λ¦°νŠΈ**이닀 [1-3]. ## 🧠 핡심 κ°œλ… (Core concepts) - **μ‹œκ°μ  메타데이터(UI Metadata) 포함**: λ…Έλ“œμ˜ μœ„μΉ˜(`pos`), 크기(`size`), 색상, κ·Έλ£Ήν™” ꡬ쑰 및 λ…Έλ“œμ˜ μΆ•μ†Œ(collapsed) λ˜λŠ” κ³ μ •(pinned) 여뢀와 같은 μ‹œκ°μ  μƒνƒœ 정보λ₯Ό λͺ¨λ‘ ν¬ν•¨ν•œλ‹€ [1, 4, 5]. - **Litegraph ν‘œμ€€ μ€€μˆ˜**: μ›Ή μΈν„°νŽ˜μ΄μŠ€μ—μ„œμ˜ μ‹œκ°μ  λ Œλ”λ§ 및 μ‘°μž‘μ— μ΅œμ ν™”λœ 데이터 ꡬ쑰λ₯Ό λ”°λ₯Έλ‹€ [1, 2]. - **λͺ…μ‹œμ  링크 ν‘œν˜„ (Explicit Links)**: 연결을 λ…Έλ“œ 내뢀에 λ§€ν•‘ν•˜λŠ” λŒ€μ‹ , λ³„λ„μ˜ `links` λ°°μ—΄ λ‚΄μ—μ„œ 고유 IDλ₯Ό κ°€μ§„ λͺ…μ‹œμ μΈ μ—°κ²° 객체둜 κ΄€λ¦¬ν•œλ‹€ [2, 4, 6]. - **κ°€μ—­μ„±(Reversibility)**: μƒμ„±λœ 이미지 메타데이터에 ν¬ν•¨λ˜μ–΄ λ“œλž˜κ·Έ μ•€ λ“œλ‘­λ§ŒμœΌλ‘œ 원본 λ…Έλ“œ κ·Έλž˜ν”„λ₯Ό μ™„λ²½ν•˜κ²Œ μž¬κ΅¬μ„±ν•  수 있게 ν•œλ‹€ [7-9]. ## 🧩 μΆ”μΆœλœ νŒ¨ν„΄ (Extracted patterns) - **포맷의 이뢄화(Bifurcation)**: ComfyUIλŠ” μ‚¬μš©μžμ˜ μ‹œκ°μ  νŽΈμ§‘μ„ μœ„ν•œ 'Frontend 포맷'κ³Ό μ„œλ²„μ˜ μ‹€ν–‰ νš¨μœ¨μ„±μ„ μœ„ν•œ 'Backend/API 포맷'을 μ—„κ²©νžˆ κ΅¬λΆ„ν•˜μ—¬ μš΄μ˜ν•œλ‹€ [1, 10]. - **메타데이터 μž„λ² λ”©(Metadata Embedding)**: μƒμ„±λœ PNG/WebP 파일의 `tEXt` λ˜λŠ” `zTXt` 청크에 ν”„λ‘ νŠΈμ—”λ“œ μ›Œν¬ν”Œλ‘œμš°λ₯Ό μ €μž₯ν•˜μ—¬ 이미지가 κ³§ μ†ŒμŠ€ μ½”λ“œκ°€ λ˜λŠ” νŒ¨ν„΄μ„ ν˜•μ„±ν•œλ‹€ [8, 9, 11]. - **μ˜μ‘΄μ„± 기반 λ…Έλ“œ ID ν• λ‹Ή**: 각 λ…Έλ“œλŠ” 생성 μˆœμ„œ λ˜λŠ” μ‚¬μš©μž μ •μ˜μ— 따라 κ³ μœ ν•œ μˆ«μžν˜• λ¬Έμžμ—΄ ID(예: "37")λ₯Ό λΆ€μ—¬λ°›μ•„ κ·Έλž˜ν”„ νƒμƒ‰μ˜ ν‚€λ‘œ ν™œμš©λœλ‹€ [4, 5, 12]. ## πŸ“– μ„ΈλΆ€ λ‚΄μš© (Details) ν”„λ‘ νŠΈμ—”λ“œ 포맷은 ComfyUI μ›Ή μΈν„°νŽ˜μ΄μŠ€μ—μ„œ **κΈ°λ³Έ μ €μž₯(Ctrl+S)** μ‹œ μƒμ„±λ˜λŠ” ν‘œμ€€ κ·œκ²©μ΄λ‹€ [13]. μ΄λŠ” μ‚¬μš©μž κ²½ν—˜μ„ μœ μ§€ν•˜κΈ° μœ„ν•΄ μ„€κ³„λ˜μ—ˆμœΌλ©°, μ›Œν¬ν”Œλ‘œμš°λ₯Ό μž¬λ‘œλ“œν–ˆμ„ λ•Œ λͺ¨λ“  λ…Έλ“œκ°€ μ •ν™•ν•œ μ’Œν‘œμ— λ‚˜νƒ€λ‚˜λ„λ‘ 보μž₯ν•œλ‹€ [13, 14]. **JSON μŠ€ν‚€λ§ˆ v1.0 ꡬ성 μš”μ†Œ [5, 6, 15]**: - **nodes**: κ°œλ³„ λ…Έλ“œ 객체의 λ°°μ—΄λ‘œ κ΅¬μ„±λœλ‹€. - `id`: κ·Έλž˜ν”„ 탐색을 μœ„ν•œ 고유 μ‹λ³„μž. - `type`: λ…Έλ“œ λ ˆμ§€μŠ€νŠΈλ¦¬μ— λ§€ν•‘λœ 클래슀 이름. - `pos`/`size`: μΊ”λ²„μŠ€ μ’Œν‘œ 및 μ‹œλ‚˜λ¦¬μ˜€ λ Œλ”λ§ 크기. - `widgets_values`: μŠ¬λΌμ΄λ”, ν…μŠ€νŠΈ λ°•μŠ€, ν† κΈ€ λ“± μ‚¬μš©μž μž…λ ₯κ°’μ˜ λ°°μ—΄. - `order`: μ‹€ν–‰ λ˜λŠ” λ Œλ”λ§ ꢌμž₯ μˆœμ„œ. - `mode`: λ…Έλ“œμ˜ ν™œμ„±/λΉ„ν™œμ„±/λ°”μ΄νŒ¨μŠ€ μƒνƒœ. - **links**: λ…Έλ“œ κ°„μ˜ 연결을 μ •μ˜ν•˜λŠ” μƒμœ„ 레벨 λ°°μ—΄λ‘œ, `[origin_id, origin_slot, target_id, target_slot, type]` λ“±μ˜ 정보λ₯Ό ν¬ν•¨ν•˜λŠ” 6개 ν•­λͺ© λ°°μ—΄ λ˜λŠ” κ΅¬μ‘°ν™”λœ 객체 ν˜•νƒœλ₯Ό 띀닀 [6]. 이 포맷은 **API 포맷과 λŒ€μ‘°**적이닀. API 포맷은 μ‹œκ°μ  메타데이터λ₯Ό μ œκ±°ν•˜κ³  싀행에 ν•„μš”ν•œ 둜직만 남긴 '슀트림라인' λ²„μ „μœΌλ‘œ, ν”„λ‘ νŠΈμ—”λ“œ νŒŒμΌμ„ API μ—”λ“œν¬μΈνŠΈμ— 직접 보낼 경우 였λ₯˜κ°€ λ°œμƒν•  수 μžˆλ‹€ [1, 14, 16]. λ”°λΌμ„œ 전문적인 μžλ™ν™” ν™˜κ²½μ—μ„œλŠ” ν”„λ‘ νŠΈμ—”λ“œ 포맷을 원본(Source of truth)으둜 κ΄€λ¦¬ν•˜κ³ , μ‹€ν–‰ 직전에 API 포맷으둜 λ³€ν™˜ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€κ°€ ꢌμž₯λœλ‹€ [17, 18]. ## βš–οΈ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & updates) - **버전 ν˜Έν™˜μ„± 문제**: ComfyUI의 μž¦μ€ μ—…λ°μ΄νŠΈλ‘œ 인해 κ΅¬λ²„μ „μ—μ„œ μƒμ„±λœ ν”„λ‘ νŠΈμ—”λ“œ JSON 파일이 μ΅œμ‹  λ²„μ „μ—μ„œ μ œλŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•Šκ±°λ‚˜ μ‹œκ°μ μœΌλ‘œ κΉ¨μ§€λŠ” ν˜„μƒμ΄ λ°œμƒν•  수 μžˆλ‹€ [19]. - **데이터 μœ μ‹€ μœ„ν—˜**: 이미지에 ν¬ν•¨λœ ν”„λ‘ νŠΈμ—”λ“œ λ©”νƒ€λ°μ΄ν„°λŠ” μ†Œμ…œ λ―Έλ””μ–΄λ‚˜ 이미지 νŽΈμ§‘κΈ°(GIMP λ“±)λ₯Ό κ±°μΉ  경우 파일 크기 μ΅œμ ν™” λ˜λŠ” κ°œμΈμ •λ³΄ 보호λ₯Ό 이유둜 μ œκ±°λ˜λŠ” κ²½μš°κ°€ λ§Žμ•„ 가역성이 파괴될 수 μžˆλ‹€ [9, 20]. - **API μ‹€ν–‰ λΆˆκ°€**: ν”„λ‘ νŠΈμ—”λ“œ JSON은 `/prompt` μ—”λ“œν¬μΈνŠΈμ—μ„œ 직접 μ‹€ν–‰ν•  수 μ—†μœΌλ©°, λ°˜λ“œμ‹œ API 포맷으둜의 λ³€ν™˜ 과정이 μ„ ν–‰λ˜μ–΄μ•Ό ν•œλ‹€ [16, 17]. ## πŸ› οΈ 적용 사둀 (Applied in summary) - **comfyui-workflow-to-api-converter-endpoint**: `workflow.json`(ν”„λ‘ νŠΈμ—”λ“œ 포맷)을 μž…λ ₯λ°›μ•„ μ„œλ²„ μΈ‘μ—μ„œ API 포맷으둜 μžλ™ λ³€ν™˜ν•΄ μ£ΌλŠ” μ»€μŠ€ν…€ λ…Έλ“œ ν”„λ‘œμ νŠΈμ— 적용됨 [16, 18, 21]. - **ComfyUI-to-Python-Extension**: ν”„λ‘ νŠΈμ—”λ“œ 메타데이터λ₯Ό μœ μ§€ν•˜μ—¬ μƒμ„±λœ Python 슀크립트둜 λ§Œλ“  이미지가 λ‹€μ‹œ ComfyUI둜 λ“œλž˜κ·Έ μ•€ λ“œλ‘­λ  λ•Œ μ›Œν¬ν”Œλ‘œμš°λ₯Ό 볡ꡬ할 수 μžˆλ„λ‘ κ΅¬ν˜„λ¨ [11]. - **RunComfy Serverless**: 배포 μ‹œ μ‚¬μš©μžκ°€ μ—…λ‘œλ“œν•œ `workflow.json`μ—μ„œ λ ˆμ΄μ•„μ›ƒ 정보λ₯Ό μΆ”μΆœν•˜κ³  μ‹œκ°ν™” κ°€μ΄λ“œλ‘œ ν™œμš©ν•¨ [3, 10]. ## βœ… 검증 μƒνƒœ 및 신뒰도 - **μƒνƒœ:** draft - **검증 단계:** conceptual (μ‹€μ œ 적용 사둀 발견으둜 applied λ‹¨κ³„λ‘œ 승격 κ°€λŠ₯) - **좜처 신뒰도:** B (Official Documentation 및 μ „λ¬Έ 개발자 기술 λ¬Έμ„œ 기반) - **쀑볡 검사 κ²°κ³Ό:** μ‹ κ·œ 생성 (New discovery) ## πŸ“ λ³€κ²½ 이λ ₯ (Change history) - 2026-05-19: Initial draft generated via Datacollector_MAC P-Reinforce engine. λ³Έ λ¬Έμ„œλŠ” μ†ŒμŠ€ λ°μ΄ν„°μ˜ 기술적 λͺ…μ„Έ(v1.0 μŠ€ν‚€λ§ˆ)와 운영 νŒ¨ν„΄(포맷 이뢄화)을 μ€‘μ‹¬μœΌλ‘œ 합성됨.