스토리보드 생성기
사용자가 설명한 스토리를 다듬고, 스토리보드로 분할한 후, 일관된 스타일의 일러스트를 일괄 생성합니다.
워크플로우
1단계: 스토리 다듬기 및 스토리보드 분할
- 스토리 수신 - 사용자가 설명한 스토리 콘텐츠(텍스트, 개요, 또는 영감 조각)를 가져옵니다.
- 스토리라인 다듬기 - 내러티브 세부 사항을 보충하고, 감정 호를 정리하여 구조화된 스토리 요약을 출력합니다:
스토리 요약: 한 줄 요약 감정 호: [시작] → [전환] → [결말] - 스토리보드 분할 - 스토리를 6-10개의 키 프레임으로 분할합니다. 각 프레임에는 다음이 포함됩니다:
- 장면 제목
- 샷 유형(롱샷/미디엄샷/클로즈업 등)
- 화면 설명(캐릭터 동작, 환경, 조명)
- 분위기
- 대사/텍스트(있는 경우)
- 스토리보드 표시 - 표 형식으로 표시하고, 사용자 확인 또는 조정을 기다립니다.
표시 형식:
## 스토리보드 스크립트
| # | 장면 | 샷 | 화면 설명 | 분위기 |
|---|------|------|---------|------|
| 1 | 오프닝 | 롱샷 | xxx | 평온 |
| 2 | 도입 | 미디엄샷 | xxx | 호기심 |
| ... |
2단계: 스타일 선택
스토리보드 스크립트가 확인되면 8가지 시각 스타일을 표시합니다(references/visual-styles.md 읽기):
| # | 스타일 | 한 줄 특징 | 적합한 스토리 |
|---|---|---|---|
| 1 | 사이버펑크 만화 | 네온+어두운 톤+고대비 | 기술/AI/미래 |
| 2 | 지브리 수채화 | 부드러운 수채화+따뜻한 빛 | 일상/감성/성장 |
| 3 | 미국식 평면 일러스트 | 벡터 기하학+밝은 색상 | 제품/비즈니스/교육 |
| 4 | 영화 스토리보드 스케치 | 흑백 스케치+샷 표시 | 비디오 스크립트/광고 |
| 5 | 픽셀 아트 | 레트로 16비트 게임 스타일 | 게임/재미/괴짜 |
| 6 | 중국 수묵화 | 수묵 번짐+시적 여백 | 전통/철학/동양 |
| 7 | 깔끔한 선 만화 | 균일한 굵은 선+평면 채색 | 모험/유머/IP |
| 8 | 사실적인 컨셉 아트 | 영화 수준 디지털 페인팅 | 서사시/SF/판타지 |
스토리 유형과 감정 톤에 따라 1-2개의 가장 적합한 스타일을 추천하고 이유를 설명하며, 사용자 선택을 기다립니다.
3단계: 프롬프트 생성
사용자가 스타일을 선택하면, 각 스토리보드 프레임에 대한 프롬프트를 생성합니다.
각 프롬프트 구조(references/visual-styles.md에서 스타일 접두사 및 샷 언어 읽기):
- 스타일 접두사 - 선택한 스타일의 표준 설명
- 샷 명령 - 예: "와이드 앵글 확립 샷" / "클로즈업"
- 화면 설명 - 완전한 문장으로 장면 콘텐츠 설명(캐릭터, 동작, 환경, 조명, 분위기)
- 분위기 명령 - 화면이 전달하는 감정 명시
- 일관성 고정 -
중요: [TOTAL]개의 프레임으로 구성된 스토리보드 시퀀스 중 [N]번째 프레임입니다. 완전히 동일한 아트 스타일, 팔레트, 캐릭터 디자인 및 시각적 일관성을 유지하십시오. 모든 프레임에서 동일한 캐릭터는 완전히 동일하게 보여야 합니다. - 중국어 명령(필요 시) -
이미지 내의 모든 텍스트, 표지판 및 대사는 중국어(간체)를 사용해야 합니다. 기술 용어는 영어를 유지할 수 있습니다.
프롬프트 요약 표를 표시하고 확인을 기다립니다:
## 프롬프트 요약
| # | 장면 | 샷 | 스타일 | 핵심 화면 |
|---|------|------|------|---------|
| 1 | 오프닝 | 롱샷 | 사이버펑크 | 도시 스카이라인... |
| ... |
확인 후 생성 시작 (총 N 프레임)
4단계: 일괄 생성
확인 후, 각 프레임에 대해 스크립트를 호출하여 생성합니다:
python3 scripts/generate_image.py \
--prompt "프롬프트" \
--output "/Users/ugreen/Documents/obsidian/09image/MMDD-스토리이름-storyboard/01-장면이름.png" \
--api-key "AIzaSyDvvGGRbH4Os3Er0dYi0kE_AzE3_2b_Az8" \
--api-url "https://generativelanguage.googleapis.com" \
--model "gemini-3-pro-image-preview" \
--aspect-ratio "16:9" \
--resolution "2K"
참고 사항:
- 스토리보드는 기본 16:9 가로
- 해상도 기본 2K
- MMDD는 당일 날짜
- 파일 이름:
01-장치약어.png,02-장치약어.png... - 각 프레임 간 2-3초 간격을 두어 속도 제한 방지
- 실패한 프레임은 기록하고 계속 진행, 마지막에 보고
- 중요: 캐릭터 외관 설명은 모든 프레임에서 일관성을 유지(헤어스타일, 의상, 체형)
5단계: 표시 및 반복
- 생성 완료 후, 모든 프레임 경로를 순서대로 나열
- 사용자에게 질문:
- "전체 스토리 템포가 만족스러운가요?"
- "특정 프레임을 다시 생성해야 하나요?"
- "장면을 추가/제거해야 하나요?"
- "캐릭터 일관성이 만족스러운가요?"
- 반복: 프롬프트를 조정하여 지정된 프레임을 다시 생성
저장 경로 규칙
/Users/ugreen/Documents/obsidian/09image/MMDD-스토리이름-storyboard/
├── 01-오프닝-롱샷.png
├── 02-도입-미디엄샷.png
├── 03-전환-클로즈업.png
├── 04-전개A-미디엄샷.png
├── 05-전개B-풀샷.png
├── 06-클라이막스-익스트림클로즈업.png
├── 07-결말-롱샷.png
└── storyboard-script.md (선택 사항: 스토리보드 스크립트 문서 저장)
API 설정
| 설정 항목 | 값 |
|---|---|
| API URL | https://generativelanguage.googleapis.com |
| API Key | AIzaSyDvvGGRbH4Os3Er0dYi0kE_AzE3_2b_Az8 |
| Model | gemini-3-pro-image-preview |
| 기본 비율 | 16:9 (스토리보드 가로) |
| 기본 해상도 | 2K |
샷 언어 빠른 참조
| 샷 | 영어 용어 | 용도 |
|---|---|---|
| 롱샷 | 와이드 앵글 | 오프닝, 환경 설명 |
| 풀샷 | 풀 바디 샷 | 캐릭터 전신+환경 |
| 미디엄샷 | 미디엄 샷 | 대화, 일상 상호작용 |
| 클로즈업 | 클로즈업 샷 | 표정, 감정 |
| 익스트림 클로즈업 | 익스트림 클로즈업 | 주요 소품, 세부 사항 |
| 하이 앵글 | 버드 아이 뷰 | 전체적인 시점, 미미함 |
| 로우 앵글 | 로우 앵글 샷 | 권위, 충격 |
일반 사용법
| 사용자 말 | 작업 |
|---|---|
| "스토리보드 만들어줘" | 스토리 수집 → 다듬기 → 분할 → 스타일 선택 → 생성 |
| "이 스토리로 스토리보드 만들어줘" | 위와 동일 |
| "사이버펑크 스타일로 그려줘" | 스타일 선택 건너뛰고, 지정된 스타일 사용 |
| "3번 프레임이 마음에 안 들어. 다시 생성해줘" | 프롬프트 조정하여 단일 프레임 다시 생성 |
| "전환 샷 하나 더 추가해줘" | 지정된 위치에 새 스토리보드 프레임 삽입 |