Markdown to Storyboard
Convert any markdown text into a structured storyboard CSV — the universal handoff format for downstream tools (slide builders, video editors, image generators).
Workflow
- Analyze the Source Markdown
Read the markdown and identify:
-
Title and subtitle
-
Section headings (H2/H3) → natural slide boundaries
-
Key arguments / data points / quotes per section
-
Narrative arc: setup → development → climax → conclusion
- Ask User Preferences
Prompt for (defaults in parentheses):
-
Slide count (auto: 8–15 based on content length, ~1 slide per 150–300 words)
-
Audience (general)
-
Tone (professional)
-
Language (same as source)
If user declines to specify, use defaults and proceed.
- Assign Slide Types and Layouts
Available slide_type values:
Type Purpose Typical layout
cover
Opening slide full_bg
toc
Table of contents (optional, 12+ slides) center_text
section
Chapter divider center_text
content
Core information left_img_right_text or top_img_bottom_text
quote
Key quote or statistic full_bg
data
Chart / number-driven two_column
summary
Closing recap center_text or left_img_right_text
end
Thank-you / Q&A / CTA full_bg
Available layout values: full_bg , left_img_right_text , top_img_bottom_text , center_text , two_column
- Write the Image Prompt for Each Slide
For each slide, write an image_prompt (English, regardless of content language) that:
-
Describes a concrete scene, not an abstract concept
-
Includes a style keyword consistent across all slides (e.g. "flat vector illustration, soft pastel palette")
-
Specifies composition hints matching the layout (e.g. "wide shot, negative space on the right" for left_img_right_text )
-
Cover and end slides get more dramatic / visually impactful prompts
- Draft Speaker Notes
speaker_notes column: 1–3 sentences of what the presenter would say. Leave empty if not requested.
- Output the CSV
Write the storyboard to storyboard.csv using execute_code :
import csv
rows = [ # [slide_no, slide_type, title, bullet_points, image_prompt, speaker_notes, layout] ]
header = ["slide_no", "slide_type", "title", "bullet_points", "image_prompt", "speaker_notes", "layout"]
with open("storyboard.csv", "w", newline="", encoding="utf-8") as f: writer = csv.writer(f) writer.writerow(header) writer.writerows(rows)
Column spec:
Column Type Description
slide_no
int 1-indexed
slide_type
str One of the types above
title
str Slide headline, ≤ 10 words
bullet_points
str Newline-separated (\n ). Each ≤ 20 chars. Max 5 items
image_prompt
str English prompt for image generation
speaker_notes
str Optional presenter notes
layout
str One of the layouts above
- Present for Review
Display the storyboard as a markdown table for the user to review. Wait for confirmation before the next pipeline step. If changes requested, update storyboard.csv and re-display.
Pacing Guidelines
-
Opening (slides 1–2): Hook — cover + bold opening statement or question
-
Body (slides 3 to N-2): One idea per slide. Alternate content and quote /data to vary rhythm
-
Closing (slides N-1 to N): Summary of key takeaways + end slide
-
Avoid consecutive slides of the same type. Insert a section divider between major parts.
Text Density Rules
-
Title: imperative or question form, ≤ 10 words
-
Bullets: ≤ 5 per slide, each ≤ 20 characters (CJK) / ≤ 12 words (Latin)
-
Prefer fragments over full sentences
-
Numbers stand alone: "3x faster" not "It is three times faster"