OverviewHistoryStatsSecurity
npx skills add ...
Documentation
SKILL.md
npx skills add claude-office-skills/skills --skill html-to-ppt
Convert HTML/Markdown to PowerPoint presentations using Marp
npx skills add claude-office-skills/skills --skill html-to-ppt
This skill enables conversion from Markdown or HTML to professional PowerPoint presentations using Marp (Markdown Presentation Ecosystem). Create beautiful, consistent slides using simple Markdown syntax with CSS-based themes.
Example prompts:
Marp uses a simple syntax where --- separates slides:
| Method | Endpoint | Description |
|---|---|---|
| GET | /users | List all users |
| POST | /users | Create user |
| GET | /users/:id | Get user details |
| PUT | /users/:id | Update user |
| DELETE | /users/:id | Delete user |
# Convert to PowerPoint
marp slides.md -o presentation.pptx
# Convert to PDF
marp slides.md -o presentation.pdf
# Convert to HTML
marp slides.md -o presentation.html
# With specific theme
marp slides.md --theme gaia -o presentation.pptx---
marp: true
---
# Title
- Bullet point 1
- Bullet point 2
- Bullet point 3---
marp: true
theme: gaia
class: lead
---
# Presentation Title
## Subtitle
Author Name
Date---
marp: true
theme: default # default, gaia, uncover
size: 16:9 # 4:3, 16:9, or custom
paginate: true # Show page numbers
header: 'Company Name' # Header text
footer: 'Confidential' # Footer text
backgroundColor: #fff
backgroundImage: url('bg.png')
------
marp: true
theme: default # Clean, minimal
---
---
marp: true
theme: gaia # Colorful, modern
---
---
marp: true
theme: uncover # Bold, presentation-focused
------
marp: true
theme: gaia
class: lead # Centered title slide
---
---
marp: true
theme: gaia
class: invert # Inverted colors
---# Heading 1
## Heading 2
**Bold text** and *italic text*
`inline code`
> Blockquote for emphasis- Unordered item
- Another item
- Nested item
1. Ordered item
2. Second item
1. Nested numbered# Code Example
\`\`\`python
def hello():
print("Hello, World!")
\`\`\`| Feature | Status |
|---------|--------|
| Tables | ✅ |
| Charts | ✅ |
| Images | ✅ |

---
marp: true
backgroundImage: url('background.jpg')
---
# Slide with Background---
marp: true
style: |
.columns {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 1rem;
}
---
# Two Column Layout
<div class="columns">
<div>
## Left Column
- Point 1
- Point 2
</div>
<div>
## Right Column
- Point A
- Point B
</div>
</div>---
marp: true
theme: gaia
class: gaia
---
<!--
_backgroundImage: linear-gradient(to right, #4a90a4, #4a90a4 50%, white 50%)
-->
<div class="columns">
<div style="color: white;">
# Dark Side
</div>
<div>
# Light Side
</div>
</div>---
marp: true
---
<!--
_backgroundColor: #123
_color: white
_paginate: false
-->
# Special Slide---
marp: true
---
<style scoped>
h1 {
color: red;
}
</style>
# This Title is Redimport subprocess
import tempfile
import os
def markdown_to_pptx(md_content, output_path, theme='default'):
"""Convert Markdown to PowerPoint using Marp."""
# Add marp directive if not present
if '---\nmarp: true' not in md_content:
md_content = f"---\nmarp: true\ntheme: {theme}\n---\n\n" + md_content
# Write to temp file
with tempfile.NamedTemporaryFile(mode='w', suffix='.md', delete=False) as f:
f.write(md_content)
temp_path = f.name
try:
# Convert using marp
subprocess.run([
'marp', temp_path, '-o', output_path
], check=True)
return output_path
finally:
os.unlink(temp_path)
# Usage
md = """
# Welcome
Introduction slide
---
# Agenda
- Topic 1
- Topic 2
- Topic 3
"""
markdown_to_pptx(md, 'presentation.pptx')const { marpCli } = require('@marp-team/marp-cli');
// Convert file
marpCli(['slides.md', '-o', 'output.pptx']).then(exitCode => {
console.log('Done:', exitCode);
});def create_presentation(title, sections, output_path, theme='gaia'):
"""Generate presentation from structured data."""
md_content = f"""---
marp: true
theme: {theme}
paginate: true
---
<!-- _class: lead -->
# {title}
{sections.get('subtitle', '')}
{sections.get('author', '')}
"""
for section in sections.get('slides', []):
md_content += f"""---
# {section['title']}
"""
for point in section.get('points', []):
md_content += f"- {point}\n"
if section.get('notes'):
md_content += f"\n<!-- Notes: {section['notes']} -->\n"
md_content += """---
<!-- _class: lead -->
# Thank You!
Questions?
"""
return markdown_to_pptx(md_content, output_path, theme)def generate_report_slides(data_list, template, output_dir):
"""Generate multiple presentations from data."""
import os
for data in data_list:
content = template.format(**data)
output_path = os.path.join(output_dir, f"{data['name']}_report.pptx")
markdown_to_pptx(content, output_path)# Using npm
npm install -g @marp-team/marp-cli
# Using Homebrew
brew install marp-cli
# Verify installation
marp --version