--- id: frontend-format title: "Frontend Format" category: "10_Wiki/Topics" status: "draft" verification_status: "conceptual" canonical_id: "" aliases: ["workflow.json", "UI Format"] 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: ["workflow.json", "flux_workflow.json"] github_commit: "bc85382" --- # [[Frontend Format]] ## ๐ŸŽฏ ํ•œ ์ค„ ํ†ต์ฐฐ (One-line insight) Frontend Format์€ ComfyUI ์›น ์ธํ„ฐํŽ˜์ด์Šค์˜ ์‹œ๊ฐ์  ์ƒํƒœ์™€ ๋…ธ๋“œ ์‹คํ–‰ ๋กœ์ง์„ ์™„๋ฒฝํ•˜๊ฒŒ ๋ณด์กดํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋“œ ์ขŒํ‘œ, ํฌ๊ธฐ, ๊ทธ๋ฃนํ™” ๋“ฑ์˜ ํ’๋ถ€ํ•œ UI ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” Litegraph ๊ธฐ๋ฐ˜ ์ง๋ ฌํ™” ๊ทœ๊ฒฉ์ด๋‹ค [1], [2], [3]. ## ๐Ÿง  ํ•ต์‹ฌ ๊ฐœ๋… (Core concepts) - **์‹œ๊ฐ์  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ (Visual Metadata):** ๋…ธ๋“œ์˜ ์บ”๋ฒ„์Šค ์ขŒํ‘œ(`pos`), ํฌ๊ธฐ(`size`), ๊ทธ๋ฃน ๊ตฌ์กฐ, ๋…ธ๋“œ์˜ ์ ‘ํž˜(collapsed) ๋˜๋Š” ๊ณ ์ •(pinned) ์ƒํƒœ ๋“ฑ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌ์„ฑ์„ ์œ„ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ๋‹ค [1], [2], [4]. - **Litegraph ํ‘œ์ค€ ๊ธฐ๋ฐ˜:** ์›น ๊ธฐ๋ฐ˜ ๊ทธ๋ž˜ํ”„ ํŽธ์ง‘๊ธฐ์˜ ์‹œ๊ฐ์  ์กฐ์ž‘๊ณผ ๋ Œ๋”๋ง์„ ์œ„ํ•ด ์„ค๊ณ„๋œ Litegraph ํ˜•์‹์„ ๋”ฐ๋ฅด๋ฉฐ, ์ด๋Š” ์ธ๊ฐ„์ด ์ฝ๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•œ๋‹ค [1], [3]. - **๋ช…์‹œ์  ์—ฐ๊ฒฐ ๊ฐ์ฒด (Explicit Links):** ๋…ธ๋“œ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ํ๋ฆ„์ด ๋ณ„๋„์˜ `links` ๋ฐฐ์—ด ๋‚ด์— ์ •์˜๋œ ๋…๋ฆฝ์ ์ธ ์—ฐ๊ฒฐ ๊ฐ์ฒด๋กœ ํ‘œํ˜„๋˜์–ด, ๊ทธ๋ž˜ํ”„์˜ ์‹œ๊ฐ์  ์—ฐ๊ฒฐ์„ฑ์„ ๊ด€๋ฆฌํ•œ๋‹ค [2], [5]. - **๊ณ ์œ  ์ˆซ์ž ์‹๋ณ„์ž:** ๊ฐ ๋…ธ๋“œ๋Š” "1", "2", "3"๊ณผ ๊ฐ™์€ ๊ณ ์œ ํ•œ ์ˆซ์ž ๊ธฐ๋ฐ˜ ๋ฌธ์ž์—ด ID๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌ๋˜๋ฉฐ, ์ด๋Š” ์‹œ๊ฐ์  ์œ„์น˜์™€ ๋…ผ๋ฆฌ์  ์—ฐ๊ฒฐ์„ ๋งคํ•‘ํ•˜๋Š” ๊ธฐ์ค€์ด ๋œ๋‹ค [2], [3]. ## ๐Ÿงฉ ์ถ”์ถœ๋œ ํŒจํ„ด (Extracted patterns) - **GUI ๊ธฐ๋ณธ ์ €์žฅ ํŒจํ„ด:** ComfyUI ์ œ์–ดํŒ์—์„œ 'Save' ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ๋‹จ์ถ•ํ‚ค `Ctrl + S`(Mac์€ `Cmd + S`)๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ํฌ๋งท์ด๋‹ค [6], [7]. - **๋ฏธ๋””์–ด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋‚ด์žฅ ํŒจํ„ด:** PNG ๋˜๋Š” WebP ์ด๋ฏธ์ง€ ์ƒ์„ฑ ์‹œ, ํŒŒ์ผ์˜ `tEXt` ๋˜๋Š” `zTXt` ์ฒญํฌ์— Frontend Format JSON์ด ์ฃผ์ž…๋˜์–ด ์ด๋ฏธ์ง€๊ฐ€ ์ž์ฒด์ ์ธ ์›Œํฌํ”Œ๋กœ์šฐ ์ปจํ…Œ์ด๋„ˆ ์—ญํ• ์„ ํ•˜๊ฒŒ ๋œ๋‹ค [8], [9], [10]. - **๋…ธ๋“œ ์˜ค๋ธŒ์ ํŠธ ํ‘œ์ค€ํ™”:** ๋ชจ๋“  ๋…ธ๋“œ๋Š” `id`, `type`, `pos`, `size`, `widgets_values`, `order`, `mode`๋ผ๋Š” ํ•„์ˆ˜/์„ ํƒ ์†์„ฑ ์„ธํŠธ๋ฅผ ๊ฐ€์ง€๋Š” ์ผ๊ด€๋œ ๊ฐ์ฒด ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•œ๋‹ค [11], [4]. ## ๐Ÿ“– ์„ธ๋ถ€ ๋‚ด์šฉ (Details) Frontend Format์€ ์ฃผ๋กœ **์‹œ๊ฐ์  ํŽธ์ง‘ ๋ฐ ์ธ๊ฐ„ ๊ฐ„์˜ ๊ณต์œ **๋ฅผ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค [2], [7]. ์ด ํฌ๋งท์€ ๋‹จ์ˆœํ•œ ์‹คํ–‰ ๋กœ์ง์„ ๋„˜์–ด ์•„ํ‹ฐ์ŠคํŠธ๊ฐ€ ๊ตฌ์„ฑํ•œ ์ž‘์—… ํ™˜๊ฒฝ์˜ ๋ชจ๋“  ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํŒŒ์ผ์„ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์™”์„ ๋•Œ ๋…ธ๋“œ๋“ค์ด ์ •ํ™•ํžˆ ๊ฐ™์€ ์œ„์น˜์— ๋ฐฐ์น˜๋˜๊ณ  ์„ค์ •๋œ ์‹œ๊ฐ์  ๊ทธ๋ฃน์ด ์œ ์ง€๋œ๋‹ค [6], [3]. ๊ธฐ์ˆ ์ ์œผ๋กœ Frontend JSON์€ `nodes`์™€ `links`๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ํ•ต์‹ฌ ๋ฐฐ์—ด์„ ํฌํ•จํ•œ๋‹ค [4]. `nodes` ๋ฐฐ์—ด์˜ ๊ฐ ๊ฐ์ฒด๋Š” ํŠน์ • ๋…ธ๋“œ์˜ ํด๋ž˜์Šค ํƒ€์ž…๊ณผ ์œ„์ ฏ ๊ฐ’๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์บ”๋ฒ„์Šค์ƒ์˜ ์ขŒํ‘œ(`[x, y]`)์™€ ์ฐจ์›(`[width, height]`)์„ ๋ช…์‹œํ•œ๋‹ค [11], [4]. `links` ๋ฐฐ์—ด์€ ์ถœ๋ ฅ ๋…ธ๋“œ ID, ์ถœ๋ ฅ ์Šฌ๋กฏ, ์ž…๋ ฅ ๋…ธ๋“œ ID, ์ž…๋ ฅ ์Šฌ๋กฏ์„ ํฌํ•จํ•˜๋Š” 6๊ฐœ ํ•ญ๋ชฉ์˜ ๋ฐฐ์—ด ๋˜๋Š” ๊ฐ์ฒด๋กœ ๊ตฌ์„ฑ๋˜์–ด ๋…ธ๋“œ ๊ฐ„์˜ ๋ฌผ๋ฆฌ์  ์—ฐ๊ฒฐ์„ ์ •์˜ํ•œ๋‹ค [5]. ์ด ํฌ๋งท์€ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ API Format์— ๋น„ํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ํฌ์ง€๋งŒ, ๋ชจ๋ธ ๊ฐ€์ค‘์น˜(Weights) ํŒŒ์ผ์— ๋น„ํ•˜๋ฉด ๋งค์šฐ ์ž‘์•„ ๋…๋ฆฝ์ ์ธ ๋ณด๊ด€๊ณผ ๊ณต์œ ๊ฐ€ ์šฉ์ดํ•˜๋‹ค [12], [2]. ํ•˜์ง€๋งŒ ๋ฐฑ์—”๋“œ ์—”์ง„์ด ์ง์ ‘์ ์œผ๋กœ ํ•ด์„ํ•˜๊ธฐ์—๋Š” ๋ถˆํ•„์š”ํ•œ UI ์ •๋ณด๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„, ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์‹คํ–‰์ด๋‚˜ API ํ˜ธ์ถœ ์‹œ์—๋Š” ๋Œ€๊ฐœ API Format์œผ๋กœ์˜ ๋ณ€ํ™˜์ด ํ•„์š”ํ•˜๋‹ค [13], [14]. ## โš–๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & updates) - **์‹คํ–‰ ํ˜ธํ™˜์„ฑ:** Frontend Format(workflow.json)์€ ComfyUI ์›น ์ธํ„ฐํŽ˜์ด์Šค์—์„œ๋Š” ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ์œผ๋กœ ์ฆ‰์‹œ ์‹คํ–‰๋˜์ง€๋งŒ, ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ `/prompt` ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์— ์ง์ ‘ ์ „์†กํ•  ๊ฒฝ์šฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉฐ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค [14]. - **๋ฐ์ดํ„ฐ ์†์‹ค ์œ„ํ—˜:** ์ด๋ฏธ์ง€์— ๋‚ด์žฅ๋œ ์›Œํฌํ”Œ๋กœ์šฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ์ผ๋ฐ˜์ ์ธ ์ด๋ฏธ์ง€ ํŽธ์ง‘๊ธฐ(GIMP ๋“ฑ)๋กœ ํŽธ์ง‘ํ•˜๊ฑฐ๋‚˜ ์†Œ์…œ ๋ฏธ๋””์–ด ํ”Œ๋žซํผ์— ์—…๋กœ๋“œํ•  ๋•Œ ์••์ถ• ๋ฐ ์ตœ์ ํ™” ๊ณผ์ •์—์„œ ์‚ญ์ œ๋  ์œ„ํ—˜์ด ํฌ๋‹ค [15], [9], [16]. ## ๐Ÿ› ๏ธ ์ ์šฉ ์‚ฌ๋ก€ (Applied in summary) - **ํ‘œ์ค€ ์›Œํฌํ”Œ๋กœ์šฐ ํŒŒ์ผ:** `workflow.json`์ด๋ผ๋Š” ๊ธฐ๋ณธ ํŒŒ์ผ๋ช…์œผ๋กœ ์‹œ์Šคํ…œ ์ „๋ฐ˜์—์„œ ์‹œ๊ฐ์  ์ €์žฅ ๋‹จ์œ„๋กœ ์‚ฌ์šฉ๋œ๋‹ค [1], [7]. - **FLUX ์˜ˆ์‹œ:** `flux_workflow.json` ํŒŒ์ผ์€ ๋…ธ๋“œ ID, ์œ„์น˜, ์œ„์ ฏ ๊ฐ’ ๋ฐ ๋ช…์‹œ์  ๋งํฌ ๊ตฌ์กฐ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” Frontend Format์˜ ๋Œ€ํ‘œ์ ์ธ ๊ธฐ์ˆ  ์‚ฌ๋ก€๋กœ ๋ฌธ์„œํ™”๋˜์–ด ์žˆ๋‹ค [7], [17]. - **๋ฒ„๊ทธ ์ˆ˜์ • ๊ธฐ๋ก:** Git ์ปค๋ฐ‹ `bc85382`์—์„œ๋Š” Frontend ํฌ๋งท์—์„œ API ํฌ๋งท์œผ๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ ์ฝค๋ณด ์œ„์ ฏ์˜ ๋Œ€์†Œ๋ฌธ์ž ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋“œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ๋Œ€์กฐํ•˜๋Š” ๋กœ์ง์ด ์ ์šฉ๋˜์—ˆ๋‹ค [18], [19]. ## โœ… ๊ฒ€์ฆ ์ƒํƒœ ๋ฐ ์‹ ๋ขฐ๋„ - **์ƒํƒœ:** draft - **๊ฒ€์ฆ ๋‹จ๊ณ„:** conceptual (์‹ค์ œ ์ ์šฉ ์‚ฌ๋ก€ ๋ฐ ๊ณต์‹ ์‚ฌ์–‘์„ ํ†ตํ•ด ํ™•์ธ๋จ) - **์ถœ์ฒ˜ ์‹ ๋ขฐ๋„:** B (๊ณต์‹ ๋ฌธ์„œ ๋ฐ ์˜คํ”ˆ์†Œ์Šค ๊ธฐ์ˆ  ๋ฌธ์„œ ๊ธฐ๋ฐ˜) - **์ค‘๋ณต ๊ฒ€์‚ฌ ๊ฒฐ๊ณผ:** ์‹ ๊ทœ ์ƒ์„ฑ (New discovery) ## ๐Ÿ“ ๋ณ€๊ฒฝ ์ด๋ ฅ (Change history) - 2026-05-20: Initial draft generated via Datacollector_MAC P-Reinforce engine.