Learn how to create beautiful presentations using PPT Agent's web interface and API
PPT Agent is a markdown-based presentation builder. You can create presentations through our user-friendly web interface or programmatically via our REST API.
Open your web browser and navigate to your PPT Agent instance. If you're running it locally, this is typically http://localhost:3000.
In the header, locate the presentation selector dropdown. It displays the current presentation name (starts with "Example Presentation" by default).
Click the dropdown to open it, then click the "Create Presentation" button from the menu.
Required. Choose a descriptive name for your presentation.
Example: "Q4 Product Roadmap"Brief description of your presentation's purpose.
Example: "Company strategy and upcoming product launches"Click the "Create" button to create your presentation. The dialog will close and you'll be automatically switched to your new presentation.
/api/presentationsCreates a new presentation programmatically
application/jsonname(string, required) Presentation namedescription(string, optional) Presentation descriptiontheme(string, optional) Theme name (defaults to "default")curl -X POST http://localhost:3000/api/presentations \
-H "Content-Type: application/json" \
-d '{
"name": "My API Presentation",
"description": "Created via REST API",
"theme": "dark"
}'const response = await fetch('http://localhost:3000/api/presentations', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'API Generated Presentation',
description: 'Automated presentation creation',
theme: 'default'
})
});
const presentation = await response.json();
console.log('Created presentation:', presentation.id);import requests
response = requests.post(
'http://localhost:3000/api/presentations',
json={
'name': 'Python Generated Presentation',
'description': 'Created with Python requests',
'theme': 'default'
}
)
presentation = response.json()
print(f"Created presentation: {presentation['id']}"){
"id": "my-api-presentation",
"name": "My API Presentation",
"description": "Created via REST API",
"theme": "dark",
"created": "2024-01-12T23:17:31.000Z",
"modified": "2024-01-12T23:17:31.000Z",
"slideCount": 0
}{
"error": "Presentation name is required"
}Your presentation is stored in the filesystem with this structure:
presentations/
└── my-presentation/
├── config.json # Presentation metadata
└── slides/ # Your .mdx slide files go here
├── 01-intro.mdx
├── 02-content.mdx
└── ...slides/ directorynpm run validateLearn how to format your slides using PPT Agent's slide types and MDX components. This guide covers all available formatting options for creating beautiful presentations.
Purpose: Large, impactful title slides with animated backgrounds.
type: "hero" (required)title: Main heading text (required)subtitle: Smaller subtitle text (optional)---
type: hero
title: "Welcome to PPT Agent"
subtitle: "The future of presentations"
---Purpose: Display chronological events or milestones with a curved timeline visualization.
type: "timeline" (required)title: Timeline title (required)subtitle: Timeline subtitle (optional)points: Array of timeline points (required)date: Date string (e.g., "2024 Q1", "Jan 15, 2024")title: Event title---
type: timeline
title: "Product Roadmap"
subtitle: "2024 Development Timeline"
points:
- date: "Q1 2024"
title: "MVP Launch"
- date: "Q2 2024"
title: "User Feedback Integration"
- date: "Q3 2024"
title: "Advanced Features"
---Purpose: Showcase key messages or features in card format with icons.
type: "messages" (required)title: Section title (required)cards: Array of message cards (required)number: Display number (e.g., "01", "1")title: Card titleicon: Lucide React icon namedescription: Card description text---
type: messages
title: "Why Choose Us"
cards:
- number: "01"
title: "Lightning Fast"
icon: "zap"
description: "Built for performance with modern technologies"
- number: "02"
title: "Secure by Design"
icon: "shield"
description: "Enterprise-grade security from day one"
---Purpose: Display metrics and KPIs with animated counters and progress bars.
type: "stats" (required)title: Stats section title (required)subtitle: Section subtitle (optional)stats: Array of stat items (required)value: Number or string valuelabel: Stat labelprefix: Text before value (e.g., "$")suffix: Text after value (e.g., "%", "+")layout: Layout style (optional, default: "grid")"grid": 4-column grid with card backgrounds"row": Single row layout"columns": 2-column vertical layout---
type: stats
title: "2024 Performance"
subtitle: "Key Metrics"
layout: "grid"
stats:
- value: 1250000
label: "Active Users"
suffix: "+"
- value: 99.9
label: "Uptime"
suffix: "%"
---Purpose: Display testimonials or inspirational quotes with author attribution.
type: "quote" (required)quote: Quote text (required)author: Author name (optional)title: Author title (optional)company: Author company (optional)avatar: Avatar image URL (optional)background: Background style (optional, default: "gradient")"gradient": Multi-color gradient"minimal": Black background"accent": Purple accent gradient---
type: quote
quote: "PPT Agent transformed how we present to stakeholders."
author: "Sarah Chen"
title: "VP of Product"
company: "TechCorp Inc."
background: "accent"
---Purpose: Showcase code examples, commands, and technical demonstrations.
type: "terminal" (required)title: Terminal section title (required)commands: Array of command/code blocks (required)prompt: Command prompt (optional, defaults to >)command: Code or command text (required)output: Command output (optional)language: Programming language (optional)theme: Syntax highlighting theme (optional, default: "dark")"dark": Dark theme"light": Light theme"monokai": Monokai theme---
type: terminal
title: "Getting Started"
theme: "dark"
commands:
- prompt: "~"
command: "npm install vision-deck"
output: "added 42 packages in 3.2s"
- command: |
import { createDeck } from 'vision-deck'
const deck = createDeck({
slides: ['./slides/*.mdx']
})
language: "typescript"
---MDX components can be used within slide content for rich formatting and interactive elements.
Purpose: Highlight important information with styled boxes.
type: Callout style (optional, default: "info") - "info", "warning", "success", "error", "tip"title: Callout title (optional)<Callout type="warning" title="Important">
This action cannot be undone.
</Callout>Purpose: Highlight important text with colored backgrounds.
color: Highlight color (optional, default: "yellow") - "yellow", "green", "blue", "pink", "purple"This feature is <Highlight color="green">new</Highlight>!This feature is highlighted in yellow by default.
This is highlighted in green for success.
This shows blue highlighting for information.
This uses pink highlighting for emphasis.
This demonstrates purple highlighting for special content.
Purpose: Display status indicators or labels.
variant: Badge style (optional, default: "default") - "default", "success", "warning", "error", "outline"size: Badge size (optional, default: "md") - "sm", "md", "lg"<Badge variant="success" size="sm">New</Badge>Purpose: Show progress bars with animated fill.
value: Current progress value (required)max: Maximum value (optional, default: 100)label: Progress bar label (optional)showValue: Show percentage (optional, default: true)size: Bar thickness (optional, default: "md") - "sm", "md", "lg"color: Bar color (optional, default: "white") - "white", "green", "blue", "purple"<Progress value={75} label="Completion" color="green" />Purpose: Inline code formatting.
language: Programming language (optional)Use the <Code>npm install</Code> command.Use the npm install command to get started.
You can also highlight function names and variables inline.
Purpose: Animated number counters.
value: Target number (required)duration: Animation duration in seconds (optional, default: 1)prefix: Text before number (optional)suffix: Text after number (optional)<Counter value={1500000} prefix="$" suffix="+" />Purpose: Precise animated numbers with decimal support.
value: Target number (required)decimals: Decimal places (optional, default: 0)duration: Animation duration in seconds (optional, default: 1)<AnimatedNumber value={3.14159} decimals={2} />Purpose: Numbered step-by-step instructions.
number: Step number (required)title: Step title (required)active: Highlight as active step (optional, default: false)<Step number={1} title="Install Dependencies">
Run `npm install` to install packages.
</Step>Purpose: Collapsible content sections.
title: Accordion title (required)defaultOpen: Start expanded (optional, default: false)<AccordionItem title="Advanced Configuration">
Detailed configuration options go here.
</AccordionItem>npm run validatenpm run devPPT Agent now includes 26 additional slide templates organized into four categories: Clean & Minimal, Visual Impact, Interactive & Motion, and Content-Focused. Each template is designed for specific use cases with built-in animations and responsive layouts.
These templates emphasize clarity, whitespace, and simplicity. Perfect for corporate presentations, educational content, and any situation where the message should take center stage.
Best for: Product comparisons, before/after scenarios, feature explanations with visuals
Best for: Pros/cons lists, comparisons, parallel concepts
Best for: Key takeaways, bold claims, punchy headlines
Best for: Quotes, single ideas, dramatic pauses
Best for: Feature lists, benefits, key points
Best for: Processes, workflows, step-by-step guides
These templates leverage imagery, graphics, and visual storytelling. Ideal for creative presentations, portfolios, product launches, and any content where visuals drive the narrative.
Best for: Hero images, dramatic openings, emotional storytelling
Best for: Portfolio showcases, product collections, visual storytelling
Best for: Feature announcements, product spotlights, key differentiators
Best for: App demos, product screenshots, UI walkthroughs
Best for: System architecture, workflows, relationships
Best for: Statistics, metrics, data visualization
These templates feature advanced animations and interactivity. Use them to create memorable moments, engage your audience, and add dynamic energy to your presentations.
Best for: Quizzes, progressive disclosure, building suspense
Best for: Energetic transitions, dynamic content, attention-grabbing moments
Best for: Depth effects, immersive experiences, layered storytelling
Best for: Transformations, adaptability messaging, fluid concepts
Best for: Live metrics, KPIs, impressive statistics
These templates are designed for specific content types like testimonials, pricing, and team info. They include purpose-built layouts and components for common presentation needs.
Best for: Customer quotes, social proof, reviews
Best for: Team introductions, about us sections, org charts
Best for: Product pricing, plan comparisons, tiers
Best for: Product features, service offerings, capabilities
Best for: Call-to-action, signup prompts, final slides
Use Clean & Minimal templates:
Use Visual Impact templates:
Use Interactive & Motion templates:
Use Content-Focused templates:
Need help with creating slides? Check out the example presentation or visit our GitHub repository for more documentation.