返回顶部
p

ppt-from-template模板生成PPT

>-

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 2.0.0
安全检测
已通过
113
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

ppt-from-template

PPT from Template

通过从参考模板中提取样式,然后使用PptxGenJS构建全新幻灯片来生成演示文稿。

核心原则: 绝不修改现有PPT XML。观察样式,然后从头绘制。

模板管理

模板目录

默认模板目录:{workspaceDir}/template/

每次调用时:

  1. 1. 扫描 {workspaceDir}/template/ 目录下的 *.pptx 文件。
  2. 如果找到一个模板 → 自动使用。
  3. 如果找到多个模板 → 列出并让用户选择。
  4. 如果未找到 → 告知用户上传 .pptx 文件或提供路径。

用户上传

接受用户上传的 .pptx 文件。处理前:

  • - 大小检查:拒绝超过 50 MB 的文件,提示信息:模板文件超过 50MB 限制,请压缩后重试
  • 保存到 {workspaceDir}/template/ 以便重复使用。

工作流程

阶段 1:提取样式

bash

如果是 .pptx,转换为 PDF 进行视觉分析:


python3 {baseDir}/scripts/pptxtopdf.py template.pptx /tmp/ppt_style/template.pdf

提取页面图片:

bash {baseDir}/scripts/extractpages.sh /tmp/pptstyle/template.pdf /tmp/ppt_style/ 150

从 PPTX XML 精确提取:

python3 {baseDir}/scripts/extractstyle.py template.pptx -o /tmp/pptstyle/style_raw.yaml

读取 style_raw.yaml 获取精确数据(十六进制颜色、字体名称、字号(pt)、位置(英寸)、填充类型、线条样式)。然后读取 3-5 张页面图片进行语义理解(元素角色、布局分类)。

提取两个层级:

层级来源捕获内容
全局styleraw.yaml颜色(十六进制)、排版(字体/字号/字重)、装饰
按布局
styleraw.yaml + 图片 | 元素清单:类型、角色、x/y/宽/高、样式属性 |

元素类型:text、image、video、shape、line、numberedlist、steplist、tag_group、chart、table。

对于图片/视频:设置 placeholder: true 并附带 description 供用户替换。

将结果写入 style.yaml。架构:references/style-schema.md

阶段 2:生成 PPT

使用 pptx 技能(PptxGenJS)创建幻灯片:

  1. 1. 读取 style.yaml 获取视觉参数。
  2. 结合用户内容(主题、页数、大纲)。
  3. 生成应用提取样式的 PptxGenJS JavaScript 代码。
  4. 运行 JS 生成 .pptx 文件。
  5. 质量检查:转换为图片,验证样式保真度。

大型演示文稿策略(>15 页)

PptxGenJS 生成速度很快(秒级),但为大量幻灯片编写 JS 代码可能触及上下文/时间限制。缓解措施:

页数策略
≤15单次生成
16-30
拆分为 2 个 JS 文件:幻灯片 1-15,幻灯片 16-30。顺序生成,通过 pptx-merge 合并,或在两个代码块中通过一个 pres 对象生成 |
| 31-100+ | 为每种布局类型生成一个幻灯片工厂函数,然后遍历内容数组。一个 JS 文件,数据驱动 |

大型演示文稿的幻灯片工厂模式:

javascript
// 从 style.yaml 定义布局工厂
function makeCover(pres, content) { / ... / }
function makeContent(pres, content) { / ... / }
function makeSection(pres, content) { / ... / }

// 内容数组 — 易于扩展
const slides = [
{ layout: cover, title: ..., subtitle: ... },
{ layout: content, title: ..., items: [...] },
// ... 50+ 条记录
];

slides.forEach(s => layoutFactoriess.layout);

这使代码规模保持为 O(布局数) 而非 O(页数)。

输出大小控制

目标输出 < 20 MB。PptxGenJS 输出通常较小(纯文本演示文稿 100-500 KB)。大文件来自嵌入的图片。如果输出接近 20 MB:

  1. 1. 在 PptxGenJS 选项中降低图片分辨率/质量。
  2. 使用占位符代替嵌入图片。
  3. 必要时拆分为多个文件。
  4. 警告用户:PPT 接近 20MB 限制,已使用图片占位符,请手动替换

占位符约定

  • - 图片:深色矩形 + 灰色虚线边框 + 🖼️ + 标签 + 建议
  • 视频:深色矩形 + 红色虚线边框 + ▶️ + 标签 + 建议

关键规则

  • - 绝不修改现有 PPT XML — 始终从头生成。
  • style.yaml 可重复使用 — 提取一次后,可无限生成相同样式的 PPT。
  • 在 PptxGenJS 中使用 shrinkText: true 自动适配长文本。
  • 从 style_raw.yaml 精确匹配幻灯片尺寸(不硬编码 16:9)。

文件约定

{workspaceDir}/
├── template/ ← .pptx 模板(自动发现)
│ └── *.pptx ← 每个最大 50 MB
├── output/ ← 生成的 PPT
│ └── *.pptx ← 每个最大 20 MB
/tmp/ppt_style/ ← 工作目录(临时)
├── template.pdf
├── page-*.jpg
├── styleraw.yaml ← 来自 extractstyle.py
└── style.yaml ← 合并后(精确 + 语义)

故障排除

问题解决方案
模板 > 50 MB要求用户压缩或移除嵌入媒体
输出 > 20 MB
使用占位符,减少图片数量/分辨率 | | >30 页超时 | 使用幻灯片工厂模式,数据驱动生成 | | 未找到模板 | 提示用户上传 .pptx 或指定路径 | | 多个模板 | 列出选项,让用户选择 | | 字体不可用 | 回退到 Arial/sans-serif;在输出中注明 | | 复杂渐变 | 在 style.yaml 中描述;使用背景图片 |

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 ppt-from-template-1776020469 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 ppt-from-template-1776020469 技能

通过命令行安装

skillhub install ppt-from-template-1776020469

下载

⬇ 下载 ppt-from-template v2.0.0(免费)

文件大小: 11.64 KB | 发布时间: 2026-4-13 11:35

v2.0.0 最新 2026-4-13 11:35
v2.0: Complete rewrite. PDF visual analysis + extract_style.py precision extraction + PptxGenJS generation. Template auto-discovery, 50MB limit, image/video placeholders, Slide Factory pattern for large decks (30-100+ pages), 20MB output limit.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部