An automated HTML slide creation system with GitHub Actions integration for converting slides to images and PDFs.
├── slides/ # Put your HTML slides here (auto-converted)
│ ├── deck-1/ # Example: Organize by deck/topic
│ └── presentation-2/ # Subdirectories are fully supported
├── sample-slides/ # Example slides demonstrating different layouts
├── templates/ # Slide templates (EmptySlide.html)
├── slide-making-rules/ # Documentation and guidelines
├── export.js # Conversion script
└── .github/workflows/ # GitHub Actions for automation
- Create a new slide: Copy
templates/EmptySlide.htmlto theslides/directory (or any subdirectory) - Edit your slide: Modify the HTML content within the template
- Commit and push: GitHub Actions will automatically generate PNG and PDF versions
- Find your files: Generated images and PDFs appear alongside your HTML files
Start with the templates/EmptySlide.html which includes:
- Complete BCG styling (inline CSS)
- Responsive 1600x900px dimensions
- Font Awesome icons
- Multiple theme options
<div class="slide-container slide-theme-white">
<div class="basic-background-section">
<h1 class="normal-title">Your Slide Title</h1>
<div class="content-box">
<!-- Your content here -->
</div>
</div>
<div class="page-number">1</div>
<div class="footnote">Source: Your sources</div>
</div>slide-theme-white- White background with green accentsslide-theme-green- Green background with white content areasslide-theme-gray- Gray backgroundslide-theme-dark- Dark background
The repository automatically converts HTML slides when:
- HTML files are added/modified in the
slides/directory (including subdirectories) - Changes are pushed to the repository
- Manually triggered via GitHub Actions
Subdirectory Support: You can organize slides in subdirectories like:
slides/product-deck/overview.htmlslides/quarterly-review/q1-results.htmlslides/training/module-1/intro.html
# Install dependencies
npm install
# Convert slides manually
npm run convert
# Convert sample slides
npm run convert-sampleFor each slide-name.html file, the system creates:
slide-name.png- High-quality PNG image (1600x900px)slide-name.pdf- PDF version optimized for printing/sharing
- File Naming: Use descriptive, kebab-case names (
market-analysis-2025.html) - Directory Organization: Group related slides in subdirectories (
slides/deck-name/) - Content Guidelines: Follow BCG brand standards defined in the CSS
- Responsive Design: Slides are optimized for 1600x900px (16:9 aspect ratio)
- Version Control: HTML files are source of truth; generated files are auto-committed
Check the sample-slides/ directory for examples of:
- Title slides with background images
- Content slides with two-column layouts
- Agenda slides with navigation
- Slides with icons and bullet points
- Puppeteer: Headless Chrome for rendering
- PDF-lib: PDF generation and optimization
- GitHub Actions: Ubuntu runner with Chrome stable
- Node.js: ES modules with async/await
This repository includes specialized Claude agents in .claude/agents/ for slide-related tasks:
- BCG Slide Reviewer (
.claude/agents/bcg-slide-reviewer.md): Comprehensive quality review against BCG professional standards - Custom Agents: Create additional agents for content generation, design validation, or brand compliance
Claude can automatically use these agents when appropriate, or you can request specific agent assistance:
- "Please review this slide with the BCG reviewer agent"
- "Use the slide reviewer to check my presentation"
Add new .md files to .claude/agents/ with specialized instructions for:
- Industry-specific content generation
- Design pattern validation
- Accessibility compliance
- Brand guideline enforcement
MIT License - Feel free to use and modify for your presentations.