
PPTX 参考演示文稿只读分析实战基于 agents24 仓库的 pptx-reference-deck-analysis Skill 深度拆解【免费下载链接】agentsMulti-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity项目地址: https://gitcode.com/GitHub_Trending/agents24/agents本文以 agents24 仓库中 pptx-deck-creation 插件 的pptx-reference-deck-analysis技能为核心系统讲解如何把一份既有.pptx演示文稿当作设计证据进行只读分析包括输出契约Contract、提取规则、OOXML 包结构认知、三个内置安全工具inspect.py/validate_package.py/unpack.py的使用方法以及派生模板目录derived reference-template catalog的构造方式。读完本文你将掌握一套可落地、可复用的参考演示文稿分析工作流并理解如何在不复制、不污染源文件的前提下为全新的演示文稿提炼布局节奏、主题风格与模板线索。技能定位把参考演示文稿当作证据而非素材在 PPTX 生成的完整流程中pptx-reference-deck-analysis处于设计准备环节它负责读取参考演示文稿产出供后续构建使用的高密度上下文而不是直接产出幻灯片。技能元数据中的描述明确了触发场景Use when analyzing a reference PPTX for read-only structure, theme, typography, layout rhythm, diagnostics, derived template catalogs, or safe OOXML package inspection.即只读结构、主题、排版、布局节奏、诊断、派生模板目录、安全的 OOXML 包检查都是本技能的职责范围而复制、克隆或修改源演示文稿则被明确排除在外。技能声明中有一句核心立场This skill never copies, clones, or mutates a source deck.这一原则贯穿全部规则与工具设计所有脚本只读取 ZIP 包内容并输出 JSON 报告绝不写回源文件。与之配合的是插件 README.md 中描述的插件边界本插件仅在需要 PPTX 时创建任务局部的python-pptx构建脚本不提供通用渲染器、不克隆模板、不需要浏览器、不依赖 MCP 服务器或在线服务。因此参考分析技能是纯本地、离线、只读的。输出契约Contract按需实现提取技能规定分析时应使用**任务局部task-local**的小型python-pptx脚本来实现所需提取只采集新演示文稿所需的信息并针对不同需求定义了五档输出契约契约档位输出内容紧凑提示上下文compact prompt context幻灯片数量与尺寸、文本摘要、形状数量、样式、品牌信号、模板使用情况、布局节奏全量提取full extractionsummary、逐张幻灯片的layout_tree证据只读文件夹诊断folder diagnostics每份演示文稿一份结果外加一份清单manifest样式主分析style-master analysis颜色、字体、字号分布、母版/版式使用情况、流向模式派生模板目录derived template catalog基于零起点的源索引、版式角色、可用区域、占位符、视觉结构与约束参考文献 reference-deck-analysis.md 对每档给出了更细的配方recipesPrompt context返回slide_count、slide_size、样式与品牌信号、模板/版式证据、带形状数量的简短标题/文本摘要Full extraction返回只读summary、逐幻灯片layout_tree证据以及检查所需的 OOXML 标记资产引用与专有内容未经明确批准不得进入新演示文稿Style master汇总调色板、强调色、字体排印、字号分布、母版/版式使用情况、主导流向模式Derived reference-template catalog是分析的视图而非复制计划按零起点索引列出每张源幻灯片记录其版式角色、视觉描述、可用区域、占位符角色、视觉结构与内容适配约束。提取规则分层策略与只读纪律技能 Rules 部分给出了三条关键纪律保持源演示文稿只读并独立编写目标幻灯片的所有坐标——这是技能对原创性的硬性要求内置 OOXML 工具只用于高层提取无法暴露的原始主题、关系、备注、批注、动画、媒体、母版或版式——即形成python-pptx 高层提取为主、OOXML 原始工具兜底的分层策略在分析清单manifest中记录被检视的部件与解析异常——保证分析过程可追溯未经明确许可与许可证证据不得在生成的演示文稿中使用提取的内容、字体、图片或专有资产。结合 reference-deck-analysis-patterns.md 的说明这种分层非常清晰临时分析脚本用python-pptx处理常规结构形状、段落、表格、图片、图表而当需要主题 token、关系图、备注批注、动画、媒体等细节时再退回到脚本目录下的 OOXML 工具。参考文献还提醒模式仅作为编写临时脚本时的文档参考不应打包成可导入的提取库且临时脚本不应随运行时模块发布。OOXML 包结构速览关系图优先于文件名.pptx本质上是 Open Packaging ConventionsOPC的 ZIP 归档。分析前必须先建立关系图心智模型。参考文献 ooxml-parsing.md 给出了按需求定位部件parts的映射表需求相关部件幻灯片顺序ppt/presentation.xml、ppt/_rels/presentation.xml.rels幻灯片文本与形状从 presentation 关系解析出的幻灯片部件通常为ppt/slides/slideN.xml版式、备注、图片、图表ppt/slides/_rels/slideN.xml.rels模板几何ppt/slideLayouts/、ppt/slideMasters/颜色与字体从 presentation/母版关系解析出的主题部件通常在ppt/theme/下备注与批注ppt/notesSlides/、ppt/comments/媒体与嵌入对象ppt/media/、ppt/embeddings/该参考同时强调两点实践原则其一永远不要根据文件名推断幻灯片顺序而应解析 presentation 关系并按sldId列表的顺序读取其二处理 PresentationML、DrawingML、Office relationship、package relationship 等命名空间只读结果应保留幻灯片编号、解析后的关系目标、拼接文本、形状数量、备注、关系类型与 OOXML 专属标记。此外当颜色使用 scheme 或 system 值时保留主题 token不要臆造解析后的 RGB 值——这正是脚本输出中 theme colors 保持 token 形态的原因。环境准备安装 defusedxml技能明确要求在使用内置工具前先从requirements.txt安装defusedxml。该文件内容如下defusedxml0.7,1defusedxml是 Python 生态中专门用于安全解析不受信 XML的库它会阻止实体扩展、DTD 加载、外部实体引用等 XXE 攻击面。三个内置脚本inspect.py、validate_package.py、unpack.py都在from defusedxml import ElementTree as ET或minidom处依赖它这是技能安全边界的技术基础。如果你还需要用python-pptx做高层提取可将其作为任务局部的可选依赖见 README.md 中 Its optional local dependency isdefusedxml; task-local high-level extraction may additionally usepython-pptx 的说明。工具链实战三个只读 OOXML 脚本技能内置三个脚本位于 scripts 目录分别覆盖检视、校验、解包三个层次。1. inspect.py紧凑 JSON 检视报告python scripts/inspect.py deck.pptx该脚本将演示文稿解析为JSON 安全的紧凑报告。从 inspect.py 源码 可以看到其实现要点通过_validate_archive预检归档条目数 ≤ 5000、单条解压后 ≤ 100MB、总解压 ≤ 512MB、压缩比 ≤ 1000、拒绝符号链接防止恶意 ZIP解析ppt/_rels/presentation.xml.rels得到关系图再按presentation.xml中sldId的顺序枚举幻灯片——顺序来自关系而非文件名对每张幻灯片提取slide_id、是否隐藏show0、拼接文本//a:t节点、按spTree子元素标签统计的形状计数、关系列表、是否存在 transition 与 timing动画主题部分提取clrScheme下的颜色 token保留 scheme 值与 major/minor latin 字体 typeface最后汇总media、notesSlide、comments部件清单。输出通过sys.stdout.buffer以 UTF-8 写出避免控制台代码页问题。注意脚本强制要求输入文件位于当前工作区Path.cwd().resolve()内越界会直接抛ValueError。2. validate_package.py包完整性诊断python scripts/validate_package.py deck.pptx --output report.json用于检测畸形 XML、断裂的内部关系、内容类型缺口、重复版式链接与孤立部件。从 validate_package.py 源码 可以看到诊断维度XML 良构性遍历所有.xml/.rels部件尝试解析失败记为xml_well_formed错误Content Types检查[Content_Types].xml是否存在、Default/Override 是否覆盖了幻灯片部件每张ppt/slides/slideN.xml必须有正确的 slide content type override内部关系完整性对每个.rels中的 Internal 关系解析目标目标缺失或不安全记为internal_relationship错误成功目标加入referenced集合幻灯片顺序与关系presentation.xml缺失报错sldId重复 id 报slide_id_uniquesldId引用的关系必须是/slide类型否则报slide_relationship版式关系每张幻灯片应恰好有一条slideLayout关系数量不符报slide_layout_relationship孤立部件未被任何内部关系引用的ppt/media/与ppt/notesSlides/部件产生orphaned_media/orphaned_notes警告而非错误不在presentation.xml列表中的幻灯片部件产生unlisted_slide警告。退出码语义清晰0 无错误1 存在错误2 输入本身非法文件不存在、非.pptx、坏 ZIP 等。同时脚本防止输出报告覆盖输入演示文稿output must not overwrite the input deck。这一诊断结果非常适合写入分析清单manifest与技能规则中记录被检视部件与解析异常的要求呼应。3. unpack.py需要原始包证据时的安全解包python scripts/unpack.py deck.pptx output-dir仅当需要原始包证据raw-package evidence时才使用。从 unpack.py 源码 可以看出它在解包前对每个条目做安全校验拒绝符号链接stat.S_ISLNK解析目标路径必须位于输出目录内防路径穿越解包目标不得覆盖输入包条目数与解压体积、压缩比限制与 inspect 一致5000 条目 / 单条 100MB / 总量 512MB / 压缩比 1000。解包完成后脚本用defusedxml.minidom对所有.xml与.rels文件做 pretty-print 重写方便人工审阅原始 XML。解包目录即为你观察ppt/slideMasters/、ppt/slideLayouts/、ppt/theme/等原始部件的工作台。四步标准流程技能给出了四步操作顺序可直接照搬scripts/inspect.py deck.pptx—— 获得紧凑 JSON 报告幻灯片顺序、文本、主题 token、关系、备注、批注、动画、媒体scripts/validate_package.py deck.pptx --output report.json—— 获得完整性诊断报告scripts/unpack.py deck.pptx output-dir—— 仅在需要原始包证据时执行依据.rels所有者解析关系目标绝不根据文件名推断幻灯片顺序。安全边界Safety四道防线技能在 Safety 一节明确了不可逾越的底线这也与三个脚本的代码行为一一对应绝不修改提供的演示文稿也绝不盲目复制包部件到新演示文稿——三个脚本全部以只读方式打开 ZIPunpack.py显式拒绝覆盖输入包在受信任的工作区运行脚本——脚本通过_workspace_path校验路径必须位于当前工作区内越界即拒绝它们拒绝路径穿越、符号链接、超大成员与压缩炸弹zip bomb限制参数在 inspect.py 与 unpack.py 中均有明确定义用defusedxml解析不受信 XML不启用实体扩展、DTD 加载或网络访问——这是对 XXE 攻击的直接防御在未对照配色方案完全解析前将主题颜色视为 token——避免把 scheme 值臆造为具体 RGB保证风格证据不失真。派生模板目录Derived Reference-Template Catalog技能把模板目录定义为对分析的视图而非复制计划。参考文献给出了可直接套用的 JSON 骨架reference-deck-analysis.md{ source_deck: reference.pptx, slide_count: 12, slides: [{ source_index: 0, layout_role: cover, description: Dark cover with title and subtitle regions, regions: [title, subtitle, supporting visual], placeholder_roles: [ctrTitle, subTitle], visual_structures: [full-bleed color field, corner motif], reuse_constraints: [best for one title and one short subtitle] }] }字段语义source_index零起点源索引与inspect.py输出的幻灯片顺序一致layout_role该页在叙事中的版式角色cover、agenda、section divider、content、closing 等description一页的视觉概览regions可用区域列表placeholder_roles占位符角色如ctrTitle、subTitle可对照 OOXML 版式中的占位符类型visual_structures视觉结构全出血色块、角部装饰等reuse_constraints内容适配约束最适合一个标题加一个短副标题。Use the catalog as inspiration, then author every target slide with independent coordinates.目录只做灵感来源目标幻灯片的所有坐标仍须独立编写——这是只读分析与复制模板之间最根本的分界线。python-pptx 分析模式递归遍历与健壮性参考文献 reference-deck-analysis-patterns.md 提供了两个核心代码模式供编写任务局部脚本时参考EMU 转英寸与边界框EMU_PER_INCH 914400inches()把 EMU 值四舍五入到 4 位小数bbox()把left/top/width/height统一转成英寸字典EMU_PER_INCH 914400 def inches(value: int | None) - float: return round(int(value or 0) / EMU_PER_INCH, 4) def bbox(shape: Any) - dict[str, float]: return { x: inches(getattr(shape, left, 0)), y: inches(getattr(shape, top, 0)), width: inches(getattr(shape, width, 0)), height: inches(getattr(shape, height, 0)), }递归遍历形状树iter_shapes递归进入嵌套形状group shape的子形状def iter_shapes(shapes: Iterable[Any]) - Iterator[Any]: for shape in shapes: yield shape if hasattr(shape, shapes): yield from iter_shapes(shape.shapes)模式文档进一步给出实践建议样式分析时在递归遍历形状的过程中统计颜色与字体提取时创建一个覆盖整张幻灯片的根分组root group捕获形状 bbox 与按类型区分的具体内容需要备注/媒体时通过包关系解析对可选的python-pptx属性填充、线条、颜色、图像数据、表格、图表用异常处理包裹因为这些内容可能缺失或不受支持。这套模式与插件的inch 制layout_tree契约一脉相承见 README.md 中 Final inch-basedlayout_treecontracts rather than implicit auto-layout。在技能生态中的位置pptx-reference-deck-analysis是 pptx-deck-creation 插件 下五个技能之一与以下技能协同构成完整的演示文稿生产流水线pptx-deck-context业务叙事与设计上下文准备pptx-slide-specification基于 layout-contract 的逐页规格pptx-quality-gates几何、可访问性、来源溯源与包完整性检查pptx-visual-assets视觉资产使用指导。本技能为这条流水线提供设计证据输入先只读分析参考演示文稿本文主题再结合设计档案形成布局节奏与风格约束最终由任务局部的python-pptx构建脚本产出可编辑的成品。整个过程中源演示文稿始终保持只读这与插件在 README.md 中宣称的 Read-only reference-deck and OOXML package analysis; source slides are never copied or mutated 完全一致。延伸阅读SKILL.md技能契约、规则与四步流程的权威定义reference-deck-analysis.md五档提取配方与派生模板目录 JSON 骨架reference-deck-analysis-patterns.mdpython-pptx递归遍历与健壮性编码模式ooxml-parsing.mdOOXML 部件定位表与命名空间说明inspect.py、validate_package.py、unpack.py三个只读工具的实现源码requirements.txtdefusedxml依赖声明。/DSMLparameter /DSMLinvoke /DSMLtool_calls【免费下载链接】agentsMulti-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity项目地址: https://gitcode.com/GitHub_Trending/agents24/agents创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考