6.6 KiB
6.6 KiB
通用PPT自动生成工具
PPT生成 CodeBuddy 模板分析 Node.js 演示文稿
通用 PPTX 生成器技能
一个强大的 CodeBuddy 技能,能够根据任意用户指定的 PPT 模板,结合提供的图文素材(文档、图片等),自动生成一份风格统一的演示文稿。
✨ 核心功能
| 功能 | 描述 |
|---|---|
| 🎨 模板分析 | 自动解析 PPTX 模板结构、配色、字体、背景图/背景色、对齐方式 |
| 📄 分页面类型分析 | 针对封面、目录、章节、内容、结束页分别提取背景和样式 |
| 📝 素材处理 | 从 DOCX/PDF/图片等素材中提取内容 |
| 🎯 智能排版 | 根据模板风格自动排版生成内容 |
| 📊 图表展示 | 支持柱状图、折线图、饼图、雷达图等多种数据可视化图表 |
| 🔄 批量生成 | 支持生成多页完整演示文稿 |
🚀 快速开始
安装技能
- 将
SKILL.md文件复制到你的 CodeBuddy 项目的.codebuddy/skills/universal-pptx-generator/目录下 - 在 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 提取精确参数。
必须遵守的原则
- 精确提取参数 —— 所有字号、位置、颜色必须从幻灯片 XML 中精确提取
- 精确提取字体 —— 字体名称必须从 XML 精确提取
- 精确提取对齐方式 —— 对齐方式必须从
algn属性提取 - 不要添加额外元素 —— 如果模板没有某元素,就不要添加
- 保持布局一致 —— 位置和尺寸必须与模板匹配
- 单位换算正确 —— sz ÷ 100 = pt,EMU ÷ 914400 = 英寸
常见错误与正确做法
| 错误 | 正确做法 |
|---|---|
| 使用推测的字号 | 从 XML 的 sz 属性精确提取 |
| 使用默认字体 | 从 XML 精确提取字体名称 |
| 使用错误的对齐方式 | 从 XML 的 algn 属性提取 |
| 复制其他模板的配置 | 每个模板必须单独分析! |
| 形状出现黑色边框 | 必须设置 line: 'none' |
🛠️ 技术依赖
- Node.js 14+
- pptxgenjs 3.x
- Python 3.x(用于文件处理)
npm install pptxgenjs
📁 单位换算公式
字号:sz 值 ÷ 100 = pt
位置/尺寸:EMU ÷ 914400 = 英寸
百分比:英寸 ÷ 画布尺寸 × 100%
画布尺寸(16:9):20 × 11.25 英寸
🤝 贡献
欢迎提交 Issue 和 Pull Request!
📄 许可证
MIT 许可证 —— 详见 LICENSE 文件