outline-to-slides
v1.2.2
Published
Convert markdown or JSON outlines into professional PowerPoint presentations instantly. Transform outlines into beautiful slide decks using 18 slide layouts, 4 color themes, and intelligent parsing.
Downloads
120
Maintainers
Readme
outline-to-slides
Convert markdown or JSON outlines into professional PowerPoint presentations instantly.
Features
✨ 8 Slide Layouts - Content, Bullets, Quote, Two-column, Metrics, Chart, Table, Image
🎨 4 Color Themes - Default, Modern, Dark, Forest
🧠 Intelligent Parsing - Automatically detects slide types from markdown keywords
📊 Data Visualization - Built-in support for charts, metrics, and tables
🔤 Slide Subtitles - Add subtitles to individual slides
#️⃣ Auto Numbering - Automatic slide numbering across all slides
⚡ Fast & Easy - Generate presentations in seconds
Installation
npm install outline-to-slidesQuick Start
1. Create a JSON Outline
const { convertJsonOutline, jsonToPptx } = require('outline-to-slides');
const outline = {
title: "My Presentation",
author: "Your Name",
subtitle: "A professional slide deck",
theme: "modern",
slides: [
{
title: "Introduction",
type: "content",
content: "Welcome to my presentation!"
},
{
title: "Key Points",
type: "bullets",
points: [
"First important point",
"Second important point",
"Third important point"
]
}
]
};
const presentation = convertJsonOutline(outline);
await jsonToPptx(presentation, 'output.pptx');2. Use Markdown Outline
const { parseOutline, jsonToPptx } = require('outline-to-slides');
const markdown = `
# My Presentation
## Introduction
This is the introduction slide.
## Key Points
- Point one
- Point two
- Point three
## Conclusion
Thank you!
`;
const presentation = parseOutline(markdown, {
title: "My Presentation",
author: "Your Name"
});
await jsonToPptx(presentation, 'output.pptx');Slide Types
Choose the right layout for your content:
| Type | Use For | Example | |------|---------|---------| | content | Body text and paragraphs | "Introduction", "About Us" | | bullets | Key points and lists | "Features", "Benefits" | | quote | Testimonials and quotes | "Customer Quote" | | two_column | Comparisons and side-by-side | "Before vs After" | | metrics | Key numbers and stats | "Q4 Results" | | chart | Data visualization | "Revenue Growth" | | table | Tabular data | "Comparison Table" | | image | Images with descriptions | "Product Screenshot" |
Example: Multiple Layout Types
const outline = {
title: "Product Roadmap",
slides: [
{
title: "Executive Summary",
type: "content",
content: "Overview of our 2025 roadmap..."
},
{
title: "Key Metrics",
type: "metrics",
metrics: [
{ title: "Revenue", value: "$42.5M", description: "Up 15%" },
{ title: "Customers", value: "500+", description: "Growth 22%" }
]
},
{
title: "Current vs Future",
type: "two_column",
left: { heading: "Current", content: "..." },
right: { heading: "Future", content: "..." }
},
{
title: "Roadmap Timeline",
type: "chart",
chart_type: "bar",
chart_json: "{...}",
text_heading: "Implementation Plan",
text_body: "Phased rollout across..."
}
]
};Color Themes
Choose from 4 professional themes:
const outline = {
title: "My Presentation",
theme: "modern", // Options: 'default', 'modern', 'dark', 'forest'
slides: [...]
};Theme Options
- default - Classic blue and purple (professional corporate)
- modern - Vibrant red, teal, and yellow (creative and energetic)
- dark - Cyan on dark blue background (tech-focused, modern)
- forest - Green palette (eco-friendly, nature-focused)
Advanced Features
Slide Subtitles
Add subtitles to individual slides:
{
title: "Main Title",
subtitle: "Optional subtitle text",
type: "content",
content: "Slide content here"
}Intelligent Markdown Parsing
The parser auto-detects slide types from keywords:
# Revenue Chart ← Auto-detected as "chart"
# Q4 Metrics ← Auto-detected as "metrics"
# Enterprise vs SMB ← Auto-detected as "two_column"
# Customer Testimonial ← Auto-detected as "quote"
# Product Table ← Auto-detected as "table"
# Screenshot ← Auto-detected as "image"Control Closing Slide
const presentation = parseOutline(markdown, {
title: "My Presentation",
author: "Your Name",
includeClosingSlide: false // Don't add "Thank You" slide
});Complete Example
const { convertJsonOutline, jsonToPptx } = require('outline-to-slides');
const presentation = {
title: "Q4 2024 Results",
subtitle: "Executive Summary",
author: "Finance Team",
theme: "modern",
includeClosingSlide: true,
slides: [
{
title: "Executive Summary",
subtitle: "Key Highlights",
type: "content",
content: "Strong performance across all metrics this quarter."
},
{
title: "Financial Results",
subtitle: "Performance Overview",
type: "metrics",
metrics: [
{
title: "Revenue",
value: "$42.5M",
description: "Up 15% YoY"
},
{
title: "Gross Margin",
value: "78%",
description: "Improved from 75%"
},
{
title: "Customer Growth",
value: "22%",
description: "500+ customers"
},
{
title: "Net Retention",
value: "110%",
description: "Strong expansion"
}
],
description: "All key metrics show positive momentum into 2025."
},
{
title: "Market Expansion",
subtitle: "Enterprise vs SMB",
type: "two_column",
left: {
heading: "Enterprise Segment",
content: "Enterprise customers grew 28% with strong expansion in North America and Europe. Secured 3 Fortune 500 companies."
},
right: {
heading: "SMB Segment",
content: "SMB segment grew 15% with focus on self-serve adoption. Automated onboarding reduced CAC by 40%."
}
},
{
title: "Key Takeaways",
subtitle: "Strategic Direction",
type: "bullets",
points: [
"Strong revenue growth across all segments",
"Market expansion successful in new geographies",
"Team expanded with 25 new hires",
"24 new features launched",
"Customer satisfaction at all-time high"
]
}
]
};
const pres = convertJsonOutline(presentation);
await jsonToPptx(pres, 'q4-results.pptx');API Reference
convertJsonOutline(outline)
Converts a JSON outline to presentation structure.
Parameters:
outline.title(string, required) - Presentation titleoutline.author(string, required) - Author nameoutline.subtitle(string, optional) - Presentation subtitleoutline.theme(string, optional) - Color theme: 'default', 'modern', 'dark', 'forest'outline.includeClosingSlide(boolean, optional) - Add closing slide (default: true)outline.slides(array, required) - Array of slide objects
Returns: Presentation object ready for jsonToPptx()
parseOutline(markdown, options)
Converts markdown to presentation structure.
Parameters:
markdown(string, required) - Markdown formatted outlineoptions.title(string, required) - Presentation titleoptions.author(string, required) - Author nameoptions.subtitle(string, optional) - Presentation subtitleoptions.theme(string, optional) - Color themeoptions.includeClosingSlide(boolean, optional) - Add closing slide
Returns: Presentation object
jsonToPptx(presentation, outputPath)
Generates PowerPoint file from presentation object.
Parameters:
presentation(object, required) - Presentation from convertJsonOutline() or parseOutline()outputPath(string, required) - Output file path (e.g., 'presentation.pptx')
Returns: Promise that resolves with output path
Examples
The package includes 11 working examples:
# Basic JSON outline
node examples/01-json-basic.js
# Charts and data visualization
node examples/02-charts.js
# HTML parsing
node examples/03-html-parsing.js
# Custom themes
node examples/04-custom-theme.js
# Tables
node examples/05-tables.js
# All layouts showcase
node examples/06-all-layouts.js
# Charts showcase
node examples/07-charts-showcase.js
# Theme selection
node examples/10-theme-selection.js
# Outline showcase
node examples/11-outline-showcase.jsUse Cases
Business Presentations
const outline = {
title: "Annual Investor Update",
theme: "default", // Professional
slides: [
// Financial results, roadmap, projections
]
};Conference Talks
const outline = {
title: "Machine Learning 101",
theme: "dark", // Tech-focused
slides: [
// Concepts, examples, code samples
]
};Product Demos
const outline = {
title: "Product Features",
theme: "modern", // Vibrant
slides: [
// Features, benefits, demo screenshots
]
};Command Line Usage
# Generate presentation from JSON file
outline-to-slides input.json output.pptx
# Use specific theme
outline-to-slides input.json output.pptx --theme modern
# Parse markdown
outline-to-slides input.md output.pptx --markdownTips & Best Practices
✅ Do's
- Use specific, descriptive titles
- Keep bullet points concise (max 5-6 per slide)
- Use appropriate slide types for your content
- Match theme to presentation tone
- Test your presentation before sharing
- Use subtitles for clarity
- Keep total slides under 20
❌ Don'ts
- Don't overload slides with text
- Don't mix unrelated content
- Don't use default theme for creative presentations
- Don't forget to set author and title
- Don't use too many different fonts
- Don't skip the introduction slide
Supported Node Versions
- Minimum: Node.js 14.0.0
- Recommended: Node.js 16.0.0+
Browser Support
This is a Node.js library. For browser usage, you'll need to use a bundler like webpack or browserify.
Documentation
- QUICK_START.md - Quick reference guide (5 minutes)
- THEME_GUIDE.md - Color themes documentation
- OUTLINE_ENHANCEMENTS.md - Advanced features guide
- examples/ - 11 working code examples
Troubleshooting
PowerPoint won't open
- Ensure the file path is valid
- Check that
jsonToPptxcompletes without errors
Slide content is cut off
- Reduce text length
- Use a more appropriate slide type
- Use subtitles instead of longer text
Theme not applying
- Verify theme name: 'default', 'modern', 'dark', or 'forest'
- Ensure theme is specified in outline object
Missing slide numbers
- Slide numbers are automatic (starting from slide 2)
- Title slide (slide 1) is intentionally not numbered
Performance
- Small presentations (< 10 slides): < 1 second
- Medium presentations (10-30 slides): 1-5 seconds
- Large presentations (30+ slides): 5-15 seconds
Times vary based on content complexity and system resources.
Package Contents
- 34 files total
- 58.7 KB packed
- 290.5 KB unpacked
- JavaScript source only (no TypeScript)
- 11 working examples
- 4 documentation files
License
MIT - See LICENSE file for details
Contributing
Issues and pull requests welcome! Check the repository for guidelines.
Support
- Documentation: See QUICK_START.md and other guides
- Examples: Check the examples/ directory
- Issues: Report via GitHub or npm package
Changelog
v1.1.1 (Latest)
- Excluded TypeScript files from package
- Added QUICK_START.md documentation
- Optimized package size (88% smaller)
v1.1.0
- Added 4 color themes (modern, dark, forest)
- Enhanced outline parser with 8 slide layouts
- Added intelligent markdown parsing
- Added slide subtitles and numbering
v1.0.0
- Initial release
Version
Current: 1.1.1 Latest npm: https://www.npmjs.com/package/outline-to-slides
Repository
For source code and issues: See package.json for repository URL
Keywords
PowerPoint, PPTX, Presentation, Generator, Slides, Outline, Markdown, JSON, Automation, LLM, AI
Get started in 5 minutes! See QUICK_START.md for a quick introduction.
