novel-art은(는) 무엇을 하나요?
AI 단막극을 위한 미술 설정집을 만듭니다: 장면 + 내러티브 소품. 핵심 전제: 이것은 AI 생성이며, 실사 촬영이 아닙니다——세트 촬영, 소품 제작, 구매 과정이 없습니다. 환경과 소품은 수십 번 생성되어도 동일하게 보여야 하는 에셋이므로, 모든 산출물은 일관성에 초점을 맞춥니다:
| 산출물 | 해결하는 문제 |
|---|---|
| 일관성 앵커 (장면당 3~5개) | 시청자가 장면을 인식하는 기준, QC가 생성된 샷의 일관성 확인 |
| 조명 시간대 변형 | AI가 시간대를 바꾸는 것은 재조명이 아닌 재생성, 각 상태는 완전한 프롬프트로 작성 |
| 배경 생성 프롬프트 | 환경과 캐릭터는 별개 레이어, 참조 이미지에 사람이 섞이면 일관성이 무너짐 |
| 변형 메커니즘 (variantOf) | 새 장면 생성은 저렴하지만, 변형은 원본 장면 에셋을 재사용하여 더 일관성 있음 |
| 소품 상태 변형 | 여행 가방의 닫힘과 열림은 두 개의 참조 이미지——소품은 상태 궤적을 가지지만 장면은 아님 |
| 소품 크기 참조 | AI가 손에 쥔 소품을 가구 크기로 그리는 경우가 많으므로 프롬프트에 크기 구문이 필요 |
| 소품 흰 배경/손 없음 | 소품 이미지는 다양한 샷에 합성되어야 하므로 제거 가능해야 함; 소품을 든 손은 가장 흔한 오염 요소 |
{baseDir} = 이 파일이 있는 디렉토리. 스크립트 {baseDir}/scripts/novel-art.mjs, 의존성 없음, node로 직접 실행.
경계 (하지 않는 일): 스토리보드 작성 안 함, 대본 작성 안 함, 캐릭터 관리 안 함 (novel-characters의 작업), 개요 정리 안 함 (novel-outline의 작업). 소품은 내러티브 소품만 수집 (클로즈업, 에피소드 간 등장, 스토리를 전달하는, 보통 3~8개)——장면 소품는 장면 앵커에 포함, 일회성 손 소품은 샷 수준 프롬프트로 해결, 별도 에셋으로 만들지 않음.
Step 0 — 입력 결정
세 가지 입력, 우선순위 높음에서 낮음:
- outline.json (novel-outline의 산출물) —— 최적, 장면 목록, 등장 에피소드, 담당하는 '쾌감 포인트', 재사용 계획이 모두 준비됨
- 소설 원문 —— 장면 목록을 직접 정리 (주요 무대 우선, novel-outline의 주요 장면 상한선 참고: 너무 많이 만들지 말 것)
- 사용자가 직접 작성한 장면 목록
cast.json (novel-characters의 산출물)도 있으면 함께 사용 —— '프롬프트에 캐릭터 이름이 포함되지 않음' 검증에 필요.
Step 1 — 시드 골격 (outline.json이 있을 때만 이 단계)
node {baseDir}/scripts/novel-art.mjs seed <outline.json> > <workdir>/art.json
확정적搬运: 장면 ID/이름/주요 장면 표시/등장 에피소드/담당 쾌감 포인트, 재사용 계획이 있는 장면은 seedNote가 변형 제안. 이러한 사실은 모델이 다시 생각하게 하지 마십시오.
outline.json이 없으면 references/schema.md에 따라 직접 목록을 작성하십시오.
Step 2 — 장면별 설정 작성 + 내러티브 소품 추출
각 장면마다 하나씩, 가능하면 병렬 처리. 각 작업은 다음을 받습니다:
{baseDir}/references/scene-pass.md및{baseDir}/references/schema.md(읽고, 그대로 따를 것)- 해당 장면의 골격 + 원문/개요에서 해당 공간에 대한 모든 정보
- 같은 배치의 다른 장면 이름 (공간의 분위기가 구분되어야 함, 모두 같은 낡은 분위기가 되어서는 안 됨)
핵심 요구 사항은 scene-pass.md에 있으며, 가장 중요한 세 가지: 앵커는 그릴 수 있고, 인식할 수 있고, 확인할 수 있어야 함 ('패치 선창'은 앵커, '낡은 분위기'는 형용사); 조명 상태는 에피소드에서 역으로 추론하고, 사용되지 않을 모든 상태를 쓰지 않음; 변형이 가능하면 새 장면을 만들지 마십시오.
내러티브 소품은 개요를 우선시: outline.json 1.1.0부터 props를 포함, seed가 소품 테이블을 '무엇을 담당하는지', '어떤 쾌감 포인트를 떠받치는지', '몇 에피소드에 등장하는지'와 함께 가져오며, 이 단계에서는 디자인 필드(크기, 앵커, 상태 변형, 흰 배경 프롬프트)만 작성합니다. 개요에 props가 없으면 원문에서 추출, 그때 이 단계는 모델의 작업: 클로즈업, 에피소드 간 등장, 스토리를 전달하는 소품만 수집, 보통 3~8개, 주인공 수와 비슷한 규모. 각 소품은 references/prop-pass.md에 따라 작성: 극적 기능, 앵커, 상태 변형, 크기, 흰 배경/손 없는 프롬프트. 여행 가방과 같은 '캐릭터를 따라다니는 소품'은 여기에 속함——장면 앵커나 캐릭터 프로필에 넣는 것은 올바르지 않음.
Step 3 — 검증 ⛔ 건너뛸 수 없음
node {baseDir}/scripts/novel-art.mjs validate <art.json> --cast <cast.json>
10개의 품질 관문은 모두 코드 기반. 장면 + 공통 6개: 앵커 3~5개, 조명 상태 ≥1, 사람 없음, 프롬프트 모두 영어, 캐릭터 이름 포함 안 됨 (--cast 제공 시에만 검사), 변형 참조 완전함. 소품 전용 4개: 상태 ≥1, 크기 구문이 프롬프트에 포함됨, 역방향 금지어 (손) 포함, 설정 이미지 순백색 배경.
위반 사항이 있으면 하나씩 수정하고, 다시 실행하여 통과할 때까지 반복.
Step 4 — 출력 및 보고
cd <출력 디렉토리>
node {baseDir}/scripts/novel-art.mjs render <극명>-art.json --md > <극명>-art.md
node {baseDir}/scripts/novel-art.mjs render <극명>-art.json --html > art-report.html
보고서 인터페이스는 기본 한국어; 사용자가 영어 인터페이스를 원하면 --lang en 추가 (또는 art.json 최상위에 "lang": "en" 작성, --lang 우선). render는 기본적으로 art.json과 같은 디렉토리의 images/<slug>-sheet.png에서 이미지를 찾음 (장면과 소품 모두 찾음), 이미지가 다른 곳에 있으면 --images <디렉토리>로 지정——본 스킬은 이러한 파일을 생성하지 않음, 하위 단계에서 이미지를 생성한 후 render를 다시 실행하면 보고서에 포함됨. 보고서 내용: KPI 대시보드, 장면 목록, 장면 설정 카드, 소품 목록, 소품 설정 카드 (앵커 확인표 / 상태 변형 / 프롬프트 패키지, 모두 복사 버튼 포함), 품질 관문 패널, JSON 내보내기 (다운로드되는 것은 art.json 원본).
보고서는 한 문장으로 요약: 장면 수 (주요 장면/변형 각각 몇 개), 소품 수, 앵커 총 개수, 보고서 경로; 통과하지 못한 관문은 명시.
'이미지 생성 완료'라고 말하지 마십시오——이 단계는 존재하지 않으며, 산출물은 프롬프트입니다.
최종 결과물:
<출력 디렉토리>/
├── <극명>-art.json
├── <극명>-art.md
├── art-report.html ← 더블 클릭으로 열기
└── images/ ← 본 스킬은 이 디렉토리를 쓰지 않음
└── <slug>-sheet.png ← 하위 단계에서 이미지 생성 후 여기에 배치, render가 찾아서 포함
세 스킬의 연계
novel-outline → outline.json (무엇: 구조와 에피소드)
novel-characters → cast.json (누가: 캐릭터 에셋)
novel-art → art.json (어디 + 손에 든 것: 미술 에셋)
seed는 outline.json의 장면과 소품 두 부분을 가져옴 (개요에 props가 없으면 소품은 비워두고, 모델이 원문에서 추출), --cast는 cast.json을 가져옴. 세 JSON 파일의 각 보고서에는 내보내기 버튼이 있으며, 수정 후 각각의 render/validate에 다시 공급 가능.
경계
- 보고서 인터페이스는 한국어/영어 내장 (
--lang, 기본 한국어, 또는 art.json의lang필드 따름); 이미지 생성 프롬프트는 항상 영어 - 본 스킬은 이미지를 생성하지 않음.
image.sheet는 하위 단계를 위한 레이아웃 지침이며, 레이아웃 사양은references/sheet.md참조 - 장면 수에는 상한선 없음——상한선은 novel-outline의 주요 장면 관문에서 관리; 여기서는 각 에셋의 품질 관리
- 소품은 내러티브 소품만 수집, 3~8개가 적절——하나 추가할 때마다 에피소드 간 일관성 유지 비용 증가
자체 테스트
node {baseDir}/scripts/selftest.mjs
151개 단언, 모델 호출 없음, 비용 소모 없음. 10개 품질 관문 각각에 대한 위반 사례 포함. 스크립트 수정 후 먼저 실행.
기본 제공 예제
{baseDir}/examples/渡口-art.json: 《나루터》의 세 장면 + 두 개의 내러티브 소품 (낡은 여행 가방, 현 관청 낡은 벼루)의 완전한 설정, 모든 품질 관문 통과 (novel-characters 예제 cast에 대한 캐릭터 이름 검사 포함). 품질 기준으로 사용되며, 자체 테스트 픽스처이기도 함.