用途
PPTX Slides 用于在用户要求创建 PowerPoint、生成 PPTX 幻灯片、制作 PowerPoint 演示文稿、构建 .pptx 演示文件或创建可编辑幻灯片时,以编程方式生成专业且可编辑的 PowerPoint 演示文稿。它基于 PptxGenJS(Node.js),产出符合 OOXML 规范的 .pptx 文件,强调精确布局、文本测量与重叠校验。
主要能力
该技能捆绑了一组 TypeScript 辅助模块,所有生成脚本通过 bun 导入这些模块。导入方式示例:
import pptxgen from 'pptxgenjs'; import * as h from '${CLAUDE_PLUGIN_ROOT}/skills/pptx-slides/scripts/main.ts'; const pptx = new pptxgen(); pptx.layout = 'LAYOUT_16x9'; // 10" × 5.625"
运行生成脚本使用 bun,无需构建步骤:
npx -y bun ${CLAUDE_PLUGIN_ROOT}/skills/pptx-slides/scripts/main.ts theme list
依赖(skia-canvas、fontkit、linebreak、prismjs)在首次运行时由 bun 自动安装,无需手动安装步骤。
模块概览:
text:autoFontSize()、calcTextBoxHeightSimple()、scale(),通过 skia-canvas 实现字体感知的文本测量与自适应字号。 theme:createTheme()、PRESETS、sectionBackground(),设计令牌系统,含 12 个精选预设。 layout:warnIfSlideHasOverlaps()、alignSlideElements()、distributeSlideElements(),重叠检测、边界检查、定位。 layout_builders:addFeatureGrid()、addCardRow()、addTimeline()、addMetricsRow()、addComparisonTable(),高层组件构建器。 decorative:addStaircase()、addSectionBadge()、addProgressBar()、addSlideNumber(),视觉个性元素。 validation:validateDeck(),保存前的统一质量校验。 code:codeToRuns(),将 Prism.js 语法高亮转换为 PptxGenJS 文本片段。 image:getImageDimensions()、imageSizingCrop()、imageSizingContain(),二进制尺寸检测与宽高比尺寸计算。 svg:svgToDataUri(),SVG 净化与 base64 data URI 编码。 util:safeOuterShadow()、normalizeColor()、inchesToEmu(),阴影效果、颜色与单位转换。
使用方式
主题选择:可挑选精选预设或创建自定义主题。
// 使用预设 const theme = h.createTheme(h.PRESETS.darkMonospace);
// 或自定义 const theme = h.createTheme({ accent: 'ff6b35', font: { heading: 'Poppins', body: 'Inter' }, });
可用预设包括:darkMonospace、swissModern、boldSignal、darkBotanical、cleanCorporate、neonCyber、warmMinimal、vintageEditorial、terminalGreen、gradientWave、midnightBlue、paperInk。
对于混合背景的演示文稿,可定义分区映射:
const sectionMap = { '0': 'brand', '1-3': 'light', '4-8': 'default' }; const colors = { brand: theme.accent, light: theme.bg.secondary, default: theme.bg.primary }; slide.background = { color: h.sectionBackground(slideIndex, sectionMap, colors) };
自适应字号:使用 scale() 代替硬编码字号,相当于 PPTX 中的 CSS clamp()。
const titleSize = h.scale(theme.size.title.min, theme.size.title.max, { bullets: 0, textLength: title.length }); const bodySize = h.scale(theme.size.body.min, theme.size.body.max, { bullets: 5, textLength: 800 });
如需精确适配文本框,使用 autoFontSize() 配合 skia-canvas 测量:
const opts = h.autoFontSize('Long paragraph text...', 'Arial', { w: 8, h: 3, minFontSize: 14, maxFontSize: 28 }); slide.addText(text, { x: 1, y: 1.5, ...opts });
生成工作流:
- 规划布局——将内容大纲映射到 references/slide-patterns.md 中的幻灯片类型。
- 选择主题——挑选预设或定义自定义主题令牌。
- 生成幻灯片——使用辅助函数构建,如 addFeatureGrid()、addCardRow() 等。
- 校验——保存前运行 h.validateDeck(pptx)。
- 修复问题——根据校验报告调整,再次校验。
- 交付——提供 .pptx 文件,且每张内容幻灯片都带演讲者备注。
核心设计规则
排版:正文最小 18pt(建议 24-28pt),使用 scale() 自适应;标题 36-44pt;说明/脚注最小 14-16pt(绝对下限 14pt);字体族使用 h.resolveFont(theme, 'heading') 获取正确的回退链。
布局:幻灯片尺寸 10" × 5.625"(宽屏 16:9);安全边距距四边 0.5"(theme.spacing.margin);每张幻灯片目标留白 40-50%;使用 h.alignSlideElements() 与 h.distributeSlideElements() 实现精确对齐。
颜色与无障碍:对比度满足 WCAG AA 最低要求(正文 4.5:1,大字 3:1);数据可视化使用色盲安全的 Wong 或 IBM 调色板;始终使用主题令牌 theme.text.primary、theme.accent,绝不硬编码颜色。
校验工作流:保存每个演示文稿前运行 h.validateDeck(pptx),检查内容包括:每张幻灯片上的元素重叠、元素是否在幻灯片边界内、字号是否高于 14pt 下限、每张幻灯片项目符号数量(最多 6)、演讲者备注是否存在。
反模式(应避免):任何位置文本小于 14pt;每张幻灯片超过 6 个项目符号;元素超出幻灯片边界;使用硬编码颜色而非主题令牌;使用硬编码字号而非 scale() 或 autoFontSize();保存前跳过 validateDeck();内容幻灯片缺少演讲者备注;使用 PptxGenJS 的 fit 或 autoFit 而非 h.autoFontSize()。
可编辑性指引:为可编辑性而设计,接收者必须能修改演示文稿——使用原生文本框(可直接点击编辑,绝不将文本展平为图片);对相关元素分组(卡片布局作为整体移动);使用原生形状(尽可能用圆角矩形、圆形、线条代替嵌入 SVG);演讲者备注(通过 slide.addNotes('...') 在每张内容幻灯片添加要点);母版布局(对模板演示文稿定义幻灯片布局以保证新幻灯片一致性)。
使用形状构建架构图:使用 PptxGenJS 原生形状而非图片构建架构图——用矩形表示服务/组件 slide.addShape('rect', { ... });用线条和箭头表示连接 slide.addShape('line', { ... });颜色编码使用 theme.accent 表示活动组件,theme.text.secondary 表示非活动组件;渐进呈现可在 2-3 张幻灯片上构建同一张图,逐步增加复杂度。
参考文件与脚本文件
references/pptxgenjs-helpers.md:捆绑辅助模块的完整 API 参考。 references/slide-patterns.md:详细的幻灯片类型模式,含尺寸与定位。 scripts/main.ts:TypeScript CLI 入口点与库再导出(通过 npx -y bun 运行)。 scripts/types.ts:所有辅助模块共享的 TypeScript 接口。 scripts/theme.ts:12 个精选主题预设,含 createTheme() 与 resolveFont()。 scripts/text.ts:通过 skia-canvas 实现字体感知文本测量,含 autoFontSize()、scale()。 scripts/layout.ts:重叠检测、元素对齐、边界检查。 scripts/layout_builders.ts:addFeatureGrid()、addCardRow()、addTimeline() 等。 scripts/decorative.ts:addStaircase()、addSectionBadge()、addProgressBar()。 scripts/validation.ts:validateDeck() 保存前质量校验。 scripts/code.ts:Prism.js 语法高亮转换为 PptxGenJS 文本片段。 scripts/image.ts:二进制尺寸检测与宽高比尺寸计算。 scripts/svg.ts:SVG 净化与 base64 data URI 编码。 scripts/util.ts:阴影效果、颜色归一化、单位转换。
适用场景与限制
适用于需要以编程方式生成可编辑、布局精确并带质量校验的 PowerPoint 演示文稿的场景,尤其是涉及主题、组件构建、架构图与代码高亮的演示内容。资料未提供收费、价格、具体平台支持范围与使用效果方面的信息。