diff --git a/00_Raw/20260512_롯데월드_이머시브_및_AI스타일링샵_기술검토.md b/00_Raw/20260512_롯데월드_이머시브_및_AI스타일링샵_기술검토.md deleted file mode 100644 index 298505d0..00000000 --- a/00_Raw/20260512_롯데월드_이머시브_및_AI스타일링샵_기술검토.md +++ /dev/null @@ -1,46 +0,0 @@ -# [회의록] 롯데월드 이머시브 커머스 및 AI 스타일링 샵 기술 검토 회의 - -날짜: 2026년 05월 12일 | 17:00 -참석자: 김원일, 홍지훈, 김지환, 정현욱, 오경득, 오상묵, 정승민, 김준호, 김태현, 한예성 -주제 요약: 이머시브 스토어(360도 뷰)의 모바일/PC 최적화 현황을 시연하고, AI 스타일링 샵의 UI 개선 및 향후 개발 일정(5/19 목표)을 확정함. - -🔹 요약 보고 -본 회의는 수정된 이머시브 커머스 결과물을 리뷰하고, 기술적 제약 사항(로딩 속도, 모바일 UI, 데이터 용량)에 대한 대응 방안을 논의하기 위해 진행되었습니다. 특히 롯데월드 앱 내 웹뷰 환경에서의 성능 이슈와 AI 스타일링 샵의 사용자 경험(UX) 개선을 위한 구체적인 가이드라인을 도출하였습니다. - -1. 주요 논의 사항 - -[이머시브 스토어 기술 검토 및 최적화] -현황: 외부 웹 호출 시 모바일 환경에서의 로딩 속도 및 캐싱 동작 확인 필요. -핵심 논의: -- 최초 접속 시 이미지/영상 다운로드로 인한 지연 발생(캐싱 적용 시 개선됨을 확인). -- 모바일/PC 간의 카메라 뷰(View) 차이 조정: 의자가 너무 크게 보이는 문제 해결을 위해 카메라 높이 및 각도 재설정 필요. -- 웹뷰 환경에서의 '뒤로 가기' 시 초기화 이슈: 롯데원 앱 내 웹뷰 특성상 발생하는 사이드 이펙트로, 현업 팀장이 인지하고 수용하기로 함. -결론: [논의 중] (모바일 최적화를 위해 카메라 앵글 조정 및 리소스 경량화 작업 진행) - -[AI 스타일링 샵 UI/UX 개선] -현황: 상품 이미지(썸네일) 깨짐 현상 및 AI 어시스턴트 캐릭터 가독성 문제 발생. -핵심 논의: -- 썸네일 이미지 최적화: 고해상도 이미지가 리사이징되면서 발생하는 깨짐 현상을 방지하기 위해 해상도를 조정(2048 → 1024)하고 용량을 경량화함. -- AI 어시스턴트 캐릭터 개선: 현재 제품 이미지가 노출되어 대화의 초점이 흐려지는 문제를 해결하기 위해, 캐릭터(여성 모델)를 전면에 배치하여 '어시스턴트'로서의 정체성을 강화하는 방향으로 수정 제안. -- 가격 표기 정책: 할인율 변동에 따른 혼선을 방지하기 위해 모든 가격은 '정가 기준'으로 명시하고, 실제 할인가 정보는 구매 페이지에서 확인하도록 안내 문구 추가. - -2. 리스크 및 이슈 -* 성능 저하 위험: 모바일 환경에서의 고해상도 이미지 로딩 시 메모리 점유율 상승 우려. -* UI 불일치: PC와 모바일 간의 카메라 앵글 차이로 인한 사용자 경험 이질감. - -3. 결정 사항 -* 캐릭터 교체: AI 어시스턴트 역할을 수행할 여성 모델 캐릭터를 전면에 배치하기로 함. -* 가격 표기 원칙: 모든 UI 내 가격은 '정가' 기준으로 노출하며, 할인가 정보는 별도 안내함. -* 이미지 최적화: 썸네일 해상도를 1024px로 하향 조정하여 로딩 속도 개선. - -4. 오픈 이슈 -* 웹뷰 '뒤로 가기' 시 초기화되는 현상에 대한 기술적 우회 방안(필요시). -* 파노라마 이미지 슬라이싱 작업의 최종 완료 여부 확인. - -5. 액션 아이템 -담당 작업 내용 기한 -개발팀 AI 어시스턴트 캐릭터 교체 및 제품 아이콘/하이라이트 효과 검토 2026-05-19 -디자인/기술팀 모바일 환경 최적화(이미지 해상도 및 리소스 용량 조정) 2026-05-19 -기획/운영팀 가격 표기 문구(정가 기준) 및 안내 멘트 UI 반영 확인 2026-05-19 -기획팀 시연용 홍보 영상 제작 (목요일 오후 4시 전 완료 목표) 2026-05-14 -전체 팀 최종 빌드 배포 전 모바일 기종별 자체 QA 실시 2026-05-19 \ No newline at end of file diff --git a/00_Raw/20260512_사내_성능_테스트_계획서.md b/00_Raw/20260512_사내_성능_테스트_계획서.md deleted file mode 100644 index 24426745..00000000 --- a/00_Raw/20260512_사내_성능_테스트_계획서.md +++ /dev/null @@ -1,7 +0,0 @@ - -# [Test Plan] 사내 성능 및 서버 부하 테스트 계획서 -... (생략) ... - - -(이 파일은 이동되었으므로 삭제하거나 참조용으로만 남겨둡니다.) - \ No newline at end of file diff --git a/00_Raw/_youtube/상상을 현실로 만드는 AI 구글 OMNI 완벽 가이드 l EP.3 구글 IO 실리콘밸리[AI왕기초]__tsFVedfl3Mg.json b/00_Raw/_youtube/상상을 현실로 만드는 AI 구글 OMNI 완벽 가이드 l EP.3 구글 IO 실리콘밸리[AI왕기초]__tsFVedfl3Mg.json new file mode 100644 index 00000000..6af1d3cc --- /dev/null +++ b/00_Raw/_youtube/상상을 현실로 만드는 AI 구글 OMNI 완벽 가이드 l EP.3 구글 IO 실리콘밸리[AI왕기초]__tsFVedfl3Mg.json @@ -0,0 +1,1687 @@ +{ + "id": "tsFVedfl3Mg", + "title": "상상을 현실로 만드는 AI 구글 OMNI 완벽 가이드 l EP.3 구글 I/O 실리콘밸리[AI왕기초]", + "url": "https://www.youtube.com/watch?v=tsFVedfl3Mg", + "languages_priority": [ + "ko", + "en" + ], + "metadata": { + "id": "tsFVedfl3Mg", + "title": "상상을 현실로 만드는 AI 구글 OMNI 완벽 가이드 l EP.3 구글 I/O 실리콘밸리[AI왕기초]", + "description": "현재 시각, 샌프란시스코 현지 밤 11시. 잠을 잘 수가 없었습니다.\n\n단순히 텍스트나 이미지를 영상으로 바꿔주는 시대는 끝났습니다. 구글이 오늘 발표한 '제미나이 옴니(Gemini Omni)'는 영상 생성의 패러다임을 또 한 번 완전히 바꿔버렸습니다.\n\n 영상을 넣고 마치 사람과 대화하듯 \"오른쪽에서 헐레벌떡 뛰어오는 사람을 추가해 줘\"라고 말하면 AI가 알아서 편집을 해냅니다. 심지어 세상의 물리 법칙과 빛, 오디오까지 완벽하게 동기화되는 네이티브 멀티모달 기술입니다. \n\n인공지능은 이제 단순히 그림을 그리는 것을 넘어, 스스로 가상 세계를 상상하고 꿈을 꾸기 시작했습니다. 이 '월드 모델'이 가져올 충격적인 미래를 전 세계에서 가장 먼저, 가장 쉽게 설명해 드립니다.\n\n단순히 신기해하고 끝내지 마세요. 이 미친 도구를 활용해서 여러분이 머릿속으로만 하던 상상을 현실의 '비즈니스'로 직접 만들어 보시길 바랍니다. 구글 옴니 실전 가이드, 지금 바로 시작합니다!\n\n[오늘의 비행 지도 🗺️]\n00:00 영상 생성 패러다임이 완전히 바뀌었습니다\n01:12 기존 편집과 옴니 '대화형 영상 편집'의 충격적 차이\n02:04 네이티브 멀티모달(Native Multimodal)이란?\n02:40 기존 영상 AI(VEO)와 옴니의 결정적 차이\n03:21 '월드 모델' 개념 완벽 정리 (데이빗 하 이론)\n04:39 눈 감고 상상해 보세요 (AI가 세상을 이해하는 법)\n05:32 [실습 1] 사이버펑크 앵글 변경 & 캐릭터 변환\n06:52 [실습 2] 소리에 반응하는 재즈 클럽 (오디오-물리 동기화)\n08:12 [실습 3] 한글 텍스트 & 다중 오디오 레이어 테스트\n09:51 [실습 4] 대화형 편집 (영상 속에 헐레벌떡 뛰어오는 여자 추가)\n11:28 옴니로 돈 버는 상상을 현실로 만드세요 (숙제 나갑니다)\n\n#구글IO #제미나이옴니 #GeminiOmni #영상생성AI #월드모델 #AI비즈니스 #제이멘토 #실리콘밸리 #커넥트AI\n\n\n📧 비즈니스 문의: jay@connexionai.kr \n🌐 웹사이트: www.aicitybuilders.com\n\n👉 좋아요, 댓글, 구독은 영상 제작에 큰 힘이 됩니다 🙌\n👉 이 영상이 유용했다면 공유해 주세요!", + "duration": 761, + "duration_string": "12:41", + "thumbnail": "https://i.ytimg.com/vi/tsFVedfl3Mg/maxresdefault.jpg", + "thumbnails": [ + "https://i.ytimg.com/vi/tsFVedfl3Mg/3.jpg", + "https://i.ytimg.com/vi_webp/tsFVedfl3Mg/3.webp", + "https://i.ytimg.com/vi/tsFVedfl3Mg/2.jpg", + "https://i.ytimg.com/vi_webp/tsFVedfl3Mg/2.webp", + "https://i.ytimg.com/vi/tsFVedfl3Mg/1.jpg", + "https://i.ytimg.com/vi_webp/tsFVedfl3Mg/1.webp" + ], + "channel": "CONNECT AI LAB", + "channel_url": "https://www.youtube.com/channel/UCdLZ0MsYS4hmqFgOYCB6C9w", + "channel_id": "UCdLZ0MsYS4hmqFgOYCB6C9w", + "view_count": 3226, + "like_count": 263, + "comment_count": 90, + "upload_date": "20260520", + "tags": [ + "제미나이 옴니", + "Gemini Omni", + "구글 옴니", + "구글 IO 2026", + "영상 생성 AI", + "AI 비디오", + "월드 모델", + "World Model", + "네이티브 멀티모달", + "실리콘밸리 브이로그", + "제이멘토", + "커넥트 AI", + "AI 1인 기업", + "AI 비즈니스", + "영상 편집 AI", + "프리미어 프로 대체", + "VEO3", + "데이빗 하", + "AI 활용법" + ], + "categories": [ + "Education" + ], + "chapters": [ + { + "start": 0.0, + "end": 72.0, + "title": "The video creation paradigm has completely changed" + }, + { + "start": 72.0, + "end": 124.0, + "title": "The shocking difference between traditional editing and Omni's 'interactive video editing'" + }, + { + "start": 124.0, + "end": 160.0, + "title": "What is Native Multimodal?" + }, + { + "start": 160.0, + "end": 201.0, + "title": "The Crucial Difference Between Conventional Video AI (VEO) and Omni" + }, + { + "start": 201.0, + "end": 279.0, + "title": "A Complete Summary of the 'World Model' Concept (David Ha's Theory)" + }, + { + "start": 279.0, + "end": 332.0, + "title": "Close Your Eyes and Imagine (How AI Understands the World)" + }, + { + "start": 332.0, + "end": 412.0, + "title": "[Practice 1] Cyberpunk Angle Change & Character Transformation" + }, + { + "start": 412.0, + "end": 492.0, + "title": "[Practice 2] Jazz Club Reacting to Sound (Audio-Physical Synchronization)" + }, + { + "start": 492.0, + "end": 591.0, + "title": "[Practice 3] Korean Text & Multi-Audio Layer Test" + }, + { + "start": 591.0, + "end": 688.0, + "title": "[Practice 4] Interactive Editing (Adding a Woman Running Panting into the Video)" + }, + { + "start": 688.0, + "end": 761, + "title": "Make Your Dream of Making Money with Omni a Reality (Homework Here)" + } + ], + "webpage_url": "https://www.youtube.com/watch?v=tsFVedfl3Mg" + }, + "segments": [ + { + "start": 0.04, + "duration": 4.84, + "text": "구글이 옴니를 발표하면서 또다시 영상" + }, + { + "start": 3.0, + "duration": 4.08, + "text": "생성에서 패러다임을 바꿨습니다." + }, + { + "start": 4.88, + "duration": 4.719, + "text": "이제는 텍스트나 이미지뿐만 아니라" + }, + { + "start": 7.08, + "duration": 4.36, + "text": "영상을 넣고서 또 다른 영상을 만들" + }, + { + "start": 9.599, + "duration": 3.321, + "text": "수가 있어요. 그러니까이 편집을 할" + }, + { + "start": 11.44, + "duration": 3.96, + "text": "수가 있게 된 거죠. 그것뿐만" + }, + { + "start": 12.92, + "duration": 5.519, + "text": "아니라이 세상에 있는 물리 법칙을" + }, + { + "start": 15.4, + "duration": 4.48, + "text": "이해하면서 훨씬 더 진짜 같이 영상을" + }, + { + "start": 18.439, + "duration": 3.641, + "text": "만들 수 있게 되었어요. 저는 지금" + }, + { + "start": 19.88, + "duration": 4.0, + "text": "미국 샌프란시스코 입구글 아이오에" + }, + { + "start": 22.08, + "duration": 4.72, + "text": "참여하고 있습니다. 그래서 전" + }, + { + "start": 23.88, + "duration": 4.479, + "text": "세계에서이 구글 옴니를 가장 빨리" + }, + { + "start": 26.8, + "duration": 3.92, + "text": "알려 주는 사람일 거예요. 오늘이" + }, + { + "start": 28.359, + "duration": 4.601, + "text": "영상에서 구글 옴니의 이론뿐만 아니라" + }, + { + "start": 30.72, + "duration": 4.519, + "text": "실습까지 아주 쉽고 자세하게 알려" + }, + { + "start": 32.96, + "duration": 4.56, + "text": "드릴게요." + }, + { + "start": 35.239, + "duration": 4.441, + "text": "안녕하세요. 커넥트 AR 여러분의 A" + }, + { + "start": 37.52, + "duration": 4.44, + "text": "멘토제입니다. 자, 여러분, 제가이" + }, + { + "start": 39.68, + "duration": 4.199, + "text": "구글 아이어 온다면서 중요한 것들" + }, + { + "start": 41.96, + "duration": 4.96, + "text": "중에서 월드 모델에 대해서 알려" + }, + { + "start": 43.879, + "duration": 5.32, + "text": "드렸는데 지금 그 월드 모델이 새로운" + }, + { + "start": 46.92, + "duration": 4.479, + "text": "영상 생성에 적용이 돼서 옴니가" + }, + { + "start": 49.199, + "duration": 4.281, + "text": "나왔다는 걸 저도 이제 막 알았어요." + }, + { + "start": 51.399, + "duration": 4.441, + "text": "아직까지는이 옴니가 제대로 발표가 안" + }, + { + "start": 53.48, + "duration": 4.759, + "text": "되는데 내일이 구글 아이오가" + }, + { + "start": 55.84, + "duration": 3.879, + "text": "시작하면서 바로 발표가 될 겁니다." + }, + { + "start": 58.239, + "duration": 3.64, + "text": "그리고 제가 지금 밤에 저녁" + }, + { + "start": 59.719, + "duration": 4.84, + "text": "11시인데 이걸 빠르게 만들고" + }, + { + "start": 61.879, + "duration": 4.361, + "text": "편집까지 해서 어 예약을 걸어두고" + }, + { + "start": 64.559, + "duration": 3.841, + "text": "자려고요.이 이 구글 아이오에 있는" + }, + { + "start": 66.24, + "duration": 4.16, + "text": "동안은 잠을 자기는 틀린 거" + }, + { + "start": 68.4, + "duration": 4.44, + "text": "같습니다. 자, 그래도 여러분들이" + }, + { + "start": 70.4, + "duration": 3.88, + "text": "조금이라도 더 많이 알았으면 좋겠어서" + }, + { + "start": 72.84, + "duration": 4.76, + "text": "진짜 최선을 다해서 한번 만들어 볼" + }, + { + "start": 74.28, + "duration": 5.44, + "text": "건데이 옴니의 특징은 영상 생성뿐만" + }, + { + "start": 77.6, + "duration": 4.72, + "text": "아니라 뭔가 편집이라고 할 수가 있는" + }, + { + "start": 79.72, + "duration": 4.92, + "text": "거 같아요. 편집이란게 뭐 자르고" + }, + { + "start": 82.32, + "duration": 4.799, + "text": "붙이고 뭐 그런게 아니라이 영상" + }, + { + "start": 84.64, + "duration": 4.68, + "text": "안에서 누군가가 새로 들어오는 거죠." + }, + { + "start": 87.119, + "duration": 4.281, + "text": "제가 걸어가는 영상을 촬영했다고" + }, + { + "start": 89.32, + "duration": 4.119, + "text": "할게요. 근데 옆에 여자 배우가" + }, + { + "start": 91.4, + "duration": 4.999, + "text": "필요한 거예요. 그럼 이걸 영상을" + }, + { + "start": 93.439, + "duration": 5.121, + "text": "다시 찍고 다시 편집하는게 아니라 그" + }, + { + "start": 96.399, + "duration": 4.161, + "text": "옆에다가 그냥 여자만 넣을 수 있지" + }, + { + "start": 98.56, + "duration": 4.28, + "text": "않을까? 여성 캐릭터만 넣을 수 있지" + }, + { + "start": 100.56, + "duration": 4.36, + "text": "않을까? 그러면 거기에서 발생되는" + }, + { + "start": 102.84, + "duration": 4.4, + "text": "비용이 엄청나게 줄어들잖아요. 하나만" + }, + { + "start": 104.92, + "duration": 4.559, + "text": "템플릿으로 찍어 놓고 여러 개를 복사" + }, + { + "start": 107.24, + "duration": 4.72, + "text": "붙여 넣기 해서 다른 방식으로 사용할" + }, + { + "start": 109.479, + "duration": 4.121, + "text": "수 있다. 이게 엄청나게 영상을 좀" + }, + { + "start": 111.96, + "duration": 3.32, + "text": "효율적으로 사용할 수 있는 방법이지" + }, + { + "start": 113.6, + "duration": 3.879, + "text": "않을까 생각을 합니다. 어오브에서" + }, + { + "start": 115.28, + "duration": 4.799, + "text": "프리미어에서 편집을 하는게 아니라" + }, + { + "start": 117.479, + "duration": 5.041, + "text": "뭔가 내가 상상한 것들을 그 영상" + }, + { + "start": 120.079, + "duration": 5.201, + "text": "안에다 넣는 그리고 재생성하는" + }, + { + "start": 122.52, + "duration": 4.199, + "text": "재편집하는 그러한 인공지능 모델이라고" + }, + { + "start": 125.28, + "duration": 3.64, + "text": "생각할 수 있을 것 같습니다. 거기서" + }, + { + "start": 126.719, + "duration": 5.6, + "text": "용어가이 네이티브 멀티모델리라고" + }, + { + "start": 128.92, + "duration": 7.399, + "text": "하는데이 멀티모델이라고 하면은 여러" + }, + { + "start": 132.319, + "duration": 5.601, + "text": "보고 듣고 말하고 어 그리고 사람이" + }, + { + "start": 136.319, + "duration": 4.441, + "text": "하는 것처럼 한 번에 하는 인공지는" + }, + { + "start": 137.92, + "duration": 5.08, + "text": "모델을 멀티모델이라고 합니다. 근데이" + }, + { + "start": 140.76, + "duration": 4.16, + "text": "멀티 모달이 여러 가지 종류가 있는데" + }, + { + "start": 143.0, + "duration": 4.4, + "text": "인공지능은 여러 개를 이렇게 연결하는" + }, + { + "start": 144.92, + "duration": 4.64, + "text": "방법도 있고 또는 인공지는 모델 하나" + }, + { + "start": 147.4, + "duration": 5.36, + "text": "자체가이 모든 것을 다 하는 그런" + }, + { + "start": 149.56, + "duration": 5.44, + "text": "방법도 있는데이 옴니는 네이티브" + }, + { + "start": 152.76, + "duration": 4.88, + "text": "멀티모델 태생적인 통합 모델이라고 해" + }, + { + "start": 155.0, + "duration": 5.599, + "text": "가지고 텍스트 비디오 오디오 이미지를" + }, + { + "start": 157.64, + "duration": 4.679, + "text": "전체 다 학습한 인공지능 모델이라고" + }, + { + "start": 160.599, + "duration": 3.64, + "text": "합니다. 그리고 우리가 동영상을" + }, + { + "start": 162.319, + "duration": 4.401, + "text": "생성을 할 때 어떤 식으로 생성을" + }, + { + "start": 164.239, + "duration": 4.72, + "text": "하냐면 이미지 프레임이라고 있어요." + }, + { + "start": 166.72, + "duration": 4.599, + "text": "이렇게 주먹을 뻗는다라고 했었을 때" + }, + { + "start": 168.959, + "duration": 8.041, + "text": "이게 동영상이잖아요. 그러면이" + }, + { + "start": 171.319, + "duration": 7.761, + "text": "동영상은 이렇게 사진 사진" + }, + { + "start": 177.0, + "duration": 4.599, + "text": "이런 것들이 여러 개로 연결된" + }, + { + "start": 179.08, + "duration": 4.76, + "text": "이미지들을 하나로 뭉쳤을 때 동영상이" + }, + { + "start": 181.599, + "duration": 4.2, + "text": "되는 겁니다.이 중간중간 이미지가" + }, + { + "start": 183.84, + "duration": 3.88, + "text": "많으면 많을수록 훨씬 더 부드러운" + }, + { + "start": 185.799, + "duration": 4.401, + "text": "영상이 돼요. 근데이 기존의이" + }, + { + "start": 187.72, + "duration": 5.28, + "text": "AI는요 프레임마다 픽셀을 다시" + }, + { + "start": 190.2, + "duration": 5.0, + "text": "계산해서 생성을 했었는데이 옴리는" + }, + { + "start": 193.0, + "duration": 4.68, + "text": "맥락 자체 컨텍스트를 이해를 하고서" + }, + { + "start": 195.2, + "duration": 4.16, + "text": "생성을 하기 때문에이 전체적인 맥락이" + }, + { + "start": 197.68, + "duration": 3.839, + "text": "그렇게 무너지지 않는다라고 합니다." + }, + { + "start": 199.36, + "duration": 4.0, + "text": "뭐 우리가 직접 해 봐야겠죠. 연구랑" + }, + { + "start": 201.519, + "duration": 3.761, + "text": "실제로 다르니깐요. 그리고 제가 아까" + }, + { + "start": 203.36, + "duration": 4.36, + "text": "말씀드렸던이 월드 모델에 대해서 조금" + }, + { + "start": 205.28, + "duration": 4.84, + "text": "더 말씀드리면 원래는 지금 우리가" + }, + { + "start": 207.72, + "duration": 4.879, + "text": "알고 있는 인공지능 모델들은 어" + }, + { + "start": 210.12, + "duration": 4.839, + "text": "학습을 할 때 확률적으로 생성을" + }, + { + "start": 212.599, + "duration": 4.64, + "text": "합니다. 나는 널이란 단어가 들어가게" + }, + { + "start": 214.959, + "duration": 4.041, + "text": "되면은 사랑해가 나올 확률이 높다." + }, + { + "start": 217.239, + "duration": 4.761, + "text": "싫어해는 조금 더 그보다 적다." + }, + { + "start": 219.0, + "duration": 5.2, + "text": "그러면 우리는 확률이 높은 사랑해를" + }, + { + "start": 222.0, + "duration": 4.92, + "text": "넣어야지라는 식으로 꽤 많이 나오는" + }, + { + "start": 224.2, + "duration": 5.52, + "text": "말들이 아 랄지 랭귀지 모델 언어" + }, + { + "start": 226.92, + "duration": 6.08, + "text": "모델은 한개가 너무나도 명확하다." + }, + { + "start": 229.72, + "duration": 5.56, + "text": "어, 세상은 이미지로 구성되어 있다." + }, + { + "start": 233.0, + "duration": 4.959, + "text": "인공지능 모델은 단어뿐만 아니라" + }, + { + "start": 235.28, + "duration": 4.72, + "text": "언어뿐만 아니라 세상을 이해를 하고" + }, + { + "start": 237.959, + "duration": 3.64, + "text": "그리고 그것을 이미지로 생성을 해야" + }, + { + "start": 240.0, + "duration": 3.68, + "text": "된다는 그런 연구들이 많이 나오고" + }, + { + "start": 241.599, + "duration": 4.36, + "text": "있고이 월드 모델이란 건" + }, + { + "start": 243.68, + "duration": 4.279, + "text": "2018년도에 데이빗 타가 연구한" + }, + { + "start": 245.959, + "duration": 3.761, + "text": "인공지는 연구인데요. 인공지는 모델은" + }, + { + "start": 247.959, + "duration": 4.28, + "text": "그냥 단순히 그림이나 이미지 생성을" + }, + { + "start": 249.72, + "duration": 6.04, + "text": "하는게 아니라 그 안에다 가상 세계를" + }, + { + "start": 252.239, + "duration": 5.84, + "text": "만들고 또 꿈을 끄고 그러한 것들로" + }, + { + "start": 255.76, + "duration": 4.479, + "text": "생성을 하면서 환경을 만들고 그" + }, + { + "start": 258.079, + "duration": 4.281, + "text": "안에서 물리 법칙이나 아니면 다른" + }, + { + "start": 260.239, + "duration": 4.201, + "text": "역학 법칙들이 적용하게 되는 걸" + }, + { + "start": 262.36, + "duration": 3.64, + "text": "생성을 한다는 겁니다. 제가 이걸" + }, + { + "start": 264.44, + "duration": 5.08, + "text": "어떻게 설명할까 좀 생각을 많이" + }, + { + "start": 266.0, + "duration": 6.52, + "text": "봤었는데 어 내가 생각을 하는게" + }, + { + "start": 269.52, + "duration": 5.8, + "text": "그림으로 표현을 하는 것보다 머리로" + }, + { + "start": 272.52, + "duration": 5.28, + "text": "무언가를 상상하면 훨씬 더 디테일하게" + }, + { + "start": 275.32, + "duration": 4.319, + "text": "상상을 할 수가 있잖아요. 그니까" + }, + { + "start": 277.8, + "duration": 4.72, + "text": "예를 들어 여러분 눈 감고서 한번" + }, + { + "start": 279.639, + "duration": 5.241, + "text": "이거 상상해 보세요. 바다인데" + }, + { + "start": 282.52, + "duration": 4.679, + "text": "살랑살랑 바람이 불고 그리고 파도" + }, + { + "start": 284.88, + "duration": 5.0, + "text": "소리가 납니다. 근데 그 파도가" + }, + { + "start": 287.199, + "duration": 5.161, + "text": "파란색이 아니라 분홍색이에요. 아주" + }, + { + "start": 289.88, + "duration": 5.84, + "text": "예쁜 핑크색입니다." + }, + { + "start": 292.36, + "duration": 5.839, + "text": "구름색은 흰색이 아니고 아주 예쁜" + }, + { + "start": 295.72, + "duration": 4.199, + "text": "반짝이는 노란색이에요. 아주 향기로운" + }, + { + "start": 298.199, + "duration": 4.241, + "text": "아카시아 냄새가 납니다. 여러분 다" + }, + { + "start": 299.919, + "duration": 4.681, + "text": "상상되지 않나요? 향과 소리와 그리고" + }, + { + "start": 302.44, + "duration": 4.96, + "text": "그 느낌 그 모든 것을 한번의" + }, + { + "start": 304.6, + "duration": 5.08, + "text": "머릿속에서 생성을 했단 말이에요." + }, + { + "start": 307.4, + "duration": 5.0, + "text": "그러니까 그냥 단순히 그림을 그린" + }, + { + "start": 309.68, + "duration": 5.239, + "text": "것보다 뭔가 상상하고 꿈을 꾸는게" + }, + { + "start": 312.4, + "duration": 4.68, + "text": "훨씬 더 고차원적인 그런 생성이" + }, + { + "start": 314.919, + "duration": 4.56, + "text": "아닐까라는 생각을 해 봤어요. 그" + }, + { + "start": 317.08, + "duration": 5.0, + "text": "아이디어가 월드 모델이란 걸로이" + }, + { + "start": 319.479, + "duration": 4.0, + "text": "세상에서 불리고 있는게 아닐까라는" + }, + { + "start": 322.08, + "duration": 4.36, + "text": "그런 재밌는 생각을 해봤습니다." + }, + { + "start": 323.479, + "duration": 6.801, + "text": "결국은이 구글 옴니뿐만 아니라 점점" + }, + { + "start": 326.44, + "duration": 7.08, + "text": "점점 우리가 나아가야 할 방향이 월드" + }, + { + "start": 330.28, + "duration": 4.88, + "text": "모델로서 나아갈 거다라는 아주 강한" + }, + { + "start": 333.52, + "duration": 3.92, + "text": "확신을 가지고 있습니다. 그럼 우리가" + }, + { + "start": 335.16, + "duration": 4.08, + "text": "이걸로 뭘 할 수 있는지를 한번 몇" + }, + { + "start": 337.44, + "duration": 4.12, + "text": "가지 테스트를 해 보도록 하겠습니다." + }, + { + "start": 339.24, + "duration": 4.32, + "text": "어떤 사진을 넣고 그거를 사이버 펑크" + }, + { + "start": 341.56, + "duration": 4.24, + "text": "스타일로 바꾼 다음에 애니메이션" + }, + { + "start": 343.56, + "duration": 4.919, + "text": "캐릭터로 바꿔 볼 겁니다. 그리고요" + }, + { + "start": 345.8, + "duration": 5.04, + "text": "카메라를 위에서 내려다 보는 벌드" + }, + { + "start": 348.479, + "duration": 4.641, + "text": "아이 뷰로 변경을 하고 점 주민해" + }, + { + "start": 350.84, + "duration": 4.199, + "text": "주는 아주 멋있는 애니메이션을 만들어" + }, + { + "start": 353.12, + "duration": 3.72, + "text": "볼 수 있을까 그런 생각이 들었어요." + }, + { + "start": 355.039, + "duration": 3.521, + "text": "한번 해 볼까요? 재미나에 들어가셔서" + }, + { + "start": 356.84, + "duration": 3.88, + "text": "플러스 버튼 누른 다음에 이렇게" + }, + { + "start": 358.56, + "duration": 3.68, + "text": "동영상 만들기를 보면은 옴니 모델로" + }, + { + "start": 360.72, + "duration": 4.28, + "text": "만듭니다라는 화면이 있습니다." + }, + { + "start": 362.24, + "duration": 4.399, + "text": "여기다가이 밑에 보면은 사진을 넣는" + }, + { + "start": 365.0, + "duration": 3.28, + "text": "부분이 있거든요. 그리고 가로 새로운" + }, + { + "start": 366.639, + "duration": 4.321, + "text": "모드를 선택할 수 있는 부분이" + }, + { + "start": 368.28, + "duration": 4.12, + "text": "있습니다. 여기다가 어 제 사진을" + }, + { + "start": 370.96, + "duration": 3.959, + "text": "하나 넣어 볼게요. 제가 뭐" + }, + { + "start": 372.4, + "duration": 4.76, + "text": "촬영하면서 찍은 캡처한 사진을 하나" + }, + { + "start": 374.919, + "duration": 4.921, + "text": "넣어 보겠습니다.이 이미지의 메인" + }, + { + "start": 377.16, + "duration": 6.0, + "text": "피사체를 사이버 펑크 스타일" + }, + { + "start": 379.84, + "duration": 6.199, + "text": "애니메이션 캐릭터로 변경해서 영상" + }, + { + "start": 383.16, + "duration": 6.0, + "text": "생성해 줘. 카메라 앵글을 위에서" + }, + { + "start": 386.039, + "duration": 6.681, + "text": "아래로 내려다보는 조감도 변경하고" + }, + { + "start": 389.16, + "duration": 5.08, + "text": "캐릭터의 표정을 서서히 주문인해 줘." + }, + { + "start": 392.72, + "duration": 2.84, + "text": "제출 눌러 보겠습니다. 영상이" + }, + { + "start": 394.24, + "duration": 4.12, + "text": "나왔습니다. 궁금하네요." + }, + { + "start": 395.56, + "duration": 5.12, + "text": ">> 연결된 세상 속에서" + }, + { + "start": 398.36, + "duration": 2.92, + "text": ">> 진실은 언제나 가려져 있죠." + }, + { + "start": 400.68, + "duration": 2.959, + "text": ">> 오." + }, + { + "start": 401.28, + "duration": 4.4, + "text": ">> 하지만 이제 곧 모든 것이 드러날" + }, + { + "start": 403.639, + "duration": 4.481, + "text": "것입니다." + }, + { + "start": 405.68, + "duration": 3.959, + "text": ">> 대박이다. 우와. 하지만 이제 곧" + }, + { + "start": 408.12, + "duration": 3.639, + "text": "모든 것이 드러날 것입니다." + }, + { + "start": 409.639, + "duration": 5.241, + "text": ">> 목소리도이 캐릭터에 되게 맞고" + }, + { + "start": 411.759, + "duration": 6.12, + "text": "한국말도 잘하고 와 장난 아닌데 지금" + }, + { + "start": 414.88, + "duration": 4.96, + "text": "제가 좀 놀랐었던게 지금 소리까지" + }, + { + "start": 417.879, + "duration": 4.641, + "text": "굉장히 자연스럽구나라는 걸 제가 알게" + }, + { + "start": 419.84, + "duration": 5.039, + "text": "됐거든요.요 엄니의 특징은 물리적인" + }, + { + "start": 422.52, + "duration": 4.44, + "text": "상호 작용하고 오디오가 동기화 된다는" + }, + { + "start": 424.879, + "duration": 4.44, + "text": "거예요.이 재즈라는 음악이 굉장히" + }, + { + "start": 426.96, + "duration": 5.639, + "text": "어려운데 이것도 잘 할 수 있을까?" + }, + { + "start": 429.319, + "duration": 5.921, + "text": "드러머가 소리로 땅땅땅 치면은이 무대" + }, + { + "start": 432.599, + "duration": 4.841, + "text": "조명도 막 바뀌고 반응하고 아까 전에" + }, + { + "start": 435.24, + "duration": 4.28, + "text": "그 네이티브 멀티모델이 한 번에 작용" + }, + { + "start": 437.44, + "duration": 4.24, + "text": "하게 될지 그게 궁금한 거예요." + }, + { + "start": 439.52, + "duration": 4.6, + "text": "이번에는 이미지 없이 그냥 텍스트만" + }, + { + "start": 441.68, + "duration": 6.04, + "text": "한번 넣어 보겠습니다. 드러머가" + }, + { + "start": 444.12, + "duration": 7.04, + "text": "연주하는 제즈 클럽 영상을 만들어" + }, + { + "start": 447.72, + "duration": 7.199, + "text": "단, 드러머의 리듬에 맞춰 조명이" + }, + { + "start": 451.16, + "duration": 4.879, + "text": "정확히 반응해야 해. 샌드 자 영상" + }, + { + "start": 454.919, + "duration": 3.0, + "text": "나왔는데 한번 보이시죠. 어" + }, + { + "start": 456.039, + "duration": 3.961, + "text": "처음부터이" + }, + { + "start": 457.919, + "duration": 6.321, + "text": "뒤에 어떻게해? 와, 처음부터 장난" + }, + { + "start": 460.0, + "duration": 4.24, + "text": "아닌 거 같은데. 보자." + }, + { + "start": 464.4, + "duration": 4.44, + "text": "[음악]" + }, + { + "start": 465.84, + "duration": 3.0, + "text": "와." + }, + { + "start": 471.8, + "duration": 4.04, + "text": "우와." + }, + { + "start": 474.039, + "duration": 5.081, + "text": "여러분, 여기 봤어요? 조명 지금" + }, + { + "start": 475.84, + "duration": 3.28, + "text": "소름 끼쳤어." + }, + { + "start": 479.28, + "duration": 5.879, + "text": "어우. [음악]" + }, + { + "start": 481.479, + "duration": 6.961, + "text": "와. 여기띵" + }, + { + "start": 485.159, + "duration": 3.281, + "text": "여기 부분." + }, + { + "start": 489.36, + "duration": 4.239, + "text": "장난 아니다. 와, 10초짜리 영상" + }, + { + "start": 491.879, + "duration": 4.76, + "text": "이렇게 된다고. 두 가지를 더 실험해" + }, + { + "start": 493.599, + "duration": 5.04, + "text": "볼 건데 영상을 만들 때 한글이 잘" + }, + { + "start": 496.639, + "duration": 4.761, + "text": "안 됐었잖아요. 그러니까이 한글" + }, + { + "start": 498.639, + "duration": 5.201, + "text": "생성을 잘하기 위해서 나노바나 프로로" + }, + { + "start": 501.4, + "duration": 4.28, + "text": "이미지를 만들고 그리고 그 이미지를" + }, + { + "start": 503.84, + "duration": 3.12, + "text": "첫 번째 프레임으로 넣어서 영상을" + }, + { + "start": 505.68, + "duration": 4.72, + "text": "생성을 하는 것. 그런 식으로" + }, + { + "start": 506.96, + "duration": 6.519, + "text": "했었는데 제가 궁금한게이 영어 말고" + }, + { + "start": 510.4, + "duration": 4.439, + "text": "한글 영상 생성을 바로 잘할 수" + }, + { + "start": 513.479, + "duration": 4.68, + "text": "있을까? 이게 저는 되게" + }, + { + "start": 514.839, + "duration": 6.241, + "text": "궁금하거든요. 화면에 구글, 아이," + }, + { + "start": 518.159, + "duration": 4.641, + "text": "오 이거 되게 어렵게 한글이랑 영어랑" + }, + { + "start": 521.08, + "duration": 3.879, + "text": "그리고 이런 기호랑 같이 넣어" + }, + { + "start": 522.8, + "duration": 5.52, + "text": "봤어요. 제일 어려운 걸로라는 글자가" + }, + { + "start": 524.959, + "duration": 6.841, + "text": "들어간 열 가지의 버전에 짧은 영상을" + }, + { + "start": 528.32, + "duration": 6.44, + "text": "생성. 각각 배경과 폰트 스타일이" + }, + { + "start": 531.8, + "duration": 5.159, + "text": "달라야 해. 대사 없이 아주 빠르게" + }, + { + "start": 534.76, + "duration": 4.24, + "text": "전환. 이런 식으로 정말 어렵게 한번" + }, + { + "start": 536.959, + "duration": 4.641, + "text": "만들어 봤습니다. 나왔는데? 어. 벌" + }, + { + "start": 539.0, + "duration": 5.6, + "text": "궁금해요. 해보자." + }, + { + "start": 541.6, + "duration": 3.0, + "text": "우와." + }, + { + "start": 552.12, + "duration": 6.12, + "text": "여러분. 어, 대박이다. 진짜 장난" + }, + { + "start": 555.36, + "duration": 4.719, + "text": "아닌게 뭐냐면 여러분 일단 첫 번째" + }, + { + "start": 558.24, + "duration": 3.839, + "text": "텍스트 완벽하게 했죠? 그리고 열 개" + }, + { + "start": 560.079, + "duration": 3.841, + "text": "폰트 막 바꿨죠. 지금 이렇게 그" + }, + { + "start": 562.079, + "duration": 4.361, + "text": "음악 배경 소리가 있고 그리고 그" + }, + { + "start": 563.92, + "duration": 5.28, + "text": "배경 소리는이 영상 콘텐츠와 굉장히" + }, + { + "start": 566.44, + "duration": 4.88, + "text": "잘 있고 그렇게 배경이 있는 상태에서" + }, + { + "start": 569.2, + "duration": 4.72, + "text": "영상이 하나 바뀔 때마다 그 또 다른" + }, + { + "start": 571.32, + "duration": 4.639, + "text": "레이어로이 영상에 알맞은 음악들이" + }, + { + "start": 573.92, + "duration": 4.88, + "text": "나와요. 그러니까 여러 개의 음악들과" + }, + { + "start": 575.959, + "duration": 6.801, + "text": "소리트까지 여러 개의 레이어로 하나의" + }, + { + "start": 578.8, + "duration": 3.96, + "text": "영상이 생성이 되는 거예요." + }, + { + "start": 590.816, + "duration": 2.02, + "text": "[콧방귀]" + }, + { + "start": 593.44, + "duration": 4.8, + "text": "바로 영상을 한번 촬영해 보겠습니다." + }, + { + "start": 595.76, + "duration": 6.24, + "text": "그리고 거기에다가이 옴니를 사용해서" + }, + { + "start": 598.24, + "duration": 3.76, + "text": "편집을 한번 해 볼게요." + }, + { + "start": 602.079, + "duration": 4.0, + "text": "누구를 기다리고 있는데 안 오는" + }, + { + "start": 603.8, + "duration": 4.599, + "text": "거예요. 누군가가 이렇게 달려와서" + }, + { + "start": 606.079, + "duration": 3.961, + "text": "미안해 하면서 달려오면은 되게 재밌지" + }, + { + "start": 608.399, + "duration": 3.361, + "text": "않을까라는 생각이 들어 가지고 고게" + }, + { + "start": 610.04, + "duration": 3.12, + "text": "가능한지 한번 보겠습니다. 식초" + }, + { + "start": 611.76, + "duration": 4.16, + "text": "이렇게 구간을 해서 자르라고" + }, + { + "start": 613.16, + "duration": 4.6, + "text": "합니다.을 누른 다음에이 영상 왼쪽" + }, + { + "start": 615.92, + "duration": 3.68, + "text": "화면 밖에서 헐레벌떡 늦어서" + }, + { + "start": 617.76, + "duration": 3.759, + "text": "미안하다는 표정으로 귀엽게 뛰어오는" + }, + { + "start": 619.6, + "duration": 4.04, + "text": "여자를 추가해 줘. 그리고 원래 있던" + }, + { + "start": 621.519, + "duration": 3.961, + "text": "남자가 그 여자를 보고서 자연스럽게" + }, + { + "start": 623.64, + "duration": 3.48, + "text": "웃으며 반응하는 상호 작용까지" + }, + { + "start": 625.48, + "duration": 3.2, + "text": "만들어. 그리고 추가로 제가 하나 더" + }, + { + "start": 627.12, + "duration": 4.279, + "text": "테스트를 해 볼게요. 이런 기존에" + }, + { + "start": 628.68, + "duration": 5.08, + "text": "있는 실제와 같은 영상과이 헐레벌터" + }, + { + "start": 631.399, + "duration": 4.521, + "text": "기원 표정으로 띄워는 만화 캐릭터" + }, + { + "start": 633.76, + "duration": 4.04, + "text": "강아지를 어 한번에 같이 섞었을 때" + }, + { + "start": 635.92, + "duration": 3.8, + "text": "어떻게 하면은 좋을까 그게 궁금해서" + }, + { + "start": 637.8, + "duration": 3.88, + "text": "한번 해 보도록 하겠습니다. 썸 여러" + }, + { + "start": 639.72, + "duration": 4.119, + "text": "가지를 연구를 해 봐야죠. 맨 처음" + }, + { + "start": 641.68, + "duration": 5.32, + "text": "이거 나왔습니다. 여자가 여기서" + }, + { + "start": 643.839, + "duration": 7.24, + "text": "달려올 수 있을지 한번 볼게요. 자" + }, + { + "start": 647.0, + "duration": 7.079, + "text": "기다리고 있어요. 남자 배우가" + }, + { + "start": 651.079, + "duration": 3.0, + "text": "어" + }, + { + "start": 654.959, + "duration": 2.401, + "text": "뭐야?" + }, + { + "start": 658.937, + "duration": 2.943, + "text": ">> [웃음]" + }, + { + "start": 659.839, + "duration": 3.961, + "text": ">> 깜짝이야. 와, 대박인데. 이거" + }, + { + "start": 661.88, + "duration": 4.32, + "text": "뭐지? 내가 이걸 찍었나라는 생각 들" + }, + { + "start": 663.8, + "duration": 4.599, + "text": "정도로 진짜 이거 영화를 만들어도 될" + }, + { + "start": 666.2, + "duration": 3.72, + "text": "거 같아요. 이걸로 뭔가 컨텐츠를" + }, + { + "start": 668.399, + "duration": 3.68, + "text": "만들어도 될 거 같고 영화를 만들어도" + }, + { + "start": 669.92, + "duration": 5.0, + "text": "될 거 같고 할게 너무 무구진 많은" + }, + { + "start": 672.079, + "duration": 5.161, + "text": "무궁무진한데 진짜 시작해 볼까?" + }, + { + "start": 674.92, + "duration": 3.68, + "text": "어떡해? 장난 아니다 진짜. 와," + }, + { + "start": 677.24, + "duration": 4.36, + "text": "이거 두 번째 됐습니다. 이게" + }, + { + "start": 678.6, + "duration": 3.0, + "text": "궁금하네요." + }, + { + "start": 681.862, + "duration": 2.417, + "text": "[웃음]" + }, + { + "start": 682.519, + "duration": 4.161, + "text": "이건 제가 프롬포트를 잘 못 쓴 거" + }, + { + "start": 684.279, + "duration": 3.761, + "text": "같아요. 근데 진짜 잘하긴 하네." + }, + { + "start": 686.68, + "duration": 4.24, + "text": "스누피처럼 이렇게 만들어도 될 거" + }, + { + "start": 688.04, + "duration": 5.4, + "text": "같고. 여러분, 어때요? 구글이" + }, + { + "start": 690.92, + "duration": 4.84, + "text": "옴니라는 걸 만들었고이 옴니는 세상의" + }, + { + "start": 693.44, + "duration": 4.04, + "text": "물리법칙을 이해하고 그것을 기반으로" + }, + { + "start": 695.76, + "duration": 3.72, + "text": "영상 생성을 합니다. 월드 모델의" + }, + { + "start": 697.48, + "duration": 3.64, + "text": "컨셉을 하나하나씩 이렇게 구현해" + }, + { + "start": 699.48, + "duration": 4.64, + "text": "나가는 과정인 거 같아요. 무언가" + }, + { + "start": 701.12, + "duration": 4.519, + "text": "사람이 상상하고 꿈꾸는 것을 그 바로" + }, + { + "start": 704.12, + "duration": 3.12, + "text": "생성할 수 있는 그런 모델이" + }, + { + "start": 705.639, + "duration": 3.041, + "text": "아닌가라는 생각을 합니다. 해 볼 수" + }, + { + "start": 707.24, + "duration": 4.12, + "text": "있는 거 정말 많을 것 같고" + }, + { + "start": 708.68, + "duration": 5.48, + "text": "여러분들이 이거 영상 콘텐츠로 활용을" + }, + { + "start": 711.36, + "duration": 4.96, + "text": "하시면서 제가 항상 말하는 그 상상을" + }, + { + "start": 714.16, + "duration": 3.479, + "text": "현실로 만드는 과정을 한번 해 보시면" + }, + { + "start": 716.32, + "duration": 3.12, + "text": "좋을 것 같습니다. 퀄리티가 훨씬" + }, + { + "start": 717.639, + "duration": 3.721, + "text": "높아졌으니까 유튜브 채널 운영해야" + }, + { + "start": 719.44, + "duration": 4.72, + "text": "되고 뭐 인스타그램이나 아니면 다른" + }, + { + "start": 721.36, + "duration": 5.039, + "text": "플랫폼들 운영해도 괜찮고 여러 가지" + }, + { + "start": 724.16, + "duration": 4.08, + "text": "여러분들이 상상하는 걸 한번 시도해" + }, + { + "start": 726.399, + "duration": 4.161, + "text": "보시길 바랍니다. 아직 구글 아이오" + }, + { + "start": 728.24, + "duration": 4.719, + "text": "시작도 안 했습니다. 내일 모래" + }, + { + "start": 730.56, + "duration": 4.68, + "text": "앞으로 정말 많은 재밌는 일도 있을" + }, + { + "start": 732.959, + "duration": 4.481, + "text": "건데 저 AI 멘토제와 함께 구글" + }, + { + "start": 735.24, + "duration": 5.32, + "text": "AI 여행 같이 한번 해 보시면서" + }, + { + "start": 737.44, + "duration": 5.079, + "text": "우리가이 시대에 생존하는 방법을 같이" + }, + { + "start": 740.56, + "duration": 4.0, + "text": "한번 연구하고 찾아보겠습니다." + }, + { + "start": 742.519, + "duration": 4.641, + "text": "어려운게 있으면이 댓글 달아 주시고" + }, + { + "start": 744.56, + "duration": 4.959, + "text": "그리고 힘들더라도 제가 여러분들 옆에" + }, + { + "start": 747.16, + "duration": 7.119, + "text": "있으니까 용기 잃지 마시고 희망을" + }, + { + "start": 749.519, + "duration": 7.241, + "text": "갖고 우리 한번 재밌게 멋있게 한번이" + }, + { + "start": 754.279, + "duration": 5.481, + "text": "AI 시대 살아봅시다. 자 힘냅시다." + }, + { + "start": 756.76, + "duration": 3.0, + "text": "파이팅입니다." + } + ], + "transcript_plain": "구글이 옴니를 발표하면서 또다시 영상\n생성에서 패러다임을 바꿨습니다.\n이제는 텍스트나 이미지뿐만 아니라\n영상을 넣고서 또 다른 영상을 만들\n수가 있어요. 그러니까이 편집을 할\n수가 있게 된 거죠. 그것뿐만\n아니라이 세상에 있는 물리 법칙을\n이해하면서 훨씬 더 진짜 같이 영상을\n만들 수 있게 되었어요. 저는 지금\n미국 샌프란시스코 입구글 아이오에\n참여하고 있습니다. 그래서 전\n세계에서이 구글 옴니를 가장 빨리\n알려 주는 사람일 거예요. 오늘이\n영상에서 구글 옴니의 이론뿐만 아니라\n실습까지 아주 쉽고 자세하게 알려\n드릴게요.\n안녕하세요. 커넥트 AR 여러분의 A\n멘토제입니다. 자, 여러분, 제가이\n구글 아이어 온다면서 중요한 것들\n중에서 월드 모델에 대해서 알려\n드렸는데 지금 그 월드 모델이 새로운\n영상 생성에 적용이 돼서 옴니가\n나왔다는 걸 저도 이제 막 알았어요.\n아직까지는이 옴니가 제대로 발표가 안\n되는데 내일이 구글 아이오가\n시작하면서 바로 발표가 될 겁니다.\n그리고 제가 지금 밤에 저녁\n11시인데 이걸 빠르게 만들고\n편집까지 해서 어 예약을 걸어두고\n자려고요.이 이 구글 아이오에 있는\n동안은 잠을 자기는 틀린 거\n같습니다. 자, 그래도 여러분들이\n조금이라도 더 많이 알았으면 좋겠어서\n진짜 최선을 다해서 한번 만들어 볼\n건데이 옴니의 특징은 영상 생성뿐만\n아니라 뭔가 편집이라고 할 수가 있는\n거 같아요. 편집이란게 뭐 자르고\n붙이고 뭐 그런게 아니라이 영상\n안에서 누군가가 새로 들어오는 거죠.\n제가 걸어가는 영상을 촬영했다고\n할게요. 근데 옆에 여자 배우가\n필요한 거예요. 그럼 이걸 영상을\n다시 찍고 다시 편집하는게 아니라 그\n옆에다가 그냥 여자만 넣을 수 있지\n않을까? 여성 캐릭터만 넣을 수 있지\n않을까? 그러면 거기에서 발생되는\n비용이 엄청나게 줄어들잖아요. 하나만\n템플릿으로 찍어 놓고 여러 개를 복사\n붙여 넣기 해서 다른 방식으로 사용할\n수 있다. 이게 엄청나게 영상을 좀\n효율적으로 사용할 수 있는 방법이지\n않을까 생각을 합니다. 어오브에서\n프리미어에서 편집을 하는게 아니라\n뭔가 내가 상상한 것들을 그 영상\n안에다 넣는 그리고 재생성하는\n재편집하는 그러한 인공지능 모델이라고\n생각할 수 있을 것 같습니다. 거기서\n용어가이 네이티브 멀티모델리라고\n하는데이 멀티모델이라고 하면은 여러\n보고 듣고 말하고 어 그리고 사람이\n하는 것처럼 한 번에 하는 인공지는\n모델을 멀티모델이라고 합니다. 근데이\n멀티 모달이 여러 가지 종류가 있는데\n인공지능은 여러 개를 이렇게 연결하는\n방법도 있고 또는 인공지는 모델 하나\n자체가이 모든 것을 다 하는 그런\n방법도 있는데이 옴니는 네이티브\n멀티모델 태생적인 통합 모델이라고 해\n가지고 텍스트 비디오 오디오 이미지를\n전체 다 학습한 인공지능 모델이라고\n합니다. 그리고 우리가 동영상을\n생성을 할 때 어떤 식으로 생성을\n하냐면 이미지 프레임이라고 있어요.\n이렇게 주먹을 뻗는다라고 했었을 때\n이게 동영상이잖아요. 그러면이\n동영상은 이렇게 사진 사진\n이런 것들이 여러 개로 연결된\n이미지들을 하나로 뭉쳤을 때 동영상이\n되는 겁니다.이 중간중간 이미지가\n많으면 많을수록 훨씬 더 부드러운\n영상이 돼요. 근데이 기존의이\nAI는요 프레임마다 픽셀을 다시\n계산해서 생성을 했었는데이 옴리는\n맥락 자체 컨텍스트를 이해를 하고서\n생성을 하기 때문에이 전체적인 맥락이\n그렇게 무너지지 않는다라고 합니다.\n뭐 우리가 직접 해 봐야겠죠. 연구랑\n실제로 다르니깐요. 그리고 제가 아까\n말씀드렸던이 월드 모델에 대해서 조금\n더 말씀드리면 원래는 지금 우리가\n알고 있는 인공지능 모델들은 어\n학습을 할 때 확률적으로 생성을\n합니다. 나는 널이란 단어가 들어가게\n되면은 사랑해가 나올 확률이 높다.\n싫어해는 조금 더 그보다 적다.\n그러면 우리는 확률이 높은 사랑해를\n넣어야지라는 식으로 꽤 많이 나오는\n말들이 아 랄지 랭귀지 모델 언어\n모델은 한개가 너무나도 명확하다.\n어, 세상은 이미지로 구성되어 있다.\n인공지능 모델은 단어뿐만 아니라\n언어뿐만 아니라 세상을 이해를 하고\n그리고 그것을 이미지로 생성을 해야\n된다는 그런 연구들이 많이 나오고\n있고이 월드 모델이란 건\n2018년도에 데이빗 타가 연구한\n인공지는 연구인데요. 인공지는 모델은\n그냥 단순히 그림이나 이미지 생성을\n하는게 아니라 그 안에다 가상 세계를\n만들고 또 꿈을 끄고 그러한 것들로\n생성을 하면서 환경을 만들고 그\n안에서 물리 법칙이나 아니면 다른\n역학 법칙들이 적용하게 되는 걸\n생성을 한다는 겁니다. 제가 이걸\n어떻게 설명할까 좀 생각을 많이\n봤었는데 어 내가 생각을 하는게\n그림으로 표현을 하는 것보다 머리로\n무언가를 상상하면 훨씬 더 디테일하게\n상상을 할 수가 있잖아요. 그니까\n예를 들어 여러분 눈 감고서 한번\n이거 상상해 보세요. 바다인데\n살랑살랑 바람이 불고 그리고 파도\n소리가 납니다. 근데 그 파도가\n파란색이 아니라 분홍색이에요. 아주\n예쁜 핑크색입니다.\n구름색은 흰색이 아니고 아주 예쁜\n반짝이는 노란색이에요. 아주 향기로운\n아카시아 냄새가 납니다. 여러분 다\n상상되지 않나요? 향과 소리와 그리고\n그 느낌 그 모든 것을 한번의\n머릿속에서 생성을 했단 말이에요.\n그러니까 그냥 단순히 그림을 그린\n것보다 뭔가 상상하고 꿈을 꾸는게\n훨씬 더 고차원적인 그런 생성이\n아닐까라는 생각을 해 봤어요. 그\n아이디어가 월드 모델이란 걸로이\n세상에서 불리고 있는게 아닐까라는\n그런 재밌는 생각을 해봤습니다.\n결국은이 구글 옴니뿐만 아니라 점점\n점점 우리가 나아가야 할 방향이 월드\n모델로서 나아갈 거다라는 아주 강한\n확신을 가지고 있습니다. 그럼 우리가\n이걸로 뭘 할 수 있는지를 한번 몇\n가지 테스트를 해 보도록 하겠습니다.\n어떤 사진을 넣고 그거를 사이버 펑크\n스타일로 바꾼 다음에 애니메이션\n캐릭터로 바꿔 볼 겁니다. 그리고요\n카메라를 위에서 내려다 보는 벌드\n아이 뷰로 변경을 하고 점 주민해\n주는 아주 멋있는 애니메이션을 만들어\n볼 수 있을까 그런 생각이 들었어요.\n한번 해 볼까요? 재미나에 들어가셔서\n플러스 버튼 누른 다음에 이렇게\n동영상 만들기를 보면은 옴니 모델로\n만듭니다라는 화면이 있습니다.\n여기다가이 밑에 보면은 사진을 넣는\n부분이 있거든요. 그리고 가로 새로운\n모드를 선택할 수 있는 부분이\n있습니다. 여기다가 어 제 사진을\n하나 넣어 볼게요. 제가 뭐\n촬영하면서 찍은 캡처한 사진을 하나\n넣어 보겠습니다.이 이미지의 메인\n피사체를 사이버 펑크 스타일\n애니메이션 캐릭터로 변경해서 영상\n생성해 줘. 카메라 앵글을 위에서\n아래로 내려다보는 조감도 변경하고\n캐릭터의 표정을 서서히 주문인해 줘.\n제출 눌러 보겠습니다. 영상이\n나왔습니다. 궁금하네요.\n>> 연결된 세상 속에서\n>> 진실은 언제나 가려져 있죠.\n>> 오.\n>> 하지만 이제 곧 모든 것이 드러날\n것입니다.\n>> 대박이다. 우와. 하지만 이제 곧\n모든 것이 드러날 것입니다.\n>> 목소리도이 캐릭터에 되게 맞고\n한국말도 잘하고 와 장난 아닌데 지금\n제가 좀 놀랐었던게 지금 소리까지\n굉장히 자연스럽구나라는 걸 제가 알게\n됐거든요.요 엄니의 특징은 물리적인\n상호 작용하고 오디오가 동기화 된다는\n거예요.이 재즈라는 음악이 굉장히\n어려운데 이것도 잘 할 수 있을까?\n드러머가 소리로 땅땅땅 치면은이 무대\n조명도 막 바뀌고 반응하고 아까 전에\n그 네이티브 멀티모델이 한 번에 작용\n하게 될지 그게 궁금한 거예요.\n이번에는 이미지 없이 그냥 텍스트만\n한번 넣어 보겠습니다. 드러머가\n연주하는 제즈 클럽 영상을 만들어\n단, 드러머의 리듬에 맞춰 조명이\n정확히 반응해야 해. 샌드 자 영상\n나왔는데 한번 보이시죠. 어\n처음부터이\n뒤에 어떻게해? 와, 처음부터 장난\n아닌 거 같은데. 보자.\n[음악]\n와.\n우와.\n여러분, 여기 봤어요? 조명 지금\n소름 끼쳤어.\n어우. [음악]\n와. 여기띵\n여기 부분.\n장난 아니다. 와, 10초짜리 영상\n이렇게 된다고. 두 가지를 더 실험해\n볼 건데 영상을 만들 때 한글이 잘\n안 됐었잖아요. 그러니까이 한글\n생성을 잘하기 위해서 나노바나 프로로\n이미지를 만들고 그리고 그 이미지를\n첫 번째 프레임으로 넣어서 영상을\n생성을 하는 것. 그런 식으로\n했었는데 제가 궁금한게이 영어 말고\n한글 영상 생성을 바로 잘할 수\n있을까? 이게 저는 되게\n궁금하거든요. 화면에 구글, 아이,\n오 이거 되게 어렵게 한글이랑 영어랑\n그리고 이런 기호랑 같이 넣어\n봤어요. 제일 어려운 걸로라는 글자가\n들어간 열 가지의 버전에 짧은 영상을\n생성. 각각 배경과 폰트 스타일이\n달라야 해. 대사 없이 아주 빠르게\n전환. 이런 식으로 정말 어렵게 한번\n만들어 봤습니다. 나왔는데? 어. 벌\n궁금해요. 해보자.\n우와.\n여러분. 어, 대박이다. 진짜 장난\n아닌게 뭐냐면 여러분 일단 첫 번째\n텍스트 완벽하게 했죠? 그리고 열 개\n폰트 막 바꿨죠. 지금 이렇게 그\n음악 배경 소리가 있고 그리고 그\n배경 소리는이 영상 콘텐츠와 굉장히\n잘 있고 그렇게 배경이 있는 상태에서\n영상이 하나 바뀔 때마다 그 또 다른\n레이어로이 영상에 알맞은 음악들이\n나와요. 그러니까 여러 개의 음악들과\n소리트까지 여러 개의 레이어로 하나의\n영상이 생성이 되는 거예요.\n[콧방귀]\n바로 영상을 한번 촬영해 보겠습니다.\n그리고 거기에다가이 옴니를 사용해서\n편집을 한번 해 볼게요.\n누구를 기다리고 있는데 안 오는\n거예요. 누군가가 이렇게 달려와서\n미안해 하면서 달려오면은 되게 재밌지\n않을까라는 생각이 들어 가지고 고게\n가능한지 한번 보겠습니다. 식초\n이렇게 구간을 해서 자르라고\n합니다.을 누른 다음에이 영상 왼쪽\n화면 밖에서 헐레벌떡 늦어서\n미안하다는 표정으로 귀엽게 뛰어오는\n여자를 추가해 줘. 그리고 원래 있던\n남자가 그 여자를 보고서 자연스럽게\n웃으며 반응하는 상호 작용까지\n만들어. 그리고 추가로 제가 하나 더\n테스트를 해 볼게요. 이런 기존에\n있는 실제와 같은 영상과이 헐레벌터\n기원 표정으로 띄워는 만화 캐릭터\n강아지를 어 한번에 같이 섞었을 때\n어떻게 하면은 좋을까 그게 궁금해서\n한번 해 보도록 하겠습니다. 썸 여러\n가지를 연구를 해 봐야죠. 맨 처음\n이거 나왔습니다. 여자가 여기서\n달려올 수 있을지 한번 볼게요. 자\n기다리고 있어요. 남자 배우가\n어\n뭐야?\n>> [웃음]\n>> 깜짝이야. 와, 대박인데. 이거\n뭐지? 내가 이걸 찍었나라는 생각 들\n정도로 진짜 이거 영화를 만들어도 될\n거 같아요. 이걸로 뭔가 컨텐츠를\n만들어도 될 거 같고 영화를 만들어도\n될 거 같고 할게 너무 무구진 많은\n무궁무진한데 진짜 시작해 볼까?\n어떡해? 장난 아니다 진짜. 와,\n이거 두 번째 됐습니다. 이게\n궁금하네요.\n[웃음]\n이건 제가 프롬포트를 잘 못 쓴 거\n같아요. 근데 진짜 잘하긴 하네.\n스누피처럼 이렇게 만들어도 될 거\n같고. 여러분, 어때요? 구글이\n옴니라는 걸 만들었고이 옴니는 세상의\n물리법칙을 이해하고 그것을 기반으로\n영상 생성을 합니다. 월드 모델의\n컨셉을 하나하나씩 이렇게 구현해\n나가는 과정인 거 같아요. 무언가\n사람이 상상하고 꿈꾸는 것을 그 바로\n생성할 수 있는 그런 모델이\n아닌가라는 생각을 합니다. 해 볼 수\n있는 거 정말 많을 것 같고\n여러분들이 이거 영상 콘텐츠로 활용을\n하시면서 제가 항상 말하는 그 상상을\n현실로 만드는 과정을 한번 해 보시면\n좋을 것 같습니다. 퀄리티가 훨씬\n높아졌으니까 유튜브 채널 운영해야\n되고 뭐 인스타그램이나 아니면 다른\n플랫폼들 운영해도 괜찮고 여러 가지\n여러분들이 상상하는 걸 한번 시도해\n보시길 바랍니다. 아직 구글 아이오\n시작도 안 했습니다. 내일 모래\n앞으로 정말 많은 재밌는 일도 있을\n건데 저 AI 멘토제와 함께 구글\nAI 여행 같이 한번 해 보시면서\n우리가이 시대에 생존하는 방법을 같이\n한번 연구하고 찾아보겠습니다.\n어려운게 있으면이 댓글 달아 주시고\n그리고 힘들더라도 제가 여러분들 옆에\n있으니까 용기 잃지 마시고 희망을\n갖고 우리 한번 재밌게 멋있게 한번이\nAI 시대 살아봅시다. 자 힘냅시다.\n파이팅입니다." +} \ No newline at end of file diff --git a/00_Raw/_youtube/상상을 현실로 만드는 AI 구글 OMNI 완벽 가이드 l EP.3 구글 IO 실리콘밸리[AI왕기초]__tsFVedfl3Mg.txt b/00_Raw/_youtube/상상을 현실로 만드는 AI 구글 OMNI 완벽 가이드 l EP.3 구글 IO 실리콘밸리[AI왕기초]__tsFVedfl3Mg.txt new file mode 100644 index 00000000..7c6567d3 --- /dev/null +++ b/00_Raw/_youtube/상상을 현실로 만드는 AI 구글 OMNI 완벽 가이드 l EP.3 구글 IO 실리콘밸리[AI왕기초]__tsFVedfl3Mg.txt @@ -0,0 +1,321 @@ +제목: 상상을 현실로 만드는 AI 구글 OMNI 완벽 가이드 l EP.3 구글 I/O 실리콘밸리[AI왕기초] +영상: https://www.youtube.com/watch?v=tsFVedfl3Mg +비디오 ID: tsFVedfl3Mg +언어 우선순위: ko, en +세그먼트: 314개 +------------------------------------------------------------ + +구글이 옴니를 발표하면서 또다시 영상 +생성에서 패러다임을 바꿨습니다. +이제는 텍스트나 이미지뿐만 아니라 +영상을 넣고서 또 다른 영상을 만들 +수가 있어요. 그러니까이 편집을 할 +수가 있게 된 거죠. 그것뿐만 +아니라이 세상에 있는 물리 법칙을 +이해하면서 훨씬 더 진짜 같이 영상을 +만들 수 있게 되었어요. 저는 지금 +미국 샌프란시스코 입구글 아이오에 +참여하고 있습니다. 그래서 전 +세계에서이 구글 옴니를 가장 빨리 +알려 주는 사람일 거예요. 오늘이 +영상에서 구글 옴니의 이론뿐만 아니라 +실습까지 아주 쉽고 자세하게 알려 +드릴게요. +안녕하세요. 커넥트 AR 여러분의 A +멘토제입니다. 자, 여러분, 제가이 +구글 아이어 온다면서 중요한 것들 +중에서 월드 모델에 대해서 알려 +드렸는데 지금 그 월드 모델이 새로운 +영상 생성에 적용이 돼서 옴니가 +나왔다는 걸 저도 이제 막 알았어요. +아직까지는이 옴니가 제대로 발표가 안 +되는데 내일이 구글 아이오가 +시작하면서 바로 발표가 될 겁니다. +그리고 제가 지금 밤에 저녁 +11시인데 이걸 빠르게 만들고 +편집까지 해서 어 예약을 걸어두고 +자려고요.이 이 구글 아이오에 있는 +동안은 잠을 자기는 틀린 거 +같습니다. 자, 그래도 여러분들이 +조금이라도 더 많이 알았으면 좋겠어서 +진짜 최선을 다해서 한번 만들어 볼 +건데이 옴니의 특징은 영상 생성뿐만 +아니라 뭔가 편집이라고 할 수가 있는 +거 같아요. 편집이란게 뭐 자르고 +붙이고 뭐 그런게 아니라이 영상 +안에서 누군가가 새로 들어오는 거죠. +제가 걸어가는 영상을 촬영했다고 +할게요. 근데 옆에 여자 배우가 +필요한 거예요. 그럼 이걸 영상을 +다시 찍고 다시 편집하는게 아니라 그 +옆에다가 그냥 여자만 넣을 수 있지 +않을까? 여성 캐릭터만 넣을 수 있지 +않을까? 그러면 거기에서 발생되는 +비용이 엄청나게 줄어들잖아요. 하나만 +템플릿으로 찍어 놓고 여러 개를 복사 +붙여 넣기 해서 다른 방식으로 사용할 +수 있다. 이게 엄청나게 영상을 좀 +효율적으로 사용할 수 있는 방법이지 +않을까 생각을 합니다. 어오브에서 +프리미어에서 편집을 하는게 아니라 +뭔가 내가 상상한 것들을 그 영상 +안에다 넣는 그리고 재생성하는 +재편집하는 그러한 인공지능 모델이라고 +생각할 수 있을 것 같습니다. 거기서 +용어가이 네이티브 멀티모델리라고 +하는데이 멀티모델이라고 하면은 여러 +보고 듣고 말하고 어 그리고 사람이 +하는 것처럼 한 번에 하는 인공지는 +모델을 멀티모델이라고 합니다. 근데이 +멀티 모달이 여러 가지 종류가 있는데 +인공지능은 여러 개를 이렇게 연결하는 +방법도 있고 또는 인공지는 모델 하나 +자체가이 모든 것을 다 하는 그런 +방법도 있는데이 옴니는 네이티브 +멀티모델 태생적인 통합 모델이라고 해 +가지고 텍스트 비디오 오디오 이미지를 +전체 다 학습한 인공지능 모델이라고 +합니다. 그리고 우리가 동영상을 +생성을 할 때 어떤 식으로 생성을 +하냐면 이미지 프레임이라고 있어요. +이렇게 주먹을 뻗는다라고 했었을 때 +이게 동영상이잖아요. 그러면이 +동영상은 이렇게 사진 사진 +이런 것들이 여러 개로 연결된 +이미지들을 하나로 뭉쳤을 때 동영상이 +되는 겁니다.이 중간중간 이미지가 +많으면 많을수록 훨씬 더 부드러운 +영상이 돼요. 근데이 기존의이 +AI는요 프레임마다 픽셀을 다시 +계산해서 생성을 했었는데이 옴리는 +맥락 자체 컨텍스트를 이해를 하고서 +생성을 하기 때문에이 전체적인 맥락이 +그렇게 무너지지 않는다라고 합니다. +뭐 우리가 직접 해 봐야겠죠. 연구랑 +실제로 다르니깐요. 그리고 제가 아까 +말씀드렸던이 월드 모델에 대해서 조금 +더 말씀드리면 원래는 지금 우리가 +알고 있는 인공지능 모델들은 어 +학습을 할 때 확률적으로 생성을 +합니다. 나는 널이란 단어가 들어가게 +되면은 사랑해가 나올 확률이 높다. +싫어해는 조금 더 그보다 적다. +그러면 우리는 확률이 높은 사랑해를 +넣어야지라는 식으로 꽤 많이 나오는 +말들이 아 랄지 랭귀지 모델 언어 +모델은 한개가 너무나도 명확하다. +어, 세상은 이미지로 구성되어 있다. +인공지능 모델은 단어뿐만 아니라 +언어뿐만 아니라 세상을 이해를 하고 +그리고 그것을 이미지로 생성을 해야 +된다는 그런 연구들이 많이 나오고 +있고이 월드 모델이란 건 +2018년도에 데이빗 타가 연구한 +인공지는 연구인데요. 인공지는 모델은 +그냥 단순히 그림이나 이미지 생성을 +하는게 아니라 그 안에다 가상 세계를 +만들고 또 꿈을 끄고 그러한 것들로 +생성을 하면서 환경을 만들고 그 +안에서 물리 법칙이나 아니면 다른 +역학 법칙들이 적용하게 되는 걸 +생성을 한다는 겁니다. 제가 이걸 +어떻게 설명할까 좀 생각을 많이 +봤었는데 어 내가 생각을 하는게 +그림으로 표현을 하는 것보다 머리로 +무언가를 상상하면 훨씬 더 디테일하게 +상상을 할 수가 있잖아요. 그니까 +예를 들어 여러분 눈 감고서 한번 +이거 상상해 보세요. 바다인데 +살랑살랑 바람이 불고 그리고 파도 +소리가 납니다. 근데 그 파도가 +파란색이 아니라 분홍색이에요. 아주 +예쁜 핑크색입니다. +구름색은 흰색이 아니고 아주 예쁜 +반짝이는 노란색이에요. 아주 향기로운 +아카시아 냄새가 납니다. 여러분 다 +상상되지 않나요? 향과 소리와 그리고 +그 느낌 그 모든 것을 한번의 +머릿속에서 생성을 했단 말이에요. +그러니까 그냥 단순히 그림을 그린 +것보다 뭔가 상상하고 꿈을 꾸는게 +훨씬 더 고차원적인 그런 생성이 +아닐까라는 생각을 해 봤어요. 그 +아이디어가 월드 모델이란 걸로이 +세상에서 불리고 있는게 아닐까라는 +그런 재밌는 생각을 해봤습니다. +결국은이 구글 옴니뿐만 아니라 점점 +점점 우리가 나아가야 할 방향이 월드 +모델로서 나아갈 거다라는 아주 강한 +확신을 가지고 있습니다. 그럼 우리가 +이걸로 뭘 할 수 있는지를 한번 몇 +가지 테스트를 해 보도록 하겠습니다. +어떤 사진을 넣고 그거를 사이버 펑크 +스타일로 바꾼 다음에 애니메이션 +캐릭터로 바꿔 볼 겁니다. 그리고요 +카메라를 위에서 내려다 보는 벌드 +아이 뷰로 변경을 하고 점 주민해 +주는 아주 멋있는 애니메이션을 만들어 +볼 수 있을까 그런 생각이 들었어요. +한번 해 볼까요? 재미나에 들어가셔서 +플러스 버튼 누른 다음에 이렇게 +동영상 만들기를 보면은 옴니 모델로 +만듭니다라는 화면이 있습니다. +여기다가이 밑에 보면은 사진을 넣는 +부분이 있거든요. 그리고 가로 새로운 +모드를 선택할 수 있는 부분이 +있습니다. 여기다가 어 제 사진을 +하나 넣어 볼게요. 제가 뭐 +촬영하면서 찍은 캡처한 사진을 하나 +넣어 보겠습니다.이 이미지의 메인 +피사체를 사이버 펑크 스타일 +애니메이션 캐릭터로 변경해서 영상 +생성해 줘. 카메라 앵글을 위에서 +아래로 내려다보는 조감도 변경하고 +캐릭터의 표정을 서서히 주문인해 줘. +제출 눌러 보겠습니다. 영상이 +나왔습니다. 궁금하네요. +>> 연결된 세상 속에서 +>> 진실은 언제나 가려져 있죠. +>> 오. +>> 하지만 이제 곧 모든 것이 드러날 +것입니다. +>> 대박이다. 우와. 하지만 이제 곧 +모든 것이 드러날 것입니다. +>> 목소리도이 캐릭터에 되게 맞고 +한국말도 잘하고 와 장난 아닌데 지금 +제가 좀 놀랐었던게 지금 소리까지 +굉장히 자연스럽구나라는 걸 제가 알게 +됐거든요.요 엄니의 특징은 물리적인 +상호 작용하고 오디오가 동기화 된다는 +거예요.이 재즈라는 음악이 굉장히 +어려운데 이것도 잘 할 수 있을까? +드러머가 소리로 땅땅땅 치면은이 무대 +조명도 막 바뀌고 반응하고 아까 전에 +그 네이티브 멀티모델이 한 번에 작용 +하게 될지 그게 궁금한 거예요. +이번에는 이미지 없이 그냥 텍스트만 +한번 넣어 보겠습니다. 드러머가 +연주하는 제즈 클럽 영상을 만들어 +단, 드러머의 리듬에 맞춰 조명이 +정확히 반응해야 해. 샌드 자 영상 +나왔는데 한번 보이시죠. 어 +처음부터이 +뒤에 어떻게해? 와, 처음부터 장난 +아닌 거 같은데. 보자. +[음악] +와. +우와. +여러분, 여기 봤어요? 조명 지금 +소름 끼쳤어. +어우. [음악] +와. 여기띵 +여기 부분. +장난 아니다. 와, 10초짜리 영상 +이렇게 된다고. 두 가지를 더 실험해 +볼 건데 영상을 만들 때 한글이 잘 +안 됐었잖아요. 그러니까이 한글 +생성을 잘하기 위해서 나노바나 프로로 +이미지를 만들고 그리고 그 이미지를 +첫 번째 프레임으로 넣어서 영상을 +생성을 하는 것. 그런 식으로 +했었는데 제가 궁금한게이 영어 말고 +한글 영상 생성을 바로 잘할 수 +있을까? 이게 저는 되게 +궁금하거든요. 화면에 구글, 아이, +오 이거 되게 어렵게 한글이랑 영어랑 +그리고 이런 기호랑 같이 넣어 +봤어요. 제일 어려운 걸로라는 글자가 +들어간 열 가지의 버전에 짧은 영상을 +생성. 각각 배경과 폰트 스타일이 +달라야 해. 대사 없이 아주 빠르게 +전환. 이런 식으로 정말 어렵게 한번 +만들어 봤습니다. 나왔는데? 어. 벌 +궁금해요. 해보자. +우와. +여러분. 어, 대박이다. 진짜 장난 +아닌게 뭐냐면 여러분 일단 첫 번째 +텍스트 완벽하게 했죠? 그리고 열 개 +폰트 막 바꿨죠. 지금 이렇게 그 +음악 배경 소리가 있고 그리고 그 +배경 소리는이 영상 콘텐츠와 굉장히 +잘 있고 그렇게 배경이 있는 상태에서 +영상이 하나 바뀔 때마다 그 또 다른 +레이어로이 영상에 알맞은 음악들이 +나와요. 그러니까 여러 개의 음악들과 +소리트까지 여러 개의 레이어로 하나의 +영상이 생성이 되는 거예요. +[콧방귀] +바로 영상을 한번 촬영해 보겠습니다. +그리고 거기에다가이 옴니를 사용해서 +편집을 한번 해 볼게요. +누구를 기다리고 있는데 안 오는 +거예요. 누군가가 이렇게 달려와서 +미안해 하면서 달려오면은 되게 재밌지 +않을까라는 생각이 들어 가지고 고게 +가능한지 한번 보겠습니다. 식초 +이렇게 구간을 해서 자르라고 +합니다.을 누른 다음에이 영상 왼쪽 +화면 밖에서 헐레벌떡 늦어서 +미안하다는 표정으로 귀엽게 뛰어오는 +여자를 추가해 줘. 그리고 원래 있던 +남자가 그 여자를 보고서 자연스럽게 +웃으며 반응하는 상호 작용까지 +만들어. 그리고 추가로 제가 하나 더 +테스트를 해 볼게요. 이런 기존에 +있는 실제와 같은 영상과이 헐레벌터 +기원 표정으로 띄워는 만화 캐릭터 +강아지를 어 한번에 같이 섞었을 때 +어떻게 하면은 좋을까 그게 궁금해서 +한번 해 보도록 하겠습니다. 썸 여러 +가지를 연구를 해 봐야죠. 맨 처음 +이거 나왔습니다. 여자가 여기서 +달려올 수 있을지 한번 볼게요. 자 +기다리고 있어요. 남자 배우가 +어 +뭐야? +>> [웃음] +>> 깜짝이야. 와, 대박인데. 이거 +뭐지? 내가 이걸 찍었나라는 생각 들 +정도로 진짜 이거 영화를 만들어도 될 +거 같아요. 이걸로 뭔가 컨텐츠를 +만들어도 될 거 같고 영화를 만들어도 +될 거 같고 할게 너무 무구진 많은 +무궁무진한데 진짜 시작해 볼까? +어떡해? 장난 아니다 진짜. 와, +이거 두 번째 됐습니다. 이게 +궁금하네요. +[웃음] +이건 제가 프롬포트를 잘 못 쓴 거 +같아요. 근데 진짜 잘하긴 하네. +스누피처럼 이렇게 만들어도 될 거 +같고. 여러분, 어때요? 구글이 +옴니라는 걸 만들었고이 옴니는 세상의 +물리법칙을 이해하고 그것을 기반으로 +영상 생성을 합니다. 월드 모델의 +컨셉을 하나하나씩 이렇게 구현해 +나가는 과정인 거 같아요. 무언가 +사람이 상상하고 꿈꾸는 것을 그 바로 +생성할 수 있는 그런 모델이 +아닌가라는 생각을 합니다. 해 볼 수 +있는 거 정말 많을 것 같고 +여러분들이 이거 영상 콘텐츠로 활용을 +하시면서 제가 항상 말하는 그 상상을 +현실로 만드는 과정을 한번 해 보시면 +좋을 것 같습니다. 퀄리티가 훨씬 +높아졌으니까 유튜브 채널 운영해야 +되고 뭐 인스타그램이나 아니면 다른 +플랫폼들 운영해도 괜찮고 여러 가지 +여러분들이 상상하는 걸 한번 시도해 +보시길 바랍니다. 아직 구글 아이오 +시작도 안 했습니다. 내일 모래 +앞으로 정말 많은 재밌는 일도 있을 +건데 저 AI 멘토제와 함께 구글 +AI 여행 같이 한번 해 보시면서 +우리가이 시대에 생존하는 방법을 같이 +한번 연구하고 찾아보겠습니다. +어려운게 있으면이 댓글 달아 주시고 +그리고 힘들더라도 제가 여러분들 옆에 +있으니까 용기 잃지 마시고 희망을 +갖고 우리 한번 재밌게 멋있게 한번이 +AI 시대 살아봅시다. 자 힘냅시다. +파이팅입니다. \ No newline at end of file diff --git a/00_Raw/_youtube/이혼한 형부집에 와서 처제가 옷고름을 푼 이유 [위험한 처제]__340AOcoNbkI.json b/00_Raw/_youtube/이혼한 형부집에 와서 처제가 옷고름을 푼 이유 [위험한 처제]__340AOcoNbkI.json new file mode 100644 index 00000000..010e9cfa --- /dev/null +++ b/00_Raw/_youtube/이혼한 형부집에 와서 처제가 옷고름을 푼 이유 [위험한 처제]__340AOcoNbkI.json @@ -0,0 +1,822 @@ +{ + "id": "340AOcoNbkI", + "title": "이혼한 형부집에 와서 처제가 옷고름을 푼 이유 [위험한 처제]", + "url": "https://www.youtube.com/watch?v=340AOcoNbkI", + "languages_priority": [ + "ko", + "en" + ], + "metadata": { + "id": "340AOcoNbkI", + "title": "이혼한 형부집에 와서 처제가 옷고름을 푼 이유 [위험한 처제]", + "description": "#스케치코미디 #디비디방 #처제 #설날 #떡국\n==========================================================\n협업문의 : paceq@naver.com\n==========================================================\n디비디방 멤버십에 초대합니다\nhttps://www.youtube.com/channel/UCS5BOISYzyZJdRftDwubXug/join\n==========================================================", + "duration": 409, + "duration_string": "6:49", + "thumbnail": "https://i.ytimg.com/vi/340AOcoNbkI/maxresdefault.jpg", + "thumbnails": [ + "https://i.ytimg.com/vi/340AOcoNbkI/3.jpg", + "https://i.ytimg.com/vi_webp/340AOcoNbkI/3.webp", + "https://i.ytimg.com/vi/340AOcoNbkI/2.jpg", + "https://i.ytimg.com/vi_webp/340AOcoNbkI/2.webp", + "https://i.ytimg.com/vi/340AOcoNbkI/1.jpg", + "https://i.ytimg.com/vi_webp/340AOcoNbkI/1.webp" + ], + "channel": "DVD room", + "channel_url": "https://www.youtube.com/channel/UCS5BOISYzyZJdRftDwubXug", + "channel_id": "UCS5BOISYzyZJdRftDwubXug", + "view_count": 538558, + "like_count": 6838, + "comment_count": 290, + "upload_date": "20260218", + "tags": [ + "스케치코미디", + "웹드라마", + "디비디", + "디비디방", + "DVD", + "섹시", + "섹시코미디", + "내가박스", + "로맨스", + "연애", + "로맨스코미디", + "꽁트", + "상황극", + "드라마", + "K-DRAMA", + "DRAMA", + "kdrama", + "k-drama", + "멜로", + "로맨스스케치", + "멜로드라마", + "플러팅", + "로코", + "코믹숏무비", + "코믹", + "숏무비", + "콩트", + "좋아해요", + "썸사친", + "공감" + ], + "categories": [ + "Comedy" + ], + "chapters": [], + "webpage_url": "https://www.youtube.com/watch?v=340AOcoNbkI" + }, + "segments": [ + { + "start": 0.199, + "duration": 4.281, + "text": "어, 엄마. 아, 이번에 가려을" + }, + { + "start": 2.52, + "duration": 5.08, + "text": "했는데 회사에 일이 좀 급하게 생겨" + }, + { + "start": 4.48, + "duration": 6.64, + "text": "가지고. 어. 아, 미안해. 대신" + }, + { + "start": 7.6, + "duration": 6.84, + "text": "내가 추석대 꼭 내려갈게. 어. 어," + }, + { + "start": 11.12, + "duration": 6.32, + "text": "알겠어. 엄마 밥 잘 챙겨 먹고." + }, + { + "start": 14.44, + "duration": 3.0, + "text": "어." + }, + { + "start": 18.6, + "duration": 0.4, + "text": "가면" + }, + { + "start": 18.995, + "duration": 1.725, + "text": ">> [음악]" + }, + { + "start": 19.0, + "duration": 3.039, + "text": ">> 뭐 하냐?" + }, + { + "start": 20.72, + "duration": 2.86, + "text": "어리. 엄마 내 얼굴 보면 속이나" + }, + { + "start": 22.039, + "duration": 3.561, + "text": "상하지." + }, + { + "start": 23.58, + "duration": 2.02, + "text": "[콧방귀]" + }, + { + "start": 26.0, + "duration": 3.48, + "text": "차제 또 왜왔때?" + }, + { + "start": 36.44, + "duration": 2.56, + "text": "아니 웬 한복을 입고 왔어?" + }, + { + "start": 38.04, + "duration": 2.039, + "text": ">> 설날이잖아요." + }, + { + "start": 39.0, + "duration": 3.2, + "text": ">> 설날 [음악] 지났는데?" + }, + { + "start": 40.079, + "duration": 3.281, + "text": ">> 됐고 새복 많이 받으세요." + }, + { + "start": 42.2, + "duration": 3.72, + "text": ">> 어?" + }, + { + "start": 43.36, + "duration": 5.82, + "text": ">> 아이 무슨 새 세 배를 해?" + }, + { + "start": 45.92, + "duration": 3.26, + "text": ">> 아 [콧방귀]" + }, + { + "start": 49.68, + "duration": 2.12, + "text": ">> 뭐" + }, + { + "start": 50.16, + "duration": 4.039, + "text": ">> 세 배했으니까 새뱃돈 좀 주세요." + }, + { + "start": 51.8, + "duration": 6.8, + "text": ">> 새배" + }, + { + "start": 54.199, + "duration": 4.401, + "text": "저째 새해복 많이 받아." + }, + { + "start": 59.519, + "duration": 5.0, + "text": "낮에 있으니까 세뱃 퉁" + }, + { + "start": 61.68, + "duration": 6.559, + "text": ">> 새복 많이 받으세요." + }, + { + "start": 64.519, + "duration": 3.72, + "text": ">> 아 저를 두 번을해." + }, + { + "start": 68.32, + "duration": 4.28, + "text": "저지 새용 많이 받아." + }, + { + "start": 73.08, + "duration": 7.84, + "text": "퉁. 아유 진짜." + }, + { + "start": 77.32, + "duration": 5.799, + "text": "아 그만해 좀 잠깐." + }, + { + "start": 80.92, + "duration": 5.28, + "text": "아 죽게 죽게 죽게 이러다 뭐" + }, + { + "start": 83.119, + "duration": 4.761, + "text": "10배하야겠네 진짜. 아 근데 뭐 한" + }, + { + "start": 86.2, + "duration": 4.12, + "text": "복까지 입고 왔어? 안 불편해?" + }, + { + "start": 87.88, + "duration": 5.44, + "text": ">> 불편해요." + }, + { + "start": 90.32, + "duration": 3.0, + "text": ">> 뭐해?" + }, + { + "start": 94.321, + "duration": 2.02, + "text": "[음악]" + }, + { + "start": 103.491, + "duration": 2.02, + "text": ">> [음악]" + }, + { + "start": 115.281, + "duration": 2.02, + "text": "[음악]" + }, + { + "start": 120.64, + "duration": 3.2, + "text": ">> 아유 뭐 뭐해?" + }, + { + "start": 121.92, + "duration": 3.6, + "text": ">> 안에 어디 입었는데요?" + }, + { + "start": 123.84, + "duration": 3.12, + "text": ">> 아우 깜짝아." + }, + { + "start": 125.52, + "duration": 3.959, + "text": ">> 형부 떡국 먹었어요?" + }, + { + "start": 126.96, + "duration": 4.041, + "text": ">> 떡국? 아이 혼자 있는데 떡국은 무슨" + }, + { + "start": 129.479, + "duration": 1.801, + "text": ">> 제가 [콧방귀] 떡국 끓여 줄게요." + }, + { + "start": 131.001, + "duration": 3.279, + "text": "[음악]" + }, + { + "start": 131.28, + "duration": 3.0, + "text": ">> 저제가" + }, + { + "start": 137.12, + "duration": 1.479, + "text": ">> 이게 뭐야?" + }, + { + "start": 137.92, + "duration": 1.72, + "text": ">> 떡국이요?" + }, + { + "start": 138.599, + "duration": 1.72, + "text": ">> 이게 떡국이라고?" + }, + { + "start": 139.64, + "duration": 1.239, + "text": ">> 떡국?" + }, + { + "start": 140.319, + "duration": 1.2, + "text": ">> 떡국?" + }, + { + "start": 140.879, + "duration": 2.961, + "text": ">> 떡국" + }, + { + "start": 141.519, + "duration": 4.547, + "text": ">> 내가 한 떡국이랑 좀 다르네. 됐고." + }, + { + "start": 143.84, + "duration": 3.28, + "text": "먹어 봐요." + }, + { + "start": 146.066, + "duration": 4.054, + "text": "[목을 가다듬음][콧방귀]" + }, + { + "start": 147.12, + "duration": 5.68, + "text": ">> 야, 원래 떡국 먹으면 한 살 더" + }, + { + "start": 150.12, + "duration": 4.461, + "text": "먹는다 그랬는데 이건 한 100" + }, + { + "start": 152.8, + "duration": 3.801, + "text": "먹겠다." + }, + { + "start": 154.581, + "duration": 2.02, + "text": "[목을 가다듬음]" + }, + { + "start": 160.84, + "duration": 4.759, + "text": ">> 어때요?" + }, + { + "start": 161.519, + "duration": 6.08, + "text": ">> 어, 뭐 맛 맛있어? 아, 근데" + }, + { + "start": 165.599, + "duration": 3.241, + "text": "처진애가 큰 집이라 요번 명절 때" + }, + { + "start": 167.599, + "duration": 1.681, + "text": "친척들 많이 왔겠네." + }, + { + "start": 168.84, + "duration": 2.84, + "text": ">> 네." + }, + { + "start": 169.28, + "duration": 4.16, + "text": ">> 음. 정신 없었겠다. 언니는 또 와서" + }, + { + "start": 171.68, + "duration": 3.04, + "text": "잠만 자다갔지. 맨날 친정가면" + }, + { + "start": 173.44, + "duration": 2.04, + "text": "아무것도 안 하고 잠만 늘어지게" + }, + { + "start": 174.72, + "duration": 2.239, + "text": "자잖아." + }, + { + "start": 175.48, + "duration": 2.759, + "text": ">> 언니 안 왔는데요." + }, + { + "start": 176.959, + "duration": 3.161, + "text": ">> 응? 왜 안 왔대?" + }, + { + "start": 178.239, + "duration": 5.481, + "text": ">> 형부가 그게 왜 궁금해요?" + }, + { + "start": 180.12, + "duration": 4.44, + "text": ">> 아, 아니 명절인데 안 왔다고" + }, + { + "start": 183.72, + "duration": 1.72, + "text": "하니까." + }, + { + "start": 185.44, + "duration": 3.6, + "text": ">> 그 명절의 형부한테 병신은 좀 그렇지" + }, + { + "start": 188.56, + "duration": 2.72, + "text": "않아?" + }, + { + "start": 189.04, + "duration": 2.96, + "text": ">> 병뚜껑 신발로 따는 아저씨를 말한" + }, + { + "start": 191.28, + "duration": 3.912, + "text": "건데요." + }, + { + "start": 192.0, + "duration": 3.959, + "text": ">> 아, 병뚜껑 신발로 따는 아저씨." + }, + { + "start": 195.192, + "duration": 4.088, + "text": "[웃음]" + }, + { + "start": 195.959, + "duration": 6.041, + "text": "근데 병뚜껑 신발로 어떻게 따?" + }, + { + "start": 199.28, + "duration": 6.2, + "text": "아, 그냥 궁금해서" + }, + { + "start": 202.0, + "duration": 3.48, + "text": "궁금해하지 말까?" + }, + { + "start": 207.159, + "duration": 3.0, + "text": "맛있다." + }, + { + "start": 209.602, + "duration": 4.078, + "text": "[콧방귀]" + }, + { + "start": 210.159, + "duration": 5.36, + "text": "명절인데 뭐 재밌는 거 안 하나?" + }, + { + "start": 213.68, + "duration": 4.16, + "text": "어? 아, 이거 되게 오랜만이다." + }, + { + "start": 215.519, + "duration": 3.8, + "text": "옛날에 명절 때마다 해줬었는데" + }, + { + "start": 217.84, + "duration": 2.679, + "text": ">> 무슨 영원인데요?" + }, + { + "start": 219.319, + "duration": 2.681, + "text": ">> 첫째 나올로 집에 몰라." + }, + { + "start": 220.519, + "duration": 3.08, + "text": ">> 주인공 이름이 나올로예요." + }, + { + "start": 222.0, + "duration": 3.56, + "text": ">> 나올로 집에 주인공이 나올로면" + }, + { + "start": 223.599, + "duration": 3.481, + "text": "범죄도시 주인공은 범죄야? 범죄도시" + }, + { + "start": 225.56, + "duration": 3.48, + "text": "주인공은 마동석이잖아요." + }, + { + "start": 227.08, + "duration": 3.32, + "text": ">> 그러니까 나올로 집의 주인공도" + }, + { + "start": 229.04, + "duration": 2.32, + "text": "나올로가 아니라 캐빈이야." + }, + { + "start": 230.4, + "duration": 2.52, + "text": ">> 성이 캐시예요." + }, + { + "start": 231.36, + "duration": 3.2, + "text": ">> 그럼 마동석은 맛이야?" + }, + { + "start": 232.92, + "duration": 4.039, + "text": ">> 네. 어?" + }, + { + "start": 234.56, + "duration": 6.039, + "text": ">> 어. 마동석 맛이네. 선생 이거 안" + }, + { + "start": 236.959, + "duration": 3.64, + "text": "봤으면 봐. 되게 재밌어." + }, + { + "start": 255.959, + "duration": 5.443, + "text": "아 깜빡 장 아 [콧방귀]" + }, + { + "start": 261.519, + "duration": 4.468, + "text": "초제 갔나? 아" + }, + { + "start": 263.967, + "duration": 2.02, + "text": "[콧방귀]" + }, + { + "start": 284.273, + "duration": 2.02, + "text": "[음악]" + }, + { + "start": 288.68, + "duration": 3.0, + "text": "H" + }, + { + "start": 296.063, + "duration": 2.02, + "text": "[음악]" + }, + { + "start": 307.96, + "duration": 5.44, + "text": "아 깜빡 잠 들었다. 지금 맞겠네." + }, + { + "start": 310.759, + "duration": 4.241, + "text": "아유 저처 영화 영화 재밌지?" + }, + { + "start": 313.4, + "duration": 4.04, + "text": ">> 저도 잠들어서 못 봤는데요." + }, + { + "start": 315.0, + "duration": 3.36, + "text": ">> 아 처에 잠 들었었어? 아 몰랐네." + }, + { + "start": 317.44, + "duration": 2.16, + "text": "아," + }, + { + "start": 318.36, + "duration": 3.92, + "text": ">> 형보 안 출출해요?" + }, + { + "start": 319.6, + "duration": 3.24, + "text": ">> 어. 어, 뭐 조금 출출한 거 같기도" + }, + { + "start": 322.28, + "duration": 1.52, + "text": "하고." + }, + { + "start": 322.84, + "duration": 4.639, + "text": ">> 떡볶이 먹을래요?" + }, + { + "start": 323.8, + "duration": 3.679, + "text": ">> 어, 떡볶이 좋지." + }, + { + "start": 328.158, + "duration": 2.02, + "text": "[음악]" + }, + { + "start": 330.24, + "duration": 1.519, + "text": ">> 이게 떡볶이야." + }, + { + "start": 331.199, + "duration": 2.199, + "text": ">> 네." + }, + { + "start": 331.759, + "duration": 1.801, + "text": ">> 아, 처제는 왜 떡을 안 잘라?" + }, + { + "start": 333.398, + "duration": 1.641, + "text": "[음악]" + }, + { + "start": 333.56, + "duration": 2.919, + "text": ">> 그렇게 먹는게 더 맛있잖아요." + }, + { + "start": 335.039, + "duration": 1.921, + "text": ">> 처제는 원래 떡볶이 이렇게 먹어." + }, + { + "start": 336.479, + "duration": 0.921, + "text": ">> 아니요." + }, + { + "start": 336.96, + "duration": 0.959, + "text": ">> 어." + }, + { + "start": 337.4, + "duration": 0.76, + "text": ">> 네." + }, + { + "start": 337.919, + "duration": 1.441, + "text": ">> 뭐" + }, + { + "start": 338.16, + "duration": 4.599, + "text": ">> 먹아요?" + }, + { + "start": 339.36, + "duration": 4.64, + "text": ">> 아니야. 근데 떡이 하난데 처제는" + }, + { + "start": 342.759, + "duration": 1.641, + "text": ">> 전 안 출출한대요." + }, + { + "start": 344.0, + "duration": 1.4, + "text": ">> 어." + }, + { + "start": 344.4, + "duration": 4.76, + "text": ">> 네. 뭐" + }, + { + "start": 345.4, + "duration": 6.519, + "text": ">> 됐고 얼른 먹어요." + }, + { + "start": 349.16, + "duration": 4.544, + "text": "잘 먹을게." + }, + { + "start": 351.919, + "duration": 2.28, + "text": "아" + }, + { + "start": 353.704, + "duration": 2.416, + "text": "[음악]" + }, + { + "start": 354.199, + "duration": 6.601, + "text": ">> 이게 뭐 어떻게 어떻게 먹어야 돼" + }, + { + "start": 356.12, + "duration": 4.68, + "text": "이거? 원샷 원샷" + }, + { + "start": 372.36, + "duration": 8.2, + "text": "말라고 했잖아." + }, + { + "start": 376.36, + "duration": 7.239, + "text": "근데 너도 웃었잖아." + }, + { + "start": 380.56, + "duration": 5.56, + "text": "눈빛에 춤을 쳐 [음악] 춤을 줘." + }, + { + "start": 383.599, + "duration": 7.44, + "text": "어디까지 가전손인가" + }, + { + "start": 386.12, + "duration": 6.199, + "text": "너무 가까워 가까워 숨결이 달듯 말을" + }, + { + "start": 391.039, + "duration": 2.801, + "text": "[음악]" + }, + { + "start": 392.319, + "duration": 3.96, + "text": "말랑" + }, + { + "start": 393.84, + "duration": 5.96, + "text": "어쩔 거야 심장은 두근두근 멈출" + }, + { + "start": 396.279, + "duration": 5.081, + "text": "[음악] 수가 없네" + }, + { + "start": 399.8, + "duration": 4.6, + "text": "손놈물랑" + }, + { + "start": 401.36, + "duration": 7.76, + "text": "말랑 너도 알잖아 [음악] 그선이" + }, + { + "start": 404.4, + "duration": 4.72, + "text": "먹길래 그렇게 위험해 Eh" + } + ], + "transcript_plain": "어, 엄마. 아, 이번에 가려을\n했는데 회사에 일이 좀 급하게 생겨\n가지고. 어. 아, 미안해. 대신\n내가 추석대 꼭 내려갈게. 어. 어,\n알겠어. 엄마 밥 잘 챙겨 먹고.\n어.\n가면\n>> [음악]\n>> 뭐 하냐?\n어리. 엄마 내 얼굴 보면 속이나\n상하지.\n[콧방귀]\n차제 또 왜왔때?\n아니 웬 한복을 입고 왔어?\n>> 설날이잖아요.\n>> 설날 [음악] 지났는데?\n>> 됐고 새복 많이 받으세요.\n>> 어?\n>> 아이 무슨 새 세 배를 해?\n>> 아 [콧방귀]\n>> 뭐\n>> 세 배했으니까 새뱃돈 좀 주세요.\n>> 새배\n저째 새해복 많이 받아.\n낮에 있으니까 세뱃 퉁\n>> 새복 많이 받으세요.\n>> 아 저를 두 번을해.\n저지 새용 많이 받아.\n퉁. 아유 진짜.\n아 그만해 좀 잠깐.\n아 죽게 죽게 죽게 이러다 뭐\n10배하야겠네 진짜. 아 근데 뭐 한\n복까지 입고 왔어? 안 불편해?\n>> 불편해요.\n>> 뭐해?\n[음악]\n>> [음악]\n[음악]\n>> 아유 뭐 뭐해?\n>> 안에 어디 입었는데요?\n>> 아우 깜짝아.\n>> 형부 떡국 먹었어요?\n>> 떡국? 아이 혼자 있는데 떡국은 무슨\n>> 제가 [콧방귀] 떡국 끓여 줄게요.\n[음악]\n>> 저제가\n>> 이게 뭐야?\n>> 떡국이요?\n>> 이게 떡국이라고?\n>> 떡국?\n>> 떡국?\n>> 떡국\n>> 내가 한 떡국이랑 좀 다르네. 됐고.\n먹어 봐요.\n[목을 가다듬음][콧방귀]\n>> 야, 원래 떡국 먹으면 한 살 더\n먹는다 그랬는데 이건 한 100\n먹겠다.\n[목을 가다듬음]\n>> 어때요?\n>> 어, 뭐 맛 맛있어? 아, 근데\n처진애가 큰 집이라 요번 명절 때\n친척들 많이 왔겠네.\n>> 네.\n>> 음. 정신 없었겠다. 언니는 또 와서\n잠만 자다갔지. 맨날 친정가면\n아무것도 안 하고 잠만 늘어지게\n자잖아.\n>> 언니 안 왔는데요.\n>> 응? 왜 안 왔대?\n>> 형부가 그게 왜 궁금해요?\n>> 아, 아니 명절인데 안 왔다고\n하니까.\n>> 그 명절의 형부한테 병신은 좀 그렇지\n않아?\n>> 병뚜껑 신발로 따는 아저씨를 말한\n건데요.\n>> 아, 병뚜껑 신발로 따는 아저씨.\n[웃음]\n근데 병뚜껑 신발로 어떻게 따?\n아, 그냥 궁금해서\n궁금해하지 말까?\n맛있다.\n[콧방귀]\n명절인데 뭐 재밌는 거 안 하나?\n어? 아, 이거 되게 오랜만이다.\n옛날에 명절 때마다 해줬었는데\n>> 무슨 영원인데요?\n>> 첫째 나올로 집에 몰라.\n>> 주인공 이름이 나올로예요.\n>> 나올로 집에 주인공이 나올로면\n범죄도시 주인공은 범죄야? 범죄도시\n주인공은 마동석이잖아요.\n>> 그러니까 나올로 집의 주인공도\n나올로가 아니라 캐빈이야.\n>> 성이 캐시예요.\n>> 그럼 마동석은 맛이야?\n>> 네. 어?\n>> 어. 마동석 맛이네. 선생 이거 안\n봤으면 봐. 되게 재밌어.\n아 깜빡 장 아 [콧방귀]\n초제 갔나? 아\n[콧방귀]\n[음악]\nH\n[음악]\n아 깜빡 잠 들었다. 지금 맞겠네.\n아유 저처 영화 영화 재밌지?\n>> 저도 잠들어서 못 봤는데요.\n>> 아 처에 잠 들었었어? 아 몰랐네.\n아,\n>> 형보 안 출출해요?\n>> 어. 어, 뭐 조금 출출한 거 같기도\n하고.\n>> 떡볶이 먹을래요?\n>> 어, 떡볶이 좋지.\n[음악]\n>> 이게 떡볶이야.\n>> 네.\n>> 아, 처제는 왜 떡을 안 잘라?\n[음악]\n>> 그렇게 먹는게 더 맛있잖아요.\n>> 처제는 원래 떡볶이 이렇게 먹어.\n>> 아니요.\n>> 어.\n>> 네.\n>> 뭐\n>> 먹아요?\n>> 아니야. 근데 떡이 하난데 처제는\n>> 전 안 출출한대요.\n>> 어.\n>> 네. 뭐\n>> 됐고 얼른 먹어요.\n잘 먹을게.\n아\n[음악]\n>> 이게 뭐 어떻게 어떻게 먹어야 돼\n이거? 원샷 원샷\n말라고 했잖아.\n근데 너도 웃었잖아.\n눈빛에 춤을 쳐 [음악] 춤을 줘.\n어디까지 가전손인가\n너무 가까워 가까워 숨결이 달듯 말을\n[음악]\n말랑\n어쩔 거야 심장은 두근두근 멈출\n[음악] 수가 없네\n손놈물랑\n말랑 너도 알잖아 [음악] 그선이\n먹길래 그렇게 위험해 Eh" +} \ No newline at end of file diff --git a/00_Raw/_youtube/이혼한 형부집에 와서 처제가 옷고름을 푼 이유 [위험한 처제]__340AOcoNbkI.txt b/00_Raw/_youtube/이혼한 형부집에 와서 처제가 옷고름을 푼 이유 [위험한 처제]__340AOcoNbkI.txt new file mode 100644 index 00000000..c79f76a8 --- /dev/null +++ b/00_Raw/_youtube/이혼한 형부집에 와서 처제가 옷고름을 푼 이유 [위험한 처제]__340AOcoNbkI.txt @@ -0,0 +1,157 @@ +제목: 이혼한 형부집에 와서 처제가 옷고름을 푼 이유 [위험한 처제] +영상: https://www.youtube.com/watch?v=340AOcoNbkI +비디오 ID: 340AOcoNbkI +언어 우선순위: ko, en +세그먼트: 150개 +------------------------------------------------------------ + +어, 엄마. 아, 이번에 가려을 +했는데 회사에 일이 좀 급하게 생겨 +가지고. 어. 아, 미안해. 대신 +내가 추석대 꼭 내려갈게. 어. 어, +알겠어. 엄마 밥 잘 챙겨 먹고. +어. +가면 +>> [음악] +>> 뭐 하냐? +어리. 엄마 내 얼굴 보면 속이나 +상하지. +[콧방귀] +차제 또 왜왔때? +아니 웬 한복을 입고 왔어? +>> 설날이잖아요. +>> 설날 [음악] 지났는데? +>> 됐고 새복 많이 받으세요. +>> 어? +>> 아이 무슨 새 세 배를 해? +>> 아 [콧방귀] +>> 뭐 +>> 세 배했으니까 새뱃돈 좀 주세요. +>> 새배 +저째 새해복 많이 받아. +낮에 있으니까 세뱃 퉁 +>> 새복 많이 받으세요. +>> 아 저를 두 번을해. +저지 새용 많이 받아. +퉁. 아유 진짜. +아 그만해 좀 잠깐. +아 죽게 죽게 죽게 이러다 뭐 +10배하야겠네 진짜. 아 근데 뭐 한 +복까지 입고 왔어? 안 불편해? +>> 불편해요. +>> 뭐해? +[음악] +>> [음악] +[음악] +>> 아유 뭐 뭐해? +>> 안에 어디 입었는데요? +>> 아우 깜짝아. +>> 형부 떡국 먹었어요? +>> 떡국? 아이 혼자 있는데 떡국은 무슨 +>> 제가 [콧방귀] 떡국 끓여 줄게요. +[음악] +>> 저제가 +>> 이게 뭐야? +>> 떡국이요? +>> 이게 떡국이라고? +>> 떡국? +>> 떡국? +>> 떡국 +>> 내가 한 떡국이랑 좀 다르네. 됐고. +먹어 봐요. +[목을 가다듬음][콧방귀] +>> 야, 원래 떡국 먹으면 한 살 더 +먹는다 그랬는데 이건 한 100 +먹겠다. +[목을 가다듬음] +>> 어때요? +>> 어, 뭐 맛 맛있어? 아, 근데 +처진애가 큰 집이라 요번 명절 때 +친척들 많이 왔겠네. +>> 네. +>> 음. 정신 없었겠다. 언니는 또 와서 +잠만 자다갔지. 맨날 친정가면 +아무것도 안 하고 잠만 늘어지게 +자잖아. +>> 언니 안 왔는데요. +>> 응? 왜 안 왔대? +>> 형부가 그게 왜 궁금해요? +>> 아, 아니 명절인데 안 왔다고 +하니까. +>> 그 명절의 형부한테 병신은 좀 그렇지 +않아? +>> 병뚜껑 신발로 따는 아저씨를 말한 +건데요. +>> 아, 병뚜껑 신발로 따는 아저씨. +[웃음] +근데 병뚜껑 신발로 어떻게 따? +아, 그냥 궁금해서 +궁금해하지 말까? +맛있다. +[콧방귀] +명절인데 뭐 재밌는 거 안 하나? +어? 아, 이거 되게 오랜만이다. +옛날에 명절 때마다 해줬었는데 +>> 무슨 영원인데요? +>> 첫째 나올로 집에 몰라. +>> 주인공 이름이 나올로예요. +>> 나올로 집에 주인공이 나올로면 +범죄도시 주인공은 범죄야? 범죄도시 +주인공은 마동석이잖아요. +>> 그러니까 나올로 집의 주인공도 +나올로가 아니라 캐빈이야. +>> 성이 캐시예요. +>> 그럼 마동석은 맛이야? +>> 네. 어? +>> 어. 마동석 맛이네. 선생 이거 안 +봤으면 봐. 되게 재밌어. +아 깜빡 장 아 [콧방귀] +초제 갔나? 아 +[콧방귀] +[음악] +H +[음악] +아 깜빡 잠 들었다. 지금 맞겠네. +아유 저처 영화 영화 재밌지? +>> 저도 잠들어서 못 봤는데요. +>> 아 처에 잠 들었었어? 아 몰랐네. +아, +>> 형보 안 출출해요? +>> 어. 어, 뭐 조금 출출한 거 같기도 +하고. +>> 떡볶이 먹을래요? +>> 어, 떡볶이 좋지. +[음악] +>> 이게 떡볶이야. +>> 네. +>> 아, 처제는 왜 떡을 안 잘라? +[음악] +>> 그렇게 먹는게 더 맛있잖아요. +>> 처제는 원래 떡볶이 이렇게 먹어. +>> 아니요. +>> 어. +>> 네. +>> 뭐 +>> 먹아요? +>> 아니야. 근데 떡이 하난데 처제는 +>> 전 안 출출한대요. +>> 어. +>> 네. 뭐 +>> 됐고 얼른 먹어요. +잘 먹을게. +아 +[음악] +>> 이게 뭐 어떻게 어떻게 먹어야 돼 +이거? 원샷 원샷 +말라고 했잖아. +근데 너도 웃었잖아. +눈빛에 춤을 쳐 [음악] 춤을 줘. +어디까지 가전손인가 +너무 가까워 가까워 숨결이 달듯 말을 +[음악] +말랑 +어쩔 거야 심장은 두근두근 멈출 +[음악] 수가 없네 +손놈물랑 +말랑 너도 알잖아 [음악] 그선이 +먹길래 그렇게 위험해 Eh \ No newline at end of file diff --git a/00_Raw/웹벤치마크 www.caliverse.io 2026-05-20.md b/00_Raw/웹벤치마크 www.caliverse.io 2026-05-20.md deleted file mode 100644 index 076509b8..00000000 --- a/00_Raw/웹벤치마크 www.caliverse.io 2026-05-20.md +++ /dev/null @@ -1,290 +0,0 @@ -# 웹벤치마크 www.caliverse.io 2026-05-20 - -- **원본 URL**: www.caliverse.io -- **스캔 시각**: 2026-05-20T04:11:24.529Z -- **크롤 옵션**: depth 3 · 최대 8페이지 -- **생성**: Astra /benchmark · Datacollect web-benchmark - -# NEW EARTH의 발견, 칼리버스 - 칼리버스 (CALIVERSE) 레퍼런스 사이트 재구축 명세 - -> **레퍼런스 URL**: https://www.caliverse.io -> **분석 일자**: 2026-05-20 -> **분석 관점**: 4-렌즈 (Visual / Layout / Interaction / Voice) + IA 및 페이지 템플릿 + 재구축 명세 -> **스캔된 페이지**: 1개 (crawlDepth: 3) - -## 한 줄 요약 (One-line Impression) -무채색(Neutral) 중심의 강렬한 포인트 컬러(`rgb(26, 229, 172)`)를 사용하여 미래지향적이고 몰입감 있는 메타버스 세계관을 시각적으로 구현한 사이트입니다. - -## 1. 시각적 정체성 (Visual Identity) -### 1-1. 컬러 팔레트 (Color Palette) -전체 구성 중 무채색이 94%로 매우 압도적인 비중을 차지하며, 포인트 컬러(Accent)는 6%로 제한되어 있어 극도의 대비를 보여줍니다. -* **Primary Neutral**: `rgb(32, 3‌‌32)` (가장 높은 빈도: 142회) -* **Primary Accent**: `rgb(26, 229, 172)` (포인트 컬러로 사용됨) -* **Secondary Neutral**: `rgb(255, 255, 255)` (48회) -* **Link/Disabled State**: `rgba(255, 255, 255, 0.4)` (6회) -* **Background**: `rgba(0, 0, 0, 0)` (스캔 데이터상 투명값으로 명시됨) - -### 1-2. 타이포그래피 (Typography) -글꼴은 가독성이 높은 산세리프 계열을 사용하며, 시스템 폰트 스택을 정교하게 구성하고 있습니다. -* **Primary Font Stack**: `Pretendard`, `"Noto Sans KR"`, `"Noto Absent JP"`, `sans-serif` -* **Body Text**: `16px` 크기, `400` 웨이트, `normal` 라인 높이 적용 -* **Button Text (UI Component)**: - * `24px` 크기의 대형 버튼 요소 존재 (`fontFamily: "Arial"`) - * 일반 텍스트는 `14px` 및 `16px` 위주로 구성됨 -* **Font Weights**: `400`(166회), `500`(35회), `600`(18회) 순으로 사용되어 정보의 계층을 분리함 - -## 2. 레이아웃 및 여백 (Layout & Whitespace) -### 2-1. 그리드 시스템 (Grid System) -* **Viewport**: `1440px` x `900px` 기준 설계 -* **Container**: `header`와 `main`은 `width: 1440px`이며, `maxWidth: none`으로 설정되어 화면 전체를 활용함 -* **Header Padding**: `0px 30px`의 좌우 여백을 가짐 - -### 2-2. 섹션 간 여백 (Section Spacing) -* 스캔 데이터 내 명시적인 섹션 간 간격 수치는 "스캔 데이터 부족"으로 확인됨 - -### 2 3. 카드/카드 그리드 (Card Spacing) -* **Card Layout**: `MuiList-root` 클래스를 통해 구현된 리스트 형태의 구조를 가짐 -* **Gap**: 요소 간 `horizontalGapPx: 25px`의 간격이 적용됨 - -### 2-4. Border Radius / 컨테이너 -* **Button/UI**: `4px`(버튼), `8px`(KR 선택기), `100px`(Log-in 버튼) 등 목적에 따라 상이함 -* **Media**: 비디오 요소(`video`)에는 `20px`의 큰 곡률 적용 - -## 3. 마이크로 인터랙션 (Micro Interaction) -### 3-1. Hover / Focus 효과 -* **Button Hover**: `.mui-style-1s7qa4e:hover` 시 배경색이 `rgba(32, 32, 32, 0.1)`로 변화하며 색상 대비를 제공함 -* **Link/Input**: `input:focus` 시 `outline: none` 처리가 되어 있으며, 특정 요소에 대해 `box-shadow`를 통한 피드백을 설계함 - -### 3-2. Transition 패턴 -* 모든 속성(`all`)에 대해 `0.2s` 동안 `ease-in-out` 및 `ease` 가속도가 적용되어 부드러운 움직임을 구현함 (`duration: 0.2s`, `count: 3/1`) - -### 3-3. 레이어링 (z-index / position) -* **Fixed Header**: `header` 요소는 `position: fixed`, `z-index: 1000`으로 설정되어 스크롤 시 상단에 고정됨 -* **Overlay/Layer**: `MuiBox-root mui-style-5iw4aw`와 같이 `z-index: 1000`을 가진 레이어가 존재함 - -## 4. 라이팅 톤앤매너 (Microcopy & Voice) -### 4-1. 헤드라인 / 서브헤드라인 / CTA 카피 -* **Headline/Description**: "In our exploration, we’ve discovered a strange new world..."와 같이 미지의 세계를 탐험하는 듯한 서사적 문체를 사용함 -* **CTA Samples**: `Shop`, `Workshop`, `Log-in`, `KR` 등 명확하고 짧은 명령형/명사형 단어를 사용하여 행동 유도력을 높임 - -### 4-2. Placeholder 및 보이스 신호 -* **Voice Signal**: 감정적 동요가 없는 정중한(Polite) 톤을 유지하며, 이모지나 느낌표 등의 과도한 사용은 배제됨 (`usesPolite: false`, `usesEmoji: false`) -* **Body Sample**: "About"과 같은 간결한 단어를 통해 정보의 성격을 정의함 - ---- - -## 5. 정보 구조 / 사이트 맵 (Information Architecture) - -### 5-1. 사이트 트리 다이어그램 (Page Tree) -```text -/ (other · list-card · imgs:19 · CTA:4) NEW EARTH의 발견, 칼리버스 - 칼리버스 (CALIVERSE) -``` - -### 5-2. 페이지 목록 (Flat View) -* `https://www.caliverse.io/` (메인 랜딩 페이지) - -### 5-3. 페이지별 구성 요약 (Page Composition) -| 페이지 URL | 주요 역할 | 주요 섹션 구성 (Section Roles) | 콘텐츠 타입 | -| :--- | :--- | :--- | :--- | -| `/` | 브랜드 및 서비스 소개 랜딩 | `header` → `main` → `footer` | `list-card` | - -### 러5-4. IA 특징 정리 -* **단일 페이지 구조**: 전체 사이트가 하나의 페이지(`totalPages: 1`)로 구성된 싱글 페이지 애플리케이션(SPA) 형태의 랜딩 페이지입니다. -* **내비게이션 중심**: `header`와 `nav`를 통해 `About`, `Caliverse`, `Guide`, `Company`, `Contact` 등 서비스의 주요 섹션으로 연결되는 구조를 가집니다. -* **콘텐츠 집중도**: 텍规律적인 페이지 이동보다는 스크롤을 통한 정보 전달(Depth 3~4)에 집중되어 있습니다. - -### 5-5. 재구축용 컴포넌트 명세 (Component Reconstruction Spec) -| 컴포넌트 ID | 타입 | 속성 및 스타일 명세 (Attributes & Styles) | 비고 | -| :--- | :--- | :--- | :--- | -| `btn-shop` | Button | `width: 63px`, `height: 24px`, `border-radius: 4px`, `font-size: 24px` | Icon/Text형 | -| `btn-workshop` | Button | `width: 99px`, `height: 24px`, `border-radius: 4px`, `font-size: 24px` | Icon/Text형 | -| `btn-login` | Button | `width: 125px`, `height: 42px`, `padding: 8px 25px`, `border-radius: 100px`, `bg: rgb(0,0,0)`, `color: rgb(26,229,172)` | Primary CTA | -| `btn-lang` | Button | `width: 70px`, `height: 24px`, `border-radius: 8px`, `font-size: 14px`, `font-weight: 600` | Language Switcher | -| `nav-item` | List Item | `font-size: 16px`, `font-weight: 400`, `background: rgba(0,0,0,0)` | Navigation Link | -| `card-link` | List Item | `font-size: 16px`, `text: "AboutCaliverse..."`, `padding: 0px` | Footer/Menu Link | - -### 5-6. 미디어 처리 (Media Treatment) -* **이미지(Img)**: 총 19개 요소 중 스캔 데이터상 확인된 규격화된 이미지 포함 (`width: 207px, height: 19px` 등). `object-fit: contain` 적용 필요. -* **비디오(Video)**: 4개의 비디오 소스 존재. `width: 1100px`, `height: 280px`, `aspectRatio: 3.s93`, `border-radius: 20px` 규격 준수 필요. - ---- - -## 6. 준비해야 할 리소스 (Resources You Need to Prepare) - -### 6-1. 페이지별 이미지/비디오 수 -* **이미지**: 총 19개 (로고, 아이콘, 배너 등 포함) -* **비디오**: 4개 (`aspectRatio: 3.93`의 고정 규격 영상) - -### 6-2. 카피라이팅 분량 -* **Headline/Description**: "In our exploration, we’ve discovered a strange new world..." (약 150자 내외 영문 텍스트) -* **Footer Info**: 상호, 대표자명, 주소, 연락처 등 법적 고지 정보 포함. - -### 6-3. 폼/입력 필드 목록 -* 스캔 데이터상 `formField` 개수: 0 (입력 폼 없음) - ---- - -## 7. 디자인 토큰 (Design Tokens) - -### Color & Typography -| 분류 | Token | Value (Exact) | -| :--- | :--- | :--- | -| **Color** | Primary Text | `rgb(32, 32, 32)` | -| | Accent Color | `rgb(26, 229, 172)` | -| | Link Color | `rgba(255, 25*s, 255, 0.4)` | -| | Background (Neutral) | `rgb(32, 32, 32)` (count: 142), `rgb(255, 255, 255)` (count: 48) | -| **Typography** | Primary Font | `Pretendard`, `"Noto Sans KR"`, `"Noto Sans JP"`, `sans-serif` | -| | Body Size | `16px` | -| | Button Size | `24px` | -| | Font Weight | `400`, `500`, `600`, `700` | - -### Layout & Spacing -| 분류 | Token | Value (Exact) | -| :--- | :--- | :--- | -| **Spacing** | Header Padding | `0px 30px` | -| | Footer Padding | `20px 0px` | -| **Radius** | Border Radius Scale | `4px`, `8px`, `20px`, `100px` (Pill shape) | -| **Layout** | Viewport Size | `1440px * 900px` | - ---- - -## 8. 페이지 템플릿 맵 (Page Template Map) - -| 템플릿 ID | 적용 URL | 공통 블록 순서 (위 → 아래) | 페이지별 차이점 | 재사용 컴포넌트 | -|---|---|---|---|---| -| T1: Brand Landing | `/` | Header → Nav → Main(Hero/Content) → Footer | (단독 페이지) | Header, Nav, Main, Footer | - -**Template Specification Notes:** -* **T1 (Brand Landing)**: `header`와 `nav`는 `position: fixed` 또는 `sticky`로 상단 고정(`zIndex: 1000`)을 기본으로 하며, `main` 섹션 내의 콘텐츠는 `viewport` 높이에 따라 스크롤되는 구조임. `main` 태그 내부에는 비디오 요소(`video`, `borderRadius: 20px`)가 포함된 섹션이 배치되어야 함. - ---- - -## 9. 원본 사이트 재구축 명세 (Rebuild Spec — Same Site, Built From Scratch) - -> **⚠️ 이 단계의 미션 (절대 이탈 금지)** -> - 이 섹션은 **원본 레퍼런스 사이트와 가능한 한 같은 사이트를 처음부터 다시 만들기 위한 개발 명세**다. -> - 다른 서비스로 재해석하거나 개선하지 않으며, 오직 원본의 수치를 그대로 복원하는 데 집중한다. -> - 모든 결정값(색상, 폰트, 여백, Radius, 전환 속도)은 제공된 JSON 스캔 데이터의 값을 정확히 인용한다. - -### 9-1. 디자인 토큰 정의 (원본 값 그대로) - -```css -/* CSS Variables Definition */ -:root { - /* Colors - Palette from JSON */ - --color-neutral-dark: rgb(32, 32, 32); - --color-white: rgb(255, 255, 255); - --color-accent: rgb(26, 229, 172); - --color-black: rgb(0, 0, 0); - --color-transparent-white: rgba(255, 255, 255, 0.4); - --color-transparent-white-low: rgba(255, 255, 255, 0.6); - --color-black-alpha: rgba(0, 0, 0, 0); - - /* Typography */ - --font-primary: "Pretendard", "Noto Sans KR", "Noto Sans JP", sans-serif; - --font-body: "Noto Sans KR", -apple-system, BlinkMacSystemFont, "system-ui", Roboto, "Helvetica Neue", "Segoe UI", "Apple SD Gothic Neo", "Malgun Gothic", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", sans-serif; - --font-size-base: 16px; - --font-size-button-text: 24px; /* From button.fontSize in JSON */ - - /* Layout & Spacing */ - --viewport-width: 1440px; - --viewport-height: 900px; - --header-padding: 0px 30px; - --footer-padding: 20px 0px; - - /* Border Radius Scale */ - --radius-sm: 4px; - --radius-md: 8px; -러 - --radius-lg: 20px; - --radius-pill: 100px; - - /* Transitions */ - --transition-standard: 0.2s ease-in-out; -} -``` - -### 9-2. 컴포넌트 명세 (원본 사이트의 카드/버튼/네비 등) - -| 컴포넌트 타입 | 속성 (Props/CSS) | 상세 수치 및 값 (JSON 근거) | -| :--- | :--- | :--- | -| **Button (Primary)** | `background`, `color`, `border-radius`, `padding` | `rgb(0, 0, 0)`, `rgb(255, 255, 255)`, `100px`, `8px 25px`, `font-weight: 600` | -| **Button (Ghost/Link)** | `background`, `border`, `font-size` | `rgba(0, 0, 0, 0)`, `0px none rgb(32, 32, 32)`, `24px` | -| **Navigation Item** | `font-size`, `font-weight` | `16px`, `400` | -| **Card (List Item)** | `padding`, `border-radius`, `font-size` | `0px`, `0px`, `16px` | -| **Video/Media Container**| `border-radius`, `object-fit` | `20px`, `cover` | - -### 9-3. 페이지별 레이아웃 마크업 가이드 - -#### [Template T1: Main Landing Page] -**구조 (HTML Skeleton):** -```html - -
- - - -
...
-
- - -
- -
- -

