PPTX创建与编辑技能:用 HTML 与 OOXML 让演示文稿生成可控、可复用
- 一个技能覆盖三种路径:读取与分析、无模板从零创建、基于模板批量替换,全部围绕
.pptx的真实文件结构展开。 - 创建靠 HTML,编辑靠 XML:新建演示文稿走 html2pptx 工作流保证版式定位准确,修改现有文件则解包 OOXML 直接编辑
slide{N}.xml后再打包。 - 模板复用是最大亮点:
rearrange.py复制重排幻灯片、inventory.py提取文本清单、replace.py按 JSON 批量回填,适合品牌模板批量出稿。 - 自带视觉校验闭环:缩略图网格与 PDF 转图片两步走,可以像人一样"看"一遍成品,提前发现文字截断、重叠与对比度问题。
- 可与科学示意图技能联动:用自然语言描述图表,自动生成出版物级示意图,补足纯文本幻灯片的表达力。
该技能叫什么?如何下载安装 AI 技能提升开发效率?
这个技能的中文名是 PPTX创建与编辑技能,英文名 pptx,技能 ID 为 11964。它要解决的问题很具体:演示文稿的生成与修改长期处在两个极端——要么手工在图形界面里一页页点,慢且难以复用;要么写代码直接操作对象模型,版式容易跑偏。这个技能把 .pptx 当成它本来的样子来处理:一个装着 XML 和媒体资源的 ZIP 存档,用文本提取、原始 XML 访问或 html2pptx 工作流三条路线,程序化地创建、编辑和分析演示文稿。
关于"一键安装"的思路:这类 AI 技能通常是在技能市场或技能管理入口中按名称或技能 ID 检索后启用,具体入口与命令以官方说明为准。技能本身依赖一组运行环境,详情中明确列出了需要预装的依赖,这才是"能否跑通"的关键前提:
pip install "markitdown[pptx]" # 演示文稿文本提取
pip install defusedxml # 安全 XML 解析
npm install -g pptxgenjs # html2pptx 创建演示文稿
npm install -g playwright # HTML 渲染
npm install -g react-icons react react-dom # 图标
npm install -g sharp # SVG 栅格化与图像处理
sudo apt-get install libreoffice # PPTX 转 PDF
sudo apt-get install poppler-utils # pdftoppm 转图片
安装完成后建议做三步验证:其一,用 python -m markitdown 你的文件.pptx 看能否正常输出 Markdown 文本;其二,用 python scripts/thumbnail.py 你的文件.pptx 看能否生成缩略图网格;其三,运行 soffice --headless --convert-to pdf 你的文件.pptx 确认 LibreOffice 链路通畅。三条都通过,说明文本读取、视觉分析与格式转换能力均已就绪。
需要说明的是,该技能的许可证标注为专有,完整条款见 LICENSE.txt;是否收费、如何授权,以官方说明为准。
该技能的主要功能和特点
- 文本提取与快速通读:借助 markitdown 把整份演示文稿转成 Markdown,先理解内容再动手改,避免"盲改"。
- 原始 XML 深度访问:评论、演讲者备注、幻灯片布局、动画、设计元素和复杂格式,只有解包读 XML 才能拿到,这一点是普通对象模型库的盲区。
- 字体与配色逆向分析:先读
ppt/theme/theme1.xml里的<a:clrScheme>与<a:fontScheme>,再抽样slide1.xml的<a:rPr>,最后用 grep 搜<a:solidFill>、<a:srgbClr>,可以精准仿效一份参考设计。 - html2pptx 无模板创建:先写 HTML 幻灯片,再用
scripts/html2pptx.js转换,占位区域用class="placeholder"标记后由 PptxGenJS 填入图表和表格,版式定位更可控。 - 模板化批量生产:
rearrange.py支持同一索引重复出现以复制幻灯片,inventory.py输出包含占位符类型、坐标尺寸、段落属性的完整清单,replace.py按 JSON 回填并自动校验形状是否存在、文本是否溢出加剧。 - 内置设计与版式规范:给出 18 套配色方案、边框与字体处理手法、图表样式建议,并明确"含图表/表格的幻灯片优先两列布局或全屏布局,切勿垂直堆叠"。
- 视觉验证工具链:缩略图网格按 3 至 6 列排版,配合
pdftoppm -jpeg -r 150生成单页图像,逐页检查文本截断、重叠、越界与对比度。 - 科学示意图联动:一句
python scripts/generate_schematic.py "您的图表描述" -o figures/output.png,即可生成色盲友好、高对比度的出版物级示意图。
和普通工具相比,它的差异化在于"既懂内容也懂结构":既能读懂文字,也能改到 XML 层级,还能在生成后自己看一眼成品是否合格。
如何使用该技能?
第 1 步:读取与分析。 想快速了解一份演示文稿讲了什么,直接转 Markdown;想拿到备注、评论或动画细节,则解包读取。
python -m markitdown 路径到文件.pptx
python ooxml/scripts/unpack.py <office_file> <output_dir>
解包后重点看这些位置:ppt/presentation.xml(元数据与幻灯片引用)、ppt/slides/slide{N}.xml(单页内容)、ppt/notesSlides/notesSlide{N}.xml(演讲者备注)、ppt/comments/modernComment_*.xml(评论)、ppt/slideLayouts/ 与 ppt/slideMasters/(版式与母版)、ppt/theme/(主题)、ppt/media/(媒体文件)。如果 unpack.py 不在预期路径,用 find . -name "unpack.py" 定位。
第 2 步:无模板从零创建。 先声明设计思路——主题是什么、什么基调、配哪 3 到 5 种协调颜色,并只用网页安全字体(Arial、Helvetica、Times New Roman、Georgia、Courier、Verdana、Tahoma、Trebuchet MS、Impact)。然后为每页写 HTML,尺寸例如 720pt × 405pt 对应 16:9:
<h1>季度经营复盘</h1>
<p>三条主线:收入结构、成本效率、客户留存</p>
<ul><li>收入同比增长 18%</li><li>单位获客成本下降 12%</li></ul>
<div class="placeholder" style="width:100%;height:260pt"></div>
渐变与图标要先用 Sharp 栅格化为 PNG 再引用。接着写一个调用 html2pptx() 的 JavaScript 文件逐页转换,用 PptxGenJS API 往占位区补图表与表格,最后 pptx.writeFile() 保存。生成后执行 python scripts/thumbnail.py output.pptx workspace/thumbnails --cols 4 逐页检查,发现文字被标题栏截断、元素重叠或对比度不足,就回调 HTML 的边距、间距与颜色再生成。
第 3 步:套用现有模板出稿。 这是最常用的路径:
python -m markitdown template.pptx > template-content.md
python scripts/thumbnail.py template.pptx
python scripts/rearrange.py template.pptx working.pptx 0,34,34,50,52
python scripts/inventory.py working.pptx text-inventory.json
python scripts/replace.py working.pptx replacement-text.json output.pptx
先看缩略图弄清楚有哪些版式,写一份 template-inventory.md 清单(注意索引从 0 开始),再写 outline.md 把内容映射到具体幻灯片索引。回填 JSON 的关键是段落属性要带全,项目符号不要自己写"•":
{
"slide-0": {
"shape-0": {
"paragraphs": [
{ "text": "2025 年度产品路线图", "alignment": "CENTER", "bold": true },
{ "text": "第一部分:市场判断", "bold": true },
{ "text": "需求从工具转向工作流", "bullet": true, "level": 0 },
{ "text": "关键指标:留存与调用频次", "color": "FF0000" }
]
}
}
}
未在 JSON 中列出的形状会被自动清空,所以要么显式给内容,要么确认它本就该留白。如果 replace.py 报出"替换文本使这些形状溢出加剧",说明内容长度超出了形状尺寸,需要精简文案或换用更大占位符的版式。
第 4 步:编辑现有演示文稿。 读取 ooxml.md 了解结构后,解包、改 XML、每改一处立即验证,最后打包:
python ooxml/scripts/validate.py <dir> --original <file>
python ooxml/scripts/pack.py <input_directory> <office_file>
第 5 步:终检与配图。 用 soffice --headless --convert-to pdf 加 pdftoppm -jpeg -r 150 生成单页图逐页复核;需要示意图时用 python scripts/generate_schematic.py "描述" -o figures/output.png 补一张。
同类型竞品对比分析
| 方案名称 | 定位 | 核心功能 | 安装/使用门槛 | 适用场景 | 优势与不足 |
|---|---|---|---|---|---|
| pptx(本技能) | 程序化演示文稿创建、编辑与分析的一体化技能 | 文本提取、原始 XML 编辑、html2pptx 创建、模板批量替换、缩略图视觉校验、示意图联动 | 需预装 markitdown、pptxgenjs、playwright、LibreOffice、Poppler 等,环境较重 | 品牌模板批量出稿、需要改备注与动画的精细编辑、AI 流水线自动生成汇报 | 优势是覆盖面最全,能从 XML 层级精修并自我校验;不足是依赖多、上手需要理解 OOXML 结构 |
| python-pptx 类脚本库 | 纯代码构建与修改幻灯片 | 通过对象模型增删形状、文本框、图片、表格 | 仅需 Python 环境,门槛低 | 结构固定的数据图表页、简单批量生成 | 优势是轻量直接;不足是备注、评论、动画等深层特性支持有限,版式精细控制较弱 |
| PptxGenJS 类前端库 | 在 JavaScript 侧生成 .pptx |
以 API 描述幻灯片、图表、形状 | 需 Node 环境 | Web 端导出演示文稿、报表导出 | 优势是与前端生态贴合;不足是缺乏模板逆向分析与成品视觉校验能力 |
| 图形界面手工编辑 | 人工在办公软件中排版 | 全部可视化能力 | 零安装成本,但完全依赖人工 | 页数少、需强设计感的一次性演示 | 优势是所见即所得;不足是无法规模化,重复劳动多,难以进入自动化流程 |
选择建议很直接:一次性、强调创意的少量页面,手工最快;结构稳定的数据页,轻量脚本库够用;而需要"套模板 + 批量 + 精修 + 自检"的场景,这套技能的完整链路才体现价值。
该技能的典型应用场景与实际体验情况
场景一:咨询与研究团队复用客户模板。 痛点是客户给了品牌模板,每次都要手工复制幻灯片、对齐版式、逐条替换文字。使用方式是先用缩略图分析模板结构,写 template-inventory.md 与 outline.md,再 rearrange.py 按索引重排、inventory.py 出清单、replace.py 一次性回填。实际体验是:上手需要先理解"索引从 0 开始"和"形状 ID 必须与清单一致"这两条硬规则,一旦适应,一份二十页交付物的排版时间可从数小时压缩到几十分钟。注意点是首次运行务必核对清单中的形状数量,不同版式页的形状个数并不相同。
场景二:市场部批量生成产品介绍与活动方案。 痛点是同一套视觉规范要落到几十份材料上,人工改容易漏改、字体和颜色不统一。使用方式是把文案整理成替换 JSON,逐份跑 replace.py,最后用缩略图网格一次性通览。实际体验是配色与字体的统一性显著变好,因为格式来自模板而非手工设定;风险点在于文案过长会触发溢出告警,需要提前按形状尺寸控制字数。
场景三:数据与运营汇报的自动出稿。 痛点是每周例会材料结构固定、数据在变。使用方式是走 html2pptx 路径:两列布局承载结论与图表,占位区域交给 PptxGenJS 画图,产出后转 PDF 再转图片复核。实际体验是版式定位比纯对象模型更准,代价是要先把环境装齐(playwright 与 LibreOffice 缺一不可);建议把"生成—缩略图—修正"做成固定循环,而不是一次成型。
场景四:技术方案与教学材料配图。 痛点是纯文字幻灯片表达力弱,手绘示意图又慢。使用方式是用自然语言描述架构或流程,交给示意图脚本生成,输出到 figures/ 目录后插入页面。实际体验是描述越具体(元素、层级、箭头关系、配色倾向),出图越接近预期;建议把它作为固定动作——新文档默认补一张关键概念示意图。
该技能能为用户带来的价值
最直接的价值是把重复排版变成可复用资产。模板清单、替换 JSON、缩略图校验三步成型后,同一套流程可以反复套用到新内容上,边际成本极低。
第二层价值是降低精细编辑的门槛。演讲者备注、评论、布局、动画这些平时只能手动点的东西,通过解包读 XML 就能定位与修改,等于把图形界面的能力开放给了脚本。
第三层是质量前移。技能内置的缩略图网格与 PDF 转图流程,让"文字截断、元素重叠、越界、对比度不足"这类问题在交付前暴露,而不是在会上被发现。
第四层是接入自动化流水线。命令化的读取、生成、校验、打包步骤,天然适合嵌入文档生产流程,让 AI 在无人值守的情况下产出结构规范、样式统一的演示文稿。长期看,这套方法沉淀下来的是团队的版式规范与内容模板,而不是某一份具体的 PPT。
常见问题 FAQ
问:这个技能怎么安装?需要先装什么? 答:通常在技能市场或技能管理入口按名称或技能 ID 11964 检索后启用,具体入口以官方说明为准。启用前请先装齐依赖:markitdown、defusedxml、pptxgenjs、playwright、react-icons、sharp、LibreOffice、Poppler,否则文本提取、HTML 渲染或格式转换会中断。
问:它是免费的吗?
答:该技能标注为专有许可,完整条款见随附的 LICENSE.txt。是否收费、如何授权请以官方说明为准。
问:适合谁用? 答:适合需要批量产出演示文稿的团队,比如咨询与销售的材料岗、市场品牌岗、数据汇报岗,以及正在搭建文档自动化流水线的开发者。如果只是偶尔做两三页,手工编辑反而更快。
问:和直接用 python-pptx 写代码有什么区别? 答:轻量脚本库走对象模型,简单直接;本技能除了创建,还能解包读原始 XML 处理备注、评论、动画等深层内容,并提供模板重排、文本清单、溢出校验与缩略图视觉复核,是一条"生成 + 自检"的完整链路。代价是依赖更多、需要理解 OOXML 结构。
问:生成后文字被截断或溢出了怎么办?
答:先跑缩略图脚本逐页检查,若能定位到具体形状,就精简文案或换用占位符更大的版式;replace.py 会主动提示"溢出加剧"的形状,按提示调整 replacement-text.json 中的段落内容与字号即可。