로컬 ComfyUI 이미지 생성 (중국어 프롬프트)
본 스킬 파일 목록 (먼저 읽고, 필요한 부분만 선택)
| 파일 | 언제 읽을까요? |
|---|---|
SKILL.md | 본 파일: 전제 조건 / 로컬 우선 / 仙宫云 시작/종료 / 세 가지 호출 방식 / 파라미터 / 장기约定 / 결과 대기 |
image_gen.py | generate_image() 구현; SKILL.md에 따라 호출, 동작 변경 시 해당 함수 참조 |
feed_screen.py | 비디오 정보 흐름 (인터페이스 템플릿): spec → 6단계 뼈대 프롬프트 → 제출 |
references/01-환경과 라우팅.md | 작업 시작 전 전제 조건, 로컬 우선 라우팅, 仙宫云 자동 시작/종료 확인 |
references/02-호출과 파라미터.md | generate_image 호출 방법, 파라미터 기본값, 결과 저장 위치 확인 |
references/03-服装 검증 세부사항.md | 인물 이미지가 ValueError로 거부될 때 검증 단어 및 허용 조건 확인 |
references/04-일괄 결과 대기 세부사항.md | 한 번에 여러 장 생성 시 두 가지 대기 방법 및 '인터페이스가 움직이지 않음' 판단 기준 |
references/05-장기约定.md | 프롬프트 작성 전, 참조 이미지 전송 전, 服装 검증 또는 <imageN> 오류 발생 시 확인할 빨간 줄 판단 기준 |
references/06-비디오 정보 흐름.md | 비디오 정보 흐름 같은 인터페이스 템플릿(재생 페이지 / 라이브 페이지 / 노트 상세 / 상품 상세, 상태 표시줄 / 탐색 표시줄 / 상호작용 수 / 하단 탐색 포함) 작업 시 세그먼트 순서, UI 5구역 작성법, 크기 표 및 검수 항목 확인 |
"중국어 프롬프트"를 로컬에 배포된 ComfyUI(千问2.1 이미지 처리 워크플로우)에 제출하여 PNG를 생성하고 로컬 경로를 반환합니다.
핵심 로직은 image_gen.py에 있습니다: generate_image는 파라미터 매핑만 수행하며, 실제 "placeholder 워크플로우 제출 → 폴링 → HTTP 다운로드"는
공유 클라이언트 fxai-workflow/comfy_client.py가 통합 처리합니다(fxai-scene-gen / fxai-fourview-gen /
fxai-mv-pipeline과 동일한 코드 사용). 모두 placeholder 모드를 사용합니다(fxai_xxx placeholder는 comfy_client가 주입).
🚨 작업 전 필독 사항 (먼저 읽고, 그다음에 작업)
- 🔴 작업 시작 첫 단계:
fxai-workflow/SKILL.md의 "🚨 ComfyUI 서버 모드 철칙" 읽기 — 철칙은 의존 모듈의 SKILL.md에 있으며,comfy_client.py에는 없습니다(함수만 가져오면 반드시 누락됨). 핵심: ComfyUI는 "凤希本地AI控制台" / 런처로 시작/종료되며, 본 스킬은 주소로 HTTP만 보냅니다; 로컬 8188이 응답하지 않으면 → 클라우드 사용 또는 사용자에게 시작 요청; 리소스 존재 여부는 서버 인터페이스만 인정합니다.
🔴 폰트 라이선스 제한 (텍스트 출력 전 필독)
🔴 본 스킬 결과물(커버 / 삽화)에 텍스트가 나타나는 경우, 텍스트 출력 전에 먼저 fxai-standard/references/06-폰트와素材 라이선스.md를 읽으십시오: 폰트는 06의 화이트리스트에서만 선택(로컬 우선 Noto Sans SC / OFL, Microsoft YaHei는 Windows 번들로 사용 가능), 华文 등 상업용 글꼴 금지; 전달 시 폰트 이름과 라이선스 기록.
전제 조건
나머지 네 가지 전제 조건은 references/01-환경과 라우팅.md를 참조하십시오.
🔴 로컬 우선, 그다음이 仙宫云
라우팅 세부 사항 및 클라우드 시작/종료는 references/01-환경과 라우팅.md를 참조하십시오.
仙宫云: 자동 시작 + 작업 완료 시 종료
세 가지 호출 방식
방식 A: 직접 import (대화 내 스크립트 우선)
02권 참조.
방식 B: CLI (Bash 직접 실행, ComfyUI 연결 시 샌드박스 네트워크 허용 필요)
02권 참조.
방식 C: 비디오 정보 흐름 (인터페이스 템플릿)
python feed_screen.py <spec.json> --tag <프로젝트>_<인터페이스> --save-dir <프로젝트 디렉토리>
python feed_screen.py <spec.json> --print-only # 생성된 프롬프트만 확인
세그먼트 순서, UI 5구역 작성법, 크기 표 및 검수 항목은 references/06-비디오 정보 흐름.md를 참조하십시오.
파라미터 설명 (generate_image)
장기约定 (반드시 준수, 세부 사항은 references/05-장기约定.md 참조)
- 🔴 참조 이미지: 인물은 항상 자체 캐릭터 000/001 사용(
role=woman/man/both또는 사용자 정의 상대 경로); 커버/포스터류는 해당 작품의 캐릭터 이미지 사용, 전역 아바타 라이브러리avatar/000、001사용 금지. - 🔴 프롬프트: 중국어로 직접 이미지 표현, 영어 불필요; 화면에 인물이 있으면 반드시 【의상】+【헤어스타일】 작성,
check_outfit()강제 검증. - 🔴 다중 참조 이미지: N장 전송 시 각각
<imageN>을 써야 하며, 하나라도 누락 시 ValueError(check_image_refs()); 번호 = 참조 이미지 순서, 남성 캐릭터 우선. - 의상 경계선: 가슴 / 신체 부위는 가려져야 하며, 정도는 '비치되지만 드러나지 않음'을 유지.
- 결과물 검증: HTTP 다운로드 후
png_ok검증으로 IEND 포함 확인, 불완전 시 재시도. 본 스킬은 이미지 생성만 담당하며, 게시는fxai-weixin-gzh-publisher에 위임.
출력 디렉토리
결과물 저장 위치는 references/02-호출과 파라미터.md 참조.
결과 대기: 전역 브로드캐스트 리스닝 사용 (내장됨)
generate_image 내부에서 comfy_client.submit_workflow를 호출하며, 제출 후 브로드캐스트 리스닝으로 결과를 기다립니다:
로그에서 queued <pid> 이후 실시간 진행 상황이 표시되고, 완료 후 자동으로 url을 가져와 다운로드 후 로컬 경로 반환 —
결과 대기는 이 브로드캐스트 링크를 사용 (직접 /history 또는 /fxai/tasks/result를 sleep 폴링하면 중복 상태를 얻게 됨).
GPU 대기열에서 대기 중일 때 리스너는 /queue를 확인하여 '여전히 대기열에 있음'을 확인하고 계속 기다립니다. 수동 확인:
comfy_watch.py status <pid 접두사> / comfy_watch.py top (스킬 fxai-comfyui-watcher).
🔴 일괄 이미지 생성 시 대기 방법
"아직 실행 중 / 자동으로 알림을 받게 됨" 메시지를 받으면 즉시 쿼리 중지; block=true는 남은 시간이 60초 이하일 때만 사용합니다. task_id 세 가지 상태 및 "인터페이스 움직임 없음 ≠ 멈춤" 판단 기준은 references/04-일괄 결과 대기 세부사항.md를 참조하십시오.
검증
image_gen.py 수정 후 실행: python image_gen.py "테스트, 순수 장면 산수" --role "" --tag smoke_test,
유효한 PNG 경로 반환 및 파일 완전성 확인(>100바이트, IEND 포함).
이번에 수행할 작업이 결정되면, 해당하는 한두 권만 읽고 나머지는 읽지 마십시오.
프로젝트 목록 (페이지에 따라 진행 상황 표시)
결과물 디렉토리 생성 즉시 파일 작성, 각 단계 완료 시 업데이트; 구조는 fxai-standard 01권 참조.
P=~/.workbuddy/skills/fxai-standard/scripts/fxai_project.py
python "$P" init "<프로젝트>" --title <이름> --category image --skill fxai-comfyui-image-gen
python "$P" stage "<프로젝트>" --script 2 --image 1 --audio 0 --video 0