DeepTutor pptx 技能
用 python-pptx 读取、创建和编辑 PowerPoint 演示文稿——从大纲生成幻灯片、提取内容、修改图表表格、替换图片并导出 PDF。
技能仅声明 sandbox: shell 权限,通过 exec 执行 python-pptx 读写 pptx 文件,无网络外发、无凭据访问、无破坏性默认行为;明确要求导出失败时如实报告而非安装软件,zip 手术示例使用 defusedxml。扣分点:subprocess 调用 soffice/pdftoppm 属于外部进程执行,未显式要求用户确认,回滚策略(覆盖已存在文件)未说明。
文档内部自洽,代码路径清晰,含大量失败反馈设计:soffice/pdftoppm 缺失时如实告知、重开输出验证损坏、模板残留占位符检查、图像替换需同编码的告警等,异常输入下有可诊断的失败说明。静态评审不执行代码,按上限 10 内给分,扣掉未提供针对该技能路径的可运行测试或边界用例清单。
触发条件明确(任何 pptx/ppt 输入输出或提及幻灯片),能力边界清楚(python-pptx 无法处理 .ppt、导出依赖 LibreOffice、无图像查看工具时承认无法目检),环境适配说明较充分。扣分点:对中文字体/版式渲染问题未提及;LibreOffice/pdftoppm 在部分环境下不可用会使导出路径失效,未给出替代方案。
frontmatter 含 name/description/tags/requires,文档分层清晰(读/建/编辑/导出/OOXML 逃生舱/验证),Apache-2.0 许可明确,python-pptx 依赖在 pyproject.toml 中锁定(>=1.0.0)。扣分点:技能本身无版本号或变更记录,无 FAQ,维护责任与技能级更新路径仅能从仓库层面间接推断。
代码示例完整可直接使用,覆盖读取、创建、编辑、图表、导出、zip 手术等关键路径,并强调自我验证步骤,边际价值明显高于手写 OOXML。静态评审未执行,按上限 7 内给分;扣掉缺少代表性输出的可验证证据(如生成结果样例或测试证据),且设计建议部分效果依赖模型执行力。
技能声明(python-pptx 预装、默认模板布局索引等)可在源码层面部分对照(pyproject 确认依赖),但无针对该技能的提交测试或 CI 覆盖证据,事实与推断基本分离。扣掉缺少第三方执行证据与多源交叉验证,静态评审下不给更高分。
- 本评审为静态源码阅读,未执行任何代码;'预装 python-pptx' 与模板布局索引等声明未经运行验证。
- 导出为 PDF/图片依赖宿主机 LibreOffice 与 pdftoppm;两者缺失时导出功能不可用且技能不会自行安装,请预先确认环境。
- 技能通过 exec 运行 Python 与 subprocess 外部进程并覆盖输出文件,使用前请注意工作区内同名文件会被覆盖。
- 仓库发布方未经 FollowSkills 注册表验证,身份按未知处理;技能本身无独立版本号与变更记录。
- 对中文内容的幻灯片渲染(字体、换行、溢出)未提供专门指导,生成含中文的演示文稿后请人工目检。
这个 Skill 能做什么,适合哪些场景?
这是 DeepTutor 内置技能库中处理 PowerPoint 文件的一个技能,位于 deeptutor/skills/builtin/pptx/SKILL.md。它教模型用预装的 python-pptx 库操作 .pptx(即 XML 部件组成的 ZIP 包),涵盖读取幻灯片文本与演讲者备注、按大纲新建演示文稿、在 run 级别编辑保留格式、替换图片字节、生成表格与图表,以及通过 LibreOffice 导出 PDF/图片。仅在 python-pptx 无法表达时才降级到原生 OOXML 手术式编辑。需要 shell 沙箱执行 Python 代码,这是 DeepTutor 各部署形态的默认能力。
读取:遍历幻灯片、占位符、形状、表格单元格与备注页,输出结构化文本。创建:从模板或默认版式按大纲生成幻灯片,写入标题、项目符号、文本框和图片。编辑:在 run 级别替换文本以保留行内格式、删除多余形状、通过交换图片部件字节原位替换图片、生成表格和柱状图等。设计:给出配色、版式多样性、字号阶梯等排版规范,并要求导出后检查溢出/重叠。导出:调用 soffice --headless 转 PDF,pdftoppm 转 JPEG 供视觉检查;旧版 .ppt 需先用 soffice 转换为 .pptx。兜底:对库不支持的特性(精确复制幻灯片、渐变填充等)用 lxml 或 zipfile 直接编辑 OOXML,并列出 [Content_Types].xml、关系与唯一 ID 等关键不变量。完成前会重新打开文件断言幻灯片数量和关键文本以验证结构完整性。
- 需要批量生成周报、课程讲义或培训材料幻灯片的教师和企业用户,从 Markdown 大纲一键产出结构化 .pptx
- 拿到大量已有演示文稿需要提取文本和演讲者备注做归档或检索的内容团队
- 模板套用场景:在现有 .pptx 模板中替换 {{NAME}} 等占位符文本并原位更换 logo 图片
- 需要在幻灯片中自动生成数据表格和簇状柱状图的分析人员
- 需要将演示文稿批量导出为 PDF 或逐页图片用于审阅、发布或无 PowerPoint 环境查看的用户
- 收到旧版 .ppt 文件需要转换为可编辑 .pptx 的用户(需本机装有 LibreOffice)
这个 Skill 有哪些优点和局限?
- 指令非常具体且带完整可运行的代码示例,覆盖读取、创建、编辑、设计、导出、OOXML 兜底全流程
- 强调 run 级编辑保留格式、图片替换需同编码、OOXML 不变量清单等容易踩坑的细节
- 内置验证环节:重新打开输出断言结构完整,导出后检查溢出/重叠,避免交付损坏或版式糟糕的文件
- 对失败模式诚实:soffice 缺失时明确跳过导出而非假装成功
- PDF/图片导出和 .ppt 转换依赖系统安装 LibreOffice,缺失时功能降级
- python-pptx 无法处理旧版 .ppt 二进制格式,必须先转换
- 视觉质量依赖模型执行设计规范的程度,图片替换字节编码错误会产生损坏文件
- 源材料未提供该技能的独立测试套件或跨平台验证证据
如何安装这个 Skill?
该技能属于 DeepTutor 内置技能,随 DeepTutor 一起分发,无需单独安装。安装 DeepTutor 本体:pip install -U deeptutor 后运行 deeptutor init 和 deeptutor start;或从源码 git clone https://github.com/HKUDS/DeepTutor.git 后 pip install -e .。技能文件位于仓库的 deeptutor/skills/builtin/pptx/SKILL.md。python-pptx 由环境预装;PDF/图片导出需系统安装 LibreOffice(soffice)。将其作为独立 Agent Skill 用于其他客户端的具体步骤在源材料中未说明。
如何使用这个 Skill?
技能声明 requires: sandbox: shell,模型通过 exec 工具执行完整 Python 脚本。典型触发:当用户消息中出现 .pptx/.ppt 文件作为输入或输出,或提到"幻灯片""演示文稿"时激活。示例指令:"根据这份大纲生成一个 5 页的 .pptx"、"提取 deck.pptx 里每页的标题和备注"、"把模板里的 {{NAME}} 替换为张三,并把第一页 logo 换成 new.png"。生成后技能要求重新打开输出文件验证幻灯片数量与关键文本;如需视觉检查则先导出 PDF/图片。若 soffice 缺失,导出步骤会被跳过并如实说明,不会现场安装。
这个 Skill 与同类方案有什么区别?
与直接让模型输出文件二进制或手写 OOXML 相比,该技能通过 python-pptx 处理结构、仅在必要时降级到 ZIP 手术,显著降低文件损坏风险;README 中 DeepTutor 的其他办公技能(docx、pdf、xlsx)采用相同的"模型写 Python 脚本经沙箱执行"模式,属于同一族工具而非竞争替代。