이미지 생성
두 개의 모델 제품군, 세 가지 작업.
지원 모델
| 모델 ID | 제품군 | 용도 | 비용 (1024×1536, 2026-10-02 측정) |
|---|---|---|---|
gpt-image-2.5-sunburst | OpenAI (Images 2.5, 2026-09-08) | 기본값. 실제 출시될 수 있는 모든 것. 모든 주요 리더보드에서 1위 (생성, 편집, 텍스트 렌더링, 초상화) | max ≈ $0.165, ~90초 · high ≈ $0.041, ~35초 |
gpt-image-2.5-flare | OpenAI (Images 2.5) | 빠른 드래프트 — 방향 탐색, 프롬프트 테스트. Sunburst와 동일한 프롬프트, ~2배 빠름 | medium ≈ $0.01, ~15초 |
gemini-3-pro-image | Google (Nano Banana Pro) | 투표자와 리뷰어가 의견이 갈릴 때 클로즈업 자연스러운 피부/모발; 최대 14개 참조 이미지 | $0.134 (1K/2K) · $0.24 (4K) |
gemini-3.1-flash-image | Google (Nano Banana 2) | 극단적인 종횡비 (1:4…8:1), 이미지 검색 기반 접지 | $0.067 (1K) |
gemini-3.1-flash-lite-image | Google (Nano Banana 2 Lite) | 가장 저렴한 Gemini 탐색; 1K 전용, JPEG 반환 | $0.034 |
gpt-image-2는 여전히 작동하지만(폐기되지 않음) 2.5 모델보다 한 단계 낮습니다. Gemini *-preview ID와 모든 Imagen 모델은 종료되었습니다. 스크립트에서 이를 거부합니다.
이 스킬의 세 가지 작업
- 에셋에 맞는 모델과 품질을 선택합니다. reference/model-selection.md를 참조하세요.
- 모델의 규칙에 따라 프롬프트를 작성합니다. 두 공급자는 정반대의 방식을 원합니다:
- OpenAI GPT Image 2.5는 레이블이 있는 섹션(장면 / 주제 / 세부 사항 / 제약 조건), 따옴표 안의 정확한 텍스트, 인라인 제외 사항("추가 텍스트 없음, 워터마크 없음")을 허용합니다. reference/openai-gpt-image.md를 읽으세요.
- Gemini는 서술형 단락을 원하며, 부정적인 표현은 역효과를 냅니다("사람 없음" 대신 "빈 거리"로 다시 작성). 종횡비는
imageConfig에 넣습니다. reference/gemini-image.md를 읽으세요.
- 번들된 스크립트를 통해 API를 호출합니다. scripts/README.md를 참조하세요.
2.5의 품질 — 덫
2.5 품질 사다리가 재조정되었습니다. 동일한 크기에서 2.5 high는 gpt-image-2 medium의 출력 토큰 정도를 구매하고, 2.5 max는 gpt-image-2 high가 했던 것을 구매합니다(측정: Sunburst 1024×1536 high = 1,372 출력 토큰, max = 5,488). "quality=high"를 예전 습관대로 복사하면 조용히 중간 해상도 이미지가 생성됩니다.
드래프트는 재생성이 아닌 편집으로 승격하세요. 모든 새 생성은 새 이미지를 구성하므로, 승인된 드래프트의 프롬프트를 max에서 다시 실행하면 다른 그림이 나옵니다. 대신 선택된 드래프트를 참조 이미지로 Sunburst max 편집에 전달하여 렌더링 품질만 변경하고 다른 모든 것은 유지하세요. 2026-10-02 검증됨: 이 방식으로 승격된 Flare medium 포스터는 구성, 인물, 포즈, 색상 및 히브리어 텍스트를 유지하고 질감과 세부 묘사를 얻었습니다($0.18, 85초).
| 단계 | 모델 + 품질 | 이유 |
|---|---|---|
| 방향 탐색, 프롬프트 테스트 | Flare medium (--draft) | 약 1센트와 약 15초, 따라서 6개 방향이 최종 하나보다 저렴함 |
| 선택된 드래프트 승격 | --ref <드래프트>와 reference/openai-gpt-image.md의 승격 프롬프트를 사용한 Sunburst max 편집 | 사용자가 선택한 모양을 유지하고 전체 세부 묘사 추가 |
| 확정된 프롬프트의 최종 결과 | Sunburst max (스크립트 기본값) | 전체 세부 묘사; 약 90초, 약 $0.17 |
| 세부 묘사보다 시간이 중요할 때 Sunburst | Sunburst high | 토큰의 1/4, 약 35초 |
절대 auto를 사용하지 마세요. 동일한 호출에 대해 다른 예산으로 결정됩니다.
기본 모델 선택 — 30초 규칙
방향 탐색 / "몇 가지 빠른 옵션" / 프롬프트가 작동하는지 테스트?
예 → Flare medium (--draft). 사용자가 선택한 것을 Sunburst max 편집(--ref <드래프트>)으로 승격.
아니오 ↓
피부 질감이 중요한 클로즈업 사실적인 인간 얼굴?
예 → 먼저 Sunburst max (초상화 투표에서 선두); 확대 시 피부가 지나치게 선명하게 보이면,
gemini-3-pro-image 4K와 비교하여 사람이 선택하도록 함.
아니오 ↓
3:1을 초과하는 초광각/초장형 배너 (1:4, 4:1, 1:8, 8:1)?
예 → gemini-3.1-flash-image (GPT Image는 3:1로 제한됨).
아니오 ↓
그 외 모든 것 → quality=max의 Sunburst.
└── 투명 PNG? 네이티브: --background transparent (png/webp). rembg 불필요.
에셋 유형별 전체 결정 트리: reference/model-selection.md.
요청별 워크플로우
- 범위 확인. 에셋 유형, 브랜드 컨텍스트, 색상/스타일 방향, 목표 종횡비 + 크기, 저장 위치. 요청에 이미 명시되어 있으면 진행합니다.
- 모델 및 품질 선택. 위 규칙을 사용하고, 선택 이유를 한 문장으로 설명합니다.
- 모델별 참조 문서 읽기 —
reference/openai-gpt-image.md또는reference/gemini-image.md. 기억에 의존하지 마세요. 두 공급자는 정반대의 프롬프트 구조를 원하며, 2.5 지침은 여러 gpt-image-2 습관을 변경했습니다. - 투명 배경? GPT Image 2.5에서는 네이티브입니다. Gemini 출력물을 자르거나 기존 이미지를 잘라낼 때만 reference/transparent-backgrounds.md를 읽으세요.
templates/에서 일치하는 템플릿을 열고 플레이스홀더를 채웁니다.- 이미지 내 히브리어 또는 RTL 텍스트? 먼저 reference/hebrew-rtl.md를 읽으세요.
- 사용자에게 "그냥 해"라고 말하지 않는 한 API를 호출하기 전에 프롬프트를 보여줍니다. 프롬프트 검토 한 번으로 대부분의 비용이 많이 드는 재생성을 방지할 수 있습니다.
- 스크립트를 실행합니다. 별도의 지시가 없으면
./generated-images/<설명적-이름>.png에 저장합니다. OpenAI 스크립트는 지연 시간, 출력 토큰 및 호출당 비용을 출력하므로 총계를 계속 기록합니다. - 읽기 도구로 저장된 이미지를 읽습니다 — Claude는 멀티모달이므로 실제로 픽셀을 볼 수 있습니다. 요청 사항에 대해 비판: 구성, 인용된 대로 정확하게 철자되고 한 번 나타나는 텍스트, 색상, 결함(망가진 글자, 추가 손가락, 깨진 지오메트리), 매끄러운 영역의 입자.
- 사용자에게 보여줍니다.
open <경로>, 보고 있는 내용(좋은 점과 나쁜 점)을 요약하고, 특정 변경 사항과 함께 출시/반복을 제안합니다.
에셋 유형별 템플릿
| 에셋 | 템플릿 |
|---|---|
| 브랜드 로고 / 마크 / 워드마크 | templates/logo.md |
| 아이콘 세트 (일관된 스타일 유지) | templates/icon-set.md |
| 모바일 앱 UI 화면 | templates/ui-mobile.md |
| 웹 대시보드 / SaaS UI | templates/ui-dashboard.md |
| 마케팅 히어로 이미지 / 배너 | templates/hero-image.md |
| 제품 사진 / 히어로 샷 | templates/product-shot.md |
완전한 실제 예제는 examples.md를 참조하세요.
반복 캐릭터 및 스토리 패널
동일한 인물이 여러 이미지에 등장하는 만화, 스토리보드 및 애니메이션 에피소드의 경우:
-
사진 속 인물. 전체 사진을 참조로 전달하지 마세요. 편집 엔드포인트는 사진을 다시 스타일링합니다(포즈, 옷, 배경 복사, 캡션 텍스트 추가). 대신 인물을 그리지 않습니다. 작동 파이프라인:
- 먼저 얼굴을 자릅니다:
python3 <this-skill-dir>/scripts/crop_faces.py photos/ faces/ --sheet faces/_sheet.jpg. - 자른 얼굴로 애니메이션 얼굴을 만듭니다.
- 그 얼굴을 반신 코스튬 카드로 편집하고 체형을 명시합니다.
- 사람의 승인을 받은 다음 승격합니다.
프롬프트 및 검토 루프: reference/characters-from-photos.md.
- 먼저 얼굴을 자릅니다:
-
2명 이상의 캐릭터가 있는 장면.
- Flare가 아닌 Sunburst
high로 드래프트: Flare는 이미지 1개만 그렸고, 실외, 자막 포함. - 첫 언급 시 각 이름을 해당 카드에 바인딩: "다나(이미지 1의 여성)".
- 어떤 언어로든 자막을 금지합니다.
- 휴대폰 및 태블릿 화면은 뒤에서 렌더링됩니다. 화면 콘텐츠를 자체 이미지로 생성하고 합성합니다.
- Flare가 아닌 Sunburst
-
일괄 청구.
credit_balance_exhausted는 OpenAI 계정에 크레딧이 소진되었음을 의미하며, 잘못된 요청이 아닙니다. 중단하고, 완료된 샷을 나열하고, 크레딧 충전 후 누락된 샷만 다시 실행합니다.
API 키 및 종속성
API 키는 환경 변수에서 가져오며, 스크립트를 실행하는 셸의 자체 비밀 저장소에서 설정합니다(매번 새로운 셸마다 다시 설정해야 함):
OPENAI_IMAGE_API_KEYforscripts/openai-image.shGEMINI_IMAGE_API_KEY(또는GEMINI_API_KEY) forscripts/gemini-image.sh; 동일한 Google AI Studio 키로 generating-video-clips도 작동함
이 키들은 이미지 생성 범위로 지정됩니다. 채팅이나 임베딩에 재사용하지 말고 절대 출력하지 마세요. 변수에 로드하고 echo하지 마세요.
로컬 도구 (Gemini 출력물 또는 기존 이미지를 자를 때만): rembg (pip install "rembg[cli]" onnxruntime), 선택적으로 ImageMagick.
출력 규칙
- 기본 저장 위치: 현재 작업 디렉토리의
./generated-images/<설명적-이름>.png. - 파일 이름: 설명적 케밥-케이스(
logo-agentleh-monochrome-v1.png); 드래프트는-draft-N을 붙임(logo-agentleh-draft-3.png). - 버전 관리: 반복 시
-v1,-v2, …를 추가합니다. 묻지 않고 이전 생성물을 덮어쓰지 마십시오. - 투명 출력: 버전 뒤에
-transparent를 추가합니다. - macOS에서
open <경로>를 사용하여 생성 직후 사용자에게 보여줍니다.
반복 패턴 — "완벽할 때까지 자동 반복" 루프
에이전트의 임무는 사용자에게 묻기 전에 이미지를 "출시할 만큼 충분히 좋은" 상태로 만드는 것입니다:
1. 생성 (스크립트 호출)
2. 읽기 도구로 저장된 파일 읽기 — Claude가 픽셀을 봄
3. 요청 사항에 대해 자체 비판:
- 구성이 적절한가? (배치, 프레이밍, 균형, 위계, 네거티브 스페이스)
- 텍스트가 인용된 대로 정확히 철자되었고, 각 문자열이 한 번 나타나며, 읽을 수 있는가?
- 색상이 올바른가? (16진수 일치, 팔레트 준수)
- 결함이 있는가? (망가진 문자 형태, 추가 손가락, 깨진 지오메트리, 하늘/배경의 입자)
- 요청 사항이 실제로 충족되었는가?
4. 결정:
- 출시 → 요청 사항 충족; 사용자에게 보여줌
- 편집 → 하나의 국소적 수정; --ref <이전>과 "X만 변경"하고 이전의 모든 수정 및 보존된 세부 사항을 다시 명시하는 프롬프트로 편집
- 재작성 → 근본적인 프롬프트 문제; 처음부터 다시 작성, 수정하지 않음
5. 중단 조건: 이 에셋에 대해 5회 반복 사용, 또는 $3 지출(스크립트의 비용 라인 합산),
또는 출시 가능할 때.
사용자가 최종 판단자이지만 — Claude는 첫 번째 판단자입니다. 결함이 있는 결과를 보여주고 "이거 괜찮나요?"라고 묻지 마세요. 요청 사항을 충족했는지 확인한 후, 또는 비판을 첨부하여("워드마크 커닝이 잘못되었습니다; 다음에 수정하겠습니다") 보여주세요.
모델별 메커니즘
- GPT Image 2.5 편집은
scripts/openai-image.sh --ref <이미지>를 통해/v1/images/edits로 진행됩니다(최대 16개 참조). 마스크가 없으면 각 턴마다 전체 캔버스가 재생성되므로 드리프트가 누적됩니다. 새 요청뿐만 아니라 각 턴마다 모든 이전 변경 사항과 보존된 모든 세부 사항을 다시 명시하세요. 특정 영역이 픽셀 단위로 동일해야 하는 경우, 프롬프트가 이를 유지할 것으로 기대하지 말고 승인된 편집본을 원본에 합성하세요. - Gemini 다중 턴 편집:
scripts/gemini-image.sh --ref <이전-출력> --prompt "X 변경, Y 유지"를 사용하고, 항상 "이미지의 다른 모든 것을 정확히 동일하게 유지 — 구성, 조명, 색상, 기타 모든 요소."로 끝냅니다. - 드리프트 규율. 동일한 이미지에서 3회의 실패한 반복 후, 전략을 전환합니다: 기본 프롬프트를 다시 쓰거나 모델을 변경합니다.
가격
GPT Image 2, 2.5 Flare 및 2.5 Sunburst는 토큰 비율을 공유합니다($30/1M 이미지 출력, $8/1M 이미지 입력, $5/1M 텍스트 입력; Batch API는 절반). 그러나 이미지당 토큰 수는 품질, 크기 및 모델에 따라 다르므로 가정하지 말고 스크립트가 출력하는 비용을 읽으세요. Gemini는 이미지당 가격이 책정됩니다. 전체 표 및 실제 시나리오: reference/pricing.md.
히브리어 / RTL
Sunburst와 Flare는 모두 2026-10-02 테스트에서 히브리어 헤드라인을 올바르게 렌더링했습니다(올바른 문자, 올바른 순서, 올바른 방향, 영어 및 배지와 함께). 먼저 직접 렌더링을 시도하고, 긴 히브리어 줄이나 라이선스가 필요한 서체의 경우 합성 워크플로우로 대체하세요. 히브리어는 Google의 Gemini 이미지 모델 최고 성능 언어 목록에 없습니다 — 히브리어 텍스트에는 GPT Image를 선호하세요. reference/hebrew-rtl.md를 참조하세요.
이 스킬을 사용하지 말아야 할 경우
- 사용자가 편집 가능한 벡터 파일(SVG with paths)을 원하는 경우. 이 모델들은 래스터를 출력합니다.
brand-assets스킬 또는 Recraft V4.1 Vector(recraftv4_1_vector, 네이티브 SVG, 이 스크립트에 연결되지 않음)를 사용하세요. - 사용자가 지원되지 않는 크기의 정확한 픽셀 치수(예: 1200×630)를 원하는 경우. 지원되는 가장 가까운 종횡비로 생성한 다음 자르기/크기 조정하세요.
- 사용자가 특정 실제 인물의 실제 사진을 원하는 경우. 두 공급자 모두 거부하거나 부정확한 초상화를 생성하며 정책 문제가 있습니다.
- 사용자가 디자인 브리프 없이 일반적인 "AI 아트"를 원하는 경우 — ChatGPT 또는 Gemini 앱을 안내하세요. 이 스킬은 디자인 작업에 맞춰 조정되었습니다.