用途
ppt-html-authoring 用于撰写单张 PPT 幻灯片。给定一个目标幻灯片目录(通常为 .pptwork/<deck>/<slide-name>/)、一条大纲条目(包含 pageType、assetId、关键内容、来源、过渡)以及整份演示文稿的 exportMode(raster 或 editable),它会产出两个文件:
- design.md:包含 frontmatter 的 title(必填)与 layout(必填,简短英文标识,须与实际使用的版式对应),以及正文的三个小节。
- slide.html:单文件自包含的幻灯片页面。
明确不在范围内的部分:跨页规划(使用 ppt 技能的 story-planning 阶段)、截图与视觉质检(使用 ppt 技能的 screenshot.mjs 和 visual-qc 参考资料)、导出(使用 export.mjs)、网络搜索(使用宿主应用的 webfetch / websearch)。
主要能力与文件契约
design.md 正文三个小节均不可为空:
- Content:人类语言书写的页面文案,采用结论式完整句标题,加上支撑性要点或短段落。
- Note:自然散文形式的演讲者备注,不使用要点列表。
- Design:视觉与工程说明,包括版式选择理由、与上一页的过渡、数据来源、TBD 标记。
不允许空占位内容,“This is an introduction page”这类表述不被接受。详细字段规范见 references/design-md-spec.md。
slide.html 的要求:
- 单文件自包含:CSS 写在 <style> 内,JS 写在 <script> 内。
- 图片使用 base64 内联或 https CDN;禁止本地相对路径(如 <img src="assets/...">、<link href="...">),否则会在 iframe srcdoc 预览和基于静态服务器的渲染器中失效。
- 字体、chart.js、d3 等库从 https CDN 加载。
- 将 Note 小节内容镜像到 <script type="application/json" id="ppt-speaker-notes-json">…</script> 节点,这是演讲者备注进入导出 PPTX 的唯一途径。
- 设置 html, body { width: 1280px; height: 720px; overflow: hidden; },以匹配 PowerPoint 画布尺寸。
- 若 exportMode=editable,还需遵循 references/editable-html-rules.md。
使用方式(工作流)
- 读取上下文:大纲条目、现有幻灯片骨架(design.md 为空模板,slide.html 可能只有 <html> 首尾)、exportMode。
- 查找版式:若大纲指定 assetId,在配套 ppt 技能的 ../ppt/assets/<bucket>/index.json 中查询对应描述,读取 htmlPath 定位 HTML 参考路径,读取 materialDir / zones / authoringHints 理解槽位组成,并通过解析出的 html/<id>.html 借鉴版式安全区、分栏与层级结构;可选读取 specs/<id>.json 的 zones 获取结构化槽位说明。默认 bucket 位于 ../ppt/assets/corporate-light/ 与 ../ppt/assets/claude-warm/(各 5 个版式)。若未配置 bucket,则跳过此步,依据 references/slide-html-rules.md 与 references/ppt-best-practices.md 从零撰写。assetId 由故事规划决定,撰写者不应自行挑选。
- 不要整体照抄模板 HTML,只借鉴版式结构,并把所有占位文案(如“Acme Corp”“2024 Q3 revenue”“scene illustration”)替换为真实内容。
- 先写 design.md,按 Content → Note → Design 顺序完成三个小节。
- 再写 slide.html,以 Content 小节驱动;数据适合时优先可视化:趋势、比例、对比用 Chart.js;流程、架构、系统边界用内联 SVG;装饰性图片用 base64 内联(超过 2MB 先压缩或使用远程 CDN);图标使用 https 远程 SVG 图标库(Heroicons、Lucide、Feather、Tabler 等)或粘贴单个内联 SVG。editable 模式下应写成 PowerPoint 原生对象:重要文案用真实文本节点,卡片用简单纯色填充形状,使用真实表格、可提取的 Chart.js 数据,背景装饰独立分离;不要把重要文字放进 SVG、canvas、图片或伪元素中。
- 将 Note 内容同步到 #ppt-speaker-notes-json 节点。
- 如缺一个数字、事实、引文或竞品数据点,使用宿主应用自带的 webfetch / websearch(本技能不提供网络工具),把结果追加到 .pptwork/<deck>/materials/research.md,并在 Design 小节以 source: research.md §<timestamp> 标注来源;不得编造数字。
- 自检:是否还有相对路径的 <img>/<link>;Note 是否已同步进 HTML;data-id / data-role 属性是否足够稳定以支持后续编辑。
决策规则
- 用户要求“改一句话”:用 edit / patch 修改对应的 data-id 节点,保持外层结构不变。
- 用户要求“重做版式”:重写整个 slide.html,但保持 design.md 的叙述不变。
- 已有栅格或复杂 HTML 演示文稿需要可编辑输出:按 editable-html-rules.md 用语言模型逐页重写,不要依赖纯规则转换器。
- 内容本质是比例、趋势、对比:以图表为主,不要罗列原始数字。
- 内容本质是流程、架构、边界:以内联 SVG 为主,不要堆砌段落。
- 需要背景或品牌图片:base64 内联,超过 2MB 先压缩或使用远程 CDN。
- 数据缺失:使用宿主 webfetch/websearch,不得编造。
适用场景与限制
适用于单页幻灯片的设计、起草、改写,尤其是需要结构化设计说明与可导出演讲者备注的场景,也支持可编辑 PPTX 输出的撰写模式。它不处理整份文稿的跨页规划、截图质检和导出,这些依赖配套技能;未配置版式资源时可从零撰写。常见陷阱包括:成品页残留模板占位文案;数据页只有数字加段落而无图表;image-slot 保留“scene illustration”占位导致缩略图空白;使用 <img src="assets/diagram.png"> 相对路径导致 iframe 预览失败;忘记把 Note 镜像进 #ppt-speaker-notes-json 导致导出 PPTX 备注为空;标题写成名词短语(如“AI Agent market”)而非结论句;编造数字而不去检索或询问用户。