Marp — 用 Markdown 写幻灯片的完整生态
> 一句话版本:把 Markdown 变成 PPT——用 --- 分页,写完直接导出 PDF/HTML/PPTX。有 CLI、VS Code 插件、Web 编辑器、React/Vue 组件,生态成熟且持续维护 8 年。
| 项目 | 信息 | |
|---|---|---|
| 来源 | https://github.com/marp-team/marp | |
| 官网 | https://marp.app | |
| 创建时间 | 2018-03-25 | |
| Stars | 11,314 | Forks 256 |
| 语言 | TypeScript | |
| 许可证 | MIT | |
| 作者 | Yuki Hattori (@yhatt) + marp-team | |
| 最新推送 | 2026-04-12(持续活跃) | |
| Open Issues | 仅 1 个 |
核心内容
生态架构
Marp 不是单一项目,而是一个模块化的 Markdown 幻灯片生态:
┌─────────────────────────────────────────┐
│ 用户界面层 │
│ ├── Marp CLI 命令行转换工具 │
│ ├── Marp for VS Code 实时预览 + 导出 │
│ ├── Marp Web PWA Web 编辑器 │
│ ├── Marp React React 渲染组件 │
│ └── Marp Vue Vue 渲染组件 │
├─────────────────────────────────────────┤
│ 转换引擎层 │
│ ├── Marp Core 实用转换 + 内置主题 │
│ └── Marpit 核心解析引擎 │
└─────────────────────────────────────────┘
写法
marp: true
theme: default
paginate: true
# 第一页标题
这是普通 Markdown 内容
## 第二页
- 列表项
- 支持 **加粗** 和 *斜体*
- 代码块:
\`\`\`python
print("Hello, Marp!")
\`\`\`
<!-- _class: lead -->
# 封面页
居中大标题
Marpit 引擎(核心)
- Directives:YAML front matter 控制全局设置(
theme、paginate、class) - Inline Directives:HTML 注释控制单页(
) - 主题系统:CSS 变量定义样式,可自定义
- Fragments:逐步显示动画(
.fragmentclass) - LaTeX 数学公式:通过 KaTeX 支持
- 图片:原生 Markdown 图片语法 + 尺寸调整
- 代码高亮:Shiki(VS Code 同款高亮引擎)
导出格式
| 格式 | 说明 |
|---|---|
| HTML | 自包含的静态网页(内嵌 CSS + JS) |
| 通过 Puppeteer 渲染 | |
| PPTX | PowerPoint 格式 |
| PNG/JPEG | 幻灯片图片 |
| PDF × Notes | 带演讲者备注的 PDF |
CLI 用法
# 安装
npm install -g @marp-team/marp-cli
# 转 PDF
marp slides.md --pdf
# 转 PPTX
marp slides.md --pptx
# 转 HTML
marp slides.md -o slides.html
# 监听模式(自动刷新)
marp -s slides.md
VS Code 插件
- 实时预览(双栏:左边 Markdown,右边幻灯片)
- 一键导出 PDF/PPTX/HTML
- 主题选择器
- 配置 Marp 全局设置
与竞品对比
| 维度 | Marp | reveal.js | Slidev | Remark |
|---|---|---|---|---|
| 输入 | Markdown | Markdown | Markdown | Markdown |
| 导出 PDF | ✅ CLI | ❌ 需插件 | ✅ | ❌ |
| 导出 PPTX | ✅ | ❌ | ❌ | ❌ |
| VS Code 集成 | ✅ 官方 | ❌ | ✅ | ❌ |
| 主题系统 | CSS 变量 | CSS | Vue SFC | CSS |
| 动画 | Fragments | 丰富 | 丰富 | 基础 |
| 代码高亮 | Shiki | highlight.js | Shiki | highlight.js |
| 演讲者模式 | ✅ | ✅ | ✅ | ❌ |
| React/Vue 组件 | ✅ | ❌ | ❌ | ❌ |
| Stars | 11K | 69K | 15K | 15K |
| 定位 | 静态文档 | 交互演示 | 开发者演示 | 轻量演示 |
Marp 的独特优势:PPTX 导出 + React/Vue 组件嵌入 + 极简 CLI。适合需要交付 PowerPoint 文件的场景。
分析
优势:
- PPTX 导出:这是最大差异化点,reveal.js 和 Slidev 都不支持
- 模块化架构:Marpit 引擎可独立使用,适合嵌入到其他产品
- 极低上手成本:会 Markdown 就会用
- 1 个 open issue:工程质量极高,维护极好
- React/Vue 组件:可以在 Web 应用中嵌入幻灯片渲染
- 8 年持续维护:从 2018 年到现在,不是一次性项目
不足:
- 不支持交互式动画:不能做复杂动画和过渡效果,适合静态演示
- 社区比 reveal.js 小:69K vs 11K,插件和主题生态差距大
- 不适合实时演示场景:没有激光笔、画笔等演示工具
- PDF 渲染依赖 Puppeteer:需要 Chrome/Chromium
与 Jay 的关联:
- 报告转演示:Jay 的 deep-research 报告可以直接用 Marp 转成幻灯片分享
- 技术分享:做技术演讲时用 Markdown 写 slides 比用 PowerPoint 快得多
- 文档驱动:Marp 的理念"Markdown 即一切"和 Jay 的知识库风格一致
- OpenClaw 集成:理论上可以让 OpenClaw 用 Marp CLI 把报告转成 PDF/PPTX
评分
| 维度 | 评分 (1-10) | 说明 |
|---|---|---|
| 完成度 | 9 | 8 年打磨,1 个 open issue,CLI + VS Code + Web + 组件全覆盖 |
| 易用性 | 9 | 会 Markdown 就会用,学习成本几乎为零 |
| 生态完整性 | 8 | 导出格式齐全,主题可定制,React/Vue 组件 |
| 创新性 | 5 | Markdown 转 slides 不算新,Marpit 引擎设计不错 |
| 差异化 | 7 | PPTX 导出 + 组件嵌入是独特优势 |
| 与 Jay 的关联 | 6 | 报告转演示有用,但不是刚需 |
| **总分** | **7.3** | 成熟稳定的工具,PPTX 导出是杀手锏 |