--- id: comfyui-workflow-extractor title: "ComfyUI Workflow Extractor" 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: ["SethRobinson/comfyui-workflow-to-api-converter-endpoint (bc85382)", "Comfy-Org/comfy-cli issue #341", "exiftool CLI implementation"] github_commit: "bc85382" --- # [[ComfyUI Workflow Extractor]] ## ๐ŸŽฏ ํ•œ ์ค„ ํ†ต์ฐฐ (One-line insight) ComfyUI ์ƒ์„ฑ ์ด๋ฏธ์ง€์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(PNG Chunks)์— ๋‚ด์žฅ๋œ ์›Œํฌํ”Œ๋กœ์šฐ ๋…ผ๋ฆฌ๋ฅผ ์ถ”์ถœํ•˜์—ฌ ์œ ์‹ค๋œ ๋…ธ๋“œ ๊ทธ๋ž˜ํ”„๋ฅผ ๋ณต๊ตฌํ•˜๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ JSON์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•„์ˆ˜ ๊ธฐ์ˆ . [1-3] ## ๐Ÿง  ํ•ต์‹ฌ ๊ฐœ๋… (Core concepts) - **๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ž„๋ฒ ๋”ฉ (Metadata Embedding):** ComfyUI์˜ 'Save Image' ๋…ธ๋“œ๋Š” ์‹คํ–‰ ์‹œ ์ „์ฒด ๋…ธ๋“œ ๊ทธ๋ž˜ํ”„, ๋ ˆ์ด์•„์›ƒ, ์„ค์ • ๋ฐ ํ”„๋กฌํ”„ํŠธ๋ฅผ PNG ํŒŒ์ผ์˜ ์ˆจ๊ฒจ์ง„ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์ฃผ์ž…ํ•จ. [4, 5] - **PNG ์ฒญํฌ ๋ถ„์„ (PNG Chunk Analysis):** ์ฃผ๋กœ `tEXt` ๋˜๋Š” `zTXt` ์ฒญํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›Œํฌํ”Œ๋กœ์šฐ(Frontend ํ˜•์‹)์™€ ํ”„๋กฌํ”„ํŠธ(API ํ˜•์‹)๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ๊ณ ์œ ํ•œ ๋ฌธ์ž์—ด์„ ์ €์žฅํ•จ. [2] - **๋ฐ์ดํ„ฐ ๋ณต๊ตฌ ๋ฐ ๋ณ€ํ™˜ (Data Recovery & Conversion):** ์ด๋ฏธ์ง€ ํŽธ์ง‘๊ธฐ๋‚˜ ์†Œ์…œ ๋ฏธ๋””์–ด ํ”Œ๋žซํผ์— ์˜ํ•ด ์ œ๊ฑฐ๋  ์ˆ˜ ์žˆ๋Š” ์ทจ์•ฝํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋…๋ฆฝ์ ์ธ JSON ํŒŒ์ผ๋กœ ์ถ”์ถœํ•˜์—ฌ ๊ณต์œ  ๋ฐ ๋ฐฑ์—… ๊ฐ€๋Šฅ์„ฑ์„ ํ™•๋ณดํ•จ. [1, 2] - **์ถ”์ถœ ๋„๊ตฌ ์ƒํƒœ๊ณ„ (Extraction Tool Ecosystem):** ์›น ๊ธฐ๋ฐ˜ ์ธํ„ฐํŽ˜์ด์Šค๋ถ€ํ„ฐ ๋ช…๋ น์ค„ ๋„๊ตฌ(CLI), Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ํ•˜์ด ๋ ˆ๋ฒจ ์Šคํฌ๋ฆฝํŠธ์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๋‹ค์–‘ํ•œ ๋ณต๊ตฌ ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•จ. [3, 6] ## ๐Ÿงฉ ์ถ”์ถœ๋œ ํŒจํ„ด (Extracted patterns) - **๋ฐ”์ด๋„ˆ๋ฆฌ ํƒœ๊ทธ ๊ฒฉ๋ฆฌ ํŒจํ„ด:** `exiftool`๊ณผ ๊ฐ™์€ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ๋””์–ด ํŒŒ์ผ ๋‚ด์˜ ํŠน์ • ๋ฐ”์ด๋„ˆ๋ฆฌ ํƒœ๊ทธ(`-workflow`)๋งŒ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ํ‘œ์ค€ JSON ํŒŒ์ผ๋กœ ์ถœ๋ ฅํ•˜๋Š” ์ „๋žต์„ ์ทจํ•จ. [3, 6] - **๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ๋กœ๋”ฉ ๋ฉ”์ปค๋‹ˆ์ฆ˜:** ์ถ”์ถœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๋Œ€์‹ , ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ์ด๋ฏธ์ง€๋ฅผ ComfyUI ์บ”๋ฒ„์Šค์— ์ง์ ‘ ๋“œ๋กญํ•˜์—ฌ ์ฆ‰๊ฐ์ ์œผ๋กœ ๋…ธ๋“œ ๋ ˆ์ด์•„์›ƒ์„ ์žฌ๊ตฌ์„ฑํ•จ. [4, 7, 8] - **์ž๋™ํ™”๋œ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ:** ๋Œ€๋Ÿ‰์˜ ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ์—์„œ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๋Œ€๊ทœ๋ชจ๋กœ ์ˆ˜์ง‘ํ•˜๊ธฐ ์œ„ํ•ด ๋””๋ ‰ํ† ๋ฆฌ ์ „์ฒด๋ฅผ ์Šค์บ”ํ•˜๊ณ  API ๊ทธ๋ž˜ํ”„์™€ UI ๋ ˆ์ด์•„์›ƒ์„ ๋ณ„๋„์˜ JSON์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๋ฐฐ์น˜ ํ”„๋กœ์„ธ์‹ฑ ํŒจํ„ด์ด ๋ฐœ๊ฒฌ๋จ. [3] ## ๐Ÿ“– ์„ธ๋ถ€ ๋‚ด์šฉ (Details) ComfyUI Workflow Extractor๋Š” ์ด๋ฏธ์ง€ ํŒŒ์ผ ๋‚ด์— ์ง๋ ฌํ™”๋œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ํŒŒ์‹ฑํ•˜๋Š” ์ „๋ฌธํ™”๋œ ๋„๊ตฌ ๋ชจ์Œ์„ ์˜๋ฏธํ•จ. ComfyUI์—์„œ ์ƒ์„ฑ๋œ ๊ฑฐ์˜ ๋ชจ๋“  PNG ํŒŒ์ผ์€ ๊ทธ ์ž์ฒด๊ฐ€ ์›Œํฌํ”Œ๋กœ์šฐ์˜ ์šด๋ฐ˜์ฒด ์—ญํ• ์„ ํ•˜๋ฉฐ, ์ด๋Š” 'Save Image' ๋…ธ๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์ตœ์ข… ์ด๋ฏธ์ง€์™€ ํ•จ๊ป˜ ์ „์ฒด ๋…ธ๋“œ ๊ทธ๋ž˜ํ”„๋ฅผ ์ธ์ ์…˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž„. [4, 5] ์ด ๊ธฐ์ˆ ์˜ ํ•ต์‹ฌ์€ PNG ๊ทœ๊ฒฉ ๋‚ด์˜ ๋น„ํ•„์ˆ˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์˜์—ญ์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ž„. ๊ตฌ์ฒด์ ์œผ๋กœ `tEXt` ๋˜๋Š” `zTXt` ์ฒญํฌ์— ๋‘ ๊ฐ€์ง€ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ, ํ•˜๋‚˜๋Š” ์‹œ๊ฐ์  ๋ฐฐ์น˜๋ฅผ ํฌํ•จํ•œ **Frontend ์›Œํฌํ”Œ๋กœ์šฐ**์ด๊ณ , ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์‹คํ–‰์„ ์œ„ํ•œ ์ตœ์ ํ™”๋œ **Backend API ํ”„๋กฌํ”„ํŠธ**์ž„. [2] ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋Š” ๋งค์šฐ ์ทจ์•ฝํ•˜์—ฌ ์ด๋ฏธ์ง€ ์••์ถ• ์†Œํ”„ํŠธ์›จ์–ด๋‚˜ ์†Œ์…œ ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค๋ฅผ ๊ฑฐ์น  ๊ฒฝ์šฐ ์œ ์‹ค๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์œผ๋ฏ€๋กœ, ์›Œํฌํ”Œ๋กœ์šฐ ์ถ”์ถœ๊ธฐ๋Š” ์ด๋Ÿฌํ•œ ์œ ์‹ค์ด ๋ฐœ์ƒํ•˜๊ธฐ ์ „ ํ˜น์€ ์ €์žฅ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ๋ถ€ํ„ฐ ์ง€์‹์„ ์ถ”์ถœํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•จ. [1, 2, 7] ์ „๋ฌธ์ ์ธ ์ถ”์ถœ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์กด์žฌํ•จ: - **CLI ๊ธฐ๋ฐ˜ ๋„๊ตฌ:** `exiftool -b -workflow input.png > workflow.json`๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ถ”์ถœํ•˜๊ฑฐ๋‚˜, `ComfyUI_prompt_extractor`์™€ ๊ฐ™์€ ์ „์šฉ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธ์ •์  ํ”„๋กฌํ”„ํŠธ์™€ API ๊ทธ๋ž˜ํ”„๋ฅผ ๋ถ„๋ฆฌํ•จ. [3, 6] - **์›น ์ธํ„ฐํŽ˜์ด์Šค ๋„๊ตฌ:** 'Weird Wonderful AI Art'์—์„œ ์ œ๊ณตํ•˜๋Š” ์ถ”์ถœ๊ธฐ์™€ ๊ฐ™์ด ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•˜๋ฉด ์„œ๋ฒ„ ์ธก ์ฒ˜๋ฆฌ ์—†์ด(๋˜๋Š” ๋ณด์•ˆ ์ฒ˜๋ฆฌ ํ›„) ์ฆ‰์‹œ JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์ž„. [1, 9] - **ํ†ตํ•ฉ ํ™•์žฅ ๋„๊ตฌ:** `ComfyUI-to-Python-Extension`๊ณผ ๊ฐ™์€ ๋„๊ตฌ๋Š” ์ถ”์ถœ๋œ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ Python ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํ—ค๋“œ๋ฆฌ์Šค ํ™˜๊ฒฝ์—์„œ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ. [10, 11] ## โš–๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & updates) - **๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ฌธ์ œ:** PNG ์ด๋ฏธ์ง€ ๋“œ๋ž˜๊ทธ ๋ฐฉ์‹์€ ๊ฐ„ํŽธํ•˜์ง€๋งŒ, ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ๋…ธ๋“œ๋‚˜ ํŠน์ • ์ปค์Šคํ…€ ๋…ธ๋“œ๊ฐ€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํฌํ•จ๋˜์ง€ ์•Š์•„ ๋ณต๊ตฌ ์‹œ ์ผ๋ถ€ ์ •๋ณด๊ฐ€ ๋ˆ„๋ฝ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒฝ๊ณ ๊ฐ€ ์†Œ์Šค์—์„œ ํ™•์ธ๋จ. [5] - **ํ˜•์‹ ๊ฐ„ ์ถฉ๋Œ:** ์ถ”์ถœ ๋„๊ตฌ๋Š” 'Frontend JSON'๊ณผ 'API JSON'์„ ๊ตฌ๋ถ„ํ•ด์•ผ ํ•จ. API ํฌ๋งท์€ ์‹œ๊ฐ์  ์ •๋ณด(๋…ธ๋“œ ์œ„์น˜, ํฌ๊ธฐ ๋“ฑ)๊ฐ€ ์ œ๊ฑฐ๋œ ์ƒํƒœ์ด๋ฏ€๋กœ ์ด๋ฅผ ๋‹ค์‹œ ComfyUI UI๋กœ ๋“œ๋ž˜๊ทธํ•˜๋ฉด ์‹œ๊ฐ์ ์œผ๋กœ ๋ถˆ์™„์ „ํ•œ ์ƒํƒœ๋กœ ๋กœ๋“œ๋  ์ˆ˜ ์žˆ์Œ. [12, 13] - **๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ๊ดด์„ฑ:** ๋งŽ์€ ํ‘œ์ค€ ์ด๋ฏธ์ง€ ํŽธ์ง‘๊ธฐ(GIMP ๋“ฑ)๋Š” ์ด๋ฏธ์ง€ ์ €์žฅ ์‹œ ๋น„ํ‘œ์ค€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ฒญํฌ๋ฅผ ์ œ๊ฑฐํ•˜๋ฏ€๋กœ, ์›๋ณธ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์œ ์ง€ํ•˜๋ ค๋ฉด ์ „์šฉ ์‚ฝ์ž…/๋ณต์‚ฌ ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•จ์ด ์ œ๊ธฐ๋จ. [14] ## ๐Ÿ› ๏ธ ์ ์šฉ ์‚ฌ๋ก€ (Applied in summary) - **SethRobinson/comfyui-workflow-to-api-converter-endpoint:** ํด๋ผ์ด์–ธํŠธ ์ธก์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋…ผ๋ฆฌ๋ฅผ ํŒŒ์ด์ฌ์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์„œ๋ฒ„ ์ธก์—์„œ ๋น„-API ์›Œํฌํ”Œ๋กœ์šฐ ํ˜•์‹์„ API ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” `/workflow/convert` ์—”๋“œํฌ์ธํŠธ๋ฅผ ๊ตฌํ˜„ํ•จ (Commit: `bc85382`). [15, 16] - **Comfy-Org/comfy-cli Issue #341:** ์ด๋ฏธ์ง€๋ฟ๋งŒ ์•„๋‹ˆ๋ผ webp, mp4 ๋“ฑ ์ง€์›๋˜๋Š” ๋ชจ๋“  ๋ฏธ๋””์–ด์—์„œ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ถ”์ถœ, ์‚ฝ์ž…, ๋ณต์‚ฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ `comfy-cli`์— ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ๋…ผ์˜์™€ `exiftool` ํ™œ์šฉ ์‚ฌ๋ก€๊ฐ€ ๊ธฐ๋ก๋จ. [6, 14, 17] - **WeirdWonderfulAI.Art:** ์•ฝ 21,460๊ฐœ ์ด์ƒ์˜ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ถ”์ถœํ•œ ํ†ต๊ณ„๋ฅผ ๋ณด์œ ํ•œ ์›น ๊ธฐ๋ฐ˜ ์ถ”์ถœ ๋„๊ตฌ ์„œ๋น„์Šค๋ฅผ ์šด์˜ ์ค‘์ž„. [9] - **exiftool CLI:** `exiftool -b -workflow` ๋ช…๋ น์„ ํ†ตํ•ด PNG์—์„œ ๋ฐ”์ด๋„ˆ๋ฆฌ ์›Œํฌํ”Œ๋กœ์šฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒฉ๋ฆฌํ•˜๋Š” ํ‘œ์ค€์ ์ธ ๋””์ง€ํ„ธ ํฌ๋ Œ์‹ ๊ธฐ๋ฒ•์œผ๋กœ ํ™œ์šฉ๋จ. [3, 6] ## โœ… ๊ฒ€์ฆ ์ƒํƒœ ๋ฐ ์‹ ๋ขฐ๋„ - **์ƒํƒœ:** draft - **๊ฒ€์ฆ ๋‹จ๊ณ„:** conceptual (์‹ค์ œ ์ ์šฉ ์‚ฌ๋ก€ ๋‹ค์ˆ˜ ๋ฐœ๊ฒฌ์œผ๋กœ ๊ฒ€์ฆ ๊ฐ€๋Šฅ์„ฑ ๋†’์Œ) - **์ถœ์ฒ˜ ์‹ ๋ขฐ๋„:** B (Official Documentation / GitHub Issue / Technical Guides) - **์ค‘๋ณต ๊ฒ€์‚ฌ ๊ฒฐ๊ณผ:** ์‹ ๊ทœ ์ƒ์„ฑ (New discovery) ## ๐Ÿ“ ๋ณ€๊ฒฝ ์ด๋ ฅ (Change history) - 2026-05-19: Initial draft generated via Datacollector_MAC P-Reinforce engine.