SlideGen Schema Reference¶
Complete reference guide for the SlideGen presentation schema format.
Table of Contents¶
Overview¶
The SlideGen schema is a declarative YAML/JSON format for describing PowerPoint presentations. It separates content from presentation, making it:
- AI-friendly: LLMs can generate valid schemas from natural language
- Version-controllable: Store slide definitions in Git
- Portable: Works across tools (not PowerPoint-specific)
- Validatable: Check correctness before rendering
Schema Structure¶
Every schema file must have a presentation root object:
presentation:
title: "My Presentation" # Optional: Overall title
theme: "corporate" # Optional: Theme name or template path
slides: # Required: Array of slides
- layout: title
title: "First Slide"
Root Properties¶
| Property | Type | Required | Description |
|---|---|---|---|
title |
string | No | Overall presentation title (metadata) |
theme |
string | No | Theme name or path to PowerPoint template file |
slides |
array | Yes | Array of slide definitions (minimum 1 slide) |
Layout Types¶
1. Title Layout¶
A title slide with title and optional subtitle.
Properties:
- title (required): Main title text
- subtitle (optional): Subtitle text
2. Section Header Layout¶
A full-slide section divider with centered text.
Properties:
- text (required): Section header text
3. Bullet List Layout¶
A slide with a title and bullet points.
slides:
- layout: bullet_list
title: "Key Metrics"
bullets:
- "Revenue: +15% YoY"
- "Profit margin: 22%"
- "Customer growth: +1.2M"
Properties:
- title (required): Slide title
- bullets (required): Array of bullet point strings or objects
Nested Bullets:
4. Two Column Layout¶
Side-by-side content with flexible content types.
slides:
- layout: two_column
title: "Comparison"
left:
type: bullet_list
bullets:
- "Left side point 1"
- "Left side point 2"
right:
type: bullet_list
bullets:
- "Right side point 1"
- "Right side point 2"
Properties:
- title (required): Slide title
- left (required): Column content (see Column Content below)
- right (required): Column content
Column Content Types:
Each column can be:
- bullet_list: Array of bullets
- text: Plain text paragraph
- image: Image with optional caption
5. Comparison Layout¶
Before/after or option A/B comparison.
slides:
- layout: comparison
title: "Before vs After"
before:
type: bullet_list
bullets:
- "Manual process"
- "2 hours per day"
after:
type: bullet_list
bullets:
- "Automated process"
- "5 minutes per day"
Properties:
- title (required): Slide title
- before (required): Left side content (column content)
- after (required): Right side content (column content)
6. Image Layout¶
Title with an image.
slides:
- layout: image
title: "Product Screenshot"
image:
src: "images/product.png"
alt: "Product interface"
caption: "New dashboard design"
Properties:
- title (required): Slide title
- image (required): Image object
- src (required): Path to image file
- alt (optional): Alternative text for accessibility
- caption (optional): Image caption
7. Chart Layout¶
Title with a data visualization.
slides:
- layout: chart
title: "Revenue Trend"
chart:
type: line
data:
labels: ["Q1", "Q2", "Q3", "Q4"]
values: [100, 120, 140, 160]
x_axis_label: "Quarter"
y_axis_label: "Revenue ($M)"
Properties:
- title (required): Slide title
- chart (required): Chart object
- type (required): One of bar, line, pie, column
- data (required): Inline data or external source (see Data Binding)
- title (optional): Chart title (overrides slide title)
- x_axis_label (optional): X-axis label
- y_axis_label (optional): Y-axis label
Multi-Series Charts:
chart:
type: bar
data:
labels: ["Q1", "Q2", "Q3", "Q4"]
series:
- name: "Product A"
values: [100, 120, 140, 160]
- name: "Product B"
values: [80, 90, 110, 130]
8. Table Layout¶
Title with a data table.
slides:
- layout: table
title: "Sales by Region"
table:
data:
- ["Region", "Q1", "Q2", "Q3", "Q4"]
- ["North", "100", "120", "140", "160"]
- ["South", "80", "90", "110", "130"]
- ["East", "90", "100", "120", "140"]
header_row: true
Properties:
- title (required): Slide title
- table (required): Table object
- data (required): Array of rows (each row is array of cells) or external CSV source
- header_row (optional, default: true): Whether first row is styled as header
9. Quote Layout¶
Large centered quote with optional attribution.
slides:
- layout: quote
quote:
text: "The best way to predict the future is to invent it."
attribution: "Alan Kay"
Properties:
- quote (required): Quote object
- text (required): Quote text
- attribution (optional): Author or source
10. Blank Layout¶
Empty slide for custom content (future extensibility).
Properties:
- text (optional): Placeholder text
Data Binding¶
Charts and tables can reference external data files.
CSV Data Source¶
CSV format:
JSON Data Source¶
JSON format:
Table from CSV¶
Styling¶
Each slide can override theme styles.
slides:
- layout: bullet_list
title: "Custom Styled Slide"
bullets: ["Point 1", "Point 2"]
style:
background_color: "#1a1a1a" # Hex color
text_color: "#ffffff" # Hex color
font_family: "Arial" # Font name
font_size: 24 # Points (8-144)
Style Properties:
| Property | Type | Description |
|---|---|---|
background_color |
string | Hex color code (e.g., "#1a1a1a") |
text_color |
string | Hex color code |
font_family |
string | Font family name |
font_size |
integer | Font size in points (8-144) |
Examples¶
See the examples/ directory for complete presentation schemas:
- Corporate Quarterly Results - Finance use case
- Agency Client Proposal - Consulting use case
- Product Roadmap - Product management use case
- Technical Analysis - Data science use case with charts
- Educational Content - General business training use case
Validation¶
Validate your schema before rendering:
# Using slidegen CLI
slidegen validate presentation.yaml
# Using Python directly
python -m jsonschema -i presentation.yaml schema/spec/slide-schema.json
Best Practices¶
- Use meaningful titles: Every slide should have a clear, descriptive title
- Keep bullets concise: Limit bullet points to 5-7 per slide
- Use data binding: For large datasets, use external CSV/JSON files
- Leverage themes: Define reusable themes rather than per-slide styling
- Version control: Store schemas in Git for collaboration and history
Schema Version¶
This documentation applies to Schema Version 1.0.0.
For the JSON Schema specification, see schema/spec/slide-schema.json.