자산 준비대 (Asset Preparation Desk)
비디오 생성이 제대로 연결되려면 이 단계가 중요합니다. 해결해야 할 문제는 단 하나: 같은 사물이 모든 이미지에서 동일하게 보이도록 하는 것입니다.
입력은 자산 목록(또는 스토리보드)이고, 출력은 번호로 명명되어 short-video-generate가 첫 프레임으로 직접 참조할 수 있는 이미지 묶음입니다.
스토리보드를 작성하지 않고, 구간을 나누지 않으며, 비디오 프롬프트를 작성하지 않습니다. 또한 비디오를 생성하지 않습니다. 오직 '이미지' 부분만 담당합니다.
1. 네 가지 철칙
- 앵커 우선, 파생은 그 다음. 마스터 버전이 확정되지 않으면 앵글 이미지를 만들지 않습니다. 앵글 이미지는 마스터 버전을 기반으로 생성되며, 마스터가 잘못되면 전체 그룹이 잘못됩니다.
- 한 번에 하나의 변수만 변경. 앵글을 바꾸면 조명을 바꾸지 말고, 조명을 바꾸면 앵글을 바꾸지 마십시오. 둘을 동시에 바꾸면 문제 발생 시 원인을 파악하기 어렵습니다.
- 후보는 추가만, 덮어쓰지 않음.
v1,v2를 모두 보관하고, 선택된 버전을 작업 지시서에 기록합니다. 생성은 확률적이므로 이전 버전을 삭제하면 퇴로가 없어집니다. - 이미지와 목록은 반드시 일치해야 함. 번호가 곧 파일 이름입니다. 목록에
PR-01이 있으면 디렉토리에는PR-01_*파일이 있어야 합니다.
2. 자산 등급 (세 가지)
모든 이미지에 동일한 노력을 들일 가치는 없습니다. 먼저 등급을 매기고, 그에 따라 자원을 배분합니다.
| 등급 | 설명 | 예 | 요구사항 |
|---|---|---|---|
| 앵커 레벨 | 전체 영상의 정체성 기준, 여러 곳에서 참조 | 제품 메인 이미지, 캐릭터 3면도, 주요 장면 전경 | 가장 엄격: 다중 후보, 항목별 검증, 확정 후 변경 불가 |
| 파생 레벨 | 앵커에서 파생된 앵글, 상태, 세부 사항 | 제품 후면, 개봉 상태, 손 클로즈업 | 앵커와 나란히 비교 필수 |
| 일회성 | 한 번만 나타나며 일관성에 영향 없음 | 빈 장면, 광효과, 전환 소재 | 적당하면 사용, 다중 후보 불필요 |
등급을 잘못 매기면 낭비가 발생합니다: 빈 장면을 앵커 레벨로 처리하면 30초짜리 영상이 사흘 동안 막힐 수 있고, 제품 메인 이미지를 일회성으로 처리하면 이후 모든 구간을 다시 작업해야 합니다.
3. 소스: 세 가지 모두 가능, 용도에 따라 선택
| 소스 | 사용 시기 | 주의사항 |
|---|---|---|
| 실사 촬영 | 실물이 있고, 정확성이 요구되며, 파라미터나 효능이 관련된 경우 | 가장 좋지만, 소재가 있어야 함 |
| AI 생성 | 실물이 없거나, 가상 시나리오, 분위기, 손 동작 | 기하학과 인쇄물 잠금, 다중 후보 생성 |
| 공식 소재 | 브랜드에서 제공한 메인 이미지, 패키지 이미지 | 바로 앵커로 사용, 가장 안정적 |
실사를 강제하지 않습니다. 순수 AI 생성 영상의 경우 전체 자산이 AI로 제작되어도 무방하며, 내부 일관성만 유지하면 됩니다.
사전에 반드시 명확히 해야 할 위험
이 영상이 시청자에게 특정 파라미터나 효능(용량, 시간, 성분, 효과)을 주장해야 하는 경우, 화면 속 제품이 AI로 생성되었다면 화면과 주장 간에 불일치가 발생합니다. 가벼우면 댓글에서 지적되고, 심하면 허위 광고가 될 수 있습니다.
처리 방법은 하나뿐입니다: 주장이 있다면 제품 화면은 실사 또는 공식 소재를 사용하고, 주장이 없고 순수 분위기 또는 가상 콘텐츠라면 AI 생성으로 충분합니다.
이 조건은 작업 시작 전에 한 번만 물어보면 되며, 완성 후에 발견되지 않도록 해야 합니다.
AI 생성 실행 방법
내장된 scripts/kie_gen.py (KIE GPT Image 2)를 사용하여 제출, 폴링, 다운로드, 명명 저장을 한 번에 수행합니다:
# 텍스트-이미지 (해상도를 지정하지 않으면 1K, 충분함)
python scripts/kie_gen.py generate --prompt "…" --ratio 9:16 \
--out 04-소재/01-자산이미지/PR-01_제품메인이미지_v1.png
# 이미지-이미지: 앵커를 참조로 사용
python scripts/kie_gen.py generate --prompt "…" --ref PR-01_제품메인이미지_v1.png \
--out 04-소재/01-자산이미지/S01_f01_v1.png
# 배치: JSON 작업 테이블 읽기 (기본 5개 동시 실행)
python scripts/kie_gen.py batch --tasks tasks.json --out-dir 04-소재/01-자산이미지 --dry-run
python scripts/kie_gen.py batch --tasks tasks.json --out-dir 04-소재/01-자산이미지
해상도 기본값은 1K입니다. 이 이미지들은 최종적으로 비디오 모델에 의해 리샘플링되므로, 원본을 크게 만들어도 세부 정보가 유지되지 않고 실패율만 증가합니다. 별도로 확대/크롭(예: 썸네일)하거나 흰 배경 마스터 버전을 재사용해야 하는 경우에만 --resolution 2K를 추가합니다.
배치는 기본적으로 5장을 동시에 실행합니다. 이미지 생성에는 1040초가 소요되며, 6장을 직렬로 실행하면 34분을 순수하게 기다려야 합니다. 5개의 동시 작업으로 6장을 실행하면, 총 소요 시간은 가장 느린 작업에 한 라운드가 추가된 정도입니다. 속도 제한(code != 200 또는 429)이 발생하면 --concurrency 2를 사용하고, 속도 제한 때문에 프롬프트를 변경하지 마십시오.
네 가지 규칙:
- 먼저
--dry-run으로 요청 본문을 확인한 후 실제로 실행합니다. 한 번에 20장을 배치 제출할 때 파라미터가 잘못되면 20번의 낭비가 발생합니다. - API 키는 환경 변수로만 (
KIE_API_KEY) 전달하며, 스크립트, 작업 테이블, 작업 지시서에 기록하지 않습니다. - 앵커를 먼저 생성하고 스타일을 확인한 후, 파생 이미지를 배치로 생성합니다. 앵커 레벨 자산은 동시 실행 수를 줄여 한 장씩 확인하는 것이 좋습니다.
- taskId를 기록하여 작업 지시서에 남기고, 나중에 동일한 이미지를 다시 생성해야 할 때 참조할 수 있습니다.
작성법, 파라미터 제한, 실패 처리에 대한 자세한 내용은 references/ai-generation.md를 참조하십시오.
4. 7단계 프로세스
1 목록 읽기 → 2 순서 정하기 → 3 등급 매기기 → 4 후보 생성 → 5 검수 → 6 저장 → 7 상태 업데이트
1단계 · 목록 읽기
02-자산목록.md에서 번호, 유형, 용도, 소스, 참조 구간을 읽습니다.
목록에 이미지 프롬프트가 없는 경우 references/prompt-fixups.md의 네 가지 골격을 사용하여 보충하고, 있는 경우 그대로 사용하며 다시 작성하지 않습니다.
2단계 · 생산 순서 정하기
앵커 레벨 → 파생 레벨 → 일회성
같은 등급 내에서는 참조 횟수가 많은 순서대로 진행합니다. 이유: 참조가 많은 자산은 재작업 시 영향을 받는 구간이 가장 많기 때문입니다.
여러 구간에서 재사용되고 공간 연속성이 중요한 장소는 필요에 따라 두 계층의 자산으로 분할합니다:
- 공간 구조 마스터: 사람이나 동작이 없으며, 바닥/벽면 재질, 진열장 및 건물 덩어리, 고정 배경 구조, 공간 깊이 관계, 씬 내 주 광원의 위치와 대략적인 방향을 고정합니다. 특정 카메라 위치, 샷 크기, 인물 및 임시 소품은 고정하지 않습니다.
- 카메라 위치 하위 마스터: 동일한 공간에서 실제로 사용될 정면 풀샷, 측면 클로즈업, 탑뷰, 로우 앵글 업샷 또는 클로즈업 등의 빈 장면을 파생합니다. 첫 프레임은 해당 카메라 위치 하위 마스터에서 파생되어, 전체 영상이 동일한 원근법과 구도를 상속받지 않도록 합니다.
각 공간에 대해 실제로 사용될 앵글만 만들며, 고정된 수를 강제하지 않습니다. 광 방향은 공간적 연속성을 유지하지만, 정오/저녁 등 조명 버전은 스토리가 시간대를 넘나드는지 여부에 따라 결정합니다. 기본 마스터에는 불필요한 강한 시간대 특성을 포함시키지 않습니다. 먼저 대표적인 카메라 위치를 나란히 검수한 후, 첫 프레임을 배치로 파생합니다.
3단계 · 등급 매기기
각 번호에 등급(앵커/파생/일회성)을 지정하고 작업 지시서에 기록합니다. 이 단계는 1분이면 충분하지만, 이후 후보 생성에 소요되는 노력을 결정합니다.
4단계 · 후보 생성
| 등급 | 후보 수 | 설명 |
|---|---|---|
| 앵커 레벨 | 4–6 | 하나를 선택하여 확정하고, 나머지는 예비로 보관 |
| 파생 레벨 | 2–3 | 앵커와 비교 후 선택 |
| 일회성 | 1–2 | 사용 가능하면 충분 |
이미지 생성 전 세 가지를 확인하십시오: 화면 비율이 올바른지, 배경이 올바른지(흰 배경인지 장면인지), 불필요한 요소(텍스트, 워터마크, 손)가 없는지.
AI 생성 시 먼저 --dry-run으로 파라미터를 확인한 후, 앵커 → 파생 순서로 한 번에 4–6장씩 제출합니다.
5단계 · 검수
references/acceptance.md의 7가지 항목을 하나씩 확인합니다. 7개 중 6개를 통과해야 유지되며, 중요 항목(기하학, 인쇄)을 통과하지 못하면 즉시 반려됩니다.
6단계 · 저장
04-소재/01-자산이미지/
├── PR-01_제품메인이미지_v1.png
├── PR-01_제품메인이미지_v2.png ← 예비, 삭제하지 않음
├── SC-01_사무실책상_v1.png
└── CH-01_여성손_v1.png
명명 형식: <번호>_<용도>_v<N>.<확장자>. 번호는 목록과 일치하고(상태 접미사 A/B 유지), 용도는 2~8자이며 밑줄로 세분화할 수 있고, 버전은 증가합니다.
7단계 · 상태 업데이트
목록 상태를 '있음 / 예비 있음 / 보충 필요'로 변경하고, 작업 지시서에 선택된 버전을 기록합니다. 상태를 업데이트하지 않으면 다음 단계에서 어떤 버전을 참조해야 할지 알 수 없습니다.
5. 일관성 유지 방법
동일 번호의 여러 이미지는 다음 네 가지를 통해 정렬됩니다:
- 동일한 주제 설명: 앵커의 프롬프트를 복사하여 단어 하나도 변경하지 않음
- 동일한 광원 위치: 주 광원 방향과 색온도를 고정하고, 파생 이미지에서 조명을 변경하지 않음
- 동일한 화면 비율과 배경: 흰 배경이면 모두 흰 배경, 장면이면 모두 장면
- 나란히 비교: 두 이미지를 좌우로 배치하여 기하학, 색상, 인쇄, 비율 확인
나란히 비교가 가장 효과적인 방법입니다. 하나만 보면 모두 정확해 보이지만, 함께 놓고 보면 컵 입구가 2mm 넓거나 로고가 한 칸 높은 것을 발견할 수 있습니다.
자세한 방법은 references/acceptance.md를 참조하십시오.
6. 자체 점검 (스크립트 실행 가능)
python scripts/check_assets.py --dir <제작 디렉토리>
다섯 가지 판단 기준:
| # | 판단 기준 | 수준 |
|---|---|---|
| A1 | 목록의 모든 번호에 해당 파일이 있음 | 치명적 |
| A2 | 파일 이름이 <번호>_<용도>_v<N> 형식과 일치 | 치명적 |
| A3 | 디렉토리에 목록에 없는 파일이 없음 | 경고 |
| A4 | 각 이미지 해상도 ≥ 짧은 변 720px | 경고 |
| A5 | 앵커 레벨 자산의 후보 수 ≥ 2 | 경고 |
종료 코드: 0 통과 / 2 치명적 항목 있음 / 3 디렉토리 읽기 불가.
7. 경계
- 스토리보드 작성 안 함: 자산 요구 사항은 스토리보드와 목록에서 가져오며, 자체적으로 내용을 변경하지 않음
- 비디오 프롬프트 작성 안 함: 그것은 상위 단계의 작업이며, 이 스킬은 이미지 프롬프트만 보충
- 비디오 생성 안 함: 정적 이미지만 처리
- 판단 대체 안 함: 검수 기준은 제공되지만, '이 이미지를 사용할 수 있는지'는 최종적으로 사람이 결정
- 한 번에 올바르게 생성됨을 보장하지 않음: 생성은 확률적이며, 이 스킬이 보장하는 것은 '후보 존재, 검수 수행, 버전 관리'입니다.
8. 참고 자료
| 파일 | 읽어야 할 때 |
|---|---|
references/production.md | 순서 정하기, 등급 매기기, 후보 생성, 저장 및 상태 업데이트 시 |
references/acceptance.md | 검수, 나란히 비교, 반려 및 재작업 시 |
references/prompt-fixups.md | 목록에 프롬프트가 없거나 특정 이미지가 계속 잘못 생성될 때 |
references/ai-generation.md | AI 생성 사용 시: 파라미터, 작성법, 배치, 실패 처리 |
assets/asset-production-sheet.md | 작업 시작 전 작업 지시서 생성, 인도 시 상태 업데이트 |
assets/batch-tasks-example.json | 배치 생성용 작업 테이블 예제 |
scripts/kie_gen.py | 제출, 폴링, 다운로드, 명명 저장 |
scripts/check_assets.py | 인도 전 실행 |