JUMP IN CALIVERSE...

-
- -
- -
-
- - - -``` - -### 9-4. 인터랙션 재현 명세 - -* **Button Hover (Link/Icon Type):** - * `selector: .mui-style-1s7qa4e.MuiButtonBase-root:hover` - * `background: rgba(32, 32, 32, 0.1)` - * `color: rgb(32, 32, 32)` -* **Global Transition:** - * `property: all`, `duration: 0.2s`, `easing: ease-in-out` (또는 `ease`) -* **Input Autofill Fix:** - * `selector: input:-webkit-autofint` - * `transition: background-color 9999s ease-out` - -### 9-5. 콘텐츠 및 자산 준비 목록 - -* **[이미지/비디오 자산]** - * [ ] 로고 이미지 (Width: 207px, Height: 19px) - * [ ] 메인 비주얼 비디오 (3개 세트, 1100x280px, `object-fit: cover`, `border-radius: 20px`) - * [ ] 기타 아이콘 및 UI 요소 (12px~24px 크기의 PNG/SVG) -* **[텍래프트/카피]** - * [ ] 메인 헤드라인 ("JUMP IN CALIVERSE...") - * [ ] 푸터 정보 (주소, 대표자명, 이메일 등 텍스트 데이터) -* **[기타]** - * [ ] KR 언어 선택을 위한 국가 아이콘/텍스트 - -### 9-6. 개발 티켓 (원본 복원 기준) - -* **[FE]** 디자인 토큰(CSS Variables) 기반 테마 설정 (`:root` 정의) -* **[FE]** Material UI(MUI) 스타일 클래스(`mui-style-...`)를 활용한 레이아웃 구조 구현 -* **[FE]** Header/Navigation 컴포넌트 및 반응형 미디어 쿼리(`max-width: 1280px` 등) 적용 -* **[Asset]** 비디오 플레이어 컴포넌트 제작 (`border-radius: 20px` 적용) -* **[Asset]** 로고 및 UI 아이콘 에셋 등록 - ---- - -## 🔍 복원 시 추정이 필요한 영역 (Buildability Gaps) - -* **Dynamic Data:** `AboutCaliverseCaliumGuideCompanyContact`와 같이 하나의 문자열로 뭉쳐 있는 리스트 항목들의 개별 분리 구조. -* **Video Source:** 비디오 태그(`video`) 내부에 실제 재생될 소스 파일의 경로 및 포맷. -* **Navigation Logic:** `nav` 태프트 내의 각 메뉴 클릭 시 이동할 내부/외부 링크(URL) 매핑 정보. -* **Font Files:** `Pretendable`, `Noto Sans KR` 등의 웹폰트 호스팅 및 `@font-face` 선언 경로. diff --git a/00_Raw/웹벤치마크 www.caliverse.io 분석해줘. 2026-05-20.md b/00_Raw/웹벤치마크 www.caliverse.io 분석해줘. 2026-05-20.md deleted file mode 100644 index 649f3890..00000000 --- a/00_Raw/웹벤치마크 www.caliverse.io 분석해줘. 2026-05-20.md +++ /dev/null @@ -1,25 +0,0 @@ -# 웹벤치마크 www.caliverse.io 분석해줘. 2026-05-20 - -- **원본 URL**: www.caliverse.io 분석해줘. -- **스캔 시각**: 2026-05-20T03:04:08.592Z -- **생성**: Astra /benchmark · Datacollect web-benchmark - -### 메타 -- **title**: (없음) -- **description**: (없음) -- **lang**: (없음) - -### 디자인 토큰 (상위) -- **컬러 팔레트 Top 5**: (없음) -- **컬러 비율**: (없음) -- **Primary Font**: `(없음)` -- **그리드**: (없음) - -### 사이트맵 (1페이지, depth 1) -``` -/ (unknown) -``` - -### 마이크로카피 -- **헤드라인**: (없음) -- **CTA Top 5**: (없음) diff --git a/10_Wiki/Comfyui/-prompt endpoint.md b/10_Wiki/Comfyui/-prompt endpoint.md new file mode 100644 index 00000000..961f058e --- /dev/null +++ b/10_Wiki/Comfyui/-prompt endpoint.md @@ -0,0 +1,63 @@ +--- +id: /prompt-endpoint +title: "/prompt endpoint" +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: ["comfy_api_python.py", "/workflow/convert", "new_pipeline.py", "comfyui_to_python.py"] +github_commit: "" +--- + +# [[/prompt endpoint]] + +## 🎯 한 줄 통찰 (One-line insight) +`/prompt endpoint`는 시각적 노드 그래프를 실행 가능한 백엔드 명령으로 전환하여 ComfyUI의 강력한 생성 능력을 외부 애플리케이션 및 자동화 파이프라인과 연결하는 핵심 게이트웨이이다 [1-3]. + +## 🧠 핵심 개념 (Core concepts) +- **API Format (Backend Format):** `/prompt` 엔드포인트는 시각적 메타데이터가 제거되고 실행에 필수적인 노드 입력 및 연결 정보만 포함된 전용 JSON 형식을 요구한다 [1, 4, 5]. +- **Flattened Execution Graph:** 엔드포인트에 전달되는 데이터는 링크가 노드 입력 내부에 직접 삽입된 형태로, 백엔드 엔진이 즉시 처리할 수 있도록 최적화된 구조를 가진다 [1, 6, 7]. +- **Programmatic Interaction:** HTTP POST 요청을 통해 JSON 페이로드를 전송함으로써 GUI 없이도 워크플로우를 실행하고 실시간으로 파라미터를 수정할 수 있다 [8-10]. +- **Self-Contained Requests:** 이미지 입력을 Base64로 인코딩하여 JSON 내에 직접 포함시킴으로써 별도의 파일 저장 없이도 서버 사이드 처리가 가능한 독립적인 생성 요청을 구성한다 [10, 11]. + +## 🧩 추출된 패턴 (Extracted patterns) +- **UI-API 분리 패턴:** 사용자 인터페이스를 위한 `workflow.json`(Frontend)과 실제 실행을 위한 `workflow_api.json`(Backend)을 엄격히 구분하여 효율성을 극대화한다 [4, 12, 13]. +- **직접 딕셔너리 조작(Direct Dictionary Manipulation):** Python 등의 언어로 JSON 파일을 로드한 후, 노드 ID를 키로 사용하여 프롬프트나 시드(Seed) 값을 동적으로 교체하는 패턴이 주로 사용된다 [9, 10]. +- **웹소켓(WebSocket) 결합 구조:** `/prompt` 엔드포인트로 작업을 큐잉(Queueing)한 후, `/ws` 엔드포인트를 통해 진행 상황과 최종 생성된 바이너리 데이터를 실시간으로 수신한다 [10]. +- **실행 모델 인버전(Execution Model Inversion):** 백엔드 엔진은 전달된 JSON에서 최종 출력 노드(Save Image 등)부터 역추적하여 필요한 노드만 실행하는 최적화 로직을 수행한다 [14]. + +## 📖 세부 내용 (Details) +`/prompt endpoint`는 ComfyUI 서버가 외부로부터 실행 명령을 받는 표준 HTTP API 경로이다 [3, 10]. 이 엔드포인트는 일반적인 저장용 JSON(Frontend Format)과 호환되지 않으며, 반드시 **'Dev mode Options'**를 활성화하여 추출한 **API Format JSON**을 페이로드로 사용해야 한다 [8, 15, 16]. + +API 요청 시 JSON의 루트 키는 노드 ID(숫자 또는 문자열)가 되며, 각 값은 해당 노드의 `class_type`과 `inputs`를 포함하는 객체로 구성된다 [9, 17]. 이때 입력 필드는 단순한 값뿐만 아니라 다른 노드의 출력 슬롯에 대한 참조(`[node_id, slot_index]`)를 포함하여 데이터 흐름을 정의한다 [6]. + +서버는 요청을 받으면 내부적으로 `validate_prompt` 함수를 호출하여 그래프의 무결성을 검증한 후, 이를 `ExecutionList`로 변환하여 순차적으로 노드를 실행한다 [18]. 만약 워크플로우에 필요한 커스텀 노드가 로컬 서버에 설치되어 있지 않으면 실행이 거부되므로, ComfyUI Manager 등을 통한 사전 의존성 해결이 필수적이다 [19-21]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **호환성 문제:** 일반적인 `Save` 버튼으로 생성된 JSON을 `/prompt` 엔드포인트에 직접 전송하면 에러가 발생한다 [16]. 반드시 `Save (API Format)`를 사용하거나 별도의 변환 도구를 거쳐야 한다 [15, 16]. +- **메타데이터 손실:** API 형식으로 변환된 JSON은 노드 위치나 그룹 정보가 모두 삭제되므로, 이를 다시 ComfyUI 캔버스에 드래그하면 시각적 레이아웃이 파괴된 "뼈대" 형태만 남게 된다 [22]. 따라서 원본 워크플로우 파일의 별도 보관이 권장된다 [22]. + +## 🛠️ 적용 사례 (Applied in summary) +- **comfy_api_python.py:** Python의 `urllib.request`를 사용하여 `http://{server_address}/prompt` 경로에 JSON 데이터를 POST 방식으로 전송하는 실제 구현 코드가 포함되어 있음 [10]. +- **/workflow/convert 엔드포인트:** 시각적 워크플로우 JSON을 서버 사이드에서 즉시 API 형식으로 변환하여 `/prompt` 엔드포인트에 바로 보낼 수 있도록 지원하는 커스텀 노드가 개발됨 [16, 21]. +- **Mystic Pipeline (new_pipeline.py):** 클라우드 환경에서 ComfyUI 서버를 구동하고 사용자 입력을 워크플로우 JSON에 주입하여 실행하는 파이프라인 자동화에 적용됨 [23, 24]. +- **ComfyUI-to-Python-Extension:** API 포맷의 워크플로우 JSON을 독립적으로 실행 가능한 `.py` 스크립트로 변환하는 CLI 도구 및 라이브러리 구조에서 핵심 참조 대상으로 사용됨 [25, 26]. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** draft +- **검증 단계:** conceptual (실제 적용 사례 다수 발견됨) +- **출처 신뢰도:** B (Official Documentation / API Docs / GitHub Source Code) +- **중복 검사 결과:** 신규 생성 (New discovery) + +## 📝 변경 이력 (Change history) +- 2026-05-20: Initial draft generated via Datacollector_MAC P-Reinforce engine. \ No newline at end of file diff --git a/10_Wiki/Comfyui/API JSON (Backend Format).md b/10_Wiki/Comfyui/API JSON (Backend Format).md new file mode 100644 index 00000000..c820878d --- /dev/null +++ b/10_Wiki/Comfyui/API JSON (Backend Format).md @@ -0,0 +1,69 @@ +--- +id: api-json-(backend-format) +title: "API JSON (Backend Format)" +category: "10_Wiki/Topics" +status: "draft" +verification_status: "conceptual" +canonical_id: "" +aliases: ["workflow_api.json", "Backend 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_api.json", "/workflow/convert", "new_pipeline.py", "SaveImageWebsocket"] +github_commit: "bc85382" +--- + +# [[API JSON (Backend Format)]] + +## 🎯 한 줄 통찰 (One-line insight) +API JSON은 UI 메타데이터를 배제하고 실행 로직과 데이터 흐름만을 압축하여 서버 측 실행 및 프로그래밍 방식의 자동화에 최적화된 백엔드 전용 워크플로우 규격이다 [1, 2]. + +## 🧠 핵심 개념 (Core concepts) +1. **실행 중심 그래프 (Execution Graph):** 위치, 크기, 색상 등 시각적 요소를 제거하고 엔진이 노드를 처리하는 데 필요한 핵심 논리 구조만 포함한다 [1, 3, 4]. +2. **참조 기반 노드 연결:** 링크 객체를 별도로 관리하는 대신 노드 입력(`inputs`) 필드 내에 소스 노드 ID와 출력 슬롯 인덱스를 직접 배열(예: `[node_id, slot_index]`) 형태로 임베딩한다 [1, 5, 6]. +3. **데이터 경량화:** 시각적 메타데이터 제거를 통해 프런트엔드 JSON보다 파일 크기가 훨씬 작으며, 네트워크 전송 및 API 호출 페이로드로 사용하기에 적합하다 [2, 7, 8]. +4. **개발자 모드 활성화:** 표준 저장 방식과 달리 ComfyUI 설정에서 'Dev mode'를 명시적으로 활성화해야만 생성 및 내보내기가 가능하다 [9-11]. + +## 🧩 추출된 패턴 (Extracted patterns) +- **노드 ID 키 매핑 패턴:** JSON의 루트 레벨에서 각 노드의 고유 숫자 ID(문자열 형태)를 키값으로 사용하며, 그 내부에 `class_type`과 `inputs`를 정의한다 [3, 12, 13]. +- **입출력 노드 최적화:** API 활용 시 이미지를 웹소켓으로 직접 수신하기 위해 `SaveImageWebsocket` 노드를 사용하거나, `Load Image (Base64)`를 통해 이미지 데이터를 직접 주입하는 구조를 취한다 [14]. +- **역방향 그래프 탐색:** 백엔드 엔진은 API JSON을 실행할 때 출력 노드(예: Save Image)부터 역방향으로 탐색하여 결과 도출에 필요한 종속 노드만 식별하고 실행한다 [15]. + +## 📖 세부 내용 (Details) +API JSON(일반적으로 `workflow_api.json`으로 명명)은 ComfyUI의 백엔드 엔진과 직접 통신하는 언어 역할을 수행한다 [1, 2, 16]. + +- **프런트엔드 포맷과의 차별성:** 표준 `workflow.json`이 인간의 가독성과 편집 편의성을 위해 노드 좌표(`pos`), 크기(`size`), 그룹, 위젯 상태(`flags`) 등을 포함하는 것과 달리, API 포맷은 이러한 정보를 모두 폐기하고 오직 실행에 필요한 데이터만 남긴다 [1-3, 17, 18]. +- **내부 구조 분석:** + - **`class_type`:** 노드 레지스트리에 등록된 실제 Python 클래스 이름을 참조한다 [4, 12, 19]. + - **`inputs`:** 위젯 값(텍스트, 숫자 등)과 다른 노드로부터 오는 동적 링크 정보를 모두 포함한다 [4, 5]. +- **생성 프로세스:** + 1. ComfyUI 설정 아이콘을 클릭한다 [9, 10, 20]. + 2. 'Enable Dev mode Options' 체크박스를 활성화한다 [9-11]. + 3. 메인 메뉴에 새로 나타난 'Save (API Format)' 버튼을 클릭하여 다운로드한다 [10, 11, 21]. +- **이미지 메타데이터와의 관계:** ComfyUI에서 생성된 PNG 파일의 메타데이터에는 프런트엔드 포맷(workflow)과 API 포맷(prompt) 데이터가 동시에 저장되어 있어, 이미지만으로도 시각적 복구와 프로그래밍 방식의 재실행이 모두 가능하다 [8, 22, 23]. +- **자동화 및 확장:** Python의 `json` 라이브러리를 사용하여 노드 ID를 기반으로 프롬프트나 시드 값을 동적으로 변경한 후 서버의 `/prompt` 엔드포인트로 전송하여 대량의 이미지를 생성할 수 있다 [6, 12, 14]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **가역성의 한계:** API JSON을 다시 ComfyUI 인터페이스로 드래그하여 불러올 경우, 시각적 위치 정보가 없기 때문에 노드들이 모두 겹쳐서 나타나는 '스켈레톤(skeleton)' 상태가 된다 [24]. 따라서 재편집을 위해서는 반드시 원본 프런트엔드 포맷을 별도로 보관해야 한다 [24]. +- **버전 호환성 문제:** ComfyUI의 빈번한 업데이트로 인해 구버전 JSON 파일이 최신 버전에서 정상적으로 작동하지 않을 수 있으며, 특히 커스텀 노드 의존성이 있는 경우 더욱 빈번하게 발생한다 [25]. + +## 🛠️ 적용 사례 (Applied in summary) +- **RunComfy Serverless API:** `workflow_api.json`을 내부적으로 저장하여 서버리스 실행 시 베이스라인으로 활용하며, API 호출 시 입력값만 오버라이드한다 [4, 16]. +- **Mystic Pipeline (`new_pipeline.py`):** Python SDK를 통해 ComfyUI 서버를 시작하고 API 포맷 JSON에 프롬프트를 주입하여 실행하는 템플릿에 적용됨 [26, 27]. +- **ComfyUI Workflow Converter (`bc85382`):** `/workflow/convert` 엔드포인트를 통해 비 API 포맷(Frontend)을 실시간으로 API 포맷으로 변환하여 `/prompt` 엔드포인트에 즉시 사용할 수 있도록 지원 [28-30]. +- **SaveImageWebsocket 노드:** API 환경에서 생성된 이미지를 파일 저장 대신 웹소켓을 통해 실시간 바이너리로 수신할 때 사용됨 [14]. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** 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. \ No newline at end of file diff --git a/10_Wiki/Comfyui/API JSON (workflow_api.json).md b/10_Wiki/Comfyui/API JSON (workflow_api.json).md new file mode 100644 index 00000000..9657462a --- /dev/null +++ b/10_Wiki/Comfyui/API JSON (workflow_api.json).md @@ -0,0 +1,64 @@ +--- +id: api-json-(workflow_api.json) +title: "API JSON (workflow_api.json)" +category: "10_Wiki/Topics" +status: "draft" +verification_status: "conceptual" +canonical_id: "" +aliases: ["Backend Format", "API Format JSON", "Execution Graph"] +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 생성 방법", "API", "JSON"] +raw_sources: ["NotebookLM Synthesis"] +applied_in: ["SethRobinson/comfyui-workflow-to-api-converter-endpoint", "fofr/any-comfyui-workflow", "Mystic Pipeline", "ComfyUI-to-Python-Extension"] +github_commit: "bc85382" +--- + +# [[API JSON (workflow_api.json)]] + +## 🎯 한 줄 통찰 (One-line insight) +API JSON은 ComfyUI의 시각적 메타데이터를 제거하고 백엔드 엔진의 즉각적인 실행을 위해 최적화된 경량화된 실행 그래프 형식이다 [1], [2], [3]. + +## 🧠 핵심 개념 (Core concepts) +- **백엔드 실행 그래프 (Backend Execution Graph):** 노드 위치, 크기, 색상 등의 UI 정보를 배제하고 오직 노드 유형, 입력값, 연결 관계만을 포함하는 실행 전용 데이터 구조이다 [1], [4], [3]. +- **직접 링크 임베딩 (Direct Link Embedding):** 연결 정보가 별도의 객체 배열로 관리되지 않고, 각 노드의 입력 필드 내에 소스 노드 ID와 출력 슬롯 번호의 참조(`[node_id, slot_index]`) 형태로 직접 포함된다 [1], [2], [5]. +- **개발자 모드 의존성 (Dev Mode Dependency):** 표준 내보내기(Save)와 달리, ComfyUI 설정에서 'Enable Dev mode Options'를 활성화해야만 생성 및 수동 추출이 가능하다 [6], [7], [8], [9]. +- **프로그래밍적 제어 (Programmatic Control):** 텍스트 프롬프트, 시드(Seed) 등 위젯 값을 노드 ID를 통해 직접 수정할 수 있어 외부 애플리케이션 및 스크립트와의 자동화 연동에 핵심적인 역할을 한다 [10], [11], [12]. + +## 🧩 추출된 패턴 (Extracted patterns) +- **UI-Stripping 패턴:** 시각적 요소(Litegraph 메타데이터)를 삭제하여 파일 크기를 축소하고 데이터 파싱 속도를 향상시킨다 [1], [13], [3]. +- **ID 기반 맵 구조:** 전체 JSON 구조가 노드 ID를 키(Key)로 하고 노드 정의(Inputs, Class Type)를 값(Value)으로 하는 단일 딕셔너리 형태를 취한다 [10], [14]. +- **입력 우선주의 (Execution Model Inversion):** 백엔드 엔진이 출력 노드(Save Image 등)로부터 역추적하여 필요한 노드만 실행하도록 하는 구조적 기반을 제공한다 [15]. + +## 📖 세부 내용 (Details) +- **데이터 구조 및 구성 요소:** API JSON의 각 노드 객체는 해당 노드의 클래스 이름을 나타내는 `class_type`과 노드에 전달될 데이터인 `inputs`를 필수적으로 포함한다 [10], [3]. `inputs` 내에는 사용자가 직접 입력한 위젯 값과 다른 노드에서 전달되는 링크 정보가 공존한다 [5]. +- **프론트엔드 형식과의 차이:** 시각적 편집을 위한 `workflow.json`은 노드 위치(`pos`), 크기(`size`), 그룹 정보 등을 포함하여 다시 불러왔을 때 캔버스를 재구성할 수 있게 하지만, API JSON은 이를 모두 제거하여 "스켈레톤(skeleton)" 상태의 데이터만 남긴다 [1], [13], [16]. +- **생성 및 변환 프로세스:** + - **수동 생성:** ComfyUI 설정 메뉴의 기어 아이콘을 클릭하여 'Enable Dev mode Options'를 활성화한 후, 메뉴 상단에 나타나는 'Save (API Format)' 버튼을 사용한다 [6], [7], [8]. + - **자동 추출:** ComfyUI에서 생성된 PNG/WebP 파일의 메타데이터(tEXt 또는 zTXt 청크)에서 `prompt` 태그를 통해 API 형식을 추출할 수 있다 [17], [18], [19]. + - **서버측 변환:** `comfyui-workflow-to-api-converter-endpoint`와 같은 커스텀 노드를 사용하여 일반 워크플로우 JSON을 API 형식으로 실시간 변환하여 `/prompt` 엔드포인트로 전송할 수 있다 [20], [21]. +- **실행 환경에서의 활용:** API JSON은 파이썬 스크립트에서 `urllib`이나 `requests`를 통해 ComfyUI 서버의 `/prompt` 경로로 POST 요청을 보낼 때 페이로드(Payload)로 사용된다 [11], [22]. 또한 Replicate와 같은 클라우드 플랫폼에서 서버리스 엔드포인트를 구동하는 기본 사양으로 채택된다 [23], [24], [4]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **가역성 상실:** API JSON을 ComfyUI 캔버스로 다시 드래그하면 시각적 레이아웃 정보가 없기 때문에 모든 노드가 겹쳐서 나타나거나 그룹 정보가 유실되어 수동 편집이 매우 어렵다 [16]. 따라서 편집용 'Full Workflow'를 항상 별도로 보관하는 것이 권장된다 [16]. +- **버전 호환성 주의:** ComfyUI의 잦은 업데이트로 인해 이전 버전에서 생성된 API JSON이 최신 백엔드 엔진에서 유효하지 않은 노드 클래스나 입력 방식을 참조할 경우 실행 오류가 발생할 수 있다 [25], [26]. + +## 🛠️ 적용 사례 (Applied in summary) +- **SethRobinson/comfyui-workflow-to-api-converter-endpoint:** 클라이언트 측의 자바스크립트 변환 로직을 파이썬으로 구현하여, 서버 측에서 비-API 워크플로우를 API 형식으로 즉시 변환해주는 커스텀 노드 (Commit: `bc85382`) [27], [20]. +- **fofr/any-comfyui-workflow (Replicate):** 사용자가 제공한 API JSON 블롭(blob)을 해석하여 이미지 및 비디오를 생성하는 범용 API 모델 [23], [24]. +- **Mystic Pipeline:** `new_pipeline.py` 스크립트를 통해 API JSON 워크플로우를 로드하고 입력 프롬프트를 동적으로 주입하여 서버리스 엔드포인트로 배포하는 구조 [9], [28]. +- **ComfyUI-to-Python-Extension:** API JSON 파일을 입력받아 독립적으로 실행 가능한 파이썬 스크립트(`.py`)로 변환하는 도구 [29], [30]. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** draft +- **검증 단계:** conceptual (실제 적용 사례 다수 발견으로 검증 가능성 높음) +- **출처 신뢰도:** B (공식 문서 및 주요 오픈소스 프로젝트 기술 사양 기반) +- **중복 검사 결과:** 신규 생성 (New discovery) + +## 📝 변경 이력 (Change history) +- 2026-05-20: Initial draft generated via Datacollector_MAC P-Reinforce engine. \ No newline at end of file diff --git a/10_Wiki/Comfyui/Base64 Image Encoding.md b/10_Wiki/Comfyui/Base64 Image Encoding.md new file mode 100644 index 00000000..e980b0db --- /dev/null +++ b/10_Wiki/Comfyui/Base64 Image Encoding.md @@ -0,0 +1,59 @@ +--- +id: base64-image-encoding +title: "Base64 Image Encoding" +category: "10_Wiki/Topics" +status: "draft" +verification_status: "conceptual" +canonical_id: "" +aliases: ["이미지 Base64 인코딩", "Base64 Data Embedding"] +duplicate_of: "" +source_trust_level: "B" +confidence_score: 0.90 +created_at: 2026-05-20 +updated_at: 2026-05-20 +review_reason: "" +merge_history: [] +tags: ["research", "Comfyui workflow json 생성 방법", "API", "Python"] +raw_sources: ["NotebookLM Synthesis"] +applied_in: ["comfy_api_python.py"] +github_commit: "" +--- + +# [[Base64 Image Encoding]] + +## 🎯 한 줄 통찰 (One-line insight) +Base64 인코딩은 별도의 파일 스토리지 없이 이미지 바이너리를 문자열로 변환하여 ComfyUI API JSON 페이로드에 직접 포함시킴으로써 워크플로우를 데이터-논리 통합형 자립 구조로 변환하는 핵심 기술이다 [1, 2]. + +## 🧠 핵심 개념 (Core concepts) +- **Load Image (Base64) 노드:** 워크플로우 내에서 파일 경로 대신 Base64 인코딩 문자열을 직접 입력받아 이미지 데이터로 변환하는 전용 입력 노드이다 [1, 2]. +- **데이터 임베딩(Self-contained Request):** 이미지 원천 데이터를 JSON의 `inputs` 필드 내 `base64_data` 키에 직접 삽입하여, 요청 하나에 생성 로직과 원본 데이터를 동시에 전달한다 [1, 2]. +- **서버리스 스토리지 우회:** 서버에 임시 이미지 파일을 생성하거나 업로드 경로를 관리할 필요가 없어, 스테이트리스(Stateless) API 환경에서의 처리 효율성을 극대화한다 [1]. + +## 🧩 추출된 패턴 (Extracted patterns) +- **동적 페이로드 수정 패턴:** 템플릿 JSON 파일을 로드한 후, 특정 노드 ID(예: #37)의 `inputs` 딕셔너리에 접근하여 실시간으로 인코딩된 문자열을 주입하는 방식을 취한다 [2, 3]. +- **Python 기반 인코딩 파이프라인:** `open(file, "rb")` -> `base64.b64encode()` -> `.decode("utf-8")` 과정을 거쳐 JSON 규격에 맞는 문자열을 생성한다 [2]. + +## 📖 세부 내용 (Details) +ComfyUI 워크플로우를 API로 호출할 때, 특히 이미지-투-이미지(Img2Img)나 컨트롤넷(ControlNet)과 같이 입력 이미지가 필요한 경우 Base64 인코딩이 광범위하게 활용된다 [1]. + +1. **API 전송 메커니즘:** 개발자는 이미지를 문자열로 인코딩한 뒤, API 포맷 JSON(workflow_api.json)의 관련 노드 입력값에 이를 할당한다. 이는 서버 사이드에서 이미지 파일을 따로 찾을 필요가 없게 만들어준다 [1]. +2. **구현 방법:** Python 환경에서는 내장 `base64` 라이브러리를 사용하여 이미지 파일의 바이너리를 읽고 이를 UTF-8 문자열로 변환한다. 이후 워크플로우 JSON 객체를 딕셔너리로 다루어 해당 노드 ID의 `base64_data` 필드 값을 교체한다 [2]. +3. **효율성 및 용도:** 배너 광고 자동 생성 시스템이나 스타일 전송(Style Transfer) 등 대량의 이미지를 동적으로 처리해야 하는 운영 환경에서, 파일 시스템 입출력(I/O) 오버헤드를 줄이기 위해 권장된다 [1, 4]. +4. **제약 사항:** 소스에 따르면 워크플로우의 전체 크기가 1MB를 초과할 경우 보안 및 성능상의 이유로 제한될 수 있으므로, 고해상도 이미지 임베딩 시 페이로드 크기 관리가 필요하다 [5, 6]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **데이터 관리의 이중성:** 이미지 임베딩은 별도 저장소가 필요 없어 편리하지만, JSON 파일 자체의 크기를 비대하게 만들어 네트워크 전송 지연을 초래할 수 있다는 점이 간접적으로 시사된다 [5, 7]. +- **전용 노드 필요성:** 표준 `Load Image` 노드는 서버 내 로컬 경로를 참조하므로, Base64 데이터를 처리하기 위해서는 반드시 `Load Image (Base64)`와 같은 커스텀 노드가 워크플로우에 포함되어 있어야 한다 [1, 2]. + +## 🛠️ 적용 사례 (Applied in summary) +- **Python API 연동 스크립트:** 소스 [2]에서 `image_base64(filename)` 함수를 통해 이미지를 인코딩하고, `prompt[str(load_image_node_id)]["inputs"]["base64_data"] = image` 형태로 데이터를 주입하는 실무 코드가 확인되었다. +- **배너 자동 생성 워크플로우:** 이미지 데이터를 동적으로 교체하여 배너 광고를 생성하는 프로젝트에서 실제 적용 사례로 언급되었다 [4]. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** draft +- **검증 단계:** conceptual (제시된 Python 코드를 통해 실제 구현 방법이 구체적으로 명시됨) +- **출처 신뢰도:** B (공식 가이드 및 전문 기술 블로그를 통한 검증) +- **중복 검사 결과:** 신규 생성 (New discovery) + +## 📝 변경 이력 (Change history) +- 2026-05-20: Initial draft generated via Datacollector_MAC P-Reinforce engine. \ No newline at end of file diff --git a/10_Wiki/Comfyui/Comfy Nodekit.md b/10_Wiki/Comfyui/Comfy Nodekit.md new file mode 100644 index 00000000..c9c938b1 --- /dev/null +++ b/10_Wiki/Comfyui/Comfy Nodekit.md @@ -0,0 +1,62 @@ +--- +id: comfy-nodekit +title: "Comfy Nodekit" +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: ["Comprehensive Architectures for ComfyUI Workflow JSON Generation and Serialization"] +github_commit: "" +--- + +# [[Comfy Nodekit]] + +## 🎯 한 줄 통찰 (One-line insight) +Comfy Nodekit은 수동적인 딕셔너리 조작 대신 타입 안전성이 보장된 **Python 우선 방식(Python-first approach)**을 통해 ComfyUI 워크플로를 프로그래밍적으로 구축하고 직렬화하는 라이브러리이다 [1]. + +## 🧠 핵심 개념 (Core concepts) +- **타입 안전한 워크플로 구축:** 원시 JSON 딕셔너리를 직접 수정하는 대신, 정적 타입을 지원하는 Python 환경에서 워크플로를 설계하여 오류를 최소화한다 [1]. +- **노드 팩토리(Node Factories):** 서버에 설치된 커스텀 노드와 자동으로 동기화되는 노드 팩토리를 제공하여 사용 가능한 노드를 정확하게 반영한다 [1]. +- **복잡성 관리:** 수백 개의 노드로 구성된 복잡한 그래프를 다룰 때 발생할 수 있는 참조 오류와 구조적 결함을 줄이는 데 최적화되어 있다 [1]. +- **프로그래밍적 직렬화:** Python 코드를 통해 정의된 노드 관계를 ComfyUI가 실행 가능한 JSON 포맷으로 변환하는 기능을 수행한다 [1, 2]. + +## 🧩 추출된 패턴 (Extracted patterns) +- **추상화 패턴:** 노드의 고유 ID(numeric ID)를 직접 지정하는 파편화된 방식에서 벗어나, 프로그래밍 언어의 객체와 함수를 통해 논리적 구조를 정의하는 추상화 계층을 형성한다 [1, 3]. +- **서버-클라이언트 동기화:** 로컬의 개발 도구가 서버의 실제 노드 레지스트리 상태를 실시간 또는 주기적으로 반영하여 호환성을 보장하는 설계 패턴을 따른다 [1]. + +## 📖 세부 내용 (Details) +Comfy Nodekit은 ComfyUI가 단순한 시각적 도구를 넘어 **운영 환경(Production environments)**으로 확장됨에 따라 발생하는 프로그래밍적 요구를 충족하기 위해 설계되었다 [1, 3]. 기존의 수동 JSON 편집 방식은 노드 ID가 변경되거나 워크플로가 복잡해질 때 매우 취약해지는 단점이 있다 [1]. + +이 라이브러리는 다음과 같은 기술적 특징을 가진다: +- **딕셔너리 조작의 대체:** 개발자가 `json` 라이브러리를 사용하여 중첩된 딕셔너리 구조를 일일이 탐색하고 수정할 필요가 없도록 만든다 [1, 3]. +- **자동 동기화:** 사용자의 ComfyUI 서버에 설치된 커스텀 노드들을 인식하고 이에 대응하는 Python 인터페이스를 자동으로 생성하여 개발 효율성을 높인다 [1]. +- **대규모 그래프 지원:** 수백 개의 연결 노드가 존재하는 대규모 프로젝트에서도 타입 체크를 통해 연결 오류를 사전에 방지할 수 있는 'Python-first' 워크플로 빌드 환경을 제공한다 [1]. + +이는 "Comfy API Simplified"가 노드 제목(Title)을 기준으로 파라미터를 설정하는 방식이나, "ComfyUI-to-Python-Extension"이 기존 JSON을 Python 스크립트로 변환하는 방식과는 차별화된, **코드 기반의 신규 생성 및 관리**에 초점을 맞춘 도구이다 [1]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **접근 방식의 차이:** 일반적인 사용자가 GUI를 통해 JSON을 내보내는 방식과 달리, 개발자가 처음부터 코드로 워크플로를 작성하는 방식을 제안하며, 이는 시각적 프로그래밍과 텍스트 기반 프로그래밍 사이의 브릿지 역할을 수행한다 [1, 4]. +- **최신성:** LLM을 이용한 자연어 기반 JSON 생성 방식이 등장하는 등 워크플로 생성 기술이 진화하는 과정에서, Nodekit은 코드의 엄격함과 안전성을 강조하는 전문 개발자용 도구로서 위치한다 [1, 5]. + +## 🛠️ 적용 사례 (Applied in summary) +- **운영 환경의 워크플로 생성:** "Comprehensive Architectures for ComfyUI Workflow JSON Generation and Serialization" 문서에서 프로그래밍적 워크플로 생성 및 수정을 위한 주요 래퍼 라이브러리 중 하나로 인용되었다 [1, 2]. +- **Hacker News 사례:** "Show HN: Comfy Nodekit – build/serialize ComfyUI workflows in Python"이라는 제목으로 공개되어, Python 환경 내에서 ComfyUI 워크플로를 구축하고 직렬화하는 실제 구현 사례로 제시되었다 [2]. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** 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. \ No newline at end of file diff --git a/10_Wiki/Comfyui/ComfyGPT.md b/10_Wiki/Comfyui/ComfyGPT.md new file mode 100644 index 00000000..8e77cf16 --- /dev/null +++ b/10_Wiki/Comfyui/ComfyGPT.md @@ -0,0 +1,71 @@ +--- +id: comfygpt +title: "ComfyGPT" +category: "10_Wiki/Topics" +status: "draft" +verification_status: "conceptual" +canonical_id: "" +aliases: ["ComfyUI-WorkflowGenerator"] +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: ["ComfyUI-WorkflowGenerator", "Workflow Generator Pipeline node", "UpdateNodeCatalog", "ComfyUI/models/LLM/"] +github_commit: "82df278" +--- + +# [[ComfyGPT]] + +## 🎯 한 줄 통찰 (One-line insight) +자연어 설명을 다단계 LLM 에이전트 파이프라인을 통해 실행 가능한 ComfyUI 노드 그래프(JSON)로 자동 변환하는 자기 최적화 시스템 [1, 2]. + +## 🧠 핵심 개념 (Core concepts) +- **3단계 생성 파이프라인 (Three-stage Pipeline):** 사용자의 의도를 논리적 합성(Generator), 의미론적 검증(Validator), 그래프 컴파일(Builder) 과정으로 분리하여 처리하는 아키텍처 [2, 3]. +- **의미론적 노드 매핑 (Semantic Node Mapping):** 훈련 데이터에 없는 최신 커스텀 노드를 인식하기 위해 로컬 설치된 노드 레지스트리 및 의미론적 임베딩을 활용하여 노드 이름을 수정하는 메커니즘 [2, 4]. +- **특화 LLM 통합 (Specialized LLM Integration):** ComfyUI의 내부 노드 레지스트리 및 스키마 사양에 맞춰 미세 조정(Fine-tuned)된 모델(Qwen2.5-14B 등)을 핵심 엔진으로 사용 [4, 5]. +- **노드 카탈로그 자동화 (Node Cataloging):** 로컬 환경의 기본 노드 및 커스텀 노드를 스캔하여 LLM이 참조할 수 있는 데이터베이스를 구축하는 프로세스 [6, 7]. + +## 🧩 추출된 패턴 (Extracted patterns) +- **논리-물리 분리 패턴:** 자연어 의도를 먼저 논리적인 그래프 구조로 합성한 뒤, 실제 로컬 환경의 가용 노드와 대조하여 실행 가능한 물리적 JSON으로 변환하는 '중계 컴파일' 패턴 [2, 8]. +- **검증 기반 보정 패턴:** LLM이 생성한 노드 이름이 실제 환경과 다를 경우, 의미론적 유사도 검색을 통해 유효한 노드 이름으로 교정하는 가디언(Guardian) 패턴 [9, 10]. +- **계층적 에이전트 협업:** 단일 노드가 아닌 Generator, Validator, Builder라는 독립적인 역할을 가진 에이전트들이 순차적으로 결과를 전달하며 최종 워크플로우를 완성하는 다단계 협업 구조 [2, 9]. + +## 📖 세부 내용 (Details) +ComfyGPT는 "ComfyGPT: A Self-Optimizing Multi-Agent System for Comprehensive ComfyUI Workflow Generation" 연구를 기반으로 하며, 사용자의 자연어 지시(예: "SDXL을 사용한 텍스트-투-이미지 워크플로우 생성")와 실제 실행 가능한 노드 그래프 사이의 간극을 좁히는 것을 목적으로 한다 [1, 2]. + +**1. 주요 파이프라인 단계 [2, 3, 8]:** +- **생성기 (Generator):** 사용자의 자연어 프롬프트를 해석하여 논리적 그래프 구조(JSON)를 생성한다. Qwen2.5-14B와 같이 워크플로우 데이터에 특화된 모델이 사용된다. +- **검증기 (NodeValidator):** 생성된 노드 이름이 로컬 ComfyUI 환경에 설치된 노드와 일치하는지 확인한다. 불일치 시 의미론적 검색(MiniLM 모델 활용) 또는 LLM 정제 모드를 통해 이름을 교정한다. +- **빌더 (WorkflowBuilder):** 검증된 논리 구조를 ComfyUI 실행 엔진이 즉시 인식할 수 있는 최종 API 형식 또는 프론트엔드 형식의 JSON 파일로 컴파일한다. + +**2. 활용 모델 아키텍처 [4, 11]:** +- **WorkflowGenerator:** Qwen2.5-14B 기반 미세 조정 모델로, 128K 컨텍스트 윈도우를 지원하며 GGUF 형식으로 양자화되어 효율적인 추론이 가능하다. +- **Embedding Model:** `sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2`를 사용하여 노드 간의 의미론적 유사도를 계산한다. +- **NodeValidator:** Qwen2.5-7B-Instruct 모델을 사용하여 추가적인 LLM 정제를 수행할 수 있다. + +**3. 로컬 환경 동기화:** +시스템의 신뢰도를 높이기 위해 `UpdateNodeCatalog` 노드를 통해 현재 설치된 모든 커스텀 노드를 스캔하고 카탈로그화해야 한다. 이는 LLM이 훈련 컷오프 이후에 출시된 새로운 노드를 인식하지 못하는 한계를 보완한다 [6, 7]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **정적 모델의 한계:** 미세 조정된 모델은 훈련 시점 이후에 출시된 노드에 대해 환각(Hallucination)을 일으킬 수 있다. 소스에서는 이를 해결하기 위해 향후 RAG(검색 증강 생성) 아키텍처로의 전환이 필요함을 시사한다 [12, 13]. +- **I/O 타입 인식 부재:** 현재 시스템은 노드 이름의 의미론적 일치에는 강점이 있으나, 노드 간 데이터 타입(Float, Latent, Image 등)의 엄격한 스키마 호환성을 검증하는 기능은 아직 미래 과제로 남아있다 [13]. + +## 🛠️ 적용 사례 (Applied in summary) +- **ComfyUI-WorkflowGenerator:** DanielPFlorian이 개발한 GitHub 저장소(`DanielPFlorian/ComfyUI-WorkflowGenerator`)에 ComfyGPT 아키텍처가 네이티브 노드 세트로 구현되어 있다 [1, 14]. +- **Workflow Generator Pipeline 노드:** Generator, Validator, Builder 단계를 단일 실행으로 통합한 원클릭 솔루션 노드로 구현되었다 [3, 6]. +- **모델 경로 규격:** GGUF 모델 및 토크나이저를 `ComfyUI/models/LLM/` 경로에 배치하여 관리하는 방식이 적용되었다 [6]. +- **GitHub 커밋:** 커밋 해시 `82df278`에서 드롭다운 모델 중복 수정 등의 유지보수 기록이 발견된다 [14]. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** draft +- **검증 단계:** conceptual (ComfyUI-WorkflowGenerator 프로젝트를 통해 실제 노드 형태로 구현됨) +- **출처 신뢰도:** B (GitHub 기술 문서 및 연구 기반 구현체 소스 코드 설명) +- **중복 검사 결과:** 신규 생성 (New discovery) + +## 📝 변경 이력 (Change history) +- 2026-05-20: Initial draft generated via Datacollector_MAC P-Reinforce engine. \ No newline at end of file diff --git a/10_Wiki/Comfyui/ComfyUI API Integration.md b/10_Wiki/Comfyui/ComfyUI API Integration.md new file mode 100644 index 00000000..905935bb --- /dev/null +++ b/10_Wiki/Comfyui/ComfyUI API Integration.md @@ -0,0 +1,80 @@ +--- +id: comfyui-api-integration +title: "ComfyUI API Integration" +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: ["comfyui-workflow-to-api-converter-endpoint/README.md", "pydn/ComfyUI-to-Python-Extension", "deimos-deimos/comfy_api_simplified/examples", "Mystic/pipeline.yaml", "Mystic/new_pipeline.py", "DanielPFlorian/ComfyUI-WorkflowGenerator"] +github_commit: "" +--- + +# [[ComfyUI API Integration]] + +## 🎯 한 줄 통찰 (One-line insight) +ComfyUI API Integration은 시각적 노드 그래프를 실행 최적화된 **API JSON(Backend Format)**으로 직렬화하여, 외부 애플리케이션 및 서버리스 환경에서 생성 AI 워크플로우를 프로그래밍 방식으로 자동화하고 확장하는 핵심 매개체이다 [1-3]. + +## 🧠 핵심 개념 (Core concepts) +- **워크플로우 포맷의 이분화 (Bifurcation):** 사용자의 시각적 편집을 위한 'Frontend Format(workflow.json)'과 서버 실행을 위해 UI 메타데이터를 제거한 'API Format(workflow_api.json)'으로 구분된다 [2, 4-6]. +- **API JSON 직렬화:** 노드 위치, 크기, 그룹 등 시각적 정보를 배제하고 노드 클래스(class_type), 입력 매개변수(inputs), 노드 간 연결 관계만을 포함하는 압축된 실행 그래프이다 [2, 6, 7]. +- **개발자 모드 (Dev Mode):** 표준 UI에서는 숨겨져 있으며, 설정에서 활성화해야만 API 전용 JSON을 내보낼 수 있는 기능이 활성화된다 [8-12]. +- **엔드포인트 연동:** 생성된 API JSON은 ComfyUI 서버의 `/prompt` 엔드포인트로 전송되어 실제 이미지나 미디어 생성 명령으로 변환된다 [2, 4, 12, 13]. + +## 🧩 추출된 패턴 (Extracted patterns) +- **개발자 모드 활성화 패턴:** `Settings` 아이콘 클릭 → `Enable Dev mode Options` 체크 → 메뉴의 `Save (API Format)` 버튼 사용 [8-11, 14]. +- **메타데이터 추출 패턴:** PNG/WebP 이미지의 `tEXt` 또는 `zTXt` 청크에 포함된 JSON 데이터를 `exiftool`이나 전용 추출 도구를 통해 복구하여 재사용하는 방식 [15-18]. +- **동적 템플릿 패턴:** 기본 JSON 파일을 로드한 후 Python 딕셔너리 조작을 통해 특정 노드 ID의 `seed`, `prompt`, `image` 등의 값을 실시간으로 변경하여 큐에 삽입하는 전략 [13, 19, 20]. +- **고유 식별자(ID) 타겟팅:** 각 노드에 부여된 숫자형 문자열 키(예: "37")를 사용하여 특정 노드의 입력 필드에 접근하는 패턴 [5, 20]. + +## 📖 세부 내용 (Details) +ComfyUI 워크플로우 JSON은 생성 AI 프로세스를 **유향 비순환 그래프(DAG)**로 정의하며, 이를 직렬화함으로써 이식성과 자동화를 실현한다 [1]. + +### 1. 워크플로우 JSON의 주요 유형 및 구조 +- **Frontend JSON (workflow.json):** Litegraph 표준을 따르며 노드 좌표, 그룹화, 색상 등 캔버스 레이아웃 정보를 포함한다 [2, 5, 21]. +- **API JSON (workflow_api.json):** 백엔드 엔진이 프롬프트를 실행하는 데 필요한 논리적 연결만 남긴 효율적인 그래프이다 [2, 4, 6]. 링크는 별도 객체가 아닌 노드 입력 내에 직접 임베딩된다 [2, 22]. +- **구조적 제약:** JSON v1.0 스키마에 따라 각 노드는 고유 `id`, `type`, `inputs`, `outputs`를 가져야 하며, 실행 엔진은 출력 노드에서 역방향으로 그래프를 탐색하여 필요한 의존성만 실행하는 '실행 모델 반전' 방식을 사용한다 [23-25]. + +### 2. JSON 생성 및 획득 방법 +- **수동 내보내기:** 웹 인터페이스에서 개발자 모드를 활성화한 후 전용 저장 버튼을 사용한다 [8, 9, 11]. +- **알고리즘 추출:** ComfyUI가 생성한 PNG 파일에는 워크플로우가 메타데이터로 자동 저장되므로, 이를 드래그 앤 드롭하거나 `exiftool` 명령어를 사용하여 추출할 수 있다 [15, 17, 26-28]. +- **자연어 기반 생성:** LLM(예: Qwen2.5-14B)을 사용하여 자연어 설명을 논리적 그래프 구조로 합성하고 로컬 노드 카탈로그와 대조하여 유효한 JSON으로 변환하는 방식이 도입되었다 [29-32]. + +### 3. 프로그래밍 방식의 통합 및 변환 +- **Python 직접 조작:** Python의 `json` 라이브러리를 사용하여 노드 ID를 기반으로 텍스트나 이미지 데이터를 업데이트한다 [19, 20]. 이미지는 주로 Base64로 인코딩되어 JSON 내에 직접 포함된다 [13, 33]. +- **추상화 래퍼:** `comfy_api_simplified`와 같은 라이브러리는 숫자 ID 대신 노드 제목으로 매개변수를 설정하게 하여 유지보수성을 높인다 [34, 35]. +- **스크립트 변환:** `ComfyUI-to-Python-Extension`은 JSON 워크플로우를 실행 가능한 독립형 `.py` 스크립트로 변환하여 헤드리스 환경에서 실행할 수 있게 한다 [34, 36, 37]. + +### 4. API 기반 자동화 및 배포 +- **서버리스 플랫폼:** Replicate나 Mystic 같은 서비스는 API JSON 블롭을 입력받아 클라우드 GPU에서 실행하고 결과를 반환하는 엔드포인트를 제공한다 [9, 38-40]. +- **의존성 관리:** JSON 로드 시 누락된 커스텀 노드는 '빨간 박스'로 표시되며, `ComfyUI-Manager`를 통해 자동으로 식별 및 설치할 수 있다 [41-43]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **포맷 호환성 문제:** 표준 저장 방식으로 생성된 JSON은 API 엔드포인트에서 오류를 발생시키므로 반드시 API 포맷으로의 변환이 필요하다 [12]. +- **메타데이터 손실:** 소셜 미디어나 이미지 편집기(GIMP 등)를 통해 이미지를 전송 또는 수정할 경우 워크플로우 메타데이터가 삭제될 수 있다는 경고가 반복적으로 확인된다 [16, 26, 44, 45]. +- **노드 ID 변동성:** 워크플로우를 UI에서 수정하면 노드 ID가 변경될 수 있어, 하드코딩된 Python 스크립트가 파손될 위험이 존재한다 [19, 34]. 이에 대한 해결책으로 노드 제목 기반 매핑이 권장된다 [34, 35]. + +## 🛠️ 적용 사례 (Applied in summary) +- **서버 측 변환 엔드포인트:** `comfyui-workflow-to-api-converter-endpoint`는 클라이언트 측의 자바스크립트 로직을 파이썬으로 변환하여 서버에서 일반 JSON을 API JSON으로 실시간 변환하는 `/workflow/convert` 엔드포인트를 구현했다 [12, 46, 47]. +- **독립 실행형 스크립트 변환:** `pydn/ComfyUI-to-Python-Extension` 프로젝트는 `Save As Script` 기능을 통해 워크플로우를 `.py` 파일로 다운로드하여 자동화된 실행 환경을 구축했다 [37, 48]. +- **매개변수 스케줄링:** `comfy_api_simplified` 라이브러리는 수백 개의 이미지를 야간에 생성하기 위해 여러 프롬프트와 매개변수를 반복 실행하는 예제 코드를 제공한다 [35, 49]. +- **배너 광고 자동 생성:** ComfyUI API를 Python과 연동하여 입력 이미지와 텍스트를 변경하며 대량의 광고 소재를 생성하는 실제 사례가 보고되었다 [50]. +- **Mystic 파이프라인 배포:** `pipeline.yaml`과 `new_pipeline.py`를 사용하여 텍스트-비디오 워크플로우를 서버리스 엔드포인트로 배포하는 구조가 상세히 기술되었다 [51-53]. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** 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. \ No newline at end of file diff --git a/10_Wiki/Comfyui/ComfyUI Custom Scripts.md b/10_Wiki/Comfyui/ComfyUI Custom Scripts.md new file mode 100644 index 00000000..d0483e05 --- /dev/null +++ b/10_Wiki/Comfyui/ComfyUI Custom Scripts.md @@ -0,0 +1,67 @@ +--- +id: comfyui-custom-scripts +title: "ComfyUI Custom Scripts" +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: ["ComfyUI root directory"] +github_commit: "" +--- + +# [[ComfyUI Custom Scripts]] + +## 🎯 한 줄 통찰 (One-line insight) +ComfyUI의 기본 저장 및 로드 기능을 확장하여 워크플로 관리의 효율성을 극대화하고, 노드 그래프를 시각적 파일로 변환하여 공유 편의성을 높이는 통합 UI 강화 도구 세트 [1, 2]. + +## 🧠 핵심 개념 (Core concepts) +- **워크플로 관리 최적화:** 저장(Save) 및 불러오기(Load) 버튼 아래에 드롭다운 메뉴를 생성하여 특정 루트 디렉토리의 워크플로에 즉시 액세스할 수 있도록 지원함 [1, 3]. +- **시각적 내보내기 (Visual Export):** 워크플로를 표준 JSON 형식 외에도 PNG 또는 SVG 파일로 내보낼 수 있어 소셜 미디어나 문서화에 용이한 시각적 자료를 생성함 [2, 3]. +- **UI 기능성 강화:** 노드 자동 정렬, 그리드 스냅(Snap to grid), 노드 잠금 등 캔버스 작업의 정밀도와 속도를 높이는 편의 기능을 제공함 [2]. +- **입력 지능화:** 프롬프트 작성 시 임베딩(Embedding) 리스트를 활용한 자동 완성 기능을 제공하고, 위젯 값 입력 시 수학적 표현식을 사용할 수 있게 함 [2]. + +## 🧩 추출된 패턴 (Extracted patterns) +- **네이티브 UI 확장 패턴:** 기존 ComfyUI 제어 패널의 버튼 구조를 변경하지 않고 하단에 드롭다운 레이어를 추가하여 사용자 경험의 연속성을 유지하면서 기능을 확장함 [1]. +- **워크플로 시각화 전략:** 복잡한 노드 연결망을 이미지 파일(PNG/SVG)로 직렬화하여 JSON 파일 없이도 워크플로의 전체 구조를 한눈에 파악할 수 있도록 함 [3]. +- **정보 밀도 향상 패턴:** 체크포인트, LoRA, 임베딩에 대한 추가 정보를 화면에 표시하여 사용자가 모델의 세부 사항을 즉각적으로 인지하도록 설계됨 [2]. + +## 📖 세부 내용 (Details) +ComfyUI Custom Scripts는 일반적인 워크플로 제작 방식을 넘어 파워 유저를 위한 정교한 제어 기능을 제공하는 커스텀 노드 패키지이다 [1]. + +**1. 워크플로 저장 및 관리의 고도화** +이 스크립트는 ComfyUI 패널의 저장 및 로드 버튼 아래에 원활한 드롭다운 메뉴를 생성한다 [1]. 이 메뉴는 ComfyUI 내의 특정 루트 디렉토리를 참조하며, 사용자가 복잡한 파일 탐색기 과정 없이 사전에 정의된 경로에서 워크플로를 빠르게 교체하거나 저장할 수 있게 한다 [1, 3]. 이는 업데이트로 인해 워크플로가 덮어씌워지는 것을 방지하는 안전한 백업 환경을 구축하는 데 기여한다 [3]. + +**2. 시각적 워크플로 공유 기술** +기존의 JSON 기반 공유 방식은 텍스트 데이터에 의존하지만, Custom Scripts는 워크플로 자체를 PNG 또는 SVG 형식으로 내보내는 기능을 제공한다 [2, 3]. 이는 소셜 미디어나 Discord와 같은 플랫폼에서 워크플로의 시각적 형태를 즉시 공유할 수 있게 하며, 동시에 시각적 문서화 도구로 활용된다 [3]. 특히 PNG 파일로 저장할 경우 워크플로 데이터를 포함할 수 있는 옵션이 포함된다 [2]. + +**3. 캔버스 작업 편의성 및 데이터 처리** +- **노드 배치:** 노드 자동 정렬 기능과 그리드 스냅 기능을 통해 엉킨 노드 그래프를 정돈하고 구조화된 레이아웃을 유지할 수 있다 [2]. +- **데이터 활용:** 프롬프트 입력창에서 자동 완성을 지원하여 임베딩 선택 시 오류를 줄이고, 레이턴트(Latent) 생성 등 위젯 값 입력 시 수학적 수식을 직접 사용하여 동적인 값 계산이 가능하다 [2]. +- **상태 제어:** 노드 잠금(Lock) 기능을 통해 실수로 배치를 변경하는 것을 방지하며, 이미지 피드를 UI 상에서 직접 확인할 수 있는 향상된 뷰어를 제공한다 [2]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **정보의 상호 보완:** 소스 데이터는 이를 "UI 향상 도구"이자 "인기 있는 커스텀 노드"로 정의하고 있다 [2, 4]. +- **JSON과의 관계:** 표준 저장 방식인 JSON 파일과 대조적으로, 이 스크립트는 PNG/SVG와 같은 시각적 내보내기를 강조하지만 이것이 JSON 형식을 완전히 대체하는 것이 아니라 보완적인 공유 수단으로 작동함을 시사한다 [3]. + +## 🛠️ 적용 사례 (Applied in summary) +- **ComfyUI 루트 디렉토리 관리:** 워크플로를 저장하고 로드할 때 참조되는 기본 경로 설정 로직에 적용되어 있다 [1, 3]. +- **클라우드 플랫폼 지원:** Replicate와 같은 환경에서 인기 있는 커스텀 노드 리스트로 분류되어 기본적으로 지원되거나 권장되는 도구로 포함되어 있다 [4, 5]. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** 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. \ No newline at end of file diff --git a/10_Wiki/Comfyui/Dev mode Options.md b/10_Wiki/Comfyui/Dev mode Options.md new file mode 100644 index 00000000..2f2c5012 --- /dev/null +++ b/10_Wiki/Comfyui/Dev mode Options.md @@ -0,0 +1,63 @@ +--- +id: dev-mode-options +title: "Dev mode Options" +category: "10_Wiki/Topics" +status: "draft" +verification_status: "conceptual" +canonical_id: "" +aliases: ["개발자 모드", "Developer Mode"] +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: ["Replicate fofr/any-comfyui-workflow", "Mystic pipeline-ai", "ComfyUI Workflow Converter Endpoint", "ComfyUI-to-Python-Extension"] +github_commit: "" +--- + +# [[Dev mode Options]] + +## 🎯 한 줄 통찰 (One-line insight) +Dev mode Options는 시각적 편집 중심의 워크플로우를 프로그래밍 방식의 실행이 가능한 최적화된 API 포맷으로 변환 및 추출하기 위해 반드시 거쳐야 하는 ComfyUI의 핵심 설정 관문이다. [1-3] + +## 🧠 핵심 개념 (Core concepts) +- **API 포맷 직렬화 (Serialization)**: 프론트엔드의 시각적 메타데이터(노드 위치, 크기 등)를 제거하고 백엔드 엔진이 즉시 실행할 수 있는 평탄화된 실행 그래프(Flattened Execution Graph)를 생성한다. [1, 4] +- **기능 잠금 해제 (UI Unlocking)**: 설정 활성화 시 ComfyUI 메뉴에 기존에 보이지 않던 'Save (API Format)' 버튼을 추가하여 사용자가 직접 API용 JSON을 내보낼 수 있게 한다. [5-7] +- **데이터 흐름 최적화**: 링크를 별도의 객체가 아닌 노드 입력 내의 직접적인 참조(Origin node ID 및 Slot index)로 포함시켜 데이터 처리 효율을 극대화한다. [1, 8] +- **프로그래밍 통합의 필수 조건**: 외부 애플리케이션, 원격 서버, 또는 헤드리스(Headless) 환경에서 워크플로우를 실행하기 위한 전제 조건이다. [2, 9] + +## 🧩 추출된 패턴 (Extracted patterns) +- **활성화 메커니즘**: `톱니바퀴 아이콘(Settings)` -> `Enable Dev mode Options 체크박스 활성화` -> `메뉴/패널에 새로운 내보내기 옵션 노출` 순의 정형화된 패턴을 따른다. [2, 3, 7] +- **포맷의 이원화 패턴**: 인간의 가독성과 시각적 편집을 위한 `Frontend JSON(workflow.json)`과 기계적 실행만을 목적으로 하는 `Backend/API JSON(workflow_api.json)`으로 워크플로우 포맷을 분리하여 관리한다. [1, 10] + +## 📖 세부 내용 (Details) +- **기능적 역할**: 기본 ComfyUI 저장 방식은 Litegraph 표준을 따르며 캔버스 레이아웃 정보를 포함하지만, 이는 `/prompt` 엔드포인트에 직접 전달할 경우 오류를 발생시킨다. [11] Dev mode는 백엔드가 요구하는 특정 노드 클래스와 매개변수 리스트로 구성된 간결한 JSON 페이로드를 생성할 수 있게 한다. [2, 5] +- **접근 경로**: ComfyUI 설정 메뉴(Settings) 내에서 'Enable Dev mode Options'를 선택하면 활성화된다. [3, 7, 12] 활성화 후에는 메뉴의 'Export' 섹션 또는 제어 패널 상단에 'Save (API Format)'라는 명칭의 새로운 버튼이 등장한다. [5, 7] +- **API JSON의 특징**: 시각적 메타데이터가 제거되어 파일 용량이 작고 효율적이다. [1, 10] 노드 간의 링크 정보가 노드의 `inputs` 필드 내에 직접 배열 형태(예: `[node_id, slot_index]`)로 포함되는 것이 기술적 차별점이다. [8] +- **주요 활용 사례**: + - **Replicate/Mystic**: 서버리스 클라우드 환경에서 워크플로우를 API 엔드포인트로 배포할 때 필수적으로 요구된다. [3, 6, 7, 13] + - **Python 스크립트 실행**: 워크플로우를 독립적인 파이썬 스크립트로 변환하거나 API를 통해 동적으로 매개변수를 수정하여 실행할 때 기반 데이터로 사용된다. [9, 14, 15] + - **자동화 도구**: LLM을 이용한 워크플로우 자동 생성이나 대량의 이미지 처리 파이프라인 구축 시 'Dev mode'를 통해 추출된 스키마가 참조 모델이 된다. [16, 17] + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **가역성 문제**: 일반적인 'Save'로 생성된 JSON은 ComfyUI에 드래그 앤 드롭 시 레이아웃이 복구되지만, Dev mode를 통해 추출된 'API Format' JSON은 레이아웃 정보가 없으므로 다시 UI로 불러왔을 때 시각적 구조가 파괴된 '골격(Skeleton)' 상태로 나타난다. [18] +- **도구별 요구사항**: 대부분의 튜토리얼은 API 실행을 위해 Dev mode 활성화를 권장하지만, 일부 커스텀 확장 기능(예: ComfyUI-to-Python-Extension)은 일반 저장 파일에서도 스크립트 변환을 지원하는 별도의 기능을 UI에 추가하기도 한다. [19, 20] + +## 🛠️ 적용 사례 (Applied in summary) +- **Replicate 배포 프로세스**: `settings` -> `Enable Dev mode Options` -> `Save (API format)` 순서로 JSON을 획득하여 `fofr/any-comfyui-workflow` 모델의 `workflow_json` 입력값으로 사용함. [3, 6] +- **Mystic 서버리스 통합**: 워크플로우를 Mystic 파이프라인으로 배포하기 전, GUI의 설정 메뉴에서 Dev mode를 켜고 `.json` 파일을 API 포맷으로 내보내는 과정이 필수 단계로 포함됨. [7] +- **SethRobinson의 Workflow Converter**: API 포맷 변환 시 클라이언트 측 자바스크립트 로직을 서버 측 파이썬으로 구현하여, 개발자가 매번 수동으로 Dev mode를 켜고 API 포맷을 저장해야 하는 번거로움을 해결함. [11] +- **ComfyUI-to-Python-Extension**: CLI 사용 시 API 포맷 워크플로우를 입력값으로 받아 실행 가능한 파이썬 코드를 생성함. [21] + +## ✅ 검증 상태 및 신뢰도 +- **상태:** draft +- **검증 단계:** conceptual (실제 적용 사례 다수 발견으로 검증됨) +- **출처 신뢰도:** B (공식 문서 및 주요 개발자 도구의 가이드라인에 근거함) +- **중복 검사 결과:** 신규 생성 (New discovery) + +## 📝 변경 이력 (Change history) +- 2026-05-20: Initial draft generated via Datacollector_MAC P-Reinforce engine. \ No newline at end of file diff --git a/10_Wiki/Comfyui/Draft-07 Specification.md b/10_Wiki/Comfyui/Draft-07 Specification.md new file mode 100644 index 00000000..f9952e99 --- /dev/null +++ b/10_Wiki/Comfyui/Draft-07 Specification.md @@ -0,0 +1,70 @@ +--- +id: draft-07-specification +title: "Draft-07 Specification" +category: "10_Wiki/Topics" +status: "draft" +verification_status: "conceptual" +canonical_id: "" +aliases: ["JSON Schema v1.0"] +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: ["ComfyUI Workflow v1.0", "WorkflowExecutor", "comfyui-workflow-to-api-converter-endpoint"] +github_commit: "" +--- + +# [[Draft-07 Specification]] + +## 🎯 한 줄 통찰 (One-line insight) +Draft-07 Specification은 ComfyUI Workflow JSON v1.0의 구조적 무결성을 정의하는 공식 표준으로, 노드 속성과 링크 연결성을 규제하여 워크플로의 이식성과 실행 가능성을 보장한다 [1, 2]. + +## 🧠 핵심 개념 (Core concepts) +- **JSON Schema v1.0:** Draft-07 사양을 따르는 최신 ComfyUI 워크플로 표준으로, 실행 엔진이 인식하기 위한 기술적 제약 조건을 정의한다 [1, 2]. +- **Mandatory Node Properties:** 노드 객체가 포함해야 하는 필수 속성(id, type, pos, size, order, mode)을 통해 그래프의 구조를 명시한다 [1]. +- **Slot Connectivity Indexing:** 링크 및 슬롯의 원본/대상 ID와 인덱스를 지정하여 데이터 흐름의 정확성을 확보한다 [3]. +- **Serialization Validation:** 워크플로가 직렬화될 때 이 사양을 준수해야만 ComfyUI 백엔드에서 유효한 프롬프트로 처리될 수 있다 [1, 4]. + +## 🧩 추출된 패턴 (Extracted patterns) +- **Bifurcation Compliance:** 시각적 메타데이터를 포함하는 Frontend 포맷(`workflow.json`)과 실행 최적화된 Backend 포맷(`workflow_api.json`) 모두가 동일한 Draft-07 기반의 핵심 논리 구조를 공유한다 [5, 6]. +- **Dependency Inversion Traversal:** 엔진이 출력 노드에서 시작하여 사양에 정의된 링크를 역추적(backward traversal)하여 필요한 노드만 실행하는 구조적 패턴을 보인다 [7]. +- **Metadata Redundancy:** PNG 파일의 메타데이터 청크(tEXt/zTXt)에 두 가지 포맷을 동시에 저장하여 표준 준수와 사용자 편의성을 동시에 유지한다 [8]. + +## 📖 세부 내용 (Details) +ComfyUI 워크플로의 구조적 무결성은 **Draft-07 사양을 따르는 공식 JSON Schema v1.0**에 의해 검증된다 [1, 2]. 이 사양은 워크플로가 단순한 시각적 도표를 넘어 실행 가능한 프로그램으로서 작동하기 위한 기술적 제약 사항을 명시한다. + +**1. 노드 객체의 필수 속성 규격 [1]:** +- **id:** 그래프 탐색을 위한 고유 식별자 (Integer 또는 String). +- **type:** 노드 레지스트리의 클래스 이름과 매핑되는 필수 문자열. +- **pos / size:** UI 렌더링을 위한 캔버스 좌표 및 크기 정보. +- **order:** 엔진이 참조하는 권장 실행 또는 렌더링 순서. +- **mode:** 노드의 활성화, 바이패스(Bypass) 등의 운영 상태. + +**2. 링크 및 슬롯 연결 사양 [3]:** +연결성은 노드 내부의 `inputs` 및 `outputs` 배열을 통해 정의된다. `inputs` 속성의 `link` 프로퍼티는 들어오는 와이어의 고유 ID를 식별하며, `outputs`의 `links` 배열은 하나의 출력이 여러 노드로 전달될 수 있음을 나타낸다. 특히 VAE Loader와 같이 다중 출력 슬롯을 가진 노드의 경우, **정확한 슬롯 인덱싱**이 사양 준수의 핵심이다 [3]. + +**3. 유효성 검사 및 실행 [4]:** +워크플로 JSON이 생성되면 ComfyUI의 `validate_prompt` 함수는 이 사양을 기준으로 데이터 구조를 검증한다. 검증을 통과한 JSON은 `DynamicPrompt`로 구성되어 `ExecutionList`로 변환되며, 이 과정에서 사양에 어긋나는 연결이나 속성이 발견되면 실행이 거부된다 [4]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **버전 업데이트:** 이전의 0.4 버전 사양에서 최신 1.0(Draft-07 기반)으로 표준이 업데이트되었으며, 이는 공식 문서에서 권장되는 최신 규격이다 [2, 9]. +- **포맷 간 차이:** API 포맷은 효율성을 위해 UI 관련 메타데이터를 삭제하지만, 핵심적인 노드 클래스 매핑과 입력 구조는 여전히 Draft-07의 논리적 범주 내에 있다 [5, 6]. + +## 🛠️ 적용 사례 (Applied in summary) +- **ComfyUI Workflow v1.0:** Draft-07 사양을 공식적으로 채택한 최신 워크플로 직렬화 규격 [1, 2]. +- **WorkflowExecutor.execute():** 독립 실행 스크립트에서 `validate_prompt`를 호출하여 워크플로 JSON이 사양을 준수하는지 검증하는 로직이 적용됨 [4]. +- **comfyui-workflow-to-api-converter-endpoint:** 비 API 포맷을 API 포맷으로 변환할 때 ComfyUI의 노드 레지스트리와 사양을 참조하여 유효한 JSON을 생성함 [10, 11]. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** 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. \ No newline at end of file diff --git a/10_Wiki/Comfyui/Executing ComfyUI Workflows as Standalone Scripts.md b/10_Wiki/Comfyui/Executing ComfyUI Workflows as Standalone Scripts.md new file mode 100644 index 00000000..ae41628a --- /dev/null +++ b/10_Wiki/Comfyui/Executing ComfyUI Workflows as Standalone Scripts.md @@ -0,0 +1,66 @@ +--- +id: executing-comfyui-workflows-as-standalone-scripts +title: "Executing ComfyUI Workflows as Standalone Scripts" +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: ["pydn/ComfyUI-to-Python-Extension", "WorkflowExecutor", "ExecutionCache", "new_pipeline.py", "bc85382"] +github_commit: "bc85382" +--- + +# [[Executing ComfyUI Workflows as Standalone Scripts]] + +## 🎯 한 줄 통찰 (One-line insight) +ComfyUI 워크플로우를 시각적 인터페이스 없이 실행 가능한 독립형 스크립트로 변환하는 프로세스는 **API 형식의 JSON 직렬화와 Python 환경의 실행 오케스트레이션**을 통해 고도의 자동화와 헤드리스(Headless) 환경 배포를 가능하게 한다 [1-4]. + +## 🧠 핵심 개념 (Core concepts) +- **API JSON Format (Backend JSON):** 시각적 메타데이터를 제거하고 노드 입력과 연결 정보만을 남긴 실행 최적화 그래프 파일로, 독립형 스크립트 실행의 기초가 된다 [2, 5, 6]. +- **WorkflowExecutor:** 워크플로우 실행 환경을 초기화하고, 노드 유효성 검사(`validate_prompt`) 및 실행 목록(`ExecutionList`) 구축을 담당하는 오케스트레이션 객체이다 [7]. +- **ExecutionCache:** 노드 출력, UI 데이터 및 객체 인스턴스를 캐싱하여 중복 계산을 줄이고 실행 성능을 최적화하는 통합 관리 클래스이다 [8]. +- **Headless Processing:** 웹 브라우저나 GUI 없이 서버 백엔드 또는 독립형 스크립트 형태로 워크플로우를 구동하여 실행 오버헤드를 줄이는 방식이다 [4]. + +## 🧩 추출된 패턴 (Extracted patterns) +- **Serialization Bifurcation (직렬화 이분화):** 시각적 편집을 위한 Frontend JSON(`workflow.json`)과 자동화 실행을 위한 Backend API JSON(`workflow_api.json`)을 분리하여 관리하는 설계 패턴이 발견된다 [2, 5, 6, 9]. +- **Execution Model Inversion (실행 모델 역전):** 모든 노드를 실행하는 대신 'Save Image'와 같은 출력 노드에서 역추적하여 필요한 의존성만 식별하고 실행하는 효율적 패턴을 사용한다 [10]. +- **Python-to-Script Conversion:** `.json` 워크플로우를 `.py` 코드로 직접 변환하여 별도의 JSON 처리 없이 Python 런타임에서 즉시 실행 가능하게 하는 추상화 패턴이 존재한다 [3, 11]. + +## 📖 세부 내용 (Details) +ComfyUI 워크플로우를 독립형 스크립트로 실행하기 위해서는 먼저 **'Dev mode'**를 활성화하여 **API 형식의 JSON**을 추출해야 한다 [6, 12, 13]. 표준 Frontend JSON은 노드 위치나 그룹화 등 시각적 정보를 포함하지만, API JSON은 이를 제거하고 노드 간의 링크를 입력 필드 내의 직접 참조(`[origin_id, output_slot]`)로 포함하여 백엔드 엔진이 즉시 해석할 수 있도록 최적화되어 있다 [2, 14, 15]. + +독립형 실행의 핵심 구성 요소인 **WorkflowExecutor**는 `DynamicPrompt`를 구성하고 이를 노드 단위의 실행 목록인 `ExecutionList`로 변환한다 [7]. 각 노드는 `_execute_node` 메서드를 통해 순차적으로 실행되며, 이때 `get_input_data`와 `get_output_data` 함수가 사용되어 데이터 흐름을 처리한다 [8, 16]. **ExecutionCache**는 `HierarchicalCache`를 기반으로 구축되어 이전 실행 결과를 보존함으로써 연속적인 실행 시 성능을 비약적으로 향상시킨다 [8]. + +더 고도화된 방식으로는 **ComfyUI-to-Python-Extension**을 사용하여 워크플로우 자체를 실행 가능한 `.py` 파일로 변환하는 것이 가능하다 [3, 11]. 이 방식은 생성된 스크립트 내에 노드 실행 로직이 포함되어 있어 별도의 프롬프트 서버 호출 없이도 단독 실행(Single-shot runner)이 가능하며, 메모리 관리 플래그(`--highvram` 등)를 스크립트 인자로 전달받아 제어할 수 있다 [17, 18]. + +생산 환경에서는 **Mystic**이나 **Replicate**와 같은 플랫폼을 통해 이러한 스크립트를 서버리스 엔드포인트로 배포할 수 있으며, 이때 Python SDK를 사용하여 워크플로우 JSON 내의 시드(seed)나 프롬프트 값을 프로그래밍 방식으로 수정하여 실행한다 [19-21]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **워크플로우 유연성 대 변환 복잡성:** 일부 연구에서는 `ComfyUI-to-Python-Extension`이 중간 변환 단계를 요구하여 **동적(Dynamic) 워크플로우** 실행에 어려움이 있을 수 있다고 지적하며, 대신 API JSON을 직접 로드하는 방식을 권장하기도 한다 [4]. +- **JSON 버전 호환성:** ComfyUI는 빈번하게 업데이트되므로 구버전의 JSON 파일이 최신 버전의 실행 엔진에서 정상 작동하지 않을 수 있다는 경고가 명시되어 있다 [22, 23]. + +## 🛠️ 적용 사례 (Applied in summary) +- **pydn/ComfyUI-to-Python-Extension:** 워크플로우를 독립형 `.py` 스크립트로 자동 번환하는 도구로 구현되었다 [3, 24]. +- **WorkflowExecutor & ExecutionCache:** SDXL Turbo 워크플로우를 독립형 스크립트로 실행하기 위한 핵심 아키텍처로 제안되었으며 GitHub Gist를 통해 소스 코드가 공유되었다 [7, 8, 25]. +- **Mystic (new_pipeline.py):** ComfyUI 서버를 시작하고 커스텀 워크플로우를 로드하여 입력 프롬프트를 주입하는 배포용 Python 템플릿 파일이다 [20, 26]. +- **GitHub Commit (bc85382):** `comfyui-workflow-to-api-converter-endpoint` 프로젝트에서 콤보 위젯의 대소문자 검증 문제를 수정한 커밋 기록이 발견된다 [27]. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** 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. \ No newline at end of file diff --git a/10_Wiki/Comfyui/Frontend Format.md b/10_Wiki/Comfyui/Frontend Format.md new file mode 100644 index 00000000..085eb61a --- /dev/null +++ b/10_Wiki/Comfyui/Frontend Format.md @@ -0,0 +1,61 @@ +--- +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. \ No newline at end of file diff --git a/10_Wiki/Comfyui/Frontend JSON (workflow.json).md b/10_Wiki/Comfyui/Frontend JSON (workflow.json).md new file mode 100644 index 00000000..3cbd3eef --- /dev/null +++ b/10_Wiki/Comfyui/Frontend JSON (workflow.json).md @@ -0,0 +1,76 @@ +--- +id: frontend-json-(workflow.json) +title: "Frontend JSON (workflow.json)" +category: "10_Wiki/Topics" +status: "draft" +verification_status: "conceptual" +canonical_id: "" +aliases: ["workflow.json", "UI Format JSON"] +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: ["Mystic pipeline root directory", "RunComfy FLUX workflow example (flux_workflow.json)", "ComfyUI Official RFCs repository", "ComfyUI Output folder (metadata embedding)"] +github_commit: "" +--- + +# [[Frontend JSON (workflow.json)]] + +## 🎯 한 줄 통찰 (One-line insight) +ComfyUI의 시각적 작업 공간 전체(노드 좌표, 그룹, 링크 구조)를 Litegraph 표준에 따라 보존하여 사용자의 편집, 재구성 및 커뮤니티 협업을 가능하게 하는 종합적인 시각적 설계도이다. [1-3] + +## 🧠 핵심 개념 (Core concepts) +- **Litegraph 표준 기반 시각적 메타데이터**: 노드의 캔버스 좌표(`pos`), 크기(`size`), 색상, 그룹화 구조 및 노드 확장/축소 상태와 같은 UI 전용 정보를 포함한다. [1, 2, 4, 5] +- **명시적 링크 배열 (Explicit Link Representation)**: 노드 간의 연결을 별도의 `links` 배열 내 개별 객체로 관리하며, 각 링크는 고유 ID를 통해 원본 노드와 대상 노드의 슬롯을 정의한다. [1, 2, 6, 7] +- **인간 중심의 교환 포맷**: 시각적 편집과 공유를 목적으로 설계되었으며, 모델 가중치와 독립적으로 워크플로우 로직을 작고 가독성 있는 텍스트 파일로 아카이브할 수 있게 한다. [6, 8, 9] + +## 🧩 추출된 패턴 (Extracted patterns) +- **결과물 내 로직 자가 수용 패턴 (Metadata Embedding)**: 생성된 이미지(PNG/WebP)의 `tEXt` 또는 `zTXt` 청크에 Frontend JSON을 주입하여, 이미지 자체가 해당 이미지를 만든 로직을 운반하는 컨테이너 역할을 수행하게 한다. [3, 10, 11] +- **비가역적 정보 손실 패턴 (Frontend to API Transformation)**: Frontend JSON은 실행 최적화된 API JSON으로 변환 가능하지만, 역변환 시 시각적 레이아웃 정보는 복구할 수 없는 비가역적 관계를 가진다. [12, 13] +- **의존성 탐지 및 해결 휴리스틱**: 외부 JSON 로드 시 `class_type`을 로컬 레지스트리와 대조하여 누락된 커스텀 노드를 식별하고(Red Nodes), ComfyUI-Manager를 통해 이를 일괄 설치하는 복구 패턴이 존재한다. [14-16] + +## 📖 세부 내용 (Details) +Frontend JSON(주로 `workflow.json`으로 명명됨)은 ComfyUI 웹 인터페이스의 상태를 저장하는 표준 포맷이다. [1, 17] 이 파일은 사용자가 구성한 그래프의 시각적 배치와 모든 매개변수를 캡처하는 포괄적인 청사진 역할을 한다. [8] + +### 1. 기술적 구조 및 속성 +- **노드 배열 (`nodes`)**: 워크플로우를 구성하는 개별 객체들의 리스트이다. [5] + - `id`: 그래프 탐색을 위한 고유 식별자(숫자 문자열)이다. [4, 18] + - `type`: 노드 레지스트리의 클래스 이름과 매핑된다. [4, 5] + - `pos` & `size`: 캔버스 렌더링을 위한 [x, y] 좌표 및 치수이다. [4, 5] + - `widgets_values`: 슬라이더, 텍스트 박스 등 사용자 입력 값을 저장하는 배열이다. [4, 5] +- **링크 시스템 (`links`)**: 별도의 최상위 배열에서 관리되며, `origin_id`, `origin_slot`, `target_id`, `target_slot`을 정의하여 데이터 흐름을 명시한다. [7] + +### 2. 생성 및 로드 방법 +- **수동 내보내기**: 제어판 메뉴의 'Export' 옵션이나 `Ctrl + S` (macOS는 `Cmd + S`) 단축키를 통해 현재 그래프 상태를 JSON으로 다운로드할 수 있다. [5, 19, 20] +- **이미지 기반 추출**: ComfyUI에서 생성된 PNG 파일을 캔버스에 드래그 앤 드롭하면 내장된 메타데이터를 분석하여 워크플로우가 즉시 재구성된다. [19, 21-23] `exiftool`과 같은 CLI 도구를 사용하여 바이너리 태그에서 직접 추출할 수도 있다. [24, 25] +- **자동 생성**: 최근에는 자연어 설명을 LLM(Qwen2.5 등)이 해석하여 논리적 그래프 구조를 합성하고, 이를 실행 가능한 JSON으로 컴파일하는 기술이 도입되고 있다. [26-28] + +### 3. API JSON(workflow_api.json)과의 차이 +- **목적**: Frontend JSON은 시각적 편집용이며, API JSON은 서버 측 실행 및 프로그래밍 방식의 호출에 최적화되어 있다. [1, 6, 9, 29] +- **메타데이터**: API 포맷은 노드 위치, 크기, 그룹 등 UI 관련 데이터를 제거하여 파일 크기를 압축한다. [1, 30] +- **연결 방식**: API 포맷은 링크를 별도 객체가 아닌 노드 입력 내의 직접적인 참조(Origin 노드 ID 및 슬롯)로 임베딩한다. [1, 6, 29] + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **메타데이터 휘발성**: 생성된 이미지 내의 JSON 데이터는 일반적인 이미지 편집기, 소셜 미디어 플랫폼, 또는 파일 압축 유틸리티를 거칠 때 삭제될 위험이 크다. [3, 11, 21] +- **버전 호환성 문제**: ComfyUI의 빈번한 업데이트로 인해 구버전의 JSON 파일이 최신 버전에서 정상적으로 작동하지 않을 수 있으며, 특히 커스텀 노드 클래스 이름의 변경이 주요 원인이 된다. [19, 31] +- **실행 제한**: Frontend JSON을 API 엔드포인트(`/prompt`)에 직접 전달하면 실행 그래프가 아니라는 이유로 오류가 발생하므로, 반드시 'Dev mode'를 활성화하여 API 포맷으로 변환하거나 서버 측 변환기를 거쳐야 한다. [12, 32] + +## 🛠️ 적용 사례 (Applied in summary) +- **Mystic 파이프라인**: 서버리스 엔드포인트 배포 시 메인 디렉토리에 `workflow.json`을 포함하여 관리한다. [33] +- **RunComfy 플랫폼**: FLUX 워크플로우 예시로 `flux_workflow.json` 파일이 제공되며, 이는 전체 UI 상태를 포함하는 표준 Frontend 포맷이다. [9, 30] +- **추출 도구 활용**: `exiftool -b -workflow input.png > workflow.json` 명령어를 통해 이미지 메타데이터에서 Frontend JSON을 물리적으로 분리하는 방식이 실무에서 사용된다. [24, 25] +- **ComfyUI-to-Python-Extension**: Frontend JSON의 시각적 메타데이터를 포함한 상태로 Python 스크립트로 변환하여 드래그 앤 드롭 재가져오기 기능을 유지한다. [34] + +## ✅ 검증 상태 및 신뢰도 +- **상태:** 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. \ No newline at end of file diff --git a/10_Wiki/Comfyui/Large Language Models (LLM).md b/10_Wiki/Comfyui/Large Language Models (LLM).md new file mode 100644 index 00000000..250efd9c --- /dev/null +++ b/10_Wiki/Comfyui/Large Language Models (LLM).md @@ -0,0 +1,61 @@ +--- +id: large-language-models-(llm) +title: "Large Language Models (LLM)" +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: ["ComfyUI-WorkflowGenerator", "ComfyGPT Research"] +github_commit: "82df278" +--- + +# [[Large Language Models (LLM)]] + +## 🎯 한 줄 통찰 (One-line insight) +LLM은 자연어 의도를 실행 가능한 ComfyUI 노드 그래프로 변환함으로써 '시각적 프로그래밍'을 '대화형 프로그래밍'으로 진화시키는 핵심 가교 역할을 수행한다 [1, 2]. + +## 🧠 핵심 개념 (Core concepts) +1. **자연어 기반 워크플로우 합성 (Natural Language Synthesis):** 사용자의 텍스트 설명을 해석하여 복잡한 노드 연결 구조를 자동으로 설계하는 기술 [3, 4]. +2. **멀티 스테이지 파이프라인 (Multi-stage Pipeline):** 생성(Generator), 검증(Validator), 빌드(Builder)의 세 단계를 거쳐 논리적 설계를 물리적 실행 파일로 변환하는 구조 [5]. +3. **미세 조정된 도메인 특화 모델 (Fine-tuned Specialized Models):** ComfyUI의 노드 레지스트리와 스키마 규격에 최적화된 특정 파라미터 규모의 모델(예: Qwen2.5-14B) [3, 6]. +4. **시맨틱 노드 검증 (Semantic Node Validation):** LLM이 생성한 노드 명칭을 실제 설치된 노드 라이브러리와 대조하여 수정하는 시맨틱 검색 및 임베딩 기술 [5, 7]. + +## 🧩 추출된 패턴 (Extracted patterns) +- **논리-물리 분리 설계 패턴:** LLM이 먼저 추상적인 그래프 논리(Logical Graph)를 생성한 후, 이를 로컬 환경의 실제 노드 클래스와 매핑하여 검증하는 이단계 접근 방식을 취함 [1, 5]. +- **바이트코드로서의 JSON:** JSON 파일을 단순한 저장 포맷이 아닌, 인간의 의도와 AI 실행 엔진 사이의 중간 언어(Bytecode)로 취급함 [1]. +- **RAG 기반 지식 확장 패턴 (지향점):** 정적 모델의 한계를 극복하기 위해 실시간 노드 데이터베이스를 쿼리하여 새로운 노드 지식을 습득하는 구조로의 발전 경향 [8]. + +## 📖 세부 내용 (Details) +LLM을 활용한 ComfyUI 워크플로우 생성은 기술적 지식이 부족한 사용자도 복잡한 생성 AI 파이프라인을 구축할 수 있게 돕는다. 소스에 따르면, **ComfyUI-WorkflowGenerator**는 Qwen2.5-14B 모델을 미세 조정하여 자연어 지시(예: "Depth ControlNet을 추가해줘")를 실행 가능한 JSON 구조로 변환한다 [3, 4, 6]. + +생성 프로세스는 세 가지 핵심 구성 요소로 운영된다. **Generator**는 LLM을 사용해 사용자의 프롬프트를 해석하고 논리적 그래프 구조를 생성하며, **NodeValidator**는 이 구조가 로컬 ComfyUI 환경의 실제 노드들과 호환되는지 확인하고 수정한다 [5, 7]. 마지막으로 **WorkflowBuilder**는 이를 최종적인 실행 가능 JSON 형식으로 컴파일한다 [5, 9]. + +성능 최적화를 위해 GGUF 형식으로 양자화된 모델이 사용되며, 시맨틱 검색에는 `sentence-transformers` 모델이 활용된다 [6, 10]. 현재 시스템은 학습 데이터 컷오프 이후에 출시된 커스텀 노드를 인식하지 못하는 '정적 모델'의 한계를 가지고 있으나, 향후 I/O 스키마(데이터 타입) 인식 및 소형 그래프 추론 모델(SLM)을 통한 개선이 논의되고 있다 [8, 11]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **정적 학습 vs 실시간 생태계:** LLM은 학습된 시점의 노드 정보에 고정(Frozen)되어 있는 반면, ComfyUI 생태계는 매일 새로운 노드가 추가되는 불일치가 발생함 [11]. 이를 해결하기 위해 단순 생성이 아닌 RAG(검색 증강 생성) 기반의 탐색 기술로의 전환이 필요함이 강조됨 [8]. +- **언어적 타당성 vs 실행적 유효성:** 현재 시스템은 언어적으로 그럴싸한 연결을 생성할 수 있으나, 실제 노드 간의 데이터 타입(LATENT, IMAGE 등)이 물리적으로 일치하는지 완벽히 보장하지 못하는 경우가 있어 향후 'I/O 스키마 인식' 에이전트의 도입이 요구됨 [8]. + +## 🛠️ 적용 사례 (Applied in summary) +- **ComfyUI-WorkflowGenerator:** Qwen2.5-14B를 기반으로 자연어 설명을 노드 그래프로 변환하는 실제 커스텀 노드 프로젝트 [4, 12]. +- **ComfyGPT Research:** "ComfyGPT: A Self-Optimizing Multi-Agent System for Comprehensive ComfyUI Workflow Generation" 논문에 기반한 자가 최적화 시스템 설계 [5]. +- **Update Node Catalog:** 로컬에 설치된 모든 노드(네이티브 및 커스텀)를 스캔하여 LLM이 참조할 수 있는 카탈로그 파일로 생성하는 구현체 [9]. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** 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. \ No newline at end of file diff --git a/10_Wiki/Comfyui/Load Image (Base64).md b/10_Wiki/Comfyui/Load Image (Base64).md new file mode 100644 index 00000000..5d74b766 --- /dev/null +++ b/10_Wiki/Comfyui/Load Image (Base64).md @@ -0,0 +1,57 @@ +--- +id: load-image-(base64) +title: "Load Image (Base64)" +category: "10_Wiki/Topics" +status: "draft" +verification_status: "conceptual" +canonical_id: "" +aliases: ["Base64 Image Loading", "Image-to-Base64 API Input"] +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: ["comfy_api_python.py"] +github_commit: "" +--- + +# [[Load Image (Base64)]] + +## 🎯 한 줄 통찰 (One-line insight) +API 기반 자동화 환경에서 별도의 파일 서버 저장 절차 없이 워크플로우 JSON 내에 이미지 데이터를 텍스트 형태로 직접 포함하여 전송하는 핵심 데이터 주입 기술 [1], [2]. + +## 🧠 핵심 개념 (Core concepts) +1. **데이터 임베딩 (Data Embedding):** 이미지 바이너리 데이터를 Base64 문자열로 변환하여 워크플로우 JSON의 입력 필드에 직접 삽입함 [2]. +2. **무저장소 아키텍처 (Stateless Storage):** 서버 측의 임시 파일 저장소에 이미지를 저장할 필요 없이 메모리 상에서 직접 워크플로우를 실행하게 함 [1]. +3. **자체 완결적 요청 (Self-contained Request):** 생성 로직(Workflow)과 원천 데이터(Image)를 하나의 JSON 페이로드에 통합하여 데이터 관리 복잡성을 해소함 [1]. + +## 🧩 추출된 패턴 (Extracted patterns) +- **동적 파라미터 치환 패턴:** 로컬에서 이미지를 Base64로 인코딩한 후, 워크플로우 JSON에서 해당 노드의 ID를 식별하여 `inputs`의 `base64_data` 필드 값을 동적으로 교체하여 서버에 요청함 [3], [2]. +- **API 호출 표준화:** 생산용 자동화 시스템(예: 배너 광고 생성)에서 입력 이미지가 매번 바뀔 때마다 파일 경로 관리 대신 데이터 자체를 전송하는 방식을 취함 [1]. + +## 📖 세부 내용 (Details) +- **기능 및 정의:** 'Load Image (Base64)' 노드는 주로 API 호출을 통한 프로덕션 자동화 시스템에서 활용된다 [1]. 이 노드는 이미지를 문자열로 인코딩하여 JSON 워크플로우 내에 직접 포함할 수 있게 설계되었으며, 이는 ComfyUI를 외부 애플리케이션이나 원격 서버에 통합할 때 필수적인 요소다 [1]. +- **동작 메커니즘:** 파이썬(Python)과 같은 외부 언어를 사용하여 이미지를 `base64.b64encode` 방식으로 변환한다 [2]. 이후 API 형태의 워크플로우 JSON 파일에서 해당 노드의 고유 ID(예: #37)를 찾아 `inputs` 딕셔너리 내의 `base64_data` 필드에 해당 문자열을 주입한다 [2]. +- **운영상의 이점:** 서버 측에 이미지 파일을 업로드하고 경로를 참조하는 번거로운 과정을 우회할 수 있어 시스템이 간결해진다 [1]. 특히 깊이 추정(depth estimation)이나 스타일 변환(style transfer)처럼 다양한 입력 이미지가 반복적으로 요구되는 환경에서 효율적이다 [1]. +- **연결성:** 이 노드는 이미지를 Base64 데이터로부터 직접 복원하여 워크플로우 내의 다음 노드(예: CLIP Vision Encode, ControlNet 등)로 전달하는 역할을 수행한다 [1], [2]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **파일 경로와의 차이:** 일반적인 'Load Image' 노드는 서버 내 `input` 폴더의 물리적 파일 이름을 참조하지만, 'Load Image (Base64)'는 파일 이름이 아닌 인코딩된 데이터 문자열 자체를 직접 처리한다는 기술적 차이가 존재한다 [1], [2]. + +## 🛠️ 적용 사례 (Applied in summary) +- **Python API 연동 예제 (소스 152):** `comfy_api_python.py`라는 파일 이름으로 구체적인 구현 코드가 제시되었다. 해당 코드에서는 `image_base64(filename)` 함수를 통해 이미지를 인코딩하고, `prompt[str(load_image_node_id)]["inputs"]["base64_data"] = image` 로직을 통해 JSON 데이터를 동적으로 수정하여 ComfyUI 서버에 요청을 보내는 방식이 실제로 적용되었다 [2]. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** 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. \ No newline at end of file diff --git a/10_Wiki/Comfyui/Metadata Extraction.md b/10_Wiki/Comfyui/Metadata Extraction.md new file mode 100644 index 00000000..eff35702 --- /dev/null +++ b/10_Wiki/Comfyui/Metadata Extraction.md @@ -0,0 +1,65 @@ +--- +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. \ No newline at end of file diff --git a/10_Wiki/Comfyui/Node Definitions.md b/10_Wiki/Comfyui/Node Definitions.md new file mode 100644 index 00000000..f24ab810 --- /dev/null +++ b/10_Wiki/Comfyui/Node Definitions.md @@ -0,0 +1,71 @@ +--- +id: node-definitions +title: "Node Definitions" +category: "10_Wiki/Topics" +status: "draft" +verification_status: "conceptual" +canonical_id: "" +aliases: ["Node Schema", "ComfyUI Node Structure"] +duplicate_of: "" +source_trust_level: "B" +confidence_score: 0.90 +created_at: 2026-05-20 +updated_at: 2026-05-20 +review_reason: "" +merge_history: [] +tags: ["research", "Comfyui workflow json 생성 방법", "Node Definitions"] +raw_sources: ["NotebookLM Synthesis"] +applied_in: ["workflow.json", "workflow_api.json", "object_info.json", "comfyui-workflow-to-api-converter-endpoint", "ComfyUI-WorkflowGenerator"] +github_commit: "bc85382, 82df278" +--- + +# [[Node Definitions]] + +## 🎯 한 줄 통찰 (One-line insight) +노드 정의는 ComfyUI 워크플로우의 기능적 논리와 시각적 레이아웃을 결정하는 핵심 원자 단위로, 고유 ID와 입출력 스키마를 통해 복잡한 AI 프로세스를 유향 비순환 그래프(DAG)로 구조화한다 [1-3]. + +## 🧠 핵심 개념 (Core concepts) +- **고유 식별자 (Node ID):** 워크플로우 내에서 각 노드를 구분하는 고유한 숫자 또는 문자열 키(예: "#37")로, 그래프 순회 및 데이터 참조의 기준이 된다 [4, 5]. +- **클래스 매핑 (Type/Class Type):** JSON의 `type` 또는 `class_type` 필드는 ComfyUI 백엔드 레지스트리에 등록된 특정 Python 클래스와 노드를 연결하여 실행 로직을 정의한다 [2, 6, 7]. +- **입출력 슬롯 (I/O Slots):** 데이터 흐름을 위한 인터페이스로, `inputs`는 상위 노드의 출력을 참조하고 `outputs`는 하위 노드로 전달될 데이터 링크 정보를 포함한다 [4, 8]. +- **위젯 및 속성 (Widgets & Properties):** 슬라이더, 텍스트 박스, 체크박스 등 사용자가 직접 입력한 값(`widgets_values`)과 노드의 내부 동작 설정을 저장한다 [2, 4, 9]. + +## 🧩 추출된 패턴 (Extracted patterns) +- **형식의 이분화 (Serialization Bifurcation):** 시각적 정보(위치, 크기, 그룹)를 포함하는 **Frontend 형식(workflow.json)**과 실행에 필요한 논리 정보만 남긴 **API 형식(workflow_api.json)**으로 나뉘어 관리된다 [10-12]. +- **실행 모델 역전 (Execution Model Inversion):** 엔진은 모든 노드를 실행하는 대신 'Save Image'와 같은 출력 노드에서 역방향으로 그래프를 탐색하여 필요한 의존성 노드만 실행 리스트에 포함시킨다 [13]. +- **메타데이터 임베딩 패턴:** 생성된 미디어(PNG, WebP)의 tEXt/zTXt 청크 내에 노드 그래프 JSON을 주입하여 파일 자체가 워크플로우 컨테이너 역할을 수행하도록 설계한다 [14-16]. + +## 📖 세부 내용 (Details) +ComfyUI 노드는 **JSON v1.0 스키마**에 따라 정밀하게 정의되며, 각 노드 객체는 다음과 같은 필수 속성을 보유해야 한다 [2, 17]: +- **id:** 그래프 순회를 위한 유효한 정수 또는 문자열 식별자 [2, 5]. +- **type/class_type:** 노드의 기능을 결정하는 레지스트리 클래스명 [2, 6]. +- **pos & size:** UI 캔버스 렌더링을 위한 좌표 `[x, y]` 및 차원 `[width, height]` 정보 (Frontend 전용) [2, 4]. +- **widgets_values:** 사용자가 입력한 위젯 상태 값의 배열 또는 객체 [2, 4]. +- **order:** 노드의 실행 또는 렌더링 우선순위를 나타내는 인덱스 [2]. +- **mode:** 노드의 작동 상태(활성, 우회/Bypass 등)를 결정하는 수치 [2, 18]. + +**연결 구조(Connectivity):** +연결은 `inputs`와 `outputs` 배열을 통해 정의된다. `inputs` 내부의 `link` 속성은 들어오는 와이어의 고유 ID를 가리키며, API 형식에서는 이를 소스 노드 ID와 슬롯 인덱스의 쌍(예: `[19, 20]`)으로 직접 포함하기도 한다 [8, 9]. 슬롯 인덱싱은 다중 출력을 가진 노드(예: VAE Loader)에서 특정 데이터를 선택하는 데 필수적이다 [8]. + +**스키마 카탈로그 (object_info.json):** +실행 중인 인스턴스에서 사용 가능한 모든 노드의 입력/출력 타입, 필수/선택적 입력 항목, 기본값 및 툴팁 정보를 포함하는 레지스트리 역할을 한다 [21, 22]. 이는 워크플로우를 동적으로 생성하거나 검증하는 도구에서 참조 모델로 사용된다 [23]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **JSON 버전 차이:** 소스 데이터는 최신 버전인 **v1.0**을 언급하지만, 이전 버전인 **0.4**와의 호환성 문제나 업데이트 논의가 여전히 진행 중임을 암시한다 [17, 24]. +- **대소문자 민감도 이슈:** ComfyUI 검증기가 콤보 위젯 값의 대소문자(예: "True" vs "true") 차이로 인해 실행을 거부하는 경우가 발생하여, 최신 변환 엔진에서는 이를 정규화(Normalization)하는 로직이 추가되었다 [25]. +- **노드 식별 키의 차이:** Frontend JSON은 수치형 문자열을 ID로 사용하는 반면, API JSON은 이를 기능적 키로 활용하며 UI 메타데이터를 완전히 제거한다 [10, 11, 26]. + +## 🛠️ 적용 사례 (Applied in summary) +- **workflow.json / workflow_api.json:** 노드 정의가 실제로 구현되는 표준 파일 형식으로, RunComfy 및 Replicate와 같은 서비스에서 배포의 기초로 사용된다 [12, 21, 27]. +- **object_info.json:** 실행 중인 서버의 `/object_info` 엔드포인트를 통해 실시간 노드 스키마를 제공한다 [23]. +- **comfyui-workflow-to-api-converter-endpoint (v2.3.0):** 비-API 워크플로우를 API 형식으로 변환할 때 `COMFY_DYNAMICCOMBO_V3` 위젯 및 하위 입력을 처리하고 대소문자 문제를 해결하는 로직이 적용되었다 (Commit: `bc85382`) [25, 28-30]. +- **ComfyUI-WorkflowGenerator:** 자연어 설명을 기반으로 `WorkflowGenerator` -> `NodeValidator` -> `WorkflowBuilder` 단계를 거쳐 노드 그래프를 동적으로 생성하며, `UpdateNodeCatalog` 노드를 통해 로컬 노드 레지스트리를 스캔한다 (Commit: `82df278`) [31-34]. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** 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. \ No newline at end of file diff --git a/10_Wiki/Comfyui/Node-based Visual Programming.md b/10_Wiki/Comfyui/Node-based Visual Programming.md new file mode 100644 index 00000000..8f279c59 --- /dev/null +++ b/10_Wiki/Comfyui/Node-based Visual Programming.md @@ -0,0 +1,71 @@ +--- +id: node-based-visual-programming +title: "Node-based Visual Programming" +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: ["DanielPFlorian/ComfyUI-WorkflowGenerator", "SethRobinson/comfyui-workflow-to-api-converter-endpoint", "pydn/ComfyUI-to-Python-Extension", "docs.comfy.org/specs/workflow_json"] +github_commit: "" +--- + +# [[Node-based Visual Programming]] + +## 🎯 한 줄 통찰 (One-line insight) +ComfyUI의 노드 기반 시각적 프로그래밍은 복잡한 AI 생성 프로세스를 **방향성 비순환 그래프(DAG)**로 추상화하여, 코드 작성 없이도 정교한 파이프라인 설계와 실행 로직의 직렬화를 실현한다 [1, 2]. + +## 🧠 핵심 개념 (Core concepts) +- **노드 및 그래프 구조 (Nodes & Graph):** 로더, 샘플러, 인코더 등 특정 기능을 수행하는 프로그램 객체(Nodes)를 링크(Links)로 연결하여 전체 데이터 흐름을 정의하는 네트워크를 형성한다 [1, 3]. +- **방향성 비순환 그래프 (Directed Acyclic Graph, DAG):** 데이터가 한 방향으로만 흐르며 순환하지 않는 구조로, 생성 AI의 절차적 프레임워크를 효율적으로 기술한다 [1, 4]. +- **워크플로 직렬화 (Serialization):** 시각적으로 구성된 그래프를 인간이 읽을 수 있고 용량이 작은 **JSON 형식**으로 변환하여 아카이빙, 공유 및 프로그래밍 방식의 자동화를 가능하게 한다 [1, 5]. +- **시각적 추상화:** 정적 메뉴나 선형 파이프라인 대신 노드 간의 동적 연결을 통해 복잡한 시스템을 직관적으로 설계할 수 있는 고수준 환경을 제공한다 [1, 2]. + +## 🧩 추출된 패턴 (Extracted patterns) +- **형식의 이분화 (Bifurcation of Formats):** 시각적 레이아웃 정보를 포함한 **프론트엔드 포맷(workflow.json)**과 실행에 필수적인 로직만 남긴 **API 포맷(workflow_api.json)**으로 구분하여 사용 목적에 최적화한다 [6, 7]. +- **메타데이터 임베딩 (Metadata Embedding):** 생성된 미디어 파일(PNG, WebP 등) 내부에 워크플로 전체 로직을 주입하여, 이미지 자체가 생성 청사진의 컨테이너 역할을 하도록 설계한다 [5, 8]. +- **실행 모델 역전 (Execution Model Inversion):** 엔진이 출력 노드(Save Image 등)에서 시작하여 그래프를 역방향으로 탐색, 최종 출력에 필요한 의존성 노드만 식별하여 실행 최적화를 달성한다 [9]. +- **LLM 기반 합성 파이프라인:** 자연어 설명을 '논리적 합성 → 세만틱 검증 → 그래프 컴파일'의 3단계 과정을 거쳐 실행 가능한 JSON 노드 그래프로 변환하는 자동화 패턴이 등장하고 있다 [10-12]. + +## 📖 세부 내용 (Details) +ComfyUI는 생성형 AI 콘텐츠를 구축하고 실행하기 위한 **절차적 프레임워크(Procedural Framework)**로 기능한다 [3, 4]. 노드 기반 방식은 전통적인 소프트웨어의 버튼 기반 UI가 제공할 수 없는 수준의 유연성을 제공하며, 사용자는 수학적 지식이나 프로그래밍 코드 없이도 복잡한 시스템을 설계할 수 있다 [2]. + +### JSON 스키마 및 데이터 구조 +ComfyUI 워크플로의 핵심인 JSON 파일은 **v1.0 규격**을 따르며, 각 노드는 고유 ID, 클래스 타입(type), 캔버스 좌표(pos), 크기(size), 입력(inputs) 및 출력(outputs) 슬롯 정보를 포함한다 [13, 14]. 특히 링크는 `[origin_id, origin_slot, target_id, target_slot]`의 구조로 정의되어 노드 간의 정밀한 데이터 전송을 보장한다 [15]. + +### 워크플로 생성 및 관리 방식 +1. **수동 생성:** 웹 인터페이스에서 노드를 배치하고 `Ctrl+S`를 통해 시각적 레이아웃이 포함된 JSON을 내보내거나, 'Dev mode'를 활성화하여 실행 전용 API 포맷을 추출할 수 있다 [16, 17]. +2. **프로그래밍 방식 생성:** Python의 `json` 라이브러리를 사용해 딕셔너리 구조를 직접 수정하거나, `Comfy Nodekit` 또는 `Comfy API Simplified`와 같은 래퍼 라이브러리를 통해 노드 제목 기반으로 매개변수를 동적으로 변경할 수 있다 [18, 19]. +3. **미디어 추출:** `exiftool`이나 웹 기반 추출 도구를 사용해 PNG의 `tEXt` 또는 `zTXt` 청크에서 직렬화된 워크플로 데이터를 복구할 수 있다 [20-22]. + +### 의존성 및 보안 관리 +워크플로 공유 시 가장 흔한 문제는 'Missing Custom Nodes' 오류(붉은색 노드)이며, 이를 위해 **ComfyUI-Manager**가 JSON을 파싱하여 누락된 패키지를 식별하고 자동 설치를 지원한다 [23, 24]. 최신 동향으로는 모델 파일의 경로 문제 해결을 위해 파일명 대신 **SHA-256 해시값**을 사용하는 모델 해싱 방식이 도입되고 있다 [25, 26]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **데이터 보존의 취약성:** PNG 메타데이터에 저장된 워크플로는 소셜 미디어나 파일 압축 과정에서 손실되기 쉬우며, 이로 인해 이미지 드래그 앤 드롭 기능을 상실할 수 있는 위험이 존재한다 [20]. +- **포맷 간 불일치:** API 포맷 JSON을 UI에 직접 로드할 경우 시각적 레이아웃 정보가 없어 그래프가 '스켈레톤' 상태로 나타나는 등 편집이 어려워지는 문제가 발생한다 [27]. 이를 해결하기 위해 서버 사이드에서 비-API 포맷을 API 포맷으로 변환해주는 별도의 엔드포인트 구현 사례가 존재한다 [28]. +- **버전 호환성:** ComfyUI의 빈번한 업데이트로 인해 구버전 JSON 파일이 최신 버전에서 정상적으로 작동하지 않을 수 있음을 공식적으로 경고하고 있다 [29]. + +## 🛠️ 적용 사례 (Applied in summary) +- **DanielPFlorian/ComfyUI-WorkflowGenerator:** LLM(Qwen2.5-14B)을 사용하여 자연어 설명을 ComfyUI 노드 그래프로 자동 생성하는 3단계 파이프라인 구현 [30, 31]. +- **SethRobinson/comfyui-workflow-to-api-converter-endpoint:** 비-API 워크플로 JSON을 서버측에서 실행 가능한 API 포맷으로 자동 변환하는 `/workflow/convert` 엔드포인트 제공 [28, 32]. +- **pydn/ComfyUI-to-Python-Extension:** 워크플로 JSON을 독립적인 실행이 가능한 Python 스크립트(`.py`)로 변환하는 도구 [33, 34]. +- **ComfyUI 공식 문서 (`docs.comfy.org/specs/workflow_json`):** 워크플로 무결성 검증을 위한 JSON Schema v1.0(Draft-07 기반) 규격 정의 [14, 35]. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** draft +- **검증 단계:** conceptual (주요 오픈소스 프로젝트 및 공식 문서 내 스펙 확인됨) +- **출처 신뢰도:** B (Official Documentation / GitHub Repository / Expert Tutorial Synthesis) +- **중복 검사 결과:** 신규 생성 (New discovery) + +## 📝 변경 이력 (Change history) +- 2026-05-20: Initial draft generated via Datacollector_MAC P-Reinforce engine. \ No newline at end of file diff --git a/10_Wiki/Comfyui/Nodes.md b/10_Wiki/Comfyui/Nodes.md new file mode 100644 index 00000000..0fa63d01 --- /dev/null +++ b/10_Wiki/Comfyui/Nodes.md @@ -0,0 +1,74 @@ +--- +id: nodes +title: "Nodes" +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: ["ComfyUI-WorkflowGenerator", "ComfyUI-to-Python-Extension", "comfyui-workflow-to-api-converter-endpoint"] +github_commit: "82df278, bc85382" +--- + +# [[Nodes]] + +## 🎯 한 줄 통찰 (One-line insight) +노드는 ComfyUI의 핵심 엔진이자 기능적 단위로서, 고유한 메타데이터와 입출력 연결을 통해 생성형 AI 프로세스를 유향 비순환 그래프(DAG)로 추상화한다 [1-3]. + +## 🧠 핵심 개념 (Core concepts) +- **노드 객체 (Node Object):** ID, 타입, 위치 정보를 포함하며 특정 기능을 수행하는 독립적인 프로그램 모듈이다 [3-5]. +- **입출력 슬롯 및 링크 (I/O Slots & Links):** 노드 간 데이터를 전달하는 통로로, 입력(inputs)은 들어오는 와이어의 ID를, 출력(outputs)은 하나 이상의 하류 노드로 연결되는 링크 ID 배열을 포함한다 [4, 6]. +- **노드 레지스트리 (Node Registry):** 설치된 모든 노드의 클래스 이름과 입출력 스키마(object_info)를 관리하는 중앙 카탈로그이다 [4, 7, 8]. +- **실행 모드 (Mode):** 노드의 활성화 상태(active), 우회(bypass) 등을 결정하며, 백엔드 엔진은 이를 기반으로 실행 경로를 계산한다 [4, 5, 9]. + +## 🧩 추출된 패턴 (Extracted patterns) +- **실행 모델 역전 (Execution Model Inversion):** 엔진이 출력 노드(Save Image 등)에서 시작하여 역방향으로 그래프를 탐색, 결과 도출에 필요한 의존성 노드만 실행하여 효율성을 극대화한다 [10]. +- **형식별 노드 직렬화:** 프론트엔드 형식(workflow.json)은 노드의 좌표, 크기 등 시각적 메타데이터를 유지하는 반면, API 형식(workflow_api.json)은 실행에 필요한 로직과 직접적인 노드 입력 참조만 남긴다 [11-13]. +- **자동 검증 및 보정:** 생성된 워크플로의 노드 이름을 로컬 설치 환경이나 시맨틱 임베딩과 대조하여 유효성을 검사하고 오류를 수정한다 [14-16]. + +## 📖 세부 내용 (Details) + +### 노드 객체의 기술적 사양 (v1.0 Schema) +ComfyUI 워크플로 JSON 내에서 각 노드는 다음과 같은 속성을 필수적으로 정의해야 한다 [4, 5]: +- **id:** 그래프 탐색을 위한 고유 식별자 (정수 또는 문자열) [17]. +- **type / class_type:** 노드 레지스트리의 클래스 이름과 매핑되는 식별자 [5, 18]. +- **pos & size:** 캔버스 좌표 [x, y] 및 시각적 크기 [width, height] (프론트엔드 전용) [4, 19]. +- **widgets_values:** 슬라이더, 텍스트 박스, 토글 등 사용자 입력 값을 저장하는 배열 [4, 20]. +- **order:** 노드의 실행 또는 렌더링 순서 인덱스 [4]. + +### 주요 노드 카테고리 및 기능 +- **로더 (Loaders):** Checkpoint, LoRA, VAE, ControlNet 등 외부 모델 가중치를 워크플로로 불러온다 [21, 22]. +- **샘플러 (Samplers):** KSampler, SamplerCustom 등 잠재 공간(Latent space)에서 노이즈를 제거하여 이미지를 생성한다 [23, 24]. +- **조건화 및 인코딩 (Conditioning & Encoding):** CLIP Text Encode(프롬프트 처리), VAE Encode/Decode(픽셀과 잠재 공간 간 변환) 등을 수행한다 [20, 21, 24]. +- **유틸리티 (Utils):** Reroute(선 정리), Primitive, Note 등 워크플로의 조직화와 가독성을 돕는다 [23, 25]. + +### API 및 자동화 환경의 노드 처리 +API 기반 실행 시, 노드는 **API JSON 형식**으로 직렬화되어 시각적 정보가 제거된다 [11, 26]. 이때 노드 간 연결은 별도의 링크 배열이 아닌 `inputs` 필드 내에 상류 노드 ID와 슬롯 인덱스 형태로 직접 임베딩된다 [11, 20]. 독립 실행형 스크립트나 외부 앱 연동 시에는 `Load Image (Base64)` 노드를 통해 이미지를 JSON 내에 직접 포함시키거나, `SaveImageWebsocket`을 통해 결과를 실시간으로 수신하는 패턴이 사용된다 [17, 27, 28]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **노드 식별 방식:** 프론트엔드 JSON은 시각적 ID를 사용하지만, API JSON은 기능적 키(Functional keys)를 사용하여 백엔드와 매핑한다 [12]. +- **커스텀 노드 의존성:** 소스 간 공통적으로 지적되는 문제로, 워크플로 JSON에 포함된 노드가 로컬에 설치되어 있지 않으면 '빨간 박스(Missing Nodes)' 오류가 발생하며 ComfyUI Manager를 통한 해결이 권장된다 [29-31]. + +## 🛠️ 적용 사례 (Applied in summary) +- **ComfyUI-WorkflowGenerator [32, 33]:** 자연어 설명을 기반으로 `Generator` -> `Validator` -> `Builder` 단계를 거쳐 노드 그래프를 자동으로 생성하고 검증하는 시스템을 구현함. +- **comfyui-workflow-to-api-converter-endpoint [8, 25, 34]:** `/workflow/convert` 엔드포인트를 통해 프론트엔드 노드 데이터를 API 규격으로 변환하며, `reroute` 노드 무시 및 `INPUT_TYPES()` 기반 기본값 보정 기능을 포함함 (Commit: `bc85382`). +- **ComfyUI-to-Python-Extension [35, 36]:** UI의 노드 그래프를 실행 가능한 Python 스크립트로 변환하여 자동화 환경에서 노드 로직을 재사용할 수 있게 함. +- **RunComfy API [7, 37]:** `object_info.json`을 통해 인스턴스 내 모든 노드의 입력/출력 스키마를 제공하여 외부 툴의 유효성 검사에 활용함. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** draft +- **검증 단계:** conceptual (실제 프로젝트 및 공식 문서 내 스펙 확인됨) +- **출처 신뢰도:** B (공식 문서 및 오픈소스 프로젝트 기술 명세 기반) +- **중복 검사 결과:** 신규 생성 (New discovery) + +## 📝 변경 이력 (Change history) +- 2026-05-20: Initial draft generated via Datacollector_MAC P-Reinforce engine. (Sources: [1-6, 8, 11, 33]) \ No newline at end of file diff --git a/10_Wiki/Comfyui/RAG (Retrieval-Augmented Generation).md b/10_Wiki/Comfyui/RAG (Retrieval-Augmented Generation).md new file mode 100644 index 00000000..eb3c9567 --- /dev/null +++ b/10_Wiki/Comfyui/RAG (Retrieval-Augmented Generation).md @@ -0,0 +1,59 @@ +--- +id: rag-(retrieval-augmented-generation) +title: "RAG (Retrieval-Augmented Generation)" +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 생성 방법", "LLM", "Workflow-Automation"] +raw_sources: ["NotebookLM Synthesis"] +applied_in: ["ComfyUI-WorkflowGenerator (Future Roadmap)", "Alibaba ViDoRAG"] +github_commit: "" +--- + +# [[RAG (Retrieval-Augmented Generation)]] + +## 🎯 한 줄 통찰 (One-line insight) +RAG는 정적인 학습 데이터에 갇힌 LLM의 한계를 넘어, 실시간 노드 생태계와 전문가의 워크플로우 패턴을 동적으로 검색하여 실행 가능한 ComfyUI JSON을 생성하는 차세대 아키텍처의 핵심이다 [1, 2]. + +## 🧠 핵심 개념 (Core concepts) +- **노드 정보 검색 (Node Information Retrieval):** 모델 가중치에 노드 지식을 고정하는 대신, 현재 설치된 노드 및 최신 리포지토리를 포함하는 동적 벡터 데이터베이스를 쿼리하여 새로운 노드 정보를 실시간으로 획득한다 [2]. +- **사례 기반 추론 (Case-Based Reasoning):** 커뮤니티에서 공유된 수천 개의 고품질 워크플로우를 "지식 패턴"으로 인덱싱하고, 특정 문제 해결(예: ControlNet 연결 방식)을 위해 기존 전문가의 하위 그래프를 검색 및 복제한다 [2]. +- **I/O 스키마 인식 (I/O Schema Awareness):** 단순한 이름 일치를 넘어, 검색된 데이터를 바탕으로 노드 간의 데이터 유형(Float, Image, Latent 등)이 실행 가능한 수준에서 호환되는지 논리적으로 검증한다 [2]. +- **정적 모델의 한계 극복:** 학습 시점(Cutoff) 이후에 출시된 커스텀 노드에 대해 "환각(Hallucination)" 없이 정확한 연결 구조를 제안하기 위한 수단으로 활용된다 [1, 3]. + +## 🧩 추출된 패턴 (Extracted patterns) +- **3단계 생성 파이프라인의 확장:** 기존 [논리적 합성 -> 세만틱 검증 -> 그래프 컴파일] 과정 중 검증 및 합성 단계에서 외부 지식을 주입하는 패턴이 발견된다 [2, 4, 5]. +- **에이전트 기반 탐색:** 워크플로우 생성기가 단순한 변환기가 아닌, 실시간 ComfyUI 환경을 "읽고" 문서화된 노드 사양을 학습하여 즉시 적용하는 능동적 에이전트 패턴으로 진화한다 [2, 6]. + +## 📖 세부 내용 (Details) +- **정적 모델의 문제점:** 현재의 워크플로우 생성 모델(예: Qwen2.5-14B 기반)은 학습 데이터에 포함되지 않은 새로운 커스텀 노드나 변경된 아키텍처에 대응할 수 없는 "Frozen" 상태이다 [1]. +- **노드용 RAG (RAG for Nodes):** 미래의 아키텍처는 에이전트가 사용자의 **현재 설치된 노드**와 외부 데이터베이스를 쿼리하도록 설계된다. 이를 통해 오늘 출시된 노드의 문서도 즉시 "읽고" 워크플로우에 반영할 수 있다 [2]. +- **워크플로우 검색 및 적응:** 무에서 유를 창조하는 대신, 온라인상의 방대한 워크플로우 라이브러리를 인덱싱하여 검색한다. 에이전트는 전문가가 특정 하위 문제(Sub-problem)를 해결한 방식을 식별하고 이를 현재 작업에 맞게 적응시킨다 [2]. +- **지능형 디버깅:** AI 에이전트가 오류 메시지를 분석하고 RAG를 통해 적절한 대체 노드를 제안하거나 JSON 워크플로우를 수정하는 기능으로 확장될 수 있다 [7]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **현재와 미래의 격차:** 현재 제공되는 `ComfyUI-WorkflowGenerator`는 정적으로 미세 조정(Fine-tuned)된 모델을 사용하며, RAG 기반의 동적 노드 검색은 차세대 도구를 위한 "미래 비전" 및 "로드맵"으로 제시되고 있다 [2, 3, 8]. +- **기술적 성숙도:** 소스 내에서 RAG는 실제 구현된 기능보다는 모델의 한계를 극복하기 위한 아키텍처적 제안으로 주로 다루어진다 [2, 6]. + +## 🛠️ 적용 사례 (Applied in summary) +- **ComfyUI-WorkflowGenerator:** 프로젝트의 향후 비전으로 "Retrieval-Augmented Generation (RAG) for Nodes"를 명시하고 있으며, 벡터 임베딩 데이터베이스를 통한 노드 검색 아키텍처를 설계 중이다 [2]. +- **Alibaba ViDoRAG:** 소스 내 뉴스 목록에 "Intelligent Document Analysis Tool"로서 언급되어 있으나, 구체적인 ComfyUI 워크플로우 생성 연동 방식은 상세히 기술되지 않았다 [9]. +- **NodeValidator:** 현재 버전에서는 RAG의 초기 형태인 '세만틱 검색(Semantic Search)'을 사용하여 노드 이름의 오타를 수정하거나 설치된 노드 카탈로그와 대조하는 기능을 수행하고 있다 [10]. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** draft +- **검증 단계:** conceptual (실제 RAG 엔진의 상세 구현 코드는 소스에 포함되지 않았으며, 아키텍처 제안 단계임) +- **출처 신뢰도:** B (GitHub 오픈소스 연구 및 공식 문서 기반) +- **중복 검사 결과:** 신규 생성 (New discovery) + +## 📝 변경 이력 (Change history) +- 2026-05-20: Initial draft generated via Datacollector_MAC P-Reinforce engine. (Focus: Architectural vision of RAG in workflow generation) [1, 2, 6, 8] \ No newline at end of file diff --git a/10_Wiki/Comfyui/Retrieval-Augmented Generation (RAG) for Nodes.md b/10_Wiki/Comfyui/Retrieval-Augmented Generation (RAG) for Nodes.md new file mode 100644 index 00000000..c7221155 --- /dev/null +++ b/10_Wiki/Comfyui/Retrieval-Augmented Generation (RAG) for Nodes.md @@ -0,0 +1,61 @@ +--- +id: retrieval-augmented-generation-(rag)-for-nodes +title: "Retrieval-Augmented Generation (RAG) for Nodes" +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: [] +github_commit: "" +--- + +# [[Retrieval-Augmented Generation (RAG) for Nodes]] + +## 🎯 한 줄 통찰 (One-line insight) +정적인 파인튜닝 모델의 지식 유효기간 한계를 극복하기 위해, 현재 설치된 노드와 최신 저장소의 정보를 실시간으로 검색하여 워크플로우를 생성하는 동적 아키텍처 [1, 2]. + +## 🧠 핵심 개념 (Core concepts) +1. **동적 벡터 임베디드 데이터베이스 (Dynamic Vector-Embedded Database):** 사용자의 로컬 환경과 인터넷상의 최신 노드 저장소 정보를 실시간으로 쿼리할 수 있도록 벡터화하여 저장하는 시스템 [2]. +2. **노드 지식의 탈동기화 (Decoupling Node Knowledge):** 모델 가중치에 노드 정보를 고정하는 대신, 외부 지식 베이스에서 정보를 가져와 모델의 지식을 최신 상태로 유지함 [1, 2]. +3. **실시간 문서 해석 (Real-time Documentation Parsing):** 오늘 출시된 새로운 노드라도 에이전트가 해당 노드의 문서를 즉시 "읽고" 워크플로우 구성에 활용할 수 있게 함 [2]. +4. **환경 인지형 에이전트 (Environment-Aware Agent):** 사용자의 '현재 설치된' 노드 구성을 분석하고 이를 생성 프로세스에 반영하는 지능형 시스템 [2]. + +## 🧩 추출된 패턴 (Extracted patterns) +* **지식 검색 기반 보정 (Retrieval-Based Correction):** 모델이 학습하지 못한 새로운 노드의 연결 방식이나 파라미터를 검색된 지식(RAG)을 통해 보정하는 패턴 [2]. +* **사례 기반 추론 및 적응 (Case-Based Reasoning & Adaptation):** 온라인의 고품질 워크플로우를 '지식 패턴'으로 인덱싱하고, 이를 검색하여 현재 문제 해결에 맞게 변형하여 적용함 [2]. +* **I/O 스키마 인식 (I/O Schema Awareness):** 단순히 노드 이름을 맞추는 수준을 넘어, 데이터 타입(Float, Image, Conditioning 등) 간의 실행 가능성을 검색된 정보를 기반으로 검증함 [2]. + +## 📖 세부 내용 (Details) +* **정적 모델의 한계:** 현재의 `WorkflowGenerator`와 같은 모델은 특정 시점의 데이터로 파인튜닝되어 '동결'된 상태임 [1]. 따라서 매일 업데이트되는 ComfyUI 커스텀 노드 생태계의 변화를 따라잡지 못하며, 학습 데이터에 없는 노드에 대해 잘못된 연결(Hallucination)을 생성할 위험이 있음 [1, 2]. +* **RAG를 통한 해결책:** 미래의 워크플로우 생성 도구는 정적 파인튜닝을 넘어 RAG 시스템으로 진화해야 함 [3]. 에이전트는 사용자의 로컬 노드 카탈로그와 최신 온라인 데이터베이스를 동시에 쿼리하여 지식을 보충함 [2]. +* **워크플로우 검색 시스템:** 수천 개의 커뮤니티 워크플로우를 인덱싱하여, 전문가들이 특정 하위 문제(예: ControlNet과 Wan Video 노드의 연결 방식)를 해결하는 방식을 패턴화하고 이를 생성 시점에 검색하여 활용함 [2]. +* **기술적 이점:** 이 방식은 대규모 모델(70B+) 대신 그래프 이론과 DAG(Directed Acyclic Graph) 추론에 특화된 소규모 전문 모델(SLM)을 사용하면서도, 검색 시스템(RAG)을 통해 방대한 노드 어휘력을 확보할 수 있게 함 [2]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +* **현재와 미래의 격차:** 소스 데이터에 따르면 RAG 기반 노드 생성은 현재 완전히 구현된 기능이 아니라, ComfyGPT 연구를 기반으로 한 '차세대 도구의 진화 방향' 및 '아이디어'로 제시되고 있음 [2, 3]. +* **카탈로그 업데이트의 필요성:** 현재 구현(WorkflowGenerator)에서는 `UpdateNodeCatalog` 노드를 통해 로컬 노드를 스캔하여 수동으로 지식을 동기화해야 하는 단계에 머물러 있음 [4, 5]. + +## 🛠️ 적용 사례 (Applied in summary) +현재 소스 데이터에서 이 개념이 완전히 구현되어 적용된 실제 코드 사례는 발견되지 않았으며, "Future Vision(미래 비전)" 항목으로 기술되어 있음 [2]. 다만, 이를 위한 기초적인 단계로서 다음의 기능들이 언급됨: +* **UpdateNodeCatalog 노드:** 현재 설치된 모든 노드(네이티브 및 커스텀)를 스캔하고 카탈로그화하여 노드 검증 및 빌드에 활용함 [5]. +* **NodeValidator 노드:** 시맨틱 검색(Semantic Search)을 통해 생성된 노드 이름을 로컬 카탈로그와 대조하여 교정함 [6]. +* **WorkflowGenerator 아키텍처:** ComfyGPT 연구를 바탕으로 생성-검증-구축의 3단계 파이프라인을 구축하여 RAG 시스템으로의 확장을 위한 토대를 마련함 [3, 7]. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** 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. \ No newline at end of file diff --git a/10_Wiki/Comfyui/Serialization Formats.md b/10_Wiki/Comfyui/Serialization Formats.md new file mode 100644 index 00000000..4d0d626a --- /dev/null +++ b/10_Wiki/Comfyui/Serialization Formats.md @@ -0,0 +1,71 @@ +--- +id: serialization-formats +title: "Serialization Formats" +category: "10_Wiki/Topics" +status: "draft" +verification_status: "conceptual" +canonical_id: "" +aliases: ["Workflow JSON Formats", "Frontend vs API 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", "workflow_api.json", "object_info.json", "bc85382"] +github_commit: "bc85382" +--- + +# [[Serialization Formats]] + +## 🎯 한 줄 통찰 (One-line insight) +ComfyUI 직렬화는 인간의 시각적 편집을 위한 **Frontend 포맷(UI 데이터 포함)**과 서버 및 스크립트 실행을 위한 **API 포맷(순수 로직)**으로 이원화되어 워크플로우의 가시성과 실행 효율성을 동시에 확보한다 [1-4]. + +## 🧠 핵심 개념 (Core concepts) +1. **Frontend Format (workflow.json):** Litegraph 표준을 따르며 노드 위치, 크기, 그룹화 등 시각적 메타데이터를 포함하여 사용자 인터페이스 재구성을 지원한다 [1, 2, 5]. +2. **Backend/API Format (workflow_api.json):** 시각적 요소를 제거하고 노드 입력값과 연결 관계만 포함된 스트림라인 실행 그래프로, `/prompt` 엔드포인트를 통한 프로그래밍적 호출에 최적화되어 있다 [1, 2, 6]. +3. **Metadata Injection:** PNG 또는 WebP 이미지 생성 시, tEXt 또는 zTXt 청크 내부에 Frontend 워크플로우와 API 프롬프트 데이터를 직접 삽입하여 이미지를 워크플로우 컨테이너로 활용한다 [7-9]. +4. **Schema Specification (v1.0):** 노드 ID, 유형, 위치(pos), 크기(size), 실행 순서(order) 및 모드(mode) 등 그래프 무결성을 보장하기 위한 기술적 제약 조건을 정의한다 [10-12]. + +## 🧩 추출된 패턴 (Extracted patterns) +- **Bifurcation Pattern (이원화 패턴):** 동일한 로직을 시각적 레이아웃용(Frontend)과 실행용(API)으로 분리하여 저장함으로써 사용자 경험과 API 확장성을 분리하여 관리한다 [1, 2]. +- **Link Embedding Strategy:** API 포맷에서는 명시적인 연결 객체 대신 노드 입력 필드 내에 '기원 노드 ID'와 '출력 슬롯 인덱스'를 직접 참조(예: `[13, 14]`)하여 그래프 구조를 단순화한다 [1, 15]. +- **Schema Validation Pattern:** `object_info.json`을 통해 실행 인스턴스의 노드 스키마(입출력 유형, 범위 등)를 카탈로그화하고, 실행 전 `validate_prompt` 함수로 워크플로우의 유효성을 검증한다 [16-18]. + +## 📖 세부 내용 (Details) +- **Frontend JSON 구조 및 특징:** + - 노드 식별을 위해 고유한 시각적 ID(숫자 문자열)를 사용하며, 노드가 축소되거나 고정되었는지와 같은 시각적 플래그를 유지한다 [1, 19]. + - `links` 배열을 별도로 두어 노드 간의 물리적 연결 관계를 정의하며, 6개 항목으로 구성된 배열 형식을 통해 기원/대상 노드 및 슬롯 정보를 명시한다 [3, 11, 19]. + +- **API JSON 구조 및 특징:** + - 불필요한 UI 메타데이터를 제거하여 파일 크기를 압축하고 전송 효율을 높인다 [1, 2, 6]. + - 키값은 노드 ID로 구성되며, 각 값은 `class_type`과 `inputs`를 포함한 객체이다. 입력 필드에는 위젯 값 또는 다른 노드로부터의 링크 참조가 포함된다 [6, 18, 20]. + +- **메타데이터 저장 방식:** + - PNG 파일의 경우, ComfyUI는 워크플로우(Frontend)와 프롬프트(API)를 별개의 문자열로 저장한다. 이는 이미지를 UI로 드래그했을 때 시각적 편집이 가능하게 함과 동시에 프로그래밍적 재실행을 가능하게 하는 중복 구조를 제공한다 [8]. + - 단, 이미지 편집 소프트웨어나 소셜 미디어 플랫폼을 거칠 경우 이러한 비필수 메타데이터 청크가 손실될 위험이 크다 [8, 21]. + +- **기타 주요 직렬화 아티팩트:** + - `object_info.json`: 실행 중인 ComfyUI 인스턴스의 모든 노드 스키마 등록부로, 입출력 유형, 허용 범위, 툴팁 등을 포함하여 도구 개발이나 입력값 검증에 사용된다 [5, 17, 18]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **하위 호환성 문제:** ComfyUI가 빈번하게 업데이트됨에 따라, 이전 버전에서 생성된 JSON 파일이 최신 버전의 ComfyUI에서 제대로 작동하지 않을 수 있다는 점이 명시되어 있다 [22]. +- **데이터 유실 가능성:** 이미지 기반 직렬화는 편리하지만, 압축 소프트웨어나 네트워크 전송 시 메타데이터가 제거될 수 있어 JSON 파일 형태의 별도 저장이 권장된다 [8, 22, 23]. + +## 🛠️ 적용 사례 (Applied in summary) +- **workflow.json & workflow_api.json:** ComfyUI의 표준 저장 포맷으로 사용되며, RunComfy 및 Mystic 등 서버리스 API 배포 플랫폼의 기본 참조 파일로 활용된다 [1, 17, 24]. +- **object_info.json:** 실행 인스턴스에서 스키마 정보를 추출하기 위해 `https:///object_info` 엔드포인트를 통해 접근 가능하다 [25]. +- **comfyui-workflow-to-api-converter-endpoint:** Frontend 포맷의 워크플로우를 서버 측에서 실시간으로 API 포맷으로 변환하는 기능을 구현한 커스텀 노드 프로젝트이다 [26]. +- **Git Commit bc85382:** 콤보 위젯 값의 대소문자 표기 오류(예: "True" vs "true")가 유효성 검사에서 거부되는 문제를 해결하기 위해 대소문자 구분 없는 매칭 로직이 적용되었다 [27, 28]. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** 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. \ No newline at end of file diff --git a/10_Wiki/Comfyui/Workflow Extractor.md b/10_Wiki/Comfyui/Workflow Extractor.md new file mode 100644 index 00000000..48706310 --- /dev/null +++ b/10_Wiki/Comfyui/Workflow Extractor.md @@ -0,0 +1,72 @@ +--- +id: workflow-extractor +title: "Workflow Extractor" +category: "10_Wiki/Topics" +status: "draft" +verification_status: "conceptual" +canonical_id: "" +aliases: ["메타데이터 추출기", "Workflow Metadata Recovery"] +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: ["comfy-cli", "Weird Wonderful AI Art Extractor", "Comfy_UI_prompt_extractor"] +github_commit: "bc85382" +--- + +# [[Workflow Extractor]] + +## 🎯 한 줄 통찰 (One-line insight) +생성된 미디어(PNG/WebP)의 메타데이터 청크에 숨겨진 노드 그래프와 실행 로직을 복원하여 워크플로우의 이식성과 재현성을 보장하는 핵심 기술 도구이다. [1-3] + +## 🧠 핵심 개념 (Core concepts) +- **메타데이터 임베딩 (Metadata Embedding):** ComfyUI의 `Save Image` 노드는 실행 시 PNG 파일의 숨겨진 메타데이터(tEXt 또는 zTXt 청크) 내에 전체 노드 그래프, 레이아웃, 설정 및 프롬프트를 주입한다. [3-5] +- **데이터 이중성 (Data Redundancy):** 메타데이터에는 시각적 편집을 위한 '프론트엔드 포맷(Workflow JSON)'과 실행을 위한 '백엔드/API 포맷(Prompt JSON)'이 동시에 포함되어 재수정 및 재실행을 모두 지원한다. [5, 6] +- **메타데이터 취약성 (Fragility of Metadata):** 표준 이미지 편집기, 소셜 미디어 플랫폼 또는 압축 소프트웨어를 거칠 경우 파일 크기 최적화나 개인정보 보호를 위해 해당 JSON 데이터가 삭제될 수 있다. [2, 5, 7] +- **알고리즘 기반 복원 (Algorithmic Extraction):** 드래그 앤 드롭 방식이 불가능한 환경이나 대량의 데이터 처리를 위해 CLI 도구나 웹 기반 도구를 사용하여 바이너리 태그에서 워크플로우를 분리해낸다. [8-10] + +## 🧩 추출된 패턴 (Extracted patterns) +- **주입 패턴:** 워크플로우의 종단점인 `Save Image` 노드가 실행될 때 최종 이미지에 노드 레이아웃 정보를 주입하는 자동화된 직렬화 패턴을 따른다. [4] +- **복원 패턴:** `exiftool`과 같은 범용 도구를 사용하여 바이너리 데이터를 추출하거나, 전용 파이썬 스크립트를 통해 긍정적 프롬프트와 API 그래프를 분리하여 저장하는 패턴이 관찰된다. [8, 10] +- **사용자 편의 패턴:** 사용자가 복잡한 추출 과정 없이 이미지를 캔버스에 드래그 앤 드롭하기만 하면 내부 노드 그래프가 즉시 재구성되는 직관적인 UI 인터페이스를 제공한다. [4, 7, 11, 12] + +## 📖 세부 내용 (Details) +워크플로우 추출은 단순한 파일 읽기를 넘어 인공지능 생성 예술의 '소스 코드'를 관리하는 핵심 프로세스이다. ComfyUI는 시각적 프로그래밍 환경으로서의 특성을 유지하기 위해 이미지 자체를 워크플로우의 컨테이너로 활용한다. [3, 13] + +**기술적 메커니즘** +PNG 파일의 경우, ComfyUI는 `tEXt` 또는 `zTXt` 청크를 사용하여 워크플로우 정보를 텍스트 문자열로 저장한다. [5] 이 정보는 인간이 읽을 수 있는 JSON 형식을 따르며, 노드 간의 링크, 위치 정보(Frontend), 그리고 백엔드 실행을 위한 입력값(API)을 포함한다. [14-16] + +**추출 도구의 유형** +1. **네이티브 복원:** 이미지를 ComfyUI 브라우저 탭으로 직접 드래그하여 현재 노드를 대체하고 레이아웃을 복구한다. [4, 17, 18] +2. **웹 기반 추출기:** 'Weird Wonderful AI Art'와 같은 플랫폼은 사용자가 이미지를 업로드하면 서버에 데이터를 저장하지 않고 브라우저단에서 JSON 데이터를 추출하여 다운로드할 수 있게 한다. [2, 19, 20] +3. **CLI 및 프로그래밍 도구:** + - `exiftool -b -workflow input.png > workflow.json`: 바이너리 태그를 격리하여 저장하는 표준 CLI 방식이다. [8, 10] + - `comfyui-extractor.py`: 대량의 디렉토리를 처리하며 프롬프트와 레이아웃을 분리하여 관리한다. [8, 20] + - `ComfyUI-to-Python-Extension`: 워크플로우 메타데이터를 포함한 .py 스크립트를 생성하여 드래그 앤 드롭 재가져오기를 지원한다. [21] + +**추출 시의 제한 사항** +워크플로우 추출을 통해 그래프를 복원하더라도, 제작자가 사용한 '커스텀 노드'가 현재 시스템에 설치되어 있지 않으면 '빨간색 상자' 오류가 발생한다. [22-24] 이 경우 ComfyUI Manager의 "Install Missing Custom Nodes" 기능을 사용하여 의존성을 해결해야 한다. [23-25] + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **워크플로우 vs 프롬프트:** 소스에 따라 'Workflow' 파일은 모든 노드 위치와 상태를 포함하는 반면, 'Prompt' 파일은 실행에 필요한 노드 정보만을 포함한다고 정의되어 혼동을 피해야 한다. [6] +- **업데이트 호환성:** ComfyUI는 빈번하게 업데이트되므로 구버전의 JSON 파일이 최신 버전에서 정상적으로 작동하지 않을 수 있다는 점이 명시되어 있다. [7] + +## 🛠️ 적용 사례 (Applied in summary) +- **comfy-cli (Issue #341):** `exiftool`을 사용하여 이미지 파일(PNG, WebP, MP4 등)에서 워크플로우를 추출, 삽입 및 복사하는 기능을 제안하고 구현 논의를 진행함. [9, 26] +- **Weird Wonderful AI Art Extractor:** 온라인 PNG 파일 분석을 통해 사용자에게 JSON 워크플로우와 프롬프트 데이터를 추출해주는 웹 기반 도구로 실서비스 중임. [2, 19] +- **ComfyUI Workflow Converter Endpoint:** 서버 측에서 비 API 형식을 API 형식으로 변환하여 실행 가능하도록 지원하며, 하위 그래프(Subgraph) 매핑 등의 복잡한 변환 로직을 포함함(V2.3.0 커밋 기준). [27-29] +- **comfymeta:** 이미지를 처리하여 메타데이터를 추출하는 UI 도구로 분류됨. [10] + +## ✅ 검증 상태 및 신뢰도 +- **상태:** 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. \ No newline at end of file diff --git a/10_Wiki/Comfyui/Workflow JSON (Frontend Format).md b/10_Wiki/Comfyui/Workflow JSON (Frontend Format).md new file mode 100644 index 00000000..85702253 --- /dev/null +++ b/10_Wiki/Comfyui/Workflow JSON (Frontend Format).md @@ -0,0 +1,71 @@ +--- +id: workflow-json-(frontend-format) +title: "Workflow JSON (Frontend Format)" +category: "10_Wiki/Topics" +status: "draft" +verification_status: "conceptual" +canonical_id: "" +aliases: ["workflow.json"] +duplicate_of: "" +source_trust_level: "B" +confidence_score: 0.90 +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", "SethRobinson/comfyui-workflow-to-api-converter-endpoint/bc85382"] +github_commit: "bc85382" +--- + +# [[Workflow JSON (Frontend Format)]] + +## 🎯 한 줄 통찰 (One-line insight) +사용자 인터페이스의 시각적 레이아웃 정보와 노드 그래프의 모든 논리적 연결성을 보존하여 인간 중심의 공유와 편집을 가능케 하는 ComfyUI의 기본 직렬화 규격이다 [1-3]. + +## 🧠 핵심 개념 (Core concepts) +- **시각적 메타데이터 보존 (Visual Metadata Persistence):** 노드의 좌표(`pos`), 크기(`size`), 그룹 구조, 색상 및 노드 접힘 상태(`flags`)와 같은 UI 전용 데이터를 포함한다 [2-5]. +- **명시적 링크 표현 (Explicit Link Representation):** 노드 입력부에 연결 정보를 내장하는 대신, 별도의 `links` 배열을 통해 시작점과 끝점 슬롯을 정의하는 명시적 연결 객체 형식을 사용한다 [2, 3, 6, 7]. +- **Litegraph 표준 준수 (Litegraph Standard):** 웹 기반 그래프 시각화 엔진인 Litegraph 형식을 따라 설계되어 브라우저 캔버스에서의 정확한 복원을 보장한다 [2, 7]. +- **미디어 임베딩 속성 (Media Embedding):** ComfyUI에서 생성된 PNG 또는 WebP 이미지의 메타데이터(tEXt 또는 zTXt 청크)에 직접 주입되어 생성 로직을 운반하는 컨테이너 역할을 수행한다 [8-10]. + +## 🧩 추출된 패턴 (Extracted patterns) +- **직렬화 이원화 (Serialization Bifurcation):** ComfyUI는 시각적 편집용인 'Frontend 포맷'과 서버 실행 최적화용인 'API 포맷'으로 데이터를 분리하여 관리한다 [2]. +- **중복 데이터 전략 (Redundancy Strategy):** 생성된 이미지 메타데이터 내에 시각적 복원용 `workflow.json`과 실행용 `prompt` 데이터를 동시에 저장하여 상호 보완성을 확보한다 [9]. +- **역방향 그래프 탐색 (Execution Model Inversion):** 캔버스에 수많은 노드가 존재하더라도 실행 엔진은 출력 노드에서 시작해 필요한 의존성 노드만 역으로 추적하므로, Frontend JSON에 불필요한 노드가 포함되어도 실행 성능에 영향을 주지 않는다 [11]. + +## 📖 세부 내용 (Details) +Frontend 포맷은 주로 `workflow.json`이라는 파일명으로 사용되며, ComfyUI 웹 인터페이스에서 사용자가 수행하는 'Visual Programming'의 결과를 저장하는 소스 코드와 같은 역할을 한다 [2, 12, 13]. + +### 1. 주요 데이터 구조 (Schema v1.0) +- **Nodes Array:** 각 노드 객체는 고유 ID, 클래스 타입(`type`), 좌표, 크기, 위젯 값(`widgets_values`), 실행 순서(`order`), 모드(활성/바이패스 등)를 포함한다 [4, 5]. +- **Links Array:** 6개의 항목으로 구성된 배열 또는 구조화된 객체로, `origin_id`, `origin_slot`, `target_id`, `target_slot`을 정의하여 노드 간의 데이터 흐름을 명시한다 [6]. + +### 2. 생성 및 획득 방법 +- **GUI 수동 내보내기:** 제어 패널 메뉴의 'Export' 옵션 또는 단축키 `Ctrl + S`(macOS는 `Cmd + S`)를 사용하여 현재 캔버스의 상태를 JSON으로 다운로드할 수 있다 [12, 14]. +- **미디어 메타데이터 추출:** + - **드래그 앤 드롭:** ComfyUI에서 생성된 PNG 이미지를 브라우저 캔버스에 직접 끌어다 놓으면 내장된 JSON을 통해 노드 배치가 복원된다 [14-16]. + - **CLI 도구 활용:** `exiftool -b -workflow input.png > workflow.json` 명령어를 통해 바이너리 태그에서 JSON 데이터를 분리해낼 수 있다 [17, 18]. + - **웹 도구:** Weird Wonderful AI Art의 'Workflow Extractor'와 같은 브라우저 기반 도구를 통해 온라인 이미지에서 데이터를 추출할 수 있다 [19, 20]. + +### 3. API 포맷과의 차별점 +Frontend 포맷은 인간이 읽기 쉽고 UI를 완벽히 재구성할 수 있도록 설계되었으나, `/prompt` 엔드포인트에 직접 전달할 경우 오류가 발생할 수 있다 [21]. API 호출을 위해서는 UI 메타데이터가 제거되고 노드 간 연결이 입력 필드에 직접 참조된 'API JSON' 형식이 필요하며, 이는 설정에서 'Dev mode'를 활성화해야만 생성 가능하다 [2, 3, 13, 22]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **포맷 호환성 이슈:** ComfyUI는 업데이트가 매우 빈번하여, 구버전에서 생성된 Frontend JSON 파일이 신버전에서 올바르게 작동하지 않거나 노드가 빨간색 박스로 표시되는(Missing Custom Nodes) 현상이 발생할 수 있다 [14, 23]. +- **데이터 휘발성:** 이미지 편집기(GIMP 등)로 처리하거나 소셜 미디어 플랫폼에 업로드할 경우, 파일 크기 최적화 과정에서 비표준 메타데이터인 Frontend JSON 정보가 삭제되어 워크플로우 복원이 불가능해지는 경우가 많다 [9, 24]. + +## 🛠️ 적용 사례 (Applied in summary) +- **SethRobinson/comfyui-workflow-to-api-converter-endpoint:** 클라이언트 측의 자바스크립트 변환 로직을 서버 측 파이썬으로 구현하여, `workflow.json`만으로 API 호출이 가능하도록 변환하는 기능을 제공한다 [21, 25]. +- **ComfyUI-to-Python-Extension:** Frontend JSON 메타데이터를 포함한 파이썬 스크립트를 생성하여, 실행 후 저장된 결과물을 다시 ComfyUI UI로 드래그 앤 드롭하여 복원할 수 있도록 지원한다 [26]. +- **기본 저장 규칙:** ComfyUI의 `Save Image` 노드는 실행 시 최종 이미지에 전체 노드 그래프와 설정을 주입하며, 이는 `workflow.json` 규격을 따른다 [16]. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** 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. \ No newline at end of file diff --git a/10_Wiki/Comfyui/Workflow JSON - ComfyUI.md b/10_Wiki/Comfyui/Workflow JSON - ComfyUI.md new file mode 100644 index 00000000..61a53b7d --- /dev/null +++ b/10_Wiki/Comfyui/Workflow JSON - ComfyUI.md @@ -0,0 +1,70 @@ +--- +id: workflow-json---comfyui +title: "Workflow JSON - ComfyUI" +category: "10_Wiki/Topics" +status: "draft" +verification_status: "conceptual" +canonical_id: "" +aliases: ["ComfyUI 워크플로우 JSON", "workflow_api.json", "workflow.json"] +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: ["comfyui-workflow-to-api-converter-endpoint/README.md", "pydn/ComfyUI-to-Python-Extension", "DanielPFlorian/ComfyUI-WorkflowGenerator", "deimos-deimos/comfy_api_simplified"] +github_commit: "bc85382" +--- + +# [[Workflow JSON - ComfyUI]] + +## 🎯 한 줄 통찰 (One-line insight) +ComfyUI Workflow JSON은 복잡한 노드 기반 생성 프로세스를 유향 비순환 그래프(DAG) 형태로 직렬화한 청사진으로, 시각적 편집을 위한 **프론트엔드 포맷**과 무두(Headless) 실행 및 자동화를 위한 **API 포맷**으로 이원화되어 관리된다 [1-3]. + +## 🧠 핵심 개념 (Core concepts) +- **프론트엔드 포맷 (workflow.json):** 시각적 편집과 사용자 상호작용을 위해 설계된 포맷으로, 노드의 좌표(`pos`), 크기(`size`), 그룹 구조 및 색상과 같은 UI 메타데이터를 모두 포함한다 [2-4]. +- **API 포맷 (workflow_api.json):** 백엔드 실행 엔진 최적화를 위해 UI 관련 메타데이터를 제거한 스트림라인드 포맷으로, 노드 입력부 내에 연결 정보가 직접 삽입되는 구조를 가진다 [2, 5, 6]. +- **메타데이터 임베딩 (Metadata Embedding):** 생성된 PNG/WebP 파일의 `tEXt` 또는 `zTXt` 청크에 JSON 데이터를 주입하여 이미지 자체가 실행 로직을 포함하는 컨테이너 역할을 수행하게 한다 [7, 8]. +- **JSON 스키마 v1.0:** 유효한 워크플로우를 보장하기 위한 기술적 제약 조건으로, 고유 ID, 클래스 타입, 위젯 값 등의 속성을 정의한다 [9-11]. + +## 🧩 추출된 패턴 (Extracted patterns) +- **이원화 저장 패턴:** 사용자는 UI에서 수정한 내용을 `Save`로 저장(프론트엔드)하고, 외부 연동을 위해 `Dev Mode`를 활성화하여 `Save (API Format)`으로 내보낸다 [12-15]. +- **역방향 그래프 탐색 (Execution Model Inversion):** 백엔드 엔진이 출력 노드(Save Image 등)로부터 역방향으로 의존성을 추적하여 실제 실행에 필요한 노드만 식별하고 나머지는 무시하는 최적화 패턴을 사용한다 [16]. +- **입력값 교체 패턴 (Prompt Injection):** Python 등 프로그래밍 환경에서 템플릿 JSON을 로드한 후, 특정 노드 ID의 `inputs` 딕셔너리를 직접 수정하여 시드(seed)나 프롬프트를 동적으로 변경한다 [17-19]. + +## 📖 세부 내용 (Details) +### 1. 생성 및 추출 방법론 +- **GUI 기반 생성:** 기본 인터페이스의 컨트롤 패널에서 `Ctrl + S`를 통해 프론트엔드 JSON을 저장할 수 있다 [12]. API 포맷을 생성하려면 설정 메뉴에서 'Enable Dev mode Options'를 활성화해야 한다 [13, 14, 20]. +- **이미지 메타데이터 추출:** ComfyUI에서 생성된 이미지를 캔버스에 드래그 앤 드롭하거나 [21-23], `ExifTool`을 사용하여 `exiftool -b -workflow input.png > workflow.json` 명령어로 바이너리 데이터를 추출할 수 있다 [24, 25]. +- **자동화 도구:** `comfyui-workflow-to-api-converter-endpoint`와 같은 커스텀 노드는 서버 측에서 프론트엔드 형식을 API 형식으로 실시간 변환하는 엔드포인트를 제공한다 [26-28]. + +### 2. 프로그래밍적 제어 및 변환 +- **Python 통합:** 워크플로우 JSON은 중첩된 딕셔너리 구조이므로 Python의 `json` 라이브러리로 쉽게 조작 가능하다 [17]. `ComfyUI-to-Python-Extension`은 JSON을 아예 독립적인 실행 파일(.py)로 변환해주기도 한다 [29-31]. +- **LLM 기반 생성:** `ComfyUI-WorkflowGenerator`는 자연어 설명을 입력받아 LLM(Qwen2.5 등)이 논리 구조를 합성하고, 유효성 검사(Validator)를 거쳐 최종 JSON을 빌드하는 3단계 파이프라인을 사용한다 [32-35]. + +### 3. 데이터 구조 분석 (v1.0 기준) +- **노드 객체 속성:** 각 노드는 고유 `id`, 노드 클래스 매핑을 위한 `type`, 실행 순서를 결정하는 `order`, 그리고 사용자 입력값인 `widgets_values`를 보유한다 [4, 9]. +- **연결 구조:** 프론트엔드에서는 별도의 `links` 배열을 통해 연결을 정의하지만, API 포맷에서는 노드의 `inputs` 내부에 `[origin_id, output_slot_index]` 형태의 참조를 직접 기록한다 [2, 3, 36, 37]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **버전 호환성:** ComfyUI가 빈번하게 업데이트됨에 따라 구버전 JSON 파일이 최신 UI에서 정상적으로 작동하지 않을 수 있다는 경고가 존재한다 [38]. +- **메타데이터 손실:** 소셜 미디어 플랫폼이나 이미지 압축 소프트웨어는 종종 이미지 내의 JSON 메타데이터 청크를 삭제하여 워크플로우 정보를 소실시킨다 [8, 38]. +- **API 포맷의 비가역성:** API 포맷으로 내보낸 JSON을 다시 UI로 불러올 경우 시각적 레이아웃 정보(좌표, 그룹 등)가 유실되어 편집이 매우 어려워진다 [26, 39]. + +## 🛠️ 적용 사례 (Applied in summary) +- **comfyui-workflow-to-api-converter-endpoint (SethRobinson):** `/workflow/convert` 엔드포인트를 통해 비 API 워크플로우를 API 포맷으로 서버사이드 변환 수행. **commit `bc85382`**에서 콤보 위젯 대소문자 정규화 로직 적용 [40-42]. +- **ComfyUI-WorkflowGenerator (DanielPFlorian):** LLM을 활용하여 자연어 지시문을 워크플로우 JSON으로 변환하는 파이프라인 구현. **commit `82df278`**에서 드롭다운 중복 모델 문제 해결 [34, 43, 44]. +- **ComfyUI-to-Python-Extension (pydn):** JSON 워크플로우를 실행 가능한 Python 코드로 번역. **commit `6cdcc23`**에서 설치 문제 해결 및 README 업데이트 [30, 31, 45]. +- **comfy_api_simplified:** 노드 제목(title)을 기반으로 파라미터를 설정하여 숫자 ID에 의존하지 않는 안정적인 API 제어 방식 구현 [29, 46, 47]. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** draft +- **검증 단계:** conceptual (실제 적용 사례 다수 발견으로 검증 수준 높음) +- **출처 신뢰도:** B (Official Documentation / Primary Source via NotebookLM) +- **중복 검사 결과:** 신규 생성 (New discovery) + +## 📝 변경 이력 (Change history) +- 2026-05-20: Initial draft generated via Datacollector_MAC P-Reinforce engine. \ No newline at end of file diff --git a/10_Wiki/Comfyui/Workflow.api.json (Backend Format).md b/10_Wiki/Comfyui/Workflow.api.json (Backend Format).md new file mode 100644 index 00000000..659a3778 --- /dev/null +++ b/10_Wiki/Comfyui/Workflow.api.json (Backend Format).md @@ -0,0 +1,67 @@ +--- +id: workflow.api.json-(backend-format) +title: "Workflow.api.json (Backend Format)" +category: "10_Wiki/Topics" +status: "draft" +verification_status: "conceptual" +canonical_id: "" +aliases: ["API Format", "Backend JSON", "workflow_api.json"] +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: ["Mystic Pipeline", "Replicate (fofr/any-comfyui-workflow)", "ComfyUI-to-Python-Extension", "comfyui-workflow-to-api-converter-endpoint"] +github_commit: "" +--- + +# [[Workflow.api.json (Backend Format)]] + +## 🎯 한 줄 통찰 (One-line insight) +비주얼 메타데이터를 배제하고 노드 실행 로직에만 집중하여 서버측 자동화와 프로그래밍적 실행을 가능케 하는 최적화된 데이터 포맷 [1-3]. + +## 🧠 핵심 개념 (Core concepts) +- **실행 그래프 (Execution Graph):** UI 관련 데이터(좌표, 크기, 그룹 등)를 제거하고 백엔드 엔진이 프롬프트를 실행하는 데 필요한 필수 로직만 남긴 스트림라인화된 구조 [1, 4]. +- **임베디드 참조 (Embedded References):** 링크 정보가 별도의 객체가 아니라 노드 입력(inputs) 필드 내에 소스 노드 ID와 출력 슬롯 인덱스의 리스트(예: `[node_id, slot_index]`) 형태로 직접 포함됨 [1, 2, 5]. +- **딕셔너리 구조 (Dictionary Mapping):** 노드 ID를 최상위 키로 사용하며, 각 값은 `class_type`과 `inputs`를 포함하는 객체로 구성된 단일 JSON 객체 형식 [6, 7]. +- **개발자 모드 의존성 (Developer Mode Dependency):** 표준 웹 UI에서는 숨겨져 있으며, 설정에서 'Enable Dev mode Options'를 활성화해야만 'Save (API Format)' 메뉴가 노출됨 [8-11]. + +## 🧩 추출된 패턴 (Extracted patterns) +- **UI 데이터 스트리핑 (UI Data Stripping):** 캔버스 레이아웃 정보를 삭제함으로써 파일 크기를 축소하고 API 호출의 효율성을 극대화하는 설계 패턴 [1, 2, 4]. +- **노드 ID 키잉 (Node ID Keying):** 숫자 문자열(예: "5", "37")을 키로 사용하여 유연한 그래프 트래버스 및 특정 노드 파라미터의 동적 오버라이드를 지원 [6, 7, 12]. +- **입력값 치환 (Input Value Substitution):** Python 등의 언어에서 JSON을 로드한 후 특정 노드 ID의 `inputs` 필드를 직접 수정하여 시드, 프롬프트, 이미지 경로 등을 변경하는 방식의 자동화 패턴 [6, 12, 13]. + +## 📖 세부 내용 (Details) +**형식적 특성 및 구조** +Workflow API JSON은 Litegraph 표준을 따르는 프런트엔드 형식(`workflow.json`)과 달리 ComfyUI 백엔드의 `/prompt` 엔드포인트와 직접 통신하기 위해 설계되었습니다 [1, 2]. 파일 내부의 각 항목은 고유한 노드 식별자를 키로 하며, 해당 노드가 어떤 클래스(`class_type`)인지와 어떤 입력값(`inputs`)을 사용하는지를 명시합니다 [4, 7]. 이때 입력값에는 위젯의 직접적인 값뿐만 아니라 다른 노드로부터 오는 연결 정보도 포함됩니다 [5]. + +**생성 및 추출 방법** +- **GUI 내보내기:** ComfyUI 설정 메뉴(톱니바퀴 아이콘)에서 'Enable Dev mode Options'를 체크한 후 사이드바 메뉴에 나타나는 'Save (API Format)' 버튼을 클릭하여 생성합니다 [8-11]. +- **이미지 메타데이터:** ComfyUI가 생성한 PNG 파일의 `tEXt` 또는 `zTXt` 청크에는 프런트엔드 워크플로우와 함께 'prompt'라는 이름으로 API 포맷의 JSON이 포함되어 자동 저장됩니다 [14, 15]. +- **서버측 변환:** `comfyui-workflow-to-api-converter-endpoint`와 같은 커스텀 노드를 사용하면 클라이언트 측의 자바스크립트 로직 없이도 서버에서 직접 일반 JSON을 API 포맷으로 변환할 수 있습니다 [16, 17]. + +**활용 시나리오** +이 포맷은 주로 외부 애플리케이션 통합에 사용됩니다. 예를 들어 Python 스크립트에서 워크플로우 템플릿을 로드하고 특정 노드의 텍스트 입력을 변경한 후 ComfyUI 서버에 큐잉하거나, Replicate와 같은 클라우드 환경에서 워크플로우를 실행하는 데 필수적입니다 [6, 12, 18, 19]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **가독성 vs 효율성:** API 포맷은 파일 크기가 작고 처리가 빠르지만, UI로 다시 드래그 앤 드롭했을 때 시각적 구조(노드 위치, 그룹화 등)가 복원되지 않는 "뼈대만 남은(skeleton)" 상태가 됩니다 [1, 20]. +- **노드 ID의 취약성:** 워크플로우를 UI에서 편집하면 노드 ID가 변경될 수 있으며, 이로 인해 특정 ID를 하드코딩한 자동화 스크립트가 깨질 위험이 존재합니다 [6, 21]. 이를 해결하기 위해 노드 타이틀 기반 접근 방식이 대안으로 제시되기도 합니다 [21, 22]. + +## 🛠️ 적용 사례 (Applied in summary) +- **Mystic Deployment:** `pipeline.yaml`과 함께 `new_pipeline.py`에서 API JSON을 로드하여 입력 프롬프트를 주입하고 서버를 실행하는 구조로 적용됨 [23, 24]. +- **Replicate API:** `fofr/any-comfyui-workflow` 모델을 통해 API JSON 블롭을 전달받아 이미지를 생성하는 상용 서비스에 적용 [18, 25]. +- **ComfyUI-to-Python-Extension:** `workflow_api.json` 파일을 입력받아 독립 실행 가능한 `.py` 스크립트로 변환하는 CLI 도구에서 핵심 데이터로 사용됨 [26, 27]. +- **Workflow Converter:** 서버측 `/workflow/convert` 엔드포인트를 통해 비 API 워크플로우를 API 포맷으로 실시간 변환하여 Unity 기반 AI 도구 등에서 활용 [16, 17]. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** draft +- **검증 단계:** conceptual (실제 적용 사례 다수 확인됨) +- **출처 신뢰도:** B (Official Documentation / RunComfy & Replicate API Docs / GitHub Repository READMEs) +- **중복 검사 결과:** 신규 생성 (New discovery) + +## 📝 변경 이력 (Change history) +- 2026-05-20: Initial draft generated via Datacollector_MAC P-Reinforce engine. \ No newline at end of file diff --git a/10_Wiki/Comfyui/Workspace Packaging (.cpack.zip).md b/10_Wiki/Comfyui/Workspace Packaging (.cpack.zip).md new file mode 100644 index 00000000..3b75e380 --- /dev/null +++ b/10_Wiki/Comfyui/Workspace Packaging (.cpack.zip).md @@ -0,0 +1,58 @@ +--- +id: workspace-packaging-(.cpack.zip) +title: "Workspace Packaging (.cpack.zip)" +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: ["comfy-pack"] +github_commit: "" +--- + +# [[Workspace Packaging (.cpack.zip)]] + +## 🎯 한 줄 통찰 (One-line insight) +워크플로 JSON, 모델 해시, 커스텀 노드 버전을 단일 아카이브로 통합하여 환경 변화에 무관한 완벽한 실행 재현성을 보장하는 표준화된 배포 아티팩트 규격이다 [1]. + +## 🧠 핵심 개념 (Core concepts) +1. **표준화된 아티팩트 배포:** 단순한 JSON 파일에 대한 의존성을 넘어, 실행에 필요한 모든 메타데이터를 포함하는 아티팩트 기반 배포 방식이다 [1]. +2. **패키지 구성 요소:** .cpack.zip 파일 내에는 워크플로 JSON, 모델의 SHA-256 해시값, 그리고 실행에 필요한 커스텀 노드의 특정 버전 정보가 포함된다 [1]. +3. **모델 해싱(SHA-256):** 모델 파일명에 의존하는 대신 해시값을 사용하여 서로 다른 시스템 환경에서도 정확한 모델을 식별하고 로드한다 [2]. +4. **미래 지향적 유지보수:** 특정 노드가 업데이트되거나 삭제되더라도 패키지 내 기록된 버전을 통해 생성 시점과 동일한 워크플로 기능을 유지한다 [1]. + +## 🧩 추출된 패턴 (Extracted patterns) +- **논리 및 의존성의 완전 캡슐화:** 워크플로의 실행 논리(JSON)와 그 실행을 뒷받침하는 의존성(모델, 노드)을 하나의 단위로 묶어 관리하는 패턴이다 [1, 3]. +- **파일 이름에서 내용 기반 식별로의 전환:** 경로 정보나 파일명이 아닌 데이터 고유의 해시값을 통해 리소스를 관리하여 이식성을 극대화한다 [2]. + +## 📖 세부 내용 (Details) +ComfyUI 워크플로 생성의 미래는 원본 JSON 파일만 공유하던 방식에서 벗어나 표준화된 **아티팩트 기반 배포(Artifact-based deployments)**로 이동하고 있다 [1]. 기존의 JSON 방식은 다른 사용자의 환경에서 모델 파일명이 다르거나 커스텀 노드 버전이 일치하지 않을 때 실행이 실패하는 고질적인 문제를 안고 있었다 [1, 2]. + +Workspace Packaging 규격인 **.cpack.zip**은 이러한 문제를 해결하기 위해 고안되었다 [1]. 이 아카이브 파일은 단순한 압축 파일이 아니라, 워크플로의 실행 환경을 정의하는 고밀도 정보를 담고 있다 [1]. 구체적으로, 생성 시점에 사용된 워크플로 JSON과 함께, 각 모델의 **SHA-256 해시값**을 기록하여 파일명이 다르더라도 로컬 시스템에서 동일한 모델을 찾아낼 수 있게 한다 [2]. 또한, 실행에 필요한 커스텀 노드들의 **특정 버전 정보**까지 포함하여, 시간이 지나 노드가 업데이트되거나 더 이상 지원되지 않더라도 생성 당시의 기능을 보존한다 [1]. + +이러한 방식은 ComfyUI를 전문적인 제작 파이프라인에 통합하는 데 필수적이며, 오디오, 비디오, 3D 및 AI 에이전트가 결합되는 복잡한 시스템 간의 통신에서 공통 언어 역할을 수행한다 [3]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +- **JSON의 한계 극복:** 소스에 따르면 현재의 워크플로 생성 방식은 원시 JSON에 의존하고 있으나, 이는 이식성 면에서 취약하며 점차 .cpack.zip과 같은 워크스페이스 패키징 방식으로 보완 또는 대체되는 추세이다 [1]. +- **최신 정보:** 소스 데이터 작성 시점 기준으로 .cpack.zip은 "Future Outlook"으로 언급되며 차세대 표준으로 제시되고 있다 [1]. + +## 🛠️ 적용 사례 (Applied in summary) +- **comfy-pack:** 모델의 파일명 대신 SHA-256 해시를 사용하여 정확한 모델 위치를 식별하고 관리하는 고급 직렬화 도구로 언급된다 [2]. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** draft +- **검증 단계:** conceptual (comfy-pack 등 실제 도구에서 해시 기반 관리 방식이 이미 적용되어 있음 [2]) +- **출처 신뢰도:** B (Comprehensive Architectures for ComfyUI Workflow JSON Generation and Serialization 문서 기반) +- **중복 검사 결과:** 신규 생성 (New discovery) + +## 📝 변경 이력 (Change history) +- 2026-05-20: Initial draft generated via Datacollector_MAC P-Reinforce engine. \ No newline at end of file diff --git a/10_Wiki/Comfyui/object_info.json.md b/10_Wiki/Comfyui/object_info.json.md new file mode 100644 index 00000000..1ea83e12 --- /dev/null +++ b/10_Wiki/Comfyui/object_info.json.md @@ -0,0 +1,60 @@ +--- +id: object_info.json +title: "object_info.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-20 +updated_at: 2026-05-20 +review_reason: "" +merge_history: [] +tags: ["research", "Comfyui workflow json 생성 방법"] +raw_sources: ["NotebookLM Synthesis"] +applied_in: ["https://-comfyui.runcomfy.com/object_info", "RunComfy Serverless API"] +github_commit: "" +--- + +# [[object_info.json]] + +## 🎯 한 줄 통찰 (One-line insight) +실행 중인 ComfyUI 인스턴스 내 모든 노드의 입출력 규격과 제약 조건을 정의하는 핵심 스키마 레지스트리 [1, 2]. + +## 🧠 핵심 개념 (Core concepts) +- **스키마 카탈로그 (Schema Catalog):** 현재 실행 중인 ComfyUI 인스턴스에 설치된 모든 노드(내장 및 커스텀 노드 포함)의 상세 사양을 담고 있는 청사진이다 [2]. +- **데이터 타입 및 범위 정의:** 각 노드가 요구하는 필수/선택적 입력값의 종류, 허용되는 수치 범위(Min/Max), 기본값, 그리고 출력 데이터의 타입을 명시한다 [2, 3]. +- **동적 엔드포인트 정보:** 서버 실행 중에 `/object_info` 경로를 통해 실시간으로 획득할 수 있는 동적 데이터이다 [4]. +- **유효성 검사 기준:** 외부 애플리케이션이나 사용자 정의 UI에서 입력 데이터를 검증하거나 워크플로우를 프로그래밍 방식으로 수정할 때 참조하는 기준점이 된다 [4, 5]. + +## 🧩 추출된 패턴 (Extracted patterns) +- **서버 기반 동적 쿼리 패턴:** 고정된 파일이 아니라, 현재 서버 환경에 설치된 커스텀 노드 상태를 반영하기 위해 서버 ID 기반의 특정 URL 엔드포인트를 통해 데이터를 추출하는 방식을 취한다 [4]. +- **입력 유효성 선행 검증 패턴:** API를 통해 워크플로우를 실행하기 전, 이 JSON의 스키마 정보를 활용하여 파라미터 오버라이드 값이 노드의 수용 범위를 준수하는지 사전에 확인한다 [4, 5]. + +## 📖 세부 내용 (Details) +`object_info.json`은 ComfyUI 서버가 현재 운용 가능한 모든 노드 클래스에 대한 지식 데이터베이스 역할을 수행한다 [2]. 이 파일은 크게 다음과 같은 정보를 포함한다. +- **노드 입력 사양:** 필수(required) 및 선택(optional) 입력 항목을 구분하며, 각 입력 항목의 데이터 타입(예: STRING, INT, IMAGE)과 위젯 값의 범위, 기본값 등을 정의한다 [2, 3]. 이는 내부적으로 노드의 `INPUT_TYPES()` 함수 정보에서 기인한다 [3]. +- **노드 출력 사양:** 해당 노드가 실행 결과로 생성하는 데이터 스트림의 타입을 정의하여 다른 노드와의 연결 가능 여부를 판단하게 한다 [2]. +- **메타데이터 및 보조 정보:** 노드에 대한 툴팁이나 개발자용 메타데이터 정보를 포함하여, 외부 도구가 노드의 기능을 이해하고 사용자에게 설명할 수 있도록 돕는다 [2]. + +이 파일은 특히 **서버리스 API 배포** 환경에서 중요한 역할을 하며, 개발자는 이를 통해 자신만의 사용자 인터페이스를 구축하거나 워크플로우를 동적으로 생성 및 수정하는 도구를 제작할 수 있다 [1, 4]. 실행 중인 서버에서 직접 데이터를 가져오는 방식이 권장되며, 이는 설치된 커스텀 노드의 변경 사항을 즉각적으로 반영하기 위함이다 [4]. + +## ⚖️ 모순 및 업데이트 (Contradictions & updates) +소스 데이터 내에서 직접적인 정보 상충은 발견되지 않았으나, `object_info.json`은 정적인 아카이브 파일이 아니라 실행 환경에 따라 내용이 변하는 **동적 레지스트리** 성격을 가진다는 점이 명확히 기술되어 있다 [1, 4]. 또한, 커스텀 노드 제작 시 `INPUT_TYPES()` 정의가 부정확하면 이 JSON의 신뢰성도 저하될 수 있음을 시사한다 [3]. + +## 🛠️ 적용 사례 (Applied in summary) +- **RunComfy 플랫폼:** 서버리스 API 배포 시 워크플로우 검증 및 UI 구성을 위한 핵심 파일로 사용된다 [1, 5]. +- **데이터 추출 엔드포인트:** 실제 서버 환경에서 `https://-comfyui.runcomfy.com/object_info` 경로를 통해 이 데이터를 획득할 수 있도록 구현되어 있다 [4]. +- **comfy_api_simplified MCP 서버:** AI 에이전트가 노드 유형을 나열(`list_node_types`)하거나 특정 노드의 상세 정보(`get_node_type_info`)를 조회할 때 이 스키마 정보를 기반으로 툴 기능을 제공한다 [6]. + +## ✅ 검증 상태 및 신뢰도 +- **상태:** 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. \ No newline at end of file diff --git a/10_Wiki/Comfyui/위키 Add node docs for your ComfyUI custom node - ComfyUI 2026-05-20.md b/10_Wiki/Comfyui/위키 Add node docs for your ComfyUI custom node - ComfyUI 2026-05-20.md new file mode 100644 index 00000000..3a8bb757 --- /dev/null +++ b/10_Wiki/Comfyui/위키 Add node docs for your ComfyUI custom node - ComfyUI 2026-05-20.md @@ -0,0 +1,89 @@ +--- +id: add-node-docs-for-your-comfyui-custom-node---comfyui +title: "Add node docs for your ComfyUI custom node - ComfyUI" +category: "10_Wiki/Topics" +status: "draft" +verification_status: "conceptual" +canonical_id: "" +aliases: [] +duplicate_of: "" +source_trust_level: "B" +confidence_score: 0.8 +created_at: 2026-05-20 +updated_at: 2026-05-20 +review_reason: "" +merge_history: [] +tags: ["web", "wikify"] +raw_sources: ["https://docs.comfy.org/custom-nodes/help_page"] +applied_in: [] +github_commit: "" +--- + +# [[Add node docs for your ComfyUI custom node - ComfyUI]] + +## 🎯 한 줄 통찰 (One-line insight) +[[ComfyUI]] 커스텀 노드 개발자는 마크다운(Markdown) 파일을 활용하여 노드의 기능, 파라미터, 사용법을 포함한 풍부한 문서를 UI 내에 직접 구현할 수 있습니다. + +## 🧠 핵심 개념 (Core concepts) +- **Rich Markdown Documentation**: 일반적인 노드 설명을 넘어 [[HTML]] 요소와 마크레이 형식을 사용하여 상세한 정보를 사용자에게 제공합니다. +- **Multi-language Support**: 언어별(영어, 중국어 등) 폴더 구조를 통해 다국어 문서를 지원하며, 사용자의 로케일에 따라 자동 로드됩니다. +- **Automated Fallback System**: 특정 언어의 문서가 없을 경우 기본값인 `NodeName.md`를 참조하도록 설계되었습니다. +- **Integrated UI Display**: 별도의 외부 페이지 없이 [[ComfyUI]] 인터페이스 내에서 직접 노드 문서를 확인할 수 있습니다. + +## 🧩 추출된 패턴 (Extracted patterns) +- **계층적 문서 구조**: `WEB_DIRECTORY/docs/` 하위에 노드 이름을 따르는 폴더와 파일을 배치하는 정형화된 디렉토리 구조를 가집니다. +- **확장 가능한 마크다운 기능**: 표준 문법 외에도 이미지(`![]()`) 및 특정 속성을 가진 `