Community코딩 & 개발github.com

novel-art

AI 단막극을 위한 미술 설정집(장면 + 내러티브 소품)을 생성합니다: 장면 디자인 의도, 일관성 앵커, 조명 시간대 변형, 배경 프롬프트; 소품의 극적 기능, 상태 변형, 크기 기준, 흰 배경/손 없는 프롬프트. art.json + Markdown + 단일 페이지 검토 보고서(JSON 내보내기 포함)를 산출합니다.

novel-art란 무엇인가요?

이 스킬은 AI 생성 단막극을 위한 미술 설정집을 만드는 전문 도구입니다. 'AI 생성, 실사 촬영 아님'이라는 전제 하에, 장면과 소품이 여러 번 생성되어도 일관성을 유지할 수 있도록 설계되었습니다. 주요 기능으로는 장면별 일관성 앵커(3~5개), 조명 시간대 변형, 배경 생성 프롬프트, 소품 상태 변형, 크기 참조, 흰 배경/손 없는 소품 프롬프트 생성 등이 포함됩니다. 입력은 outline.json(novel-outline의 산출물), 소설 원문, 또는 사용자 수동 장면 목록 중에서 우선순위에 따라 선택됩니다. 스크립트(novel-art.mjs)는 Node.js만으로 실행되며, 별도 의존성이나 API 키가 필요 없습니다. 출력은 art.json, 마크다운 보고서, 그리고 정적 HTML 보고서(art-report.html)로 제공되며, 10개의 품질 관문(장면 6개, 소품 4개)이 코드 기반으로 자동 검증됩니다. 이 스킬은 프롬프트를 생성할 뿐 실제 이미지를 생성하지는 않으며, 이미지 생성은 하위 단계에서 이루어집니다. 또한 novel-outline, novel-characters 스킬과 연계하여 전체 AI 단막극 제작 파이프라인을 구성합니다.

지원 대상✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/eternityspring/shuohao-skills/tree/HEAD/skills/novel-art

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

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 — 입력 결정

세 가지 입력, 우선순위 높음에서 낮음:

  1. outline.json (novel-outline의 산출물) —— 최적, 장면 목록, 등장 에피소드, 담당하는 '쾌감 포인트', 재사용 계획이 모두 준비됨
  2. 소설 원문 —— 장면 목록을 직접 정리 (주요 무대 우선, novel-outline의 주요 장면 상한선 참고: 너무 많이 만들지 말 것)
  3. 사용자가 직접 작성한 장면 목록

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에 대한 캐릭터 이름 검사 포함). 품질 기준으로 사용되며, 자체 테스트 픽스처이기도 함.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

관련 스킬