--- id: serialization-formats-(frontend-vs-api) title: "Serialization Formats (Frontend vs API)" category: "10_Wiki/Topics" status: "draft" verification_status: "conceptual" canonical_id: "" aliases: ["Frontend JSON", "API JSON", "workflow.json", "workflow_api.json"] duplicate_of: "" source_trust_level: "B" confidence_score: 0.90 created_at: 2026-05-19 updated_at: 2026-05-19 review_reason: "" merge_history: [] tags: ["research", "Comfyui workflow json 생성 방법", "Serialization", "API"] raw_sources: ["NotebookLM Synthesis"] applied_in: ["comfyui-workflow-to-api-converter-endpoint (bc85382)", "ComfyUI-to-Python-Extension", "Mystic Pipeline (new_pipeline.py)"] github_commit: "bc85382" --- # [[Serialization Formats (Frontend vs API)]] ## 🎯 ν•œ 쀄 톡찰 (One-line insight) ComfyUIλŠ” 인간 μ€‘μ‹¬μ˜ μ‹œκ°μ  νŽΈμ§‘μ„ μœ„ν•œ **Frontend Format**κ³Ό 기계 μ€‘μ‹¬μ˜ 효율적 싀행을 μœ„ν•œ **API Format**으둜 직렬화 κ·œκ²©μ„ μ΄μ›ν™”ν•˜μ—¬ κ΄€λ¦¬ν•œλ‹€ [1, 2]. ## 🧠 핡심 κ°œλ… (Core concepts) - **Frontend Format (workflow.json):** μ‚¬μš©μžμ™€μ˜ μƒν˜Έμž‘μš© 및 μ‹œκ°ν™”λ₯Ό μœ„ν•΄ μ„€κ³„λœ 포맷으둜, Litegraph ν‘œμ€€μ„ λ”°λ₯΄λ©° λ…Έλ“œ μ’Œν‘œ, 크기, κ·Έλ£Ήν™” 정보 λ“± λͺ¨λ“  UI 메타데이터λ₯Ό ν¬ν•¨ν•œλ‹€ [1, 3, 4]. - **Backend/API Format (workflow_api.json):** μ„œλ²„ μ‚¬μ΄λ“œ μ²˜λ¦¬μ— μ΅œμ ν™”λœ 슀트림라인 μ‹€ν–‰ κ·Έλž˜ν”„λ‘œ, μ‹œκ°μ  메타데이터λ₯Ό μ œκ±°ν•˜κ³  싀행에 ν•„μš”ν•œ λ…Έλ“œ μœ ν˜•κ³Ό μž…λ ₯κ°’, μ—°κ²° κ΄€κ³„λ§Œμ„ μœ μ§€ν•œλ‹€ [1, 5]. - **Metadata Stripping:** API 포맷 생성 κ³Όμ •μ—μ„œ λΆˆν•„μš”ν•œ UI 속성을 μ œκ±°ν•˜μ—¬ 파일 크기λ₯Ό μ••μΆ•ν•˜κ³  μ‹€ν–‰ νš¨μœ¨μ„±μ„ κ·ΉλŒ€ν™”ν•˜λŠ” μ „λž΅μ΄λ‹€ [1, 2]. - **Link Embedding:** API ν¬λ§·μ—μ„œλŠ” 링크가 λ³„λ„μ˜ 객체가 μ•„λ‹ˆλΌ λ…Έλ“œ μž…λ ₯ 내뢀에 `[origin_node_id, output_slot_index]` ν˜•νƒœμ˜ μ°Έμ‘°κ°’μœΌλ‘œ 직접 ν¬ν•¨λœλ‹€ [1, 6]. ## 🧩 μΆ”μΆœλœ νŒ¨ν„΄ (Extracted patterns) - **Bifurcation Pattern:** λ™μΌν•œ μ›Œν¬ν”Œλ‘œμš°λ₯Ό μ‚¬μš© λͺ©μ μ— 따라 μ‹œκ°μ  λ ˆμ΄μ•„μ›ƒ(Frontend)κ³Ό 논리적 μ‹€ν–‰ μˆœμ„œ(API)둜 λΆ„λ¦¬ν•˜μ—¬ μ €μž₯ 및 κ΄€λ¦¬ν•œλ‹€ [1]. - **Execution Model Inversion:** μ—”μ§„ μ‹€ν–‰ μ‹œ 좜λ ₯ λ…Έλ“œ(Save Image λ“±)μ—μ„œ μ‹œμž‘ν•˜μ—¬ μ—­λ°©ν–₯으둜 κ·Έλž˜ν”„λ₯Ό νƒμƒ‰ν•¨μœΌλ‘œμ¨, JSON 내에 λ―Έμ‚¬μš© λ…Έλ“œκ°€ μžˆλ”λΌλ„ μ‹€ν–‰ μ„±λŠ₯에 영ν–₯을 μ£Όμ§€ μ•Šλ„λ‘ μ„€κ³„λ˜μ—ˆλ‹€ [7]. - **Metadata Injection:** μƒμ„±λœ 이미지(PNG/WebP)의 ν…μŠ€νŠΈ 청크(tEXt/zTXt)에 두 포맷을 λͺ¨λ‘ μ£Όμž…ν•˜μ—¬, 이미지 μžμ²΄κ°€ μ‹€ν–‰ λ…Όλ¦¬μ˜ μ»¨ν…Œμ΄λ„ˆ 역할을 μˆ˜ν–‰ν•˜λ„λ‘ ν•œλ‹€ [8, 9]. ## πŸ“– μ„ΈλΆ€ λ‚΄μš© (Details) ComfyUI의 직렬화 κ΅¬μ‘°λŠ” 크게 두 κ°€μ§€ 운영 λ§₯락으둜 λ‚˜λ‰œλ‹€. **1. Frontend JSON (workflow.json)의 ꡬ쑰와 μ—­ν• ** 이 ν˜•μ‹μ€ μ‚¬μš©μžκ°€ μ›Ή μΈν„°νŽ˜μ΄μŠ€μ—μ„œ μ›Œν¬ν”Œλ‘œμš°λ₯Ό νŽΈμ§‘ν•˜κ³  κ³΅μœ ν•  λ•Œ μ‚¬μš©λœλ‹€ [2]. μ£Όμš” νŠΉμ§•μ€ λ‹€μŒκ³Ό κ°™λ‹€: - **μ‹œκ°μ  메타데이터:** `pos`(μ’Œν‘œ), `size`(크기), `flags`(λ…Έλ“œ μƒνƒœ), `groups`(κ·Έλ£Ή ꡬ쑰)와 같은 μΊ”λ²„μŠ€ λ ˆμ΄μ•„μ›ƒ 정보λ₯Ό μ™„λ²½ν•˜κ²Œ λ³΄μ‘΄ν•œλ‹€ [1, 10]. - **링크 ν‘œν˜„:** λ…Έλ“œ κ°„μ˜ 연결이 λ³„λ„μ˜ `links` λ°°μ—΄ λ‚΄μ—μ„œ λͺ…μ‹œμ μΈ μ—°κ²° 객체둜 κ΄€λ¦¬λœλ‹€ [2, 11]. - **ν˜Έν™˜μ„±:** μ›Ή μΈν„°νŽ˜μ΄μŠ€μ—μ„œ λ“œλž˜κ·Έ μ•€ λ“œλ‘­μ„ 톡해 μ›Œν¬ν”Œλ‘œμš°λ₯Ό μ›μƒλ³΅κ΅¬ν•˜λŠ” 데 ν•„μˆ˜μ μ΄λ‹€ [3, 12]. **2. API JSON (workflow_api.json)의 ꡬ쑰와 μ—­ν• ** μ„œλ²„λ¦¬μŠ€ λ°°ν¬λ‚˜ μ™ΈλΆ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 연동 μ‹œ μ‚¬μš©λ˜λŠ” μ‹€ν–‰ μ „μš© 포맷이닀 [2, 13]. - **νš¨μœ¨μ„± μ΅œμ ν™”:** λͺ¨λ“  UI κ΄€λ ¨ 정보λ₯Ό μ œκ±°ν•˜μ—¬ 파일 μš©λŸ‰μ„ 쀄이고 처리 속도λ₯Ό 높인닀 [2]. - **λ…Έλ“œ 식별:** λ…Έλ“œλŠ” κ³ μœ ν•œ κΈ°λŠ₯적 ν‚€(주둜 숫자 λ¬Έμžμ—΄)둜 μ‹λ³„λ˜λ©°, `class_type`κ³Ό `inputs` ν•„λ“œκ°€ 핡심을 이룬닀 [2, 14]. - **μ—°κ²° 방식:** λ³„λ„μ˜ 링크 객체 없이, λ…Έλ“œμ˜ μž…λ ₯ ν•„λ“œ 내에 μ†ŒμŠ€ λ…Έλ“œμ™€ 슬둯 번호λ₯Ό 직접 κΈ°μž…ν•˜λŠ” 방식을 μ·¨ν•œλ‹€ [1, 2]. **3. 포맷 κ°„ μ „ν™˜ 및 생성** 기본적으둜 ComfyUI μ„€μ •μ˜ 'Dev mode Options'λ₯Ό ν™œμ„±ν™”ν•΄μ•Ό 'Save (API format)' λ²„νŠΌμ΄ λ…ΈμΆœλœλ‹€ [15, 16]. 일뢀 λ„κ΅¬λŠ” Frontend 포맷을 μ„œλ²„ μ‚¬μ΄λ“œμ—μ„œ API 포맷으둜 λ³€ν™˜ν•˜λŠ” κΈ°λŠ₯을 μ œκ³΅ν•˜μ—¬ κ°œλ°œμžκ°€ UI λ²„μ „λ§Œ 관리할 수 μžˆλ„λ‘ 돕기도 ν•œλ‹€ [17, 18]. ## βš–οΈ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & updates) - **가독성 vs μ‹€ν–‰λ ₯:** API JSON은 μ‹€ν–‰μ—λŠ” μ΅œμ ν™”λ˜μ–΄ μžˆμœΌλ‚˜, λ‹€μ‹œ UI둜 뢈러올 경우 μ‹œκ°μ  λ ˆμ΄μ•„μ›ƒμ΄ 파괴된 'Skeleton' μƒνƒœλ‘œ λ‚˜νƒ€λ‚˜ νŽΈμ§‘μ΄ 맀우 μ–΄λ ΅λ‹€λŠ” ν•œκ³„κ°€ μžˆλ‹€ [18]. - **데이터 μœ μ‹€ μœ„ν—˜:** PNG 이미지에 ν¬ν•¨λœ λ©”νƒ€λ°μ΄ν„°λŠ” SNS μ—…λ‘œλ“œλ‚˜ μ••μΆ• κ³Όμ •μ—μ„œ μ‰½κ²Œ 제거될 수 있으며, 이 경우 μ›Œν¬ν”Œλ‘œμš° 볡ꡬ가 λΆˆκ°€λŠ₯ν•΄μ§„λ‹€ [9, 19]. - **버전 ν˜Έν™˜μ„±:** ComfyUIκ°€ λΉˆλ²ˆν•˜κ²Œ μ—…λ°μ΄νŠΈλ¨μ— 따라, 이전 λ²„μ „μ—μ„œ μƒμ„±λœ JSON 파일이 μ΅œμ‹  μ—”μ§„μ—μ„œ μ •μƒμ μœΌλ‘œ λ™μž‘ν•˜μ§€ μ•Šμ„ 수 μžˆλŠ” λͺ¨μˆœμ΄ μ‘΄μž¬ν•œλ‹€ [19]. ## πŸ› οΈ 적용 사둀 (Applied in summary) - **comfyui-workflow-to-api-converter-endpoint:** ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œμ˜ λ³€ν™˜ λ‘œμ§μ„ Python으둜 κ΅¬ν˜„ν•˜μ—¬ `/workflow/convert` μ—”λ“œν¬μΈνŠΈλ₯Ό 톡해 λΉ„ API 포맷을 API 포맷으둜 λ³€ν™˜ν•œλ‹€ (Git Commit: `bc85382`) [17, 20, 21]. - **ComfyUI-to-Python-Extension:** API JSON 포맷을 읽어 μ‹€ν–‰ κ°€λŠ₯ν•œ 순수 Python 슀크립트(`.py`)둜 λ³€ν™˜ν•˜λ©°, `workflow_api.py`λΌλŠ” κΈ°λ³Έ 파일λͺ…을 μ‚¬μš©ν•œλ‹€ [22, 23]. - **Mystic Pipeline:** `workflow.json`을 ν¬ν•¨ν•œ 디렉토리 κ΅¬μ‘°μ—μ„œ `new_pipeline.py`λ₯Ό 톡해 μž…λ ₯ ν”„λ‘¬ν”„νŠΈλ₯Ό JSON에 μ£Όμž…ν•˜κ³  μ‹€ν–‰ν•˜λŠ” νŒŒμ΄ν”„λΌμΈ μ•„ν‚€ν…μ²˜λ₯Ό κ΅¬μ„±ν•œλ‹€ [24, 25]. - **Replicate fofr/any-comfyui-workflow:** API JSON 블둝을 직접 μž…λ ₯λ°›μ•„ GPU ν™˜κ²½μ—μ„œ μ‹€ν–‰ν•˜κ³  결과물을 λ°˜ν™˜ν•˜λŠ” ν”„λ‘œλ•μ…˜ λͺ¨λΈλ‘œ ν™œμš©λœλ‹€ [26, 27]. ## βœ… 검증 μƒνƒœ 및 신뒰도 - **μƒνƒœ:** draft - **검증 단계:** conceptual (λ‹€μ–‘ν•œ μ»€μŠ€ν…€ λ…Έλ“œ 및 ν™•μž₯ λ„κ΅¬μ—μ„œ 적용 사둀 확인됨) - **좜처 신뒰도:** B (Official Documentation / GitHub Source Code README / Expert Tutorials) - **쀑볡 검사 κ²°κ³Ό:** μ‹ κ·œ 생성 (New discovery) ## πŸ”— κ΄€λ ¨ λ¬Έμ„œ 링크 (Related document links) ### μƒμœ„/μœ μ‚¬ κ°œλ… #### [μ•„ν‚€ν…μ²˜/기반 기술] - [[ComfyUI Workflow JSON 생성 방법]] - μ—°κ²° 이유: λ³Έ 주제의 루트 μ£Όμ œλ‘œμ„œ 전체적인 생성 λ§₯락을 μ œκ³΅ν•¨. - [[Litegraph Standard]] - μ—°κ²° 이유: Frontend 포맷의 μ‹œκ°μ  λ ˆμ΄μ•„μ›ƒ κ·œκ²©μ„ κ²°μ •ν•˜λŠ” 핡심 κΈ°μˆ μž„. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: λ…Έλ“œ μ’Œν‘œ 및 링크 객체 처리 λ°©μ‹μ˜ 원리. #### [κ΅¬ν˜„/ν™œμš© 도ꡬ] - [[Dev Mode Options]] - μ—°κ²° 이유: API 포맷을 μΆ”μΆœν•˜κΈ° μœ„ν•΄ λ°˜λ“œμ‹œ μ„ ν–‰λ˜μ–΄μ•Ό ν•˜λŠ” UI μ„€μ •μž„. - [[ComfyUI-Manager]] - μ—°κ²° 이유: JSON λ‘œλ“œ μ‹œ λ°œμƒν•˜λŠ” 쒅속성(Custom Node) 문제λ₯Ό ν•΄κ²°ν•˜λŠ” ν•„μˆ˜ λ„κ΅¬μž„ [28]. - [[Load Image (Base64)]] - μ—°κ²° 이유: API μš”μ²­ μ‹œ μ™ΈλΆ€ 이미지 νŒŒμΌμ„ JSON 내뢀에 μ§λ ¬ν™”ν•˜μ—¬ ν¬ν•¨ν•˜λŠ” μ£Όμš” λ°©μ‹μž„ [29]. ### 심측 후속 질문 (Deeper Research Questions) - Frontend JSON의 `links` λ°°μ—΄ ꡬ쑰와 API JSON의 `inputs` λ‚΄ μž„λ² λ””λ“œ μ°Έμ‘° 방식 κ°„μ˜ λ³€ν™˜ μ•Œκ³ λ¦¬μ¦˜μ€ ꡬ체적으둜 μ–΄λ–»κ²Œ μž‘λ™ν•˜λŠ”κ°€? - 이미지 메타데이터(tEXt/zTXt)에 두 κ°€μ§€ 포맷을 λ™μ‹œμ— μ €μž₯ν•  λ•Œ λ°œμƒν•˜λŠ” μ˜€λ²„ν—€λ“œμ™€ μ‹€μ œ 처리 μš°μ„ μˆœμœ„λŠ” 무엇인가? - `object_info.json`은 API JSON을 λ™μ μœΌλ‘œ μƒμ„±ν•˜κ±°λ‚˜ κ²€μ¦ν•˜λŠ” κ³Όμ •μ—μ„œ μ–΄λ–€ 데이터 μŠ€ν‚€λ§ˆλ₯Ό μ œκ³΅ν•˜λŠ”κ°€? [13] - μ™œ ComfyUIλŠ” API 포맷 λ…ΈμΆœμ„ 기본적으둜 숨기고 'Dev Mode'λ₯Ό ν†΅ν•΄μ„œλ§Œ μ ‘κ·Όν•˜λ„λ‘ μ„€κ³„ν–ˆλŠ”κ°€? [17] - `ComfyUI-to-Python-Extension`이 λ³€ν™˜ν•œ 파이썬 μ½”λ“œμ™€ 원본 API JSON κ°„μ˜ μ‹€ν–‰ 효율 μ°¨μ΄λŠ” μ‘΄μž¬ν•˜λŠ”κ°€? - λ³΅μž‘ν•œ μ„œλΈŒκ·Έλž˜ν”„(Subgraph)κ°€ ν¬ν•¨λœ μ›Œν¬ν”Œλ‘œμš°λ₯Ό API 포맷으둜 직렬화할 λ•Œμ˜ μ œμ•½ 사항은 무엇인가? [30] ### 싀무 적용 λ§₯락 (Practical Application Contexts) - **Implementation:** μ™ΈλΆ€ Python μ•±μ—μ„œ ComfyUI μ„œλ²„λ‘œ ν”„λ‘¬ν”„νŠΈλ₯Ό 보낼 λ•ŒλŠ” λ°˜λ“œμ‹œ API 포맷을 μ‚¬μš©ν•΄μ•Ό ν•˜λ©°, ν”„λ‘¬ν”„νŠΈ λ‚΄ νŠΉμ • λ…Έλ“œ ID의 값을 λ™μ μœΌλ‘œ λ³€κ²½ν•˜μ—¬ μ „μ†‘ν•œλ‹€ [31, 32]. - **System Design:** ν”„λ‘œλ•μ…˜ ν™˜κ²½μ—μ„œλŠ” μ‚¬μš©μžκ°€ μ‹œκ°μ μœΌλ‘œ νŽΈμ§‘ν•œ `workflow.json`을 μ €μž₯ν•˜κ³ , μ‹œμŠ€ν…œ λ‚΄λΆ€μ μœΌλ‘œ 이λ₯Ό API 포맷으둜 λ³€ν™˜ν•˜μ—¬ 큐에 μ‚½μž…ν•˜λŠ” μ•„ν‚€ν…μ²˜κ°€ ꢌμž₯λœλ‹€ [18]. - **Operation / Maintenance:** λͺ¨λΈ 파일λͺ… λ³€κ²½μ΄λ‚˜ μ»€μŠ€ν…€ λ…Έλ“œ λˆ„λ½μ— λŒ€λΉ„ν•˜μ—¬ JSON λ‚΄μ˜ `class_type`κ³Ό μ‹€μ œ μ„œλ²„μ˜ `object_info`λ₯Ό λŒ€μ‘°ν•˜λŠ” 검증 둜직이 ν•„μš”ν•˜λ‹€ [33]. - **Learning Path:** μ΄ˆλ³΄μžλŠ” Frontend JSON을 ν†΅ν•œ μ‹œκ°μ  ν•™μŠ΅μ— μ§‘μ€‘ν•˜κ³ , μžλ™ν™” λ‹¨κ³„λ‘œ λ„˜μ–΄κ°ˆ λ•Œ API 포맷의 λ…Έλ“œ ID 및 μž…λ ₯ ꡬ쑰λ₯Ό νŒŒμ•…ν•΄μ•Ό ν•œλ‹€ [34]. ### 인접 μ£Όλ³€ 주제 (Adjacent Topics) - [[Model Hashing (SHA-256)]] - ν™•μž₯ λ°©ν–₯: JSON 파일 λ‚΄μ˜ ν•˜λ“œμ½”λ”©λœ 파일λͺ… 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ λͺ¨λΈ 식별 기술 [35]. - [[Retrieval-Augmented Generation (RAG) for Nodes]] - ν™•μž₯ λ°©ν–₯: LLM을 μ΄μš©ν•΄ λ™μ μœΌλ‘œ 졜적의 λ…Έλ“œ κ·Έλž˜ν”„λ₯Ό μƒμ„±ν•˜λŠ” 미래 기술 [36]. ## πŸ“ λ³€κ²½ 이λ ₯ (Change history) - 2026-05-19: Initial draft generated via Datacollector_MAC P-Reinforce engine. (Based on 18 sources)