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/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 story |
|---|---|---|---|
| 1 | Cyberpunk Comic | Neon + dark tones + high contrast | Tech/AI/Future |
| 2 | Ghibli Watercolor | Soft watercolor + warm light and shadow | Everyday/Heartwarming/Growth |
| 3 | American Flat Illustration | Vector geometry + bright colors | Product/Commercial/Education |
| 4 | Film Storyboard Sketch | Black-and-white sketch + shot annotations | Video script/Commercial |
| 5 | Pixel Art | Retro 16-bit game style | Game/Fun/Geek |
| 6 | Chinese Ink Wash | Ink wash diffusion + poetic negative space | Traditional/Philosophical/Oriental |
| 7 | Clean-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 - Use complete sentences to describe the scene content (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 descriptions remain 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 |
|---|---|---|
| Extreme long shot | Wide Shot | Opening, establishing the environment |
| Full shot | Full Shot | Full body of the character + environment |
| Medium shot | Medium Shot | Dialogue, everyday interaction |
| Medium close-up | 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 |