---
name: storyboard-creation
description: "Film and video storyboarding with shot vocabulary, continuity rules, and panel layout. Covers shot types, camera angles, movement, 180-degree rule, and annotation format. Use for: video planning, film pre-production, ad storyboards, music video planning, animation. Triggers: storyboard, storyboarding, shot list, film planning, video planning, pre production, shot composition, camera angles, scene planning, visual script, animatic, storyboard panels, video storyboard"
allowed-tools: Bash(infsh *)
---

# Storyboard Creation

Create visual storyboards with AI image generation via [inference.sh](https://inference.sh) CLI.

## Quick Start

> Requires inference.sh CLI (`infsh`). [Install instructions](https://raw.githubusercontent.com/inference-sh/skills/refs/heads/main/cli-install.md)

```bash
infsh login

# Generate a storyboard panel
infsh app run falai/flux-dev-lora --input '{
  "prompt": "storyboard panel, wide establishing shot of a modern city skyline at sunset, cinematic composition, slightly desaturated colors, film still style, 16:9 aspect ratio",
  "width": 1248,
  "height": 832
}'

# Stitch panels into a board
infsh app run infsh/stitch-images --input '{
  "images": ["panel1.png", "panel2.png", "panel3.png"],
  "direction": "horizontal"
}'
```


## Shot Types

| Abbreviation | Name | Framing | When to Use |
|-------------|------|---------|-------------|
| **ECU** | Extreme Close-Up | Eyes only, a detail | Intense emotion, revealing detail |
| **CU** | Close-Up | Face fills frame | Emotion, reaction, dialogue |
| **MCU** | Medium Close-Up | Head and shoulders | Interviews, conversations |
| **MS** | Medium Shot | Waist up | General dialogue, action |
| **MLS** | Medium Long Shot | Knees up | Walking, casual interaction |
| **LS** | Long Shot | Full body | Character in environment |
| **WS** | Wide Shot | Environment dominant | Establishing location, scale |
| **EWS** | Extreme Wide Shot | Vast landscape | Epic scope, isolation, transitions |

### Generating Each Shot Type

```bash
# Close-Up — emotion focus
infsh app run falai/flux-dev-lora --input '{
  "prompt": "close-up shot of a woman face showing concern, soft dramatic lighting from the left, shallow depth of field, cinematic film still, slightly desaturated",
  "width": 1248,
  "height": 832
}'

# Medium Shot — dialogue scene
infsh app run falai/flux-dev-lora --input '{
  "prompt": "medium shot of two people talking across a table in a cafe, warm afternoon light through windows, natural composition, cinematic film still, 35mm lens look",
  "width": 1248,
  "height": 832
}'

# Wide Shot — establishing
infsh app run falai/flux-dev-lora --input '{
  "prompt": "wide establishing shot of a futuristic laboratory interior, dramatic overhead lighting, long corridor with glass walls, sci-fi atmosphere, cinematic composition, anamorphic lens style",
  "width": 1248,
  "height": 832
}'
```

## Camera Angles

| Angle | Effect | When to Use |
|-------|--------|-------------|
| **Eye Level** | Neutral, natural | Default for most scenes |
| **High Angle** | Subject looks small, vulnerable | Showing weakness, overview |
| **Low Angle** | Subject looks powerful, dominant | Authority, heroism, threat |
| **Bird's Eye** | God-like overview | Maps, establishing geography |
| **Worm's Eye** | Extreme power, awe | Architecture, towering figures |
| **Dutch Angle** | Unease, disorientation | Tension, madness, action |
| **Over-the-Shoulder (OTS)** | Viewer positioned with character | Conversations, POV |

## Camera Movement

| Movement | Description | Emotion |
|----------|-------------|---------|
| **Pan** | Camera rotates horizontally (on tripod) | Scanning, following, revealing |
| **Tilt** | Camera rotates vertically (on tripod) | Revealing height, power |
| **Dolly** | Camera moves toward/away from subject | Intimacy (in), distance (out) |
| **Truck** | Camera moves laterally | Following alongside, revealing |
| **Crane/Jib** | Camera moves up or down vertically | Grand reveals, transitions |
| **Zoom** | Lens focal length changes (camera stays) | Focus shift, dramatic emphasis |
| **Steadicam/Gimbal** | Smooth handheld tracking | Immersion, following action |
| **Handheld** | Deliberate camera shake | Urgency, documentary feel, chaos |
| **Static** | Camera doesn't move | Stability, observation, tension |

In storyboards, indicate movement with arrows drawn on panels.

## Continuity Rules

### The 180-Degree Rule

Imagine a line (axis) between two characters in conversation. The camera must stay on ONE side of that line.

```
         Character A        Character B
              ●─────────────────●
             /                   \
           /     CAMERA ZONE      \
         /     (stay on this side)  \
       📷          📷          📷
     Camera 1   Camera 2   Camera 3
```

**Crossing the line** confuses the viewer about spatial relationships. Only cross intentionally (with a neutral shot in between or a visible camera move).

### Match on Action

When cutting between two angles of the same action, the action must continue seamlessly:

```
Panel A: Hand reaches for door handle (medium shot)
Panel B: Hand grabs door handle (close-up)
         ↑ Action continues from same point
```

### Eyeline Match

When a character looks at something, the next shot should show what they're looking at, from their approximate point of view.

```
Panel A: Character looks up and to the right
Panel B: The object they see, framed from slightly below-left
```

### Screen Direction

If a character moves left-to-right in one shot, they should continue left-to-right in the next. Reversing direction implies they turned around.

## Panel Layout

### Standard Formats

| Layout | Panels | Use For |
|--------|--------|---------|
| 2x3 (6 panels) | 6 per page | Detailed scenes, dialogue |
| 3x3 (9 panels) | 9 per page | Action sequences, montages |
| 2x2 (4 panels) | 4 per page | Key moments, presentations |
| Single | 1 per page | Hero shots, critical moments |

### Panel Annotation Format

Each panel should include:

```
┌────────────────────────────────────┐
│ SCENE 3 — SHOT 2                   │ ← Scene and shot number
│                                    │
│   [Generated image here]           │ ← Visual
│                                    │
├────────────────────────────────────┤
│ Shot: MS, eye level                │ ← Shot type and angle
│ Movement: Slow dolly in            │ ← Camera movement
│ Duration: 4 sec                    │ ← Estimated duration
│ Action: Sarah opens the letter     │ ← What happens
│ Dialogue: "This changes everything"│ ← Any spoken lines
│ SFX: Paper rustling, clock ticking │ ← Sound effects
│ Music: Tension builds              │ ← Music cue
└────────────────────────────────────┘
```

## Storyboard Workflow

### Step 1: Shot List

Before generating images, write a shot list:

```
SCENE 1 — OFFICE, DAY

1.1  WS  - Establishing shot of office building exterior, morning
1.2  MS  - Sarah walks through office, carrying coffee
1.3  CU  - Sarah's face, notices something on her desk
1.4  ECU - An envelope on the desk, unfamiliar handwriting
1.5  MS  - Sarah picks up envelope, opens it
1.6  CU  - Sarah's eyes widen as she reads
1.7  ECU - Key phrase on the letter (insert text)
```

### Step 2: Generate Panels

Use consistent style across all panels:

```bash
# Establish a consistent style prompt suffix
STYLE="cinematic film still, slightly desaturated, warm color grade, 35mm lens, shallow depth of field"

# Panel 1.1 — Wide establishing
infsh app run falai/flux-dev-lora --input "{
  \"prompt\": \"wide shot of a modern glass office building exterior, morning golden hour light, people entering, $STYLE\",
  \"width\": 1248, \"height\": 832
}" --no-wait

# Panel 1.2 — Medium shot
infsh app run falai/flux-dev-lora --input "{
  \"prompt\": \"medium shot of a professional woman walking through a modern open office, carrying coffee cup, morning light through windows, $STYLE\",
  \"width\": 1248, \"height\": 832
}" --no-wait

# Panel 1.3 — Close-up
infsh app run falai/flux-dev-lora --input "{
  \"prompt\": \"close-up of a woman face looking down at her desk with curious expression, soft office lighting, $STYLE\",
  \"width\": 1248, \"height\": 832
}" --no-wait
```

### Step 3: Assemble Board

```bash
# Stitch panels into rows
infsh app run infsh/stitch-images --input '{
  "images": ["panel_1_1.png", "panel_1_2.png", "panel_1_3.png"],
  "direction": "horizontal"
}'

infsh app run infsh/stitch-images --input '{
  "images": ["panel_1_4.png", "panel_1_5.png", "panel_1_6.png"],
  "direction": "horizontal"
}'

# Then stitch rows vertically for full page
infsh app run infsh/stitch-images --input '{
  "images": ["row1.png", "row2.png"],
  "direction": "vertical"
}'
```

## Style Consistency Tips

- Use the **same style suffix** across all panels (lens, color grade, lighting)
- Use **FLUX LoRA** if you need consistent characters across panels
- Keep the **same aspect ratio** for all panels
- Generate **more panels than you need** and select the best
- If a panel doesn't match the style, regenerate with adjusted prompt

## Common Mistakes

| Mistake | Problem | Fix |
|---------|---------|-----|
| Crossing the 180-degree line | Confuses spatial relationships | Stay on one side or use neutral shot |
| All same shot type | Visually boring, no rhythm | Vary between CU, MS, WS |
| No establishing shot | Viewer doesn't know where they are | Start scenes with WS or EWS |
| Too many shots per scene | Pacing drags | 5-8 shots per scene is typical |
| Inconsistent style between panels | Looks like different projects | Use same style prompt suffix |
| Missing annotations | Panels are ambiguous | Always note shot type, movement, action |

## Related Skills

```bash
npx skills add inference-sh/skills@ai-image-generation
npx skills add inference-sh/skills@ai-video-generation
npx skills add inference-sh/skills@video-prompting-guide
npx skills add inference-sh/skills@prompt-engineering
```

Browse all apps: `infsh app list`

