159 lines
6.6 KiB
Markdown
159 lines
6.6 KiB
Markdown
|
|
# 通用PPT自动生成工具
|
|||
|
|
|
|||
|
|
`PPT生成` `CodeBuddy` `模板分析` `Node.js` `演示文稿`
|
|||
|
|
|
|||
|
|
# 通用 PPTX 生成器技能
|
|||
|
|
|
|||
|
|
<p align="center">
|
|||
|
|
<img src="https://img.shields.io/badge/CodeBuddy-Skill-blue" alt="CodeBuddy Skill">
|
|||
|
|
<img src="https://img.shields.io/badge/Node.js-14%2B-green" alt="Node.js 14+">
|
|||
|
|
<img src="https://img.shields.io/badge/pptxgenjs-3.x-orange" alt="pptxgenjs">
|
|||
|
|
<img src="https://img.shields.io/badge/License-MIT-yellow" alt="许可证">
|
|||
|
|
</p>
|
|||
|
|
|
|||
|
|
一个强大的 CodeBuddy 技能,能够根据**任意用户指定的 PPT 模板**,结合提供的**图文素材**(文档、图片等),自动生成一份风格统一的演示文稿。
|
|||
|
|
|
|||
|
|
## ✨ 核心功能
|
|||
|
|
|
|||
|
|
| 功能 | 描述 |
|
|||
|
|
|------|------|
|
|||
|
|
| 🎨 **模板分析** | 自动解析 PPTX 模板结构、配色、字体、背景图/背景色、对齐方式 |
|
|||
|
|
| 📄 **分页面类型分析** | 针对封面、目录、章节、内容、结束页分别提取背景和样式 |
|
|||
|
|
| 📝 **素材处理** | 从 DOCX/PDF/图片等素材中提取内容 |
|
|||
|
|
| 🎯 **智能排版** | 根据模板风格自动排版生成内容 |
|
|||
|
|
| 📊 **图表展示** | 支持柱状图、折线图、饼图、雷达图等多种数据可视化图表 |
|
|||
|
|
| 🔄 **批量生成** | 支持生成多页完整演示文稿 |
|
|||
|
|
|
|||
|
|
## 🚀 快速开始
|
|||
|
|
|
|||
|
|
### 安装技能
|
|||
|
|
|
|||
|
|
1. 将 `SKILL.md` 文件复制到你的 CodeBuddy 项目的 `.codebuddy/skills/universal-pptx-generator/` 目录下
|
|||
|
|
2. 在 CodeBuddy 中使用 `/universal-pptx-generator` 命令激活技能
|
|||
|
|
|
|||
|
|
### 目录结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
.codebuddy/
|
|||
|
|
└── skills/
|
|||
|
|
└── universal-pptx-generator/
|
|||
|
|
└── SKILL.md
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📋 使用方法
|
|||
|
|
|
|||
|
|
### 基本工作流程
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────────────────────────────────────┐
|
|||
|
|
│ 通用 PPT 生成流程 │
|
|||
|
|
├─────────────────────────────────────────────────────────────┤
|
|||
|
|
│ 1. 模板深度分析阶段(关键!) │
|
|||
|
|
│ └── 解压 PPTX → 精确分析每页 XML → 提取字号/颜色/位置 │
|
|||
|
|
│ │
|
|||
|
|
│ 2. 素材处理阶段 │
|
|||
|
|
│ └── 解析 DOCX/PDF → 提取文本/图片 → 结构化内容 │
|
|||
|
|
│ │
|
|||
|
|
│ 3. 内容规划阶段 │
|
|||
|
|
│ └── 分析内容 → 设计结构 → 分配页面 │
|
|||
|
|
│ └── ⭐ 识别数据 → 选择图表类型 → 准备图表数据 │
|
|||
|
|
│ │
|
|||
|
|
│ 4. PPT 生成阶段 │
|
|||
|
|
│ └── 应用精确的模板参数 → 填充内容 → 生成图表 → 输出 PPTX │
|
|||
|
|
│ │
|
|||
|
|
│ 5. 清理阶段 │
|
|||
|
|
│ └── 删除临时文件 → 保留最终 PPTX │
|
|||
|
|
└─────────────────────────────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 示例对话
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
用户: 帮我根据这个模板生成一份项目汇报PPT,素材在这个文档里
|
|||
|
|
|
|||
|
|
CodeBuddy: 好的,我来帮你生成PPT。让我先分析模板结构...
|
|||
|
|
[自动分析模板 XML,提取精确参数]
|
|||
|
|
[处理素材内容,规划页面结构]
|
|||
|
|
[生成完整 PPT 文件]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🎯 支持的页面类型
|
|||
|
|
|
|||
|
|
| 页面类型 | 典型特征 | 背景处理方式 |
|
|||
|
|
|---------|---------|-------------|
|
|||
|
|
| **封面页(Cover)** | 主标题 + 副标题 + Logo | 背景图/渐变/斜切形状 |
|
|||
|
|
| **目录页(TOC)** | 目录列表 + 装饰元素 | 纯色背景 + 装饰形状 |
|
|||
|
|
| **章节页(Chapter)** | 大号章节编号 + 章节标题 | 纯色背景 + 装饰形状 |
|
|||
|
|
| **内容页(Content)** | 标题 + 正文/图片/图表 | 纯色背景/背景图 |
|
|||
|
|
| **结束页(Thanks)** | 感谢语 + 联系方式 | 纯色背景 + 装饰形状 |
|
|||
|
|
|
|||
|
|
## 📊 支持的图表类型
|
|||
|
|
|
|||
|
|
| 类型 | 说明 | 适用场景 |
|
|||
|
|
|------|------|---------|
|
|||
|
|
| 柱状图 | 垂直柱状图 | 分类对比 |
|
|||
|
|
| 横向柱状图 | 3D 柱状图 | 横向展示 |
|
|||
|
|
| 折线图 | 折线趋势图 | 时间序列趋势 |
|
|||
|
|
| 面积图 | 面积趋势图 | 累积数据展示 |
|
|||
|
|
| 饼图 | 饼状图 | 占比分析 |
|
|||
|
|
| 圆环图 | 环形图 | 带说明的占比 |
|
|||
|
|
| 雷达图 | 雷达/蜘蛛图 | 多维度对比 |
|
|||
|
|
| 散点图 | 散点图 | 相关性分析 |
|
|||
|
|
|
|||
|
|
## ⚠️ 核心原则
|
|||
|
|
|
|||
|
|
> **⭐⭐⭐ 每个模板都是独特的,必须针对性分析!**
|
|||
|
|
|
|||
|
|
不同 PPT 模板使用的字体、对齐方式、字号、颜色、位置、背景样式都完全不同。**绝不能**将一个模板的配置直接应用到另一个模板!每次使用新模板时,都必须重新分析 XML 提取精确参数。
|
|||
|
|
|
|||
|
|
### 必须遵守的原则
|
|||
|
|
|
|||
|
|
1. **精确提取参数** —— 所有字号、位置、颜色必须从幻灯片 XML 中精确提取
|
|||
|
|
2. **精确提取字体** —— 字体名称必须从 XML 精确提取
|
|||
|
|
3. **精确提取对齐方式** —— 对齐方式必须从 `algn` 属性提取
|
|||
|
|
4. **不要添加额外元素** —— 如果模板没有某元素,就不要添加
|
|||
|
|
5. **保持布局一致** —— 位置和尺寸必须与模板匹配
|
|||
|
|
6. **单位换算正确** —— sz ÷ 100 = pt,EMU ÷ 914400 = 英寸
|
|||
|
|
|
|||
|
|
### 常见错误与正确做法
|
|||
|
|
|
|||
|
|
| 错误 | 正确做法 |
|
|||
|
|
|------|----------|
|
|||
|
|
| 使用推测的字号 | 从 XML 的 `sz` 属性精确提取 |
|
|||
|
|
| 使用默认字体 | 从 XML 精确提取字体名称 |
|
|||
|
|
| 使用错误的对齐方式 | 从 XML 的 `algn` 属性提取 |
|
|||
|
|
| 复制其他模板的配置 | 每个模板必须单独分析! |
|
|||
|
|
| 形状出现黑色边框 | 必须设置 `line: 'none'` |
|
|||
|
|
|
|||
|
|
## 🛠️ 技术依赖
|
|||
|
|
|
|||
|
|
- **Node.js** 14+
|
|||
|
|
- **pptxgenjs** 3.x
|
|||
|
|
- **Python** 3.x(用于文件处理)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
npm install pptxgenjs
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📁 单位换算公式
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
字号:sz 值 ÷ 100 = pt
|
|||
|
|
位置/尺寸:EMU ÷ 914400 = 英寸
|
|||
|
|
百分比:英寸 ÷ 画布尺寸 × 100%
|
|||
|
|
|
|||
|
|
画布尺寸(16:9):20 × 11.25 英寸
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🤝 贡献
|
|||
|
|
|
|||
|
|
欢迎提交 Issue 和 Pull Request!
|
|||
|
|
|
|||
|
|
## 📄 许可证
|
|||
|
|
|
|||
|
|
MIT 许可证 —— 详见 [LICENSE](./LICENSE) 文件
|
|||
|
|
|
|||
|
|
## 🙏 致谢
|
|||
|
|
|
|||
|
|
- [pptxgenjs](https://github.com/gitbrent/PptxGenJS) —— 强大的 JavaScript PPT 生成库
|
|||
|
|
- [CodeBuddy](https://www.codebuddy.ai/) —— AI 编程助手
|