Based on the user's description, polish the storyline, split it into a storyboard script, and batch-generate storyboard illustrations with a consistent style.
Workflow
Phase 1: Story Polishing and Storyboard Splitting
- Receive the story - Get the story content described by the user (text, outline, or inspiration fragment)
- Polish the storyline - Add narrative details, sort out the emotional arc, and output a structured story summary:
故事概要:一句话概括 情感弧线:[起点] → [转折] → [结局] - Split the storyboard - Split the story into 6-10 key frames, each containing:
- Scene title
- Shot type (wide shot/medium shot/close shot/extreme close-up, etc.)
- Image description (character actions, environment, lighting)
- Emotional tone
- Dialogue/text (if any)
- Display the storyboard script - Display it in table form and wait for the user to confirm or adjust
Display format:
## 分镜脚本
| # | 场景 | 镜头 | 画面描述 | 情绪 |
|---|------|------|---------|------|
| 1 | 开场 | 远景 | xxx | 平静 |
| 2 | 引入 | 中景 | xxx | 好奇 |
| ... |
Phase 2: Style Selection
After the storyboard script is confirmed, display 8 visual styles (read references/visual-styles.md):
| # | Style | One-sentence feature | Applicable stories |
|---|---|---|---|
| 1 | Cyberpunk comic | Neon + dark tones + high contrast | Technology/AI/Future |
| 2 | Ghibli watercolor | Soft watercolor + warm light and shadow | Everyday/Warm/Growth |
| 3 | American flat illustration | Vector geometry + bright color palette | Product/Commercial/Education |
| 4 | Film storyboard sketch | Black-and-white sketch + shot annotations | Video script/Advertising |
| 5 | Pixel art | Retro 16-bit game style | Games/Fun/Geek |
| 6 | Chinese-style ink wash | Ink wash diffusion + poetic negative space | Traditional/Philosophical/Eastern |
| 7 | Clear-line comic | Even thick lines + flat coloring | Adventure/Humor/IP |
| 8 | Realistic concept art | Cinematic digital painting | Epic/Sci-fi/Fantasy |
Based on the story type and emotional tone,recommend 1-2 most suitable styles and explain the reasons, and wait for the user to choose.
Phase 3: Generate Prompts
After the user selects a style, generate a prompt for each storyboard frame.
Structure of each prompt (read references/visual-styles.md to get the style prefix and shot language):
- Style prefix - Standard description of the selected style
- Shot instruction - Such as "Wide establishing shot" / "Close-up"
- Image narration - Describe the scene content in complete sentences (characters, actions, environment, lighting, atmosphere)
- Emotion instruction - Clearly specify the emotion conveyed by the image
- Consistency Anchoring -
IMPORTANT: This is panel [N] of [TOTAL] in a storyboard sequence. Maintain exact same art style, color palette, character design, and visual consistency with all other panels. Same character must look identical across all panels. - Chinese Instructions(if needed) -
ALL text, signs, and dialogue in the image MUST be in Chinese (Simplified Chinese). Technical terms may remain in English.
Display the prompt summary table and wait for confirmation:
## 提示词概要
| # | 场景 | 镜头 | 风格 | 核心画面 |
|---|------|------|------|---------|
| 1 | 开场 | 远景 | 赛博朋克 | 城市天际线... |
| ... |
确认后开始生成(共 N 帧)
Phase 4: Batch Generation
After confirmation, call the script frame by frame to generate:
python3 scripts/generate_image.py \
--prompt "提示词" \
--output "/Users/ugreen/Documents/obsidian/09image/MMDD-故事名-storyboard/01-场景名.png" \
--api-key "REMOVED_GEMINI_KEY" \
--api-url "https://generativelanguage.googleapis.com" \
--model "gemini-3-pro-image-preview" \
--aspect-ratio "16:9" \
--resolution "2K"
Notes:
- Storyboard default 16:9 landscape
- Resolution default 2K
- MMDD is the current date
- File naming:
01-场景简称.png、02-场景简称.png... - Interval of 2-3 seconds between frames to avoid rate limiting
- Record failed frames and continue, report at the end
- Key: Character appearance description remains consistent across all frames (hairstyle, clothing, body type)
Phase 5: Presentation and Iteration
- After generation is complete, list all frame paths in order
- Ask the user:
- "Are you satisfied with the overall story pacing?"
- "Do you need to regenerate a certain frame?"
- "Do you need to add/remove a scene?"
- "Are you satisfied with character consistency?"
- Iteration: Adjust the prompt and regenerate the specified frame
Save Path Specification
/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 Configuration
| Configuration Item | Value |
|---|---|
| API URL | https://generativelanguage.googleapis.com |
| API Key | REMOVED_GEMINI_KEY |
| Model | gemini-3-pro-image-preview |
| Default Aspect Ratio | 16:9 (storyboard landscape) |
| Default Resolution | 2K |
Shot Language Quick Reference
| Shot | English | Purpose |
|---|---|---|
| Long Shot | Wide Shot | Opening, establishing the environment |
| Full Shot | Full Shot | Character's full body + environment |
| Medium Shot | Medium Shot | Dialogue, daily interaction |
| Close Shot | Close-up | Expression, emotion |
| Close-Up | Extreme Close-up | Key props, details |
| High Angle | Bird's Eye | Overall view, sense of insignificance |
| Low Angle | Low Angle | Authority, impact |
Common Usage
| User Says | Action |
|---|---|
| "Help me draw a storyboard" | Collect story → polish → split into shots → choose style → generate |
| "Turn this story into a storyboard" | Same as above |
| "Draw this story in cyberpunk style" | Skip style selection and use the specified style directly |
| "Frame 3 is bad, regenerate it" | Adjust the prompt and regenerate a single frame |
| "Add a transition shot" | Insert a new storyboard frame at the specified position |