codex CLI를 통한 이미지 생성
codex exec에는 "이미지를 이 경로에 저장"하는 옵션이 없습니다: 자체적으로 생성한 내용을 $CODEX_HOME/generated_images/<session id>/ 아래에 저장합니다. scripts/codex_image.py는 비대화형 턴을 한 번 실행하고, 해당 세션의 이미지만 수집하여 요청한 위치에 기록합니다. 이미지가 반환되지 않으면 아무 것도 기록하지 않습니다.
항상 이 스크립트를 사용하세요. 직접 작성한 codex exec "고양이 그려줘"는 종종 텍스트나 ImageMagick 그림을 반환하며 출력을 찾기 위해 헤맬 수 있습니다.
절대 유료 API로 대체하지 마세요. codex가 실패하거나 할당량이 부족하더라도 OpenAI SDK나 OPENAI_API_KEY를 사용하지 마십시오. 실패를 보고하고 중단하세요. Google의 유료 API는 사용자가 요청한 경우에만 google-image-gen을 사용하세요.
사용법
스킬 디렉토리에서 실행하거나 스크립트의 절대 경로를 지정하세요. 실행은 약 30-60초 소요됩니다.
python3 scripts/codex_image.py -p "황혼의 젖은 돌담에 기대어 있는 빨간 자전거 한 대, 영화 같은 사진" -o bike.png
| 목표 | 명령어 |
|---|---|
| 종횡비 (모델에 대한 힌트) | -p "..." -o out.png --aspect 9:16 |
| 참조 이미지 | -p "..." -o out.png -r ref.png [-r ref2.png] |
| 이미지 편집 | --edit v1.png -p "하늘을 보라색으로 만들어 줘" -o v2.png |
| 여러 장 생성 | -p "..." -o opt.png -n 3 (opt.png, opt-2.png, opt-3.png 저장) |
| 정확한 픽셀 크기 | -p "..." -o cover.png --aspect 9:16 --fit 1080x1920 |
| 긴 프롬프트 | --prompt-file prompt.md -o out.png |
| 프롬프트만 확인, 비용 없음 | --print-prompt 추가 |
- 출력 확장자는 실제 형식을 따릅니다:
bike.jpg로 요청된 PNG 바이트는bike.png로 저장됩니다. 스크립트는 기록된 각 경로를 출력합니다. --aspect는 결과의 형태만 결정합니다.--fit WxH는 이후 크기를 보장합니다: 검은 막대를 추가하여 패딩하거나(--fit-mode pad, 기본값) 중앙을 기준으로 자르고(--fit-mode crop), 항상 PNG로 저장합니다.--aspect를 대상에 맞추면 패딩이나 자르기가 거의 필요하지 않습니다.--fit은 Pillow가 필요하며, codex 실행 전에 확인됩니다.-n은 한 번의 실행에서 N장을 요청합니다. 모델이 더 적게 반환할 수 있으며, 스크립트는 받은 만큼 저장합니다.--edit은 이미지를 대상으로 첨부하고 프롬프트가 요청한 부분만 변경하도록 모델에 지시합니다.
프롬프트 작성
스크립트는 실제 이미지 도구 호출을 강제하는 문구를 추가하므로 --prompt는 그림에 관한 내용만 포함합니다. 간결한 레이블 형식의 사양이 잘 작동합니다:
주제: 가장자리가 닳아 금속이 드러난 빨간 자전거 한 대
장면: 젖은 돌 harbor 벽에 기대어 있고, 그 너머로 마을 불빛
스타일: 영화 같은 사진, 얕은 피사계 심도
조명: 황혼, 낮고 따뜻한 태양, 젖은 돌에 반사
텍스트(그대로): "NO SPARE"
피해야 할 것: 사람, 워터마크, 추가 자전거
- 반드시 표시되어야 하는 텍스트는 인용부호로 묶고 짧게 유지하세요. 긴 문자열은 철자가 틀려서 돌아올 수 있습니다.
- 나타나지 말아야 할 것을 명시하세요. 투명 컷아웃의 경우 투명 배경을 요청하고
.png로 저장하세요. --edit의 경우, 변경 사항("가로등 제거")을 작성하고 유지되어야 할 것("자전거, 구도, 조명 유지")을 지정하세요. 한 번에 한 가지만 변경하세요.- 편집은 픽셀 패치가 아닌 재생성입니다: 구도와 디테일이 변할 수 있으며, 각 패스가 이를 악화시킵니다. 체인을 짧게 유지하고, 반드시 변경되지 않아야 하는 부분은 나중에 합성하세요.
생성 후
결과물을 전달하기 전에 어떤 방법으로든 이미지를 확인하세요. 모델이 텍스트, 개수 또는 요청된 세부 사항을 틀리는 경우가 있습니다. 놓친 부분이 있으면 더 명확한 프롬프트로 다시 실행하거나 --edit으로 다듬으세요.
실패
스크립트는 0이 아닌 종료 코드와 함께 명확한 메시지를 출력하며 아무 것도 기록하지 않습니다.
- codex CLI를 찾을 수 없음 / 로그인하지 않음: codex를 설치하고
codex login을 실행하세요.CODEX_BIN이 다른 바이너리를 가리키고 있습니다. - 할당량 부족: codex가 보고하는 초기화를 기다리거나 다른 계정을 사용하세요. 루프로 재시도하지 마세요.
- 이미지 생성 안 됨: 모델이 텍스트로 응답했습니다. 응답이 표시되며, 더 간단한 그림 요청으로 다시 실행하세요.
- 시간 초과: 실행이 단순히 느린 경우에만
--timeout(기본값 900초)을 늘리세요. --fit사용 시 Pillow 없음:pip install Pillow를 실행하거나--fit을 제거하세요.