SuperAPI AI 工具集

open-pptd

办公与效率

查看项目

更新于 10-19 16:42

技能介绍

open-pptd 是围绕 PPTD(Declarative Presentation Language,声明式演示文稿语言)规范与原生 Rust 高性能编译器 pptd 构建的开源演示文稿工具链。它面向 AI 编程智能体,提供对 OOXML 的干净、模块化 YAML 抽象,可离线在毫秒级生成真实、完全可编辑的 .pptx 演示文稿。用户可通过项目地址 https://www.skills.sh/shiquda/open-pptd-skill/open-pptd 获取,源码来源为 shiquda/open-pptd-skill。

【用途】 open-pptd 覆盖演示文稿的创建、编辑、反向反编译与导出全流程:以 PPTD 工程源码描述文稿,编译为原生 PPTX;也可将已有 PPTX 反编译为 PPTD 工程(convert),便于二次编辑。

【主要能力】

  1. 文本与排版:支持 fontSize、color、bold、italic、lineHeight、lineHeightPx、align(含水平与垂直)、letterSpacing、textDirection、各方向 margin、wrap、autofit。
  2. 富文本标签:支持 p、span、b/strong、i/em、u、s/del/strike、code,以及 latex 与 ( ... ) 原生 OOXML 公式,可生成可编辑分数线、根号、大运算符、矩阵与多行方程数组,并支持公式内宏定义。
  3. 演讲者备注:页面根级 notes 属性自动生成原生 notesSlide。
  4. 矢量形状:rect、roundRect、ellipse、triangle、diamond、rightArrow、pentagon、hexagon、callout 等 DrawingML 预设形状,支持纯色与渐变填充(形状不支持图片填充,仅背景支持)。
  5. 线条与箭头:支持相对坐标 points 与两端箭头类型(triangle、stealth、arrow、diamond、oval、none)。
  6. 表格:原生 PowerPoint 表格,支持 columnWidths、rowHeights、跨行跨列、边框样式与底色填充。
  7. 图片与媒体:统一存放于 assets/,支持透明通道、裁切 crop、cover/contain 填充、边框与阴影。
  8. 主题色彩与继承:theme.colors 声明命名色,元素通过 "$colorKey" 引用,未定义颜色会被 check 拦截。
  9. 严格静态质检:pptd check 拦截拼写错误、非法形状名、无效色彩引用、缺失媒体文件与潜在文字溢出。
  10. .sync.hash 防覆盖机制:记录文件 SHA-256,若输出文件被外部修改则拒绝覆写(退出码 2),可用 --force 强制覆盖;convert 时源文件未变更则跳过。

【使用方式】 安装与就绪检查:python3 <SKILL_DIR>/scripts/install_binary.py;网络受限时脚本自动回退至 cargo 源码编译。 语义校验:pptd check <project_dir>/deck.pptd。 编译:pptd build <project_dir>/deck.pptd -o <output.pptx>,必要时追加 --force;也可用 python3 <SKILL_DIR>/scripts/export_pptx.py deck.pptd -o output.pptx [--pdf]。 反编译:pptd convert <INPUT.pptx> <OUTPUT_DIR>(两个位置参数,不加 -o);或 python3 <SKILL_DIR>/scripts/convert_pptx.py input.pptx -o my_project_dir/。 质检与渲染预览:python3 <SKILL_DIR>/scripts/validate_pptx.py <output.pptx> --expected-pages N --check-notes;加 --render-images 可导出逐页 PNG 与总览联络单。

工程结构:deck.pptd 为清单文件(画幅比例、主题色、全局文本样式、页面清单),pages/ 存放单页 YAML 描述,assets/ 存放本地图片与多媒体。

【适用场景】 适合 AI 编程智能体批量生成或修改可编辑 PPTX、需要版本化与源码化管理演示文稿、需要原生可编辑公式与复杂版式的场景,以及将已有 PPTX 反编译后二次编辑的逆向场景。

【限制】 图表(elementType: chart)编译器尚未支持,会被 check 与 build 报错拦截,可用原生表格或图片替代;动画节点仅解析不报错,当前版本不写入时序动画;ul、ol、li、a、sup、sub 等标签严禁使用,会直接报错,列表需手写序号,上下标需改用 LaTeX 公式;形状不支持图片填充。运行环境需 Python ≥ 3.9,核心构建无外部 Python 库硬依赖;Pillow 用于全景预览图拼接,LibreOffice 或 pdftoppm 用于无头渲染。Linux 服务器缺少中文字体时渲染可能出现字体回退差异,建议在最终阅读端查看真实效果。