Install
openclaw skills install @cqcmj74/html-slides-to-pptx编写可无损还原为 PPTX 的 HTML 幻灯片。先经引导式访谈确认样式/形式/结构并落盘 deck-brief,再生成完整目录结构(assets/theme.css、slides/*.html、playlist.json), 每页严格遵循 html-spec.md 规范,经 validate.js 预检零 ERROR 后用 convert.js 转成 PowerPoint。TRIGGER when: 用户要求"做PPT/幻灯片/slides/演示文稿"、"把内容做成 HTML幻灯片"、"生成可转PPTX的slides",或调用 /html-slides-to-pptx。DO NOT TRIG
openclaw skills install @cqcmj74/html-slides-to-pptx转换器(scripts/convert.js + 浏览器端提取管线)只无损支持 HTML/CSS 的一个子集。
每页 HTML 必须严格遵循 reference/html-spec.md —— 这是契约,不是建议。
写页面之前必须先完成 Step 1 访谈并让用户确认 slides/deck-brief.md。
以下命令中的
SKILL_DIR指本技能的根目录(即 SKILL.md 所在目录)。 技能加载时系统会显示 "Base directory for this skill: <路径>",用该路径替换SKILL_DIR。
SKILL_DIR="<技能根目录,即 Base directory>"
ls "$SKILL_DIR/scripts/node_modules/playwright" >/dev/null 2>&1 \
&& echo OK || (cd "$SKILL_DIR/scripts" && npm install && npx playwright install chromium)
若输出 OK 则跳过安装;否则等待安装完成再继续。
读 reference/interview-guide.md 并严格执行:5 阶段(定位→结构→视觉→版式→输出)+ 收尾确认卡,
共 16 问 + 1 个大纲确认环节,每问有默认值与智能跳过规则。配套查询:
reference/narrative-skeletons.md(脚手架非模具;用户可选"自由结构")reference/theme-presets.md(5 套预设 + 自定义 hex 推导)reference/density-tiers.md(演讲/混合/阅读 三档参数)reference/content-deepening.md(素材形态 × 深度档二维矩阵定做什么:
四步追问审素材 → 多角色 → 委员会审大纲;裸主题改出假设清单不做追问;
所有档位都跑大纲级形式门禁;大纲 v2 才进 Q5 确认)Step 1 执行顺序:①读 interview-guide 的推断总表,从用户首句匹配 deck 族 → 一次定全轴推荐值 ②按依赖图决定哪些问可跳 ③选路径(快通道 2-3 轮 / 标准 4-6 轮 / 深度 + 深化层) ④逐阶段抛问,置首项说明理由 ⑤深化层按矩阵执行 ⑥Q5 确认大纲 v2。 任何路径都不跳 Q6 色板 与 Q5 大纲确认(返工最贵的两个决定)。
访谈收尾:按 assets/deck-brief.template.md 生成确认卡展示给用户,
用户确认后落盘 slides/deck-brief.md —— 此后它是唯一执行事实源;
后续"改第 N 页/换色板"类迭代直接读它,不重访谈。
在当前工作目录生成:
assets/theme.css # 按 brief 色板:复制 assets/presets/<选定预设>.css(自定义色则按推导值生成)
slides/NN-slug.html # 每页一个文件,两位数字前缀排序
slides/playlist.json # 从 assets/playlist.template.json 实例化,playlist 按顺序列全页面
slides/deck-brief.md # Step 1 落盘的需求确认卡
slides/deck-insights.md # 深化层详档(非快速档才有;模板 assets/deck-insights.template.md)
slides/deck-pages.md # 页级内容卡(所有档位都有;模板 assets/deck-pages.template.md)
slides/slides.config.json # 从 assets/slides.config.template.json 实例化(键见 scripts/config/default.config.js)
目录已存在时,保留用户已有文件,只补缺失项。
slides.config.json 按 brief 填(实例化 assets/slides.config.template.json):
{
"design": {
"tier": "presentation | mixed | reading",
"minBodyPx": 14,
"fillThreshold": 0.85,
"airyPages": ["01-cover.html", "05-statement.html"],
"formProfile": "balanced",
"hedgePages": ["07-forecast.html"]
}
}
presentation + balanced);本文件的作用是按 brief
校准档位与豁免页,不是"开启开关"。整份文件缺失时按默认档跑,不会静默放行。design.tier 由 brief 使用场景映射(演讲→presentation/混合→mixed/阅读→reading);
决定字号下限与单页信息量上限(见 reference/density-tiers.md)design.formProfile 由 brief 视觉形式偏好映射(克制型→text/平衡型→balanced/丰富型→rich);
决定 deck 级形式检查口径(纯文字页占比/同形式连排,见 design-principles 第五章)airyPages 填 brief 中的 airy 页文件名(封面/分隔/大字观点/引用/收尾)——
这是唯一豁免填充检查的途径,漏填会让这些页因"底部留白"被报 WARNhedgePages(2026-08-06 第六轮)填 deck-insights.md 里降级论断所在页 →
validate 会检查这些页确实出现限定词(我们认为/有待验证/预估…),缺失报 WARN。
作用是把"降级为观点"从措辞变成可审计约束;不判断内容真伪(真伪归 Q5 用户判断)applyFontMap(brief 演示机字体决定)、nativeGradient(原生渐变)、master(页码页脚)一页一卡,填完即写这一页(不要先填完全部卡再统一写页)。载体 slides/deck-pages.md
(实例化 assets/deck-pages.template.md);工序定义与判据出处见 reference/content-deepening.md 第四章。
七项:①Action title(结论句)②支撑 2-4 条,每条必须挂一个可验证事实(数字+单位/专有名词/ 时间范围/具体例子)+ 一个已分类的出处③口径行(有数字则时间范围+样本+测算方式,估算标注假设) ④逻辑三问(支撑能否推出标题/最强反驳本页答不答/观众下一问下一页答不答)⑤限定词判定 ⑥数据不足退路 ⑦容量核算。
② 的出处必须落到六类之一:素材 §N / insights #N / 用户口述 / 公开可核验(机构+报告名+年份)
/ 模型知识 / 待补。本技能不联网、无检索 —— 内容只有用户素材、由素材推出的洞察、
模型自身知识三个来源。出处 = 模型知识时必须带限定词 + 本页入 hedgePages,或改标"待补"。
危险的不是用模型知识,是不标注的模型知识(纪律见 content-deepening 第四章"出处纪律")
时效自查(③ 内):本页有市场规模/竞品/政策/价格/排名这类时间敏感项吗? 有 → 出处不得为"模型知识"(模型知识有截止日),只能是素材/用户口述/公开可核验/待补
填卡前先读 slides/deck-insights.md 里本页那一行(行动方案表:核心断言/证据需求/风险旗标/
待补素材)+ 相关洞察编号 → 填进 ② 的"出处"列与 ⑤。这是深化层产物被真正消费的地方;
快速档没有 insights,② 出处填素材位置或"待补",⑤ 按本页断言自判
② 填不出可验证事实 → 这页现在不该写:回去补料、换页,或按 ⑥ 退回原型 8 + 待补数据清单
⑦ 超标当场处置(演讲/混合档拆页、阅读档精简措辞)——写完再截图发现就是改一屏
⑤ 有降级论断 → 限定词写进页面 + 本页文件名入 slides.config.json 的 hedgePages
快速档降级:只填 ①②③ + 三问第 1 问(⑦ 仍必填),并在 deck-pages.md 顶部标"快速档:降级填卡"。
本工序不花 agent 调用,与大纲级形式门禁同例——所有档位都跑
reference/design-principles.md(设计)+ reference/html-spec.md(转换)。
其余文档用到才查,不要通读(读取分层见文末"文件清单")。
逐页流程:先定形式(brief 大纲表"形式"列:文字/图示/图表/图片/混合)
→ 再选原型(查 reference/page-archetypes.md 的索引跳到目标原型,别通读 1800+ 行;咨询分析页型见组 7(31-43))
→ 起手必须用现成件,不从空白页手写(2026-08-17 第九轮改为默认而非建议):
先复制 assets/snippets/INDEX.md 的片段,或 assets/slide-template{,-flex,-layout}.html
三套样板页(方式 A/B/C),再改参数。实测:同一份输入,逐页手搓内联样式的 deck
(1377/3225 处 style=、class 去重 1-2 个)在字号值域与用色纪律上都明显更散
→ 参数一律填变量名,不填 hex:片段的 {{BG}}/{{ACCENT}}/{{GRAD_FROM}} 等色参数
填 var(--brand-dark) 这种形态。色板外硬编码会被 validate R1/R2 报 WARN(判据见
design-principles.md"用色纪律");需要浅一档/深一档的色先查梯级令牌
(--brand-primary-soft/-pale、--brand-dark-pale/-tint/-mid、--ink-soft/-faint、
--surface-sunken、--signal-*-soft),别自己调一个近似值 —— 那正是色值逐页漂的来源
→ 容器内部写法查 reference/layout-recipes.md;要图标查 assets/icons.md
(用 style="stroke:var(--变量)",禁 currentColor)
2.5 P2 高级特性(按需使用,详见 html-spec.md §5;用法克制,以 design-principles 为准):
data-shape="chevron|star5|rightArrow|..." → 80+ 预设几何(流程图/箭头/星形)data-chart='{"type":"bar",...}' → 原生可编辑图表(bar/line/area/pie)<img data-object="true"> → 原生可编辑图片(object-fit 映射;图片政策见 brief)<video poster src> / <audio src> → 原生音视频嵌入1920x1080,.slide-container relative + overflow hiddendata-object="true";嵌套标记 = ERRORline-height;字重只用 400/600/700/800/900background/color/border-color
写 var(--…),不写 hex。要浅一档/深一档先查梯级令牌(见上 2 的清单),
没有合适令牌才加进 theme.css + 16 套预设(node scripts/tools/gen-ladder.js),
不要就地调一个近似值 —— validate R1/R2/R3 会报(判据见 design-principles"用色纪律")。
<svg> 图标豁免此条,但也应写 style="stroke:var(--变量)"--on-navy-text/--on-navy-sub,否则回退近黑压深底、PPTX 里不可见(H13)transform:rotate() 已支持(scale/skew/translate 仍禁);方式 C 子级禁写 position/left/top/width/height<template data-slide-notes>node "$SKILL_DIR/scripts/preview.js" slides/
把每页截成 PNG(slides/.preview/),逐张看图,按八条自查。 第 7-8 条自 2026-08-10 第八轮起是复核(判断已在 Step 3.0 的内容卡里做过), 查的是"卡上承诺的东西有没有真的落到页面上",不是重新判一遍:
--on-navy-*?
用错会在 PPTX 里近黑压深底、整块消失(H13)hedgePages 里吗?
① 的标题换个 deck 还能用吗(空标题)?把假设写成结论是 AI PPT 最典型的病design-principles.md"数据页的口径纪律"
发现问题就地修复并重截,直到八关全过,再进 Step 4。
卡与页不一致时改哪个:页面为准就改卡(排版中发现更好的说法,合法),
但 ②③ 的事实与口径只能改页面去兑付卡——不许为了过关把卡上的事实要求划掉。node "$SKILL_DIR/scripts/validate.js" slides/
node "$SKILL_DIR/scripts/convert.js" ./slides ./slides/playlist.json output.pptx
告知用户:PPTX 路径、页数、validate 结果(残留 WARN 及理由)、备注写入情况、deck-brief.md 位置。 如用户装了 PowerPoint,可提示可直接打开 output.pptx 检查。
<sup>/<sub> 原生上下标config/default.config.js 是唯一事实源;项目级 slides/slides.config.json 覆盖(如 {"nativeGradient":true} 开启原生渐变;{"master":{"pageNumbers":true}} 开启页码;{"incrementalCache":false} 关闭增量缓存){"file":"01.html","transition":"fade"} → p:transition(fade/push/wipe/cover/split)<video poster src> / <audio src> → addMedia 原生嵌入<template data-slide-notes> → 写入该页备注reference/creative-layouts.md 查渐变/几何/图表等写法(含使用限制);页面形态以 page-archetypes.md 为准node "$SKILL_DIR/scripts/test/golden.js" verify 三层等价(L1 提取+L2 XML+L3 截图);行为契约见 reference/behavior-baseline.md2026-08-06 第五轮 P4 重组:此前 12 份 reference 平铺,"必读"散在各处措辞里, 写第一页前要读 13 份文档 + 8 类资产(合计 3700+ 行)—— 实测后果是规范写了不被执行 (
--text-*令牌零引用、正文长期钉在破档线 22px,四轮无人发现)。 现按读取时机分三层:主干必读只有 3 份,其余按需查。
| 文件 | 何时读 | 作用 |
|---|---|---|
reference/interview-guide.md | Step 1 之前 | 5 阶段 16 问 + 1 确认的访谈脚本(含推断总表与依赖图) |
reference/design-principles.md | 写第一页之前 | 设计契约:版面分区/字号阶/满填四判据/12 反模式/结构色面下限/版面达标≠内容达标 |
reference/html-spec.md | 写第一页之前 | 转换契约:什么写法能无损还原 |
这三份决定输出质量的下限。其余任何一份都不该在写页前通读。
| 文件 | 什么时候需要 |
|---|---|
reference/page-archetypes.md | 选页面形态时 —— 查索引直接跳到目标原型,别通读(1800+ 行;组 7 为咨询分析页型) |
reference/density-tiers.md | 定档位参数、算填充率与要点数上限 |
reference/layout-recipes.md | 写方式 B/C 的容器骨架 |
reference/creative-layouts.md | 用渐变/几何/图表/旋转等特性,查写法与限制 |
reference/content-deepening.md | 需要四步追问/多角色/委员会(素材×深度矩阵定做什么);第四章页级内容卡在 Step 3.0 前查(所有档位) |
reference/narrative-skeletons.md | 定全篇叙事结构 |
reference/theme-presets.md / brand-styles.md | 选色板或蒸馏品牌风 |
assets/icons.md | 要图标时复制(style="stroke:var(--变量)",禁 currentColor) |
assets/snippets/INDEX.md | 找现成片段(36 个,含参数表与使用限制) |
| 文件 | 场景 |
|---|---|
reference/behavior-baseline.md | 改转换管线前必读(怪癖 H1-H14) |
scripts/test/FEATURE-COVERAGE.md | 增删转换特性或夹具页(硬约束) |
CLAUDE.md | 管线架构、回归纪律、单一事实源规则 |
assets/theme.css — 默认色板(含 12 个梯级令牌)+版面变量;assets/presets/ — 16 套色板预设scripts/tools/gen-ladder.js — 按各文件基色重算梯级令牌(改主色/加令牌后跑一次;幂等)assets/deck-brief.template.md — 需求确认卡模板;assets/slides.config.template.json — 项目配置模板assets/deck-insights.template.md — 深化层详档模板(洞察/假设/委员会意见与裁决/形式门禁/行动方案)assets/deck-pages.template.md — 页级内容卡模板(Step 3.0 逐页填;写物不是读物,不计入写页前阅读量)assets/slide-template{,-flex,-layout}.html — 三套样板页(方式 A/B/C)assets/playlist.template.json — playlist 模板scripts/validate.js — 预检器(ERROR/WARN 分级;设计检查缺省开启)scripts/preview.js — 视觉自查截图(Step 3.5)scripts/convert.js — 转换 CLIscripts/test/ — golden 回归 + 样张门禁 + 阈值守卫 + 生成侧回归