Storyboard Generator
Polishes the user's story into a refined narrative, breaks it into storyboard frames, and batch-generates stylistically consistent storyboard illustrations.
Workflow
Phase 1: Story Polish & Frame Breakdown
- Receive Story – Get the user's described story content (text, outline, or snippet of inspiration)
- Polish the Storyline – Flesh out narrative details, map the emotional arc, and output a structured story summary:
Story Summary: One-sentence overview Emotional Arc: [Beginning] → [Turning Point] → [Conclusion] - Break Into Frames – Split the story into 6–10 keyframes, each containing:
- Scene title
- Camera shot type (wide / medium / close-up / extreme close-up, etc.)
- Scene description (character actions, environment, lighting)
- Mood/tone
- Dialogue / text (if any)
- Display Frame Script – Show in a table format, wait for user confirmation or adjustments
Display format:
## Frame Script
| # | Scene | Shot | Scene Description | Mood |
|---|-------|------|-------------------|------|
| 1 | Opening | Wide Shot | xxx | Calm |
| 2 | Introduction | Medium Shot | xxx | Curious |
| ... |
Phase 2: Style Selection
After frame script confirmation, show 8 visual styles (read from references/visual-styles.md):
| # | Style | One-Sentence Feature | Suitable Stories |
|---|---|---|---|
| 1 | Cyberpunk Comics | Neon + dark tones + high contrast | Tech / AI / Future |
| 2 | Ghibli Watercolor | Soft watercolor + warm lighting | Daily / Heartwarming / Growth |
| 3 | American Flat Illustration | Vector geometry + bright colors | Product / Business / Education |
| 4 | Film Storyboard Sketch | Black & white sketch + lens annotations | Video script / Ads |
| 5 | Pixel Art | Retro 16-bit game style | Games / Fun / Geeky |
| 6 | Chinese Ink Wash | Ink wash + poetic negative space | Tradition / Philosophy / Eastern |
| 7 | Clean Line Comic | Uniform thick lines + flat colors | Adventure / Humor / IP |
| 8 | Realistic Concept Art | Cinematic digital painting | Epic / Sci-fi / Fantasy |
Based on the story genre and emotional tone, recommend 1–2 most suitable styles with reasons, and wait for the user to choose.
Phase 3: Prompt Generation
Once the user selects a style, generate a prompt for each storyboard frame.
Each prompt structure (read from references/visual-styles.md for style prefix and camera language):
- Style Prefix – Standard description of the chosen style
- Shot Instruction – e.g. "Wide establishing shot" / "Close-up"
- Scene Narrative – Describe the scene content in full sentences (characters, actions, environment, lighting, atmosphere)
- Mood Instruction – Clearly state the emotion the image should convey
- Consistency Anchor –
IMPORTANT: This is frame [N] of [TOTAL] in the storyboard sequence. Maintain EXACTLY the same art style, color palette, character design, and visual consistency. The same characters must look identical across all frames. - Language Instruction –
All text, signs, and dialogue in the image must be in Chinese (Simplified Han). Technical terms may remain in English.
Display a prompt summary table and wait for confirmation:
## Prompt Summary
| # | Scene | Shot | Style | Core Image |
|---|-------|------|-------|------------|
| 1 | Opening | Wide Shot | Cyberpunk | City skyline... |
| ... |
Confirm to start generation (total N frames)
Phase 4: Batch Generation
After confirmation, call the generation script for each frame:
python3 scripts/generate_image.py \
--prompt "prompt text" \
--output "/Users/ugreen/Documents/obsidian/09image/MMDD-storyname-storyboard/01-scenename.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"
Important Notes:
- Storyboard defaults to 16:9 landscape
- Resolution defaults to 2K
- MMDD is the current date
- File naming:
01-shortscene.png,02-shortscene.png... - 2–3 second delay between frames to avoid rate limiting
- Log failed frames and continue; report at the end
- Critical: Character appearance descriptions must remain consistent across all frames (hairstyle, clothing, body type)
Phase 5: Display & Iteration
- After generation, list all frame paths in order
- Ask the user:
- "Is the overall story pacing satisfactory?"
- "Do you need to regenerate a specific frame?"
- "Do you need to add/remove a scene?"
- "Is character consistency satisfactory?"
- Iterate: Adjust prompts and regenerate the specified frames
Save Path Convention
/Users/ugreen/Documents/obsidian/09image/MMDD-storyname-storyboard/
├── 01-opening-wide.png
├── 02-introduction-medium.png
├── 03-turningpoint-closeup.png
├── 04-developmentA-medium.png
├── 05-developmentB-full.png
├── 06-climax-extremecloseup.png
├── 07-ending-wide.png
└── storyboard-script.md (optional: save the frame script document)
API Configuration
| Config Item | Value |
|---|---|
| API URL | https://generativelanguage.googleapis.com |
| API Key | AIzaSyDvvGGRbH4Os3Er0dYi0kE_AzE3_2b_Az8 |
| Model | gemini-3-pro-image-preview |
| Default Aspect Ratio | 16:9 (storyboard landscape) |
| Default Resolution | 2K |
Camera Shot Quick Reference
| Shot | English Term | Use Case |
|---|---|---|
| Wide Shot | Wide Angle | Opening, establishing environment |
| Full Shot | Full Body | Full character + environment |
| Medium Shot | Medium Shot | Dialogue, daily interaction |
| Close-up | Close-up | Expressions, emotion |
| Extreme Close-up | Extreme Close-up | Key props, details |
| High Angle | Bird's-eye View | Overhead perspective, insignificance |
| Low Angle | Low Angle | Authority, grandeur |
Common Usage
| User Says | Action |
|---|---|
| "Help me draw a storyboard" | Collect story → polish → break into frames → choose style → generate |
| "Turn this story into a storyboard" | Same as above |
| "Draw this story in cyberpunk style" | Skip style selection, use specified style directly |
| "Frame 3 is bad, regenerate it" | Adjust prompt and regenerate single frame |
| "Add a transition frame" | Insert a new storyboard frame at the given position |