이미지 생성 스킬
현재 프로젝트를 위한 이미지를 생성하거나 편집합니다 (예: 웹사이트 에셋, 게임 에셋, UI 목업, 제품 목업, 와이어프레임, 로고 디자인, 포토리얼리스틱 이미지, 인포그래픽).
최상위 모드 및 규칙
이 스킬은 정확히 두 가지 최상위 모드를 가집니다:
- 기본 내장 도구 모드 (권장): 일반적인 이미지 생성, 편집, 단순 투명 이미지 요청을 위한 내장
image_gen도구.OPENAI_API_KEY가 필요하지 않습니다. - 폴백 CLI 모드:
scripts/image_gen.pyCLI. 사용자가 명시적으로 CLI/API/모델 경로를 요청하거나, 사용자가gpt-image-1.5를 사용한 진정한 모델 네이티브 투명도 폴백을 명시적으로 확인한 후에 사용합니다.OPENAI_API_KEY가 필요합니다.
CLI 폴백 내에서 CLI는 세 가지 하위 명령어를 제공합니다:
generateeditgenerate-batch
규칙:
- 일반적인 이미지 생성 및 편집 요청에는 기본적으로 내장
image_gen도구를 사용하세요. - 일반적인 품질, 크기 또는 파일 경로 제어를 위해 CLI 폴백으로 전환하지 마세요.
- 사용자가 투명 이미지/배경을 명시적으로 요청하는 경우, 먼저 내장
image_gen을 사용하세요: 평평한 제거 가능한 크로마키 배경을 프롬프트한 다음, 설치된 도우미 스크립트$CODEX_HOME/skills/.system/imagegen/scripts/remove_chroma_key.py를 사용하여 로컬에서 배경을 제거하세요. - 내장
image_gen또는 CLIgpt-image-2에서 CLIgpt-image-1.5로 자동 전환하지 마세요. 이를 모델/경로 다운그레이드로 간주하고, 사용자가 이미gpt-image-1.5,scripts/image_gen.py또는 CLI 폴백을 명시적으로 요청하지 않은 경우 먼저 사용자에게 물어보세요. - 투명 요청이 크로마키 제거로 처리하기에 너무 복잡해 보이거나, 진정한/네이티브 투명도를 요구하거나, 로컬 제거가 검증에 실패한 경우,
gpt-image-2가background=transparent를 지원하지 않으므로 진정한 투명도를 얻으려면 CLIgpt-image-1.5 --background transparent --output-format png가 필요하다고 설명하고 진행 여부를 물어보세요. 사용자가 확인한 후에만 CLI 폴백을 실행하세요. batch라는 단어 자체가 CLI 폴백을 의미하지는 않습니다. 사용자가 많은 에셋을 요청하거나 CLI/API/모델 제어를 명시적으로 요청하지 않고 에셋을 일괄 생성하라고 말하는 경우, 내장 경로를 유지하고 요청된 에셋 또는 변형당 하나의 내장 호출을 실행하세요.- 내장 도구가 실패하거나 사용할 수 없는 경우, 사용자에게 CLI 폴백이 존재하며
OPENAI_API_KEY가 필요하다고 알리세요. 사용자가 명시적으로 해당 폴백을 요청하는 경우에만 진행하세요. - 사용자가 명시적으로 CLI 모드를 요청하는 경우, 번들된
scripts/image_gen.py워크플로우를 사용하세요. 일회성 SDK 실행기를 만들지 마세요. scripts/image_gen.py를 절대 수정하지 마세요. 누락된 것이 있으면 다른 작업을 수행하기 전에 사용자에게 물어보세요.
내장 저장 경로 정책:
- 내장 도구 모드에서 Codex는 기본적으로
$CODEX_HOME/*아래에 생성된 이미지를 저장합니다. - OS 임시 폴더를 기본 내장 대상으로 설명하거나 의존하지 마세요.
- 내장
image_gen도구의 대상 경로 인수(있는 경우)를 설명하거나 의존하지 마세요. 특정 위치가 필요한 경우, 먼저 생성한 다음$CODEX_HOME/generated_images/...에서 선택한 출력을 이동하거나 복사하세요. - 내장 모드에서 저장 경로 우선 순위:
- 사용자가 대상을 지정하면 선택한 출력을 해당 위치로 이동하거나 복사하세요.
- 이미지가 현재 프로젝트용인 경우, 작업을 마치기 전에 최종 선택된 이미지를 워크스페이스로 이동하거나 복사하세요.
- 이미지가 미리 보기나 브레인스토밍 전용인 경우 인라인으로 렌더링하세요. 기본 파일은 기본
$CODEX_HOME/*경로에 남아 있을 수 있습니다.
- 프로젝트에서 참조하는 에셋을 기본
$CODEX_HOME/*경로에만 남겨두지 마세요. - 사용자가 명시적으로 교체를 요청하지 않는 한 기존 에셋을 덮어쓰지 마세요. 대신
hero-v2.png또는item-icon-edited.png와 같은 버전이 지정된 형제 파일 이름을 만드세요.
두 모드 모두에 대한 공유 프롬프트 지침은 references/prompting.md 및 references/sample-prompts.md에 있습니다.
CLI 모드 전용 폴백 문서/리소스:
references/cli.mdreferences/image-api.mdreferences/codex-network.mdscripts/image_gen.py
로컬 후처리 도우미:
$CODEX_HOME/skills/.system/imagegen/scripts/remove_chroma_key.py: 생성된 이미지에서 평평한 크로마키 배경을 제거하고 알파 채널이 있는 PNG/WebP를 작성합니다. 앤티앨리어싱된 가장자리를 위해 자동 키 샘플링, 소프트 매트 및 디스필(despill)을 선호합니다.
사용 시기
- 새 이미지 생성 (컨셉 아트, 제품 사진, 표지, 웹사이트 히어로)
- 스타일, 구도 또는 분위기를 위한 하나 이상의 참조 이미지를 사용하여 새 이미지 생성
- 기존 이미지 편집 (인페인팅, 조명 또는 날씨 변환, 배경 교체, 객체 제거, 합성, 투명 배경)
- 하나의 작업에 대해 많은 에셋 또는 변형 생성
사용하지 말아야 할 시기
- 저장소 내 기존 SVG/벡터 아이콘 세트, 로고 시스템 또는 일러스트레이션 라이브러리 확장 또는 일치
- SVG, HTML/CSS 또는 캔버스에서 직접 생성하는 것이 더 나은 단순한 도형, 다이어그램, 와이어프레임 또는 아이콘 생성
- 소스 파일이 이미 편집 가능한 네이티브 형식으로 존재하는 경우의 소규모 프로젝트 로컬 에셋 편집
- 사용자가 생성된 비트맵 대신 결정론적 코드 네이티브 출력을 명확히 원하는 모든 작업
의사 결정 트리
두 가지 별개의 질문을 생각하세요:
- 의도: 새 이미지인가요, 기존 이미지 편집인가요?
- 실행 전략: 하나의 에셋인가요, 아니면 여러 에셋/변형인가요?
의도:
- 사용자가 기존 이미지의 일부를 유지하면서 수정하려는 경우, 요청을 편집으로 처리하세요.
- 사용자가 스타일, 구도, 분위기 또는 주제 지침에 대한 참조로만 이미지를 제공하는 경우, 요청을 생성으로 처리하세요.
- 사용자가 이미지를 제공하지 않는 경우, 요청을 생성으로 처리하세요.
내장 편집 의미:
- 내장 편집 모드는 대화 컨텍스트에 이미 표시된 이미지(예: 첨부된 이미지 또는 스레드에서 이전에 생성된 이미지)를 위한 것입니다.
- 사용자가 내장 도구로 로컬 이미지 파일을 편집하려는 경우, 먼저 내장
view_image도구로 로드하여 이미지가 대화 컨텍스트에 표시되도록 한 다음 내장 편집 흐름을 진행하세요. - 내장 도구를 통해 임의의 파일 시스템 경로 편집을 약속하지 마세요.
- 로컬 파일에 여전히 직접 파일 경로 제어, 마스크 또는 기타 명시적 CLI 전용 매개변수가 필요한 경우, 사용자가 요청할 때만 명시적 CLI 폴백을 사용하세요.
- 편집의 경우, 불변 항목을 적극적으로 보존하고 기본적으로 비파괴적으로 저장하세요.
실행 전략:
- 내장 기본 경로에서 요청된 에셋 또는 변형당 하나의
image_gen호출을 실행하여 많은 에셋 또는 변형을 생성하세요. - CLI 폴백 경로에서 사용자가 명시적으로 CLI 모드를 선택하고 많은 프롬프트/에셋이 필요한 경우에만 CLI
generate-batch하위 명령어를 사용하세요. - 많은 개별 에셋의 경우,
n을 별도의 프롬프트 대신 사용하지 마세요.n은 하나의 프롬프트에 대한 변형을 위한 것이며, 개별 에셋은 별도의 내장 호출 또는 별도의 CLIgenerate-batch작업이 필요합니다.
사용자가 기존 이미지를 변경하도록 명확히 요청하지 않는 한 새 이미지를 원한다고 가정하세요.
워크플로우
- 최상위 모드를 결정하세요: 기본적으로 내장 모드(간단한 투명 출력 요청 포함), 명시적으로 요청된 경우 또는 사용자가 투명 출력 폴백을 명시적으로 확인한 경우에만 폴백 CLI.
- 의도를 결정하세요:
generate또는edit. - 출력이 미리 보기 전용인지 아니면 현재 프로젝트에서 사용될 것인지 결정하세요.
- 실행 전략을 결정하세요: 단일 에셋 vs 반복 내장 호출 vs CLI
generate-batch. - 입력을 사전에 수집하세요: 프롬프트, 정확한 텍스트(그대로), 제약 조건/금지 목록, 입력 이미지.
- 각 입력 이미지에 대해 역할을 명시적으로 레이블링하세요:
- 참조 이미지
- 편집 대상
- 지원 삽입/스타일/합성 입력
- 편집 대상이 로컬 파일 시스템에만 있고 내장 경로를 유지하는 경우, 먼저
view_image로 검사하여 이미지가 대화 컨텍스트에서 사용 가능하도록 하세요. - 사용자가 사진, 일러스트, 스프라이트, 제품 이미지, 배너 또는 기타 명시적 래스터 스타일 에셋을 요청한 경우, SVG/HTML/CSS 자리 표시자를 대신 사용하지 말고
image_gen을 사용하세요. 요청이 기존 저장소 네이티브 SVG/벡터/코드 에셋과 일치해야 하는 아이콘, 로고 또는 UI 그래픽인 경우, 대신 해당 항목을 직접 편집하는 것을 선호하세요. - 특정성에 따라 프롬프트를 보강하세요:
- 사용자의 프롬프트가 이미 구체적이고 상세한 경우, 창의적인 요구 사항을 추가하지 않고 명확한 사양으로 정규화하세요.
- 사용자의 프롬프트가 일반적인 경우, 출력 품질을 실질적으로 향상시킬 때만 취향에 맞게 보강하세요.
- 기본적으로 내장
image_gen도구를 사용하세요. - 투명 출력 요청의 경우, 아래 투명 이미지 지침을 따르세요: 내장
image_gen으로 평평한 크로마키 배경에 생성하고, 선택한 출력을 워크스페이스 또는tmp/imagegen/에 복사하고, 설치된$CODEX_HOME/skills/.system/imagegen/scripts/remove_chroma_key.py도우미를 실행하고, 사용하기 전에 알파 결과를 검증하세요. 이 경로가 부적합해 보이거나 실패하는 경우, CLIgpt-image-1.5로 전환하기 전에 물어보세요. - 출력을 검사하고 검증하세요: 주제, 스타일, 구도, 텍스트 정확성, 불변 항목/금지 항목.
- 단일 대상 변경으로 반복한 다음 다시 확인하세요.
- 미리 보기 전용 작업의 경우 이미지를 인라인으로 렌더링하세요. 기본 파일은 기본
$CODEX_HOME/generated_images/...경로에 남아 있을 수 있습니다. - 프로젝트에 바인딩된 작업의 경우, 선택한 아티팩트를 워크스페이스로 이동하거나 복사하고 소비 코드나 참조를 업데이트하세요. 프로젝트에서 참조하는 에셋을 기본
$CODEX_HOME/generated_images/...경로에만 남겨두지 마세요. - 배치 또는 다중 에셋 요청의 경우, 사용자가 명시적으로 출력을 미리 보기 전용으로 유지하도록 요청하지 않는 한 요청된 모든 전달물 최종본을 워크스페이스에 유지하세요. 폐기된 변형은 요청되지 않는 한 보관할 필요가 없습니다.
- 사용자가 명시적으로 CLI 폴백을 선택하거나 확인하는 경우, 모델, 품질, 크기,
input_fidelity, 마스크, 출력 형식, 출력 경로 및 네트워크 설정에 대한 폴백 전용 문서를 사용하세요. - 워크스페이스에 바인딩된 모든 에셋에 대한 최종 저장 경로와 최종 프롬프트 또는 프롬프트 세트, 그리고 내장 도구 또는 폴백 CLI 모드 중 어떤 것이 사용되었는지 항상 보고하세요.
투명 이미지 요청
투명 이미지 요청은 여전히 먼저 내장 image_gen을 사용합니다. 내장 도구는 진정한 투명 배경 제어를 노출하지 않으므로, 제거 가능한 크로마키 소스 이미지를 만든 다음 로컬에서 키 색상을 알파로 변환합니다.
기본 시퀀스:
- 내장
image_gen을 사용하여 완벽하게 평평한 단색 크로마키 배경에 요청된 주제를 생성하세요. - 주제에 나타날 가능성이 낮은 키 색상을 선택하세요: 기본값
#00ff00, 녹색 주제의 경우#ff00ff를 사용하고, 파란색 주제의 경우#0000ff를 피하세요. - 생성 후,
$CODEX_HOME/generated_images/...에서 선택한 소스 이미지를 워크스페이스 또는tmp/imagegen/으로 이동하거나 복사하세요. - 설치된 도우미 경로를 실행하세요. 프로젝트 상대 스크립트 경로가 아닙니다:
python "${CODEX_HOME:-$HOME/.codex}/skills/.system/imagegen/scripts/remove_chroma_key.py" \ --input <source> \ --out <final.png> \ --auto-key border \ --soft-matte \ --transparent-threshold 12 \ --opaque-threshold 220 \ --despill - 출력에 알파 채널, 투명한 모서리, 그럴듯한 주제 범위 및 눈에 띄는 키 색상 프린지가 없는지 확인하세요. 얇은 프린지가 남아 있으면
--edge-contract 1로 한 번 재시도하고, 가장자리가 눈에 띄게 계단식이고 주제가 반짝이거나 반사되지 않는 경우에만--edge-feather 0.25를 사용하세요. - 에셋이 프로젝트에 바인딩된 경우 최종 알파 PNG/WebP를 프로젝트에 저장하세요. 프로젝트에서 참조하는 투명 에셋을
$CODEX_HOME/*아래에만 남겨두지 마세요.
투명 요청을 다음과 같이 프롬프트하세요:
배경 제거를 위해 완벽하게 평평한 단색 #00ff00 크로마키 배경에 요청된 주제를 생성하세요.
배경은 그림자, 그라데이션, 질감, 반사, 바닥면 또는 조명 변화 없이 균일한 색상이어야 합니다.
주제를 선명한 가장자리와 넉넉한 패딩으로 배경과 완전히 분리된 상태로 유지하세요.
주제 어디에도 #00ff00을 사용하지 마세요.
캐스트 섀도우, 접촉 그림자, 반사, 워터마크 또는 명시적으로 요청되지 않은 텍스트가 없어야 합니다.
크로마 키잉 대신 CLI gpt-image-1.5 --background transparent --output-format png를 자동으로 사용하지 마세요. 사용자가 진정한/네이티브 투명도를 요청하거나, 로컬 제거가 검증에 실패하거나, 요청된 이미지가 복잡한 경우(머리카락, 털, 깃털, 연기, 유리, 액체, 반투명 재질, 반사 물체, 부드러운 그림자, 사실적인 제품 접지 또는 모든 실용적인 키 색상과 충돌하는 주제 색상) 먼저 사용자에게 물어보세요.
다음과 같은 간결한 확인 메시지를 사용하세요:
이 작업은 아마도 진정한 네이티브 투명도가 필요할 것입니다. 기본 내장 경로는 크로마키 배경과 로컬 제거를 사용하지만, 진정한 투명도는 gpt-image-2가 background=transparent를 지원하지 않기 때문에 gpt-image-1.5를 사용하는 CLI 폴백이 필요합니다. 또한 OPENAI_API_KEY가 필요합니다. 해당 CLI 폴백으로 진행할까요?
프롬프트 보강
사용자 프롬프트를 구조화된 프로덕션 지향 사양으로 재구성하세요. 사용자의 목표를 더 명확하고 실행 가능하게 만들지만, 맹목적으로 세부 사항을 추가하지 마세요.
이것을 프롬프트 형태 지정 지침으로 취급하고, 폐쇄된 스키마로 취급하지 마세요. 도움이 되는 줄만 사용하고, 명확성을 실질적으로 향상시킬 때만 짧은 추가 레이블 줄을 추가하세요.
특정성 정책
사용자 프롬프트의 특정성을 사용하여 적절한 보강 정도를 결정하세요:
- 프롬프트가 이미 구체적이고 상세한 경우, 해당 특정성을 유지하고 정규화/구조화만 하세요.
- 프롬프트가 일반적인 경우, 결과를 실질적으로 향상시킬 때만 취향에 맞게 보강을 추가할 수 있습니다.
허용되는 보강:
- 구도 또는 프레이밍 힌트
- 폴리시 수준 또는 의도된 사용 힌트
- 실용적인 레이아웃 지침
- 명시된 요청을 지원하는 합리적인 장면 구체성
허용되지 않는 보강:
- 요청에 암시되지 않은 추가 캐릭터 또는 객체
- 암시되지 않은 브랜드 이름, 슬로건, 팔레트 또는 내러티브 비트
- 주변 레이아웃이 지원하지 않는 임의의 측면별 배치