--- id: metadata-extraction title: "Metadata Extraction" 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-20 updated_at: 2026-05-20 review_reason: "" merge_history: [] tags: ["research", "Comfyui workflow json ์ƒ์„ฑ ๋ฐฉ๋ฒ•"] raw_sources: ["NotebookLM Synthesis"] applied_in: ["exiftool", "comfyui-extractor.py", "Comfy_UI_prompt_extractor", "ComfyUI-to-Python-Extension", "Weird Wonderful AI Art Extractor"] github_commit: "82df278" --- # [[Metadata Extraction]] ## ๐ŸŽฏ ํ•œ ์ค„ ํ†ต์ฐฐ (One-line insight) AI ์ƒ์„ฑ ์ด๋ฏธ์ง€ ํŒŒ์ผ ์ž์ฒด๋ฅผ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์›Œํฌํ”Œ๋กœ์šฐ์˜ '์ปจํ…Œ์ด๋„ˆ'๋กœ ํ™œ์šฉํ•˜์—ฌ ์ƒ์„ฑ ๋กœ์ง์˜ ์˜์†์„ฑ๊ณผ ๊ณต์œ ๋ฅผ ๋ณด์žฅํ•˜๋Š” ํ•ต์‹ฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜ [1, 2]. ## ๐Ÿง  ํ•ต์‹ฌ ๊ฐœ๋… (Core concepts) - **Steganographic Embedding (๋น„๊ฐ€์‹œ์  ๋ฐ์ดํ„ฐ ์ฃผ์ž…):** PNG์˜ `tEXt`๋‚˜ `zTXt`์™€ ๊ฐ™์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ฒญํฌ ๋‚ด์— JSON ํ˜•์‹์˜ ๋…ธ๋“œ ๊ทธ๋ž˜ํ”„์™€ ์„ค์ •๊ฐ’์„ ์ฃผ์ž…ํ•˜์—ฌ ๋ณด์กดํ•จ [2, 3]. - **Format Redundancy (ํฌ๋งท ์ค‘๋ณต์„ฑ):** ์‹œ๊ฐ์  ๋ ˆ์ด์•„์›ƒ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ **Frontend JSON (workflow.json)**๊ณผ ์‹คํ–‰์„ ์œ„ํ•œ ๊ฒฝ๋Ÿ‰ํ™”๋œ **API JSON (prompt)**์„ ๋™์‹œ์— ์ด๋ฏธ์ง€์— ์ €์žฅํ•˜์—ฌ ํŽธ์ง‘๊ณผ ์žฌ์‹คํ–‰์„ ๋ชจ๋‘ ์ง€์›ํ•จ [3, 4]. - **Self-Documenting Artifact (์ž๊ธฐ ๋ฌธ์„œํ™” ์•„ํ‹ฐํŒฉํŠธ):** ์ƒ์„ฑ๋œ ๋ฏธ๋””์–ด๊ฐ€ ๋‹จ์ˆœํ•œ ๊ฒฐ๊ณผ๋ฌผ์ด ์•„๋‹ˆ๋ผ, ์ด๋ฅผ ๋งŒ๋“  ์•Œ๊ณ ๋ฆฌ์ฆ˜(์›Œํฌํ”Œ๋กœ์šฐ)์„ ๋‚ดํฌํ•œ ๋…๋ฆฝ์ ์ธ ์†Œ์Šค ์ฝ”๋“œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•จ [2, 5]. ## ๐Ÿงฉ ์ถ”์ถœ๋œ ํŒจํ„ด (Extracted patterns) - **Direct Canvas Restoration:** ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ComfyUI ๋ธŒ๋ผ์šฐ์ € ์บ”๋ฒ„์Šค๋กœ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญํ•˜์—ฌ ์ฆ‰๊ฐ์ ์œผ๋กœ ๋…ธ๋“œ ๋ ˆ์ด์•„์›ƒ์„ ๋ณต๊ตฌํ•˜๋Š” ํŒจํ„ด [1, 6-8]. - **Binary Chunk Isolation:** ์™ธ๋ถ€ ๋ช…๋ น์ค„ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ์™€ ๋ถ„๋ฆฌํ•˜์—ฌ ํŠน์ • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํƒœ๊ทธ(`-workflow`, `-prompt`)๋งŒ์„ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ์ถ”์ถœํ•˜๋Š” ํŒจํ„ด [9, 10]. - **Metadata Fragility (์ทจ์•ฝ์„ฑ ํŒจํ„ด):** ์ด๋ฏธ์ง€ ํŽธ์ง‘๊ธฐ(GIMP ๋“ฑ)๋‚˜ ์†Œ์…œ ๋ฏธ๋””์–ด ํ”Œ๋žซํผ์„ ๊ฑฐ์น˜๋ฉฐ ์ตœ์ ํ™” ๊ณผ์ •์—์„œ ๋น„์ •ํ˜• ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋˜์–ด ์›Œํฌํ”Œ๋กœ์šฐ ์ •๋ณด๊ฐ€ ์†Œ์‹ค๋˜๋Š” ํ˜„์ƒ [3, 11-13]. ## ๐Ÿ“– ์„ธ๋ถ€ ๋‚ด์šฉ (Details) ComfyUI์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ถ”์ถœ์€ ๋‹จ์ˆœํžˆ ์ •๋ณด๋ฅผ ์ฝ๋Š” ๊ฒƒ์„ ๋„˜์–ด, **์ƒ์„ฑ AI ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ์ˆ ์  ํ† ๋Œ€**๊ฐ€ ๋จ. - **๋ฐ์ดํ„ฐ ์ €์žฅ ๊ตฌ์กฐ:** PNG ํŒŒ์ผ ๋‚ด์—์„œ ComfyUI๋Š” ์ฃผ๋กœ ๋‘ ๊ฐ€์ง€ ๋ฌธ์ž์—ด์„ ์ฃผ์ž…ํ•จ. ํ•˜๋‚˜๋Š” ๋…ธ๋“œ ์œ„์น˜์™€ ์‹œ๊ฐ์  ๊ทธ๋ฃน์„ ํฌํ•จํ•œ **Frontend ํ˜•์‹**์ด๊ณ , ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋ฐฑ์—”๋“œ ์—”์ง„์ด ์ฆ‰์‹œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” **API ํ˜•์‹(prompt)**์ž„ [3, 14]. - **์•Œ๊ณ ๋ฆฌ์ฆ˜์  ์ถ”์ถœ ๋ฐฉ๋ฒ•:** - **Native API:** ComfyUI ์›น ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ `nodes` ๋ฐฐ์—ด์„ ์žฌ๊ตฌ์„ฑํ•จ [7, 15]. - **CLI ๊ธฐ๋ฐ˜ ๋„๊ตฌ:** `exiftool`์„ ํ™œ์šฉํ•˜์—ฌ `-workflow` ํƒœ๊ทธ๋ฅผ ๋ฐ”์ด๋„ˆ๋ฆฌ(`-b`)๋กœ ์ฝ์–ด JSON ํŒŒ์ผ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ํ•˜๋Š” ๋ฐฉ์‹์ด ํ‘œ์ค€์ ์œผ๋กœ ์‚ฌ์šฉ๋จ [9, 10]. - **์ „์šฉ ์ถ”์ถœ๊ธฐ:** `comfyui-extractor.py`๋‚˜ ์›น ๊ธฐ๋ฐ˜์˜ `Weird Wonderful AI Art` ๋„๊ตฌ๋Š” ์ด๋ฏธ์ง€์—์„œ ๊ธ์ •์  ํ”„๋กฌํ”„ํŠธ, API ๊ทธ๋ž˜ํ”„, UI ๋ ˆ์ด์•„์›ƒ์„ ๊ฐ๊ฐ ๋ถ„๋ฆฌํ•˜์—ฌ ์ถ”์ถœํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•จ [9, 12, 16]. - **ํ”„๋กœ๊ทธ๋ž˜๋ฐ์  ์—ฐ๋™:** `ComfyUI-to-Python-Extension`๊ณผ ๊ฐ™์€ ๋„๊ตฌ๋Š” ์ƒ์„ฑ๋œ Python ์Šคํฌ๋ฆฝํŠธ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค ๋•Œ ์›Œํฌํ”Œ๋กœ์šฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จ์‹œ์ผœ, ์ถ”ํ›„ ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์‹œ ComfyUI๋กœ ๋“œ๋กญํ–ˆ์„ ๋•Œ ์›๋ž˜์˜ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์—ด ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋จ [17]. ## โš–๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & updates) - **์ •๋ณด ๋ˆ„๋ฝ ๊ฐ€๋Šฅ์„ฑ:** Save-Image ๋…ธ๋“œ๊ฐ€ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ฃผ์ž…ํ•  ๋•Œ, ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ๋…ธ๋“œ๋‚˜ ํŠน์ • ์ปค์Šคํ…€ ๋…ธ๋“œ์˜ ์ •๋ณด๊ฐ€ ๋•Œ๋•Œ๋กœ ๋ˆ„๋ฝ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ํ•œ๊ณ„๊ฐ€ ๋ณด๊ณ ๋จ [11]. - **ํŽธ์ง‘๊ธฐ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ:** GIMP์™€ ๊ฐ™์€ ์™ธ๋ถ€ ํŽธ์ง‘ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์›Œํฌํ”Œ๋กœ์šฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ๋น„ํ‘œ์ค€ ํƒœ๊ทธ๋กœ ์ธ์‹๋˜์–ด ์‚ญ์ œ๋˜๋Š” ์ด์Šˆ๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด `exiftool`์˜ `%unreg` ์„ค์ •์„ ํ†ตํ•œ ์žฌ์‚ฝ์ž… ๊ธฐ๋Šฅ์ด ๋…ผ์˜๋˜๊ณ  ์žˆ์Œ [10, 13]. - **์ตœ์‹  ๋™ํ–ฅ:** ๋‹จ์ˆœ ์ถ”์ถœ์„ ๋„˜์–ด, ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ด๋ฏธ์ง€๋‚˜ SVG์— ๋ Œ๋”๋งํ•˜์—ฌ ์‹œ๊ฐ์ ์œผ๋กœ ํ™•์ธํ•˜๋ฉด์„œ๋„ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์กดํ•˜๋Š” ๋ฐฉ์‹(`pythongosssss' workflow image` ๋“ฑ)์ด ๋Œ€์•ˆ์œผ๋กœ ํ™œ์šฉ๋จ [13, 15]. ## ๐Ÿ› ๏ธ ์ ์šฉ ์‚ฌ๋ก€ (Applied in summary) - **ExifTool ์ž๋™ํ™”:** `exiftool -b -workflow input.png > workflow.json` ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋Œ€๋Ÿ‰์˜ ์ด๋ฏธ์ง€์—์„œ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๋ฒŒํฌ๋กœ ์ถ”์ถœํ•จ [9]. - **ComfyUI-to-Python-Extension:** ๋‚ด๋ณด๋‚ธ `.py` ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์‹œ `Save As Script` ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ด๋ฏธ์ง€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์›Œํฌํ”Œ๋กœ์šฐ ์ •๋ณด๋ฅผ ๋™๋ด‰ํ•จ [17]. - **Weird Wonderful AI Art:** ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด PNG ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ JSON ๋ฐ Prompt ๋ฐ์ดํ„ฐ๋ฅผ 1ํด๋ฆญ์œผ๋กœ ์ถ”์ถœ ๋ฐ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•จ [12, 16]. - **Git Commit:** ์†Œ์Šค ๋‚ด์—์„œ `82df278` ์ปค๋ฐ‹(DanielPFlorian)์„ ํ†ตํ•ด ๋ชจ๋ธ ๊ฒฝ๋กœ ํ•ด๊ฒฐ ๋ฐ ๋ชจ๋ธ ์ •๋ณด ๋ˆ„๋ฝ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ํ™•์ธ๋จ [18]. ## โœ… ๊ฒ€์ฆ ์ƒํƒœ ๋ฐ ์‹ ๋ขฐ๋„ - **์ƒํƒœ:** draft - **๊ฒ€์ฆ ๋‹จ๊ณ„:** conceptual (์‹ค์ œ ์ ์šฉ ์‚ฌ๋ก€ ๋ฐœ๊ฒฌ ์‹œ applied/validated๋กœ ์Šน๊ฒฉ ๊ฐ€๋Šฅ) - **์ถœ์ฒ˜ ์‹ ๋ขฐ๋„:** B (Official Documentation / Primary Source via NotebookLM) - **์ค‘๋ณต ๊ฒ€์‚ฌ ๊ฒฐ๊ณผ:** ์‹ ๊ทœ ์ƒ์„ฑ (New discovery) ## ๐Ÿ“ ๋ณ€๊ฒฝ ์ด๋ ฅ (Change history) - 2026-05-20: Initial draft generated via Datacollector_MAC P-Reinforce engine.