jp-skill-image은(는) 무엇을 하나요?
자연어 요청을 Cloudflare Workers AI(@cf/black-forest-labs/flux-1-schnell)로 생성된 이미지로 변환합니다. 전체 흐름은 다음과 같습니다: 사용자가 원하는 내용을 설명하고, Claude가 프롬프트 엔지니어링을 수행하며, 스크립트가 Cloudflare API를 호출하고, 이미지가 로컬에 JPG로 저장됩니다.
적용 시점
사용자가 설명을 바탕으로 이미지 생성을 원할 때 — "카페 로고 만들어줘", "내 AI 영상 썸네일 만들어줘", "사이버펑크 고양이 사진" 등. Claude는 모호한 요청을 훌륭한 프롬프트로 변환한 후 생성해야 합니다.
적용되지 않는 경우: 기존 이미지 편집, 벡터 아트/SVG, 비디오.
0단계 — 항상 먼저 .env 확인하기
스크립트를 실행하기 전에 자격 증명이 확인되는지 확인하세요. 스크립트는 다음 순서로 찾습니다: 실제 환경 변수 → 현재 디렉토리 또는 상위 디렉토리의 .env → ~/.claude/skills/jp-skill-image/.env (전역 폴백).
python3 -c "import sys; sys.path.insert(0, '$HOME/.claude/skills/jp-skill-image'); from generate import load_credentials; print('OK' if all(load_credentials()) else 'MISSING')"
변수가 누락된 경우 (새 사용자 / 새로 클론된 프로젝트), 이미지를 생성하지 말고 다음 3단계로 사용자에게 설정 방법을 알려주세요:
- CF_ACCOUNT_ID: Cloudflare 대시보드 → 모든 도메인/프로젝트 → Workers & Pages → Overview (오른쪽에 표시됨), 또는
https://dash.cloudflare.com/profile/account-id에서 직접 확인... 대시보드 URL이나 왼쪽 사이드바의 Manage Account 섹션(My Profile 아님)에서도 찾을 수 있습니다. - CF_API_TOKEN:
https://dash.cloudflare.com/profile/api-tokens→ Create Token → Custom Token → 권한Account.Workers AI Scripts: Edit→ Account Resources: 사용자 계정 → Create. .env파일 생성 — 프로젝트 루트 또는~/.claude/skills/jp-skill-image/.env(어느 폴더에서든 작동하도록)에 다음 내용을 추가:CF_ACCOUNT_ID=xxxxx CF_API_TOKEN=xxxxx
프로젝트가 인터넷 연결에 기업 프록시를 사용하는 경우 (.npmrc에 HTTPS_PROXY가 있는지 또는 외부 API 요청이 타임아웃으로 실패하는지 확인), 다음도 추가하세요:
HTTPS_PROXY=<프록시-주소>
변수가 존재하는지 확인되면 정상적으로 계속 진행합니다.
실행 방법
아무 디렉토리에서든 (이미지는 현재 디렉토리를 기준으로 저장됩니다):
python3 ~/.claude/skills/jp-skill-image/generate.py "<최적화된 프롬프트>" -o <파일명>.jpg --steps <N>
"<최적화된 프롬프트>"— 당신이 작성한 프롬프트 (아래 참조), 사용자의 원본 단어가 아닙니다.-o/--output— 저장 위치 (기본값out.jpg). 짧고 설명적인 이름 사용, 예:coffee-logo.jpg.--steps— 확산 단계 수 (기본값4). flux-schnell은 적은 단계에 최적화되었지만, 최고 품질을 위해서는 사용자가 속도를 요구하지 않는 한 8을 사용하세요. 4 미만은 사용하지 마세요.
스크립트는 성공 시 Saved <파일> ...을 출력하고, 실패 시 읽기 쉬운 오류를 출력합니다 (내부적으로 처리되는 base64 JSON 이미지 응답 사례 포함).
Claude의 실제 작업: 최고 품질의 프롬프트 작성
이 스킬의 가치는 Claude가 사용자의 의도를 생생하고 구체적이며 기술적으로 정확한 프롬프트로 확장한 후 스크립트를 호출하는 데 있습니다. 사용자의 요청을 그대로 전달하지 마세요 — 항상 먼저 다듬으세요.
Flux용 고품질 프롬프트는 다음 순서로 명시해야 합니다:
- 주요 주제 — 장면에 무엇이 있는지 구체적이고 모호함 없이.
- 스타일/매체 — 사실적 사진, 3D 렌더링, 플랫 벡터, 수채화, 아이소메트릭, 픽셀 아트 등.
- 구성 및 프레이밍 — 클로즈업, 풀 샷, 중앙 배치, 3분할 법칙, 카메라 각도.
- 조명 및 분위기 — 골든 아워, 네온, 부드러운 스튜디오 조명, 드라마틱한 그림자, 역광.
- 색상 및 디테일 수준 — 특정 팔레트, 배경, 텍스처, 디테일 수준 ("highly detailed", "clean minimal").
- 기술적 품질 (사실적 사진/렌더용) — "cinematic", "8k", "sharp focus", "professional photography" 등의 용어는 Flux가 프리미엄 결과물에 가까워지도록 도와줍니다.
변환 예시:
- 사용자: "카페 로고"
- 전달할 프롬프트: "minimalist logo of a steaming coffee cup, flat vector illustration, warm brown and cream palette, centered on a clean off-white background, simple bold shapes, modern branding, professional design"
엄격한 규칙:
- 프롬프트는 항상 영어로 (Flux가 더 잘 반응합니다).
- 1-2문장, 정보 밀도가 높고 군더더기 없이.
- 이미지 내에 읽을 수 있는 텍스트/단어를 요청하지 마세요 — Flux가 제대로 렌더링하지 못합니다.
- 사용자가 충분한 디테일을 제공하지 않으면, 최선의 창의적 결정으로 빈칸을 채우세요 (주제가 정말 모호하지 않은 이상 질문하지 마세요).
- 기본적으로
--steps 8을 사용하여 품질을 극대화하세요. 사용자가 명시적으로 속도를 요청하는 경우에만 4로 낮추세요.
생성 후
- 파일이 저장되었는지 확인하세요 (스크립트가 경로를 출력합니다).
- 사용자에게 파일 이름과 사용한 정확한 프롬프트를 알려주어 조정 후 재실행할 수 있도록 하세요.
- 변형을 원하면 수정된 프롬프트와 새
-o로 다시 실행하세요.
기술 요구 사항
CF_ACCOUNT_ID와CF_API_TOKEN이 0단계의 세 가지 소스 중 하나로 확인되어야 함.- Python 3.8+. 외부 의존성 없음 — 스크립트는 표준 라이브러리(
urllib)만 사용하므로pip install이나 가상 환경이 필요 없습니다. - 스크립트는 Cloudflare API의 base64 응답을 디코딩하여 바이너리 JPG로 저장합니다. 응답 자체가 직접 이미지는 아닙니다.