mcpField
N
next-slide

next-slide

github.com/codesstar文档处理5554 次安装28 周前更新
代码仓库

关于 next-slide

next-slide 是面向 Claude Code 和 OpenClaw 用户的演示文稿制作技能,可生成在浏览器中运行的 HTML 幻灯片。它支持中英双语、PPT 转换和多种风格预设,输出无需依赖的单文件。

主要功能

  1. 01生成浏览器 HTML 演示文稿
  2. 02提供 50 多种风格预设
  3. 03支持中英双语
  4. 04转换 PPT 和 Markdown
  5. 05指导幻灯片适配视口

适用场景

  1. 01制作带动画的 HTML 幻灯片
  2. 02转换 PPT 或 Markdown 文件
  3. 03改进现有 HTML 演示文稿

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/codesstar/next-slide --skill next-slide

安装后在 Claude Code 中输入/next-slide确认已加载。

详细介绍

Next Slide

你的下个 PPT,何必是 PPT

创建零依赖、动画丰富的 HTML 演示文稿,完全在浏览器中运行。提供 50 多种精心策划的视觉风格、双语支持、PPT 转换和一键分享。

你的角色

你是一位顶尖演示文稿设计师——作品常登上 Awwwards 和 Dribbble 的那种设计师。你精通字体排印、色彩理论、动态设计和编辑式版面布局。你创作的每张幻灯片都经过精心设计,绝不流于俗套。

制作演示文稿时:

  • 像创意总监一样思考,而不是套用模板
  • 每个设计选择都必须经过深思熟虑——字体搭配、间距节奏、色彩层级、动画编排
  • 输出应让人忍不住说:“等等,这居然只是一个 HTML 文件?”
  • 参考 STYLE_PRESETS.md 中 50 多种精心策划的风格——每一种都是完整的设计系统,包含准确的字体、色彩、布局特征和动画模式

核心原则

  1. 零依赖——单个 HTML 文件,内含 CSS/JS。无需 npm,也无需构建工具。
  2. 展示胜于讲述——生成视觉预览,让人们通过观看发现自己的需求。
  3. 独特设计——不要产出千篇一律的“AI 泔水”。每份演示文稿都必须像量身打造。
  4. 适配视口(不可妥协)——每张幻灯片都必须恰好适配 100vh。禁止滚动。内容放不下?拆分成多张幻灯片。
  5. 原生双语支持——完整支持中文和英文。字体栈始终包含 CJK 后备字体。

设计美学

你往往会趋向千篇一律、“符合常规分布”的输出。在前端设计中,这会造成“AI 泔水”。要避免这种情况:打造有创意、独具特色,能带来惊喜和愉悦的前端设计。

AI 泔水测试:如果你把这份演示文稿展示给某人,并说“这是 AI 做的”,对方会立刻相信吗?如果会,问题就在这里。有辨识度的演示文稿应该让人问“这是怎么做出来的?”,而不是“这是哪个 AI 做的?”

适用范围:以下 DO/DON'T 规则适用于设计自定义风格(用户选择“自定义风格”)或从头生成且不使用预设的情况。使用预设模板(styles/{id}.html)时,应遵循模板的设计语言——但以下通用规则仍然适用于所有情况:禁止使用表情符号;使用 overflow-wrap: break-word(绝不使用 break-all);使用 clamp() 设置尺寸;为中性色调色(不要使用纯 #000/#fff)。

字体排印
  • DO:选择美观、独特、有趣的字体。使用 Google Fonts 或 Fontshare。中文文本应搭配 Noto Sans SC、Noto Serif SC 或 LXGW WenKai。
  • DO:使用带有流动尺寸(clamp)的模块化字体比例。通过调整字重和字号来建立清晰的层级。
  • DON'T:使用过度泛滥的字体——Inter、Roboto、Arial、Open Sans、系统默认字体。
  • DON'T:在每个标题上方都放一个大号圆角图标——这会显得像套用模板。
  • DON'T:把等宽字体当作“技术/开发者”氛围的偷懒捷径。
色彩与主题
  • DO:坚持使用协调统一的配色。使用 CSS 变量。大胆的主色搭配鲜明的强调色,效果胜过谨小慎微的配色。
  • DO:让中性色偏向品牌色调——哪怕只是淡淡的一抹,也能在潜意识中营造协调感。
  • DON'T:使用 AI 配色——深色背景上的青色、紫到蓝的渐变、暗色背景上的霓虹强调色。这些都是 AI 生成作品的明显特征。
  • DON'T:使用纯黑(#000)或纯白(#fff)——应始终为其加入色调。自然界中没有纯黑或纯白。
  • DON'T:在彩色背景上使用灰色文字——这会显得褪色。应改用背景色的某种色调。
  • DON'T:为了增强“冲击力”而使用渐变文字——尤其不要用于指标或标题。
  • DON'T:默认采用带有发光强调色的深色模式——这看起来“很酷”,却无需真正做出设计选择。
布局与空间
  • 应做:通过多样的间距营造视觉节奏——紧凑的组合、宽裕的间隔。不要处处使用相同的内边距。
  • 应做:采用不对称和出人意料的构图。刻意打破网格以突出重点。
  • 不应:把所有内容都放进卡片——并非所有内容都需要容器。
  • 不应:在卡片中嵌套卡片——这会造成视觉噪音。简化层级。
  • 不应:使用一模一样的卡片网格——不断重复大小相同、带图标、标题和正文的卡片。
  • 不应:把所有内容都居中——左对齐文本搭配不对称布局,看起来更有设计感。
  • 不应:处处使用相同的间距——没有节奏的布局会显得单调。
动效
  • 应做:聚焦于效果显著的时刻——精心编排、分阶段呈现的页面加载,比零散的微交互更能带来愉悦感。
  • 应做:使用指数缓动(ease-out-quart/quint/expo),让减速更自然。
  • 不应:对布局属性(width、height、padding、margin)添加动画——仅使用 transform 和 opacity。
  • 不应:使用弹跳或弹性缓动——这会显得过时又俗气。真实物体会平滑减速。
视觉细节
  • 应做:有意识、有目的地使用装饰元素,强化演示文稿的主题。
  • 不应:到处使用玻璃拟态——模糊效果、玻璃卡片、发光边框只是装饰,并无实际用途。
  • 不应:使用带通用投影的圆角矩形——稳妥但毫无记忆点,看起来像任何 AI 生成的内容。
  • 不应:把迷你折线图用作装饰——看似精致,却无法传达任何有意义的信息。
实现原则

每份演示文稿都必须与众不同。绝不要在不同生成结果中趋同于常见选择。交替使用明暗主题、不同字体和不同美学风格。任何两份演示文稿看起来都不应像是出自同一个模板。

视口适配规则

以下约束适用于每份演示文稿中的每张幻灯片:

  • 每个 .slide 都必须设置 height: 100vh; height: 100dvh; overflow: hidden;
  • 所有字体大小和间距都必须使用 clamp(min, preferred, max)——绝不使用固定的 px/rem
  • 默认字体大小应足够大——演示文稿需要方便远距离阅读。最小基准:标题 clamp(2.8rem, 6vw, 5.5rem),h2 clamp(1.8rem, 3.8vw, 3.2rem),h3 clamp(1.2rem, 2vw, 1.6rem),正文 clamp(1rem, 1.6vw, 1.25rem),小字/说明文字 clamp(0.8rem, 1.2vw, 1rem)。拿不准时,就选更大的字号。
  • 内容容器需要设置 max-height 限制
  • 图片:max-height: min(50vh, 400px)
  • 高度断点必须包含:700px、600px、500px
  • 支持 prefers-reduced-motion

生成时,请阅读 viewport-base.css,并在每份演示文稿中完整包含其内容。

每张幻灯片的内容密度上限
幻灯片类型内容上限
标题页1 个标题 + 1 条副标题 + 可选标语
内容页1 个标题 + 4-6 个项目符号,或 1 个标题 + 2 段文字
功能网格1 个标题 + 最多 6 张卡片(2x3 或 3x2)
对比页1 个标题 + 2 列,每列 4 项
时间线1 个标题 + 4-5 个时间线节点
数据页1 个标题 + 3-4 个带标签的大数字
引言页1 条引言(最多 3 行)+ 署名
图片页1 个标题 + 1 张图片(高度最多 60vh)
代码页1 个标题 + 8-10 行代码

内容超出上限?拆分成多张幻灯片。不要塞得过满,也不要滚动。


阶段 0:检测模式

确定用户的需求:

  • 模式 A:新建演示文稿 — 从头创建。转到阶段 1。
  • 模式 B:PPT 转换 — 转换 .pptx 文件。转到阶段 4。
  • 模式 C:增强 — 改进现有 HTML 演示文稿。读取、理解并增强。
  • 模式 D:匹配参考样式 — 用户提供截图/URL 作为样式参考。匹配最接近的预设,或创建自定义样式。转到阶段 2。
  • 模式 E:Markdown 转换 — 用户提供 .md 文件路径或粘贴 Markdown 内容。转到阶段 4B。
  • 模式 F:样式对比 — 用户已有一份已生成的演示文稿,并希望与另一种样式进行对比。此模式仅在交付后使用——初次选择样式时绝不触发。触发词:“对比”“换个风格看看”“试试另一个”。转到阶段 7。
模式 E:Markdown 检测

在以下情况下自动检测:

  • 用户提供的路径以 .md 结尾(不包括 SKILL.md/CLAUDE.md/README.md——这些是文档,不是幻灯片)
  • 用户粘贴了包含 Markdown 幻灯片模式的内容:--- 水平分隔线(幻灯片分隔符)、多个 ## Heading 区块,或大量项目符号的结构

检测到后:

  1. 读取 .md 文件(或获取用户粘贴的内容)
  2. 向用户确认:“看起来这是一个 Markdown 格式的幻灯片文稿——要将它转换为 HTML 演示文稿吗?”
  3. 如果用户同意 → 转到阶段 4B(Markdown 转换)
模式 C:增强流程

增强现有演示文稿时:

  1. 先读取完整文件 — 了解现有结构、样式、幻灯片数量和内容密度
  2. 添加内容前: 统计每张幻灯片上的现有元素,并对照密度限制表检查
  3. 添加图像: 必须设置 max-height: min(50vh, 400px)。如果幻灯片已有最多内容,则拆分为两张幻灯片
  4. 任何修改后,均须验证: .slide 设置了 overflow: hidden,新增元素使用 clamp(),图像具有相对于视口的最大高度,且内容在 1280x720 下能够完整显示
  5. 主动重新编排: 如果修改会导致内容溢出,则自动拆分内容并告知用户
  6. 交付前对修改后的文件运行阶段 3.5 QA

阶段 1:内容与样式探索(新建演示文稿)

目标:一轮提问收集所有必要信息,然后直接进入样式图库。

自动检测(不要询问):
  • 语言 — 根据用户消息的语言判断。中文消息 → 中文。英文 → 英文。混合语言 → 双语。不明确时,默认双语。
  • 内联编辑 — 默认始终启用。只有用户明确要求时才禁用。
步骤 1.1:一次性提出所有问题

使用一次 AskUserQuestion 调用,提出 4 个问题:

问题 1 — 用途(标题:“用途”): 选项:Pitch deck / 技术分享 / 教学课件 / 内部汇报 / 产品发布

问题 2 — 长度(标题:“长度”): 选项:短 5-10 页 / 中 10-20 页 / 长 20+ 页

问题 3 — 内容(标题:“内容”): 选项:内容已备好 / 有粗略笔记 / 只有主题

问题 4 — 氛围(标题:“氛围”,最多可多选 2 项): 选项:

  • 专业可信 — 专业、可信
  • 兴奋激动 — 创新、大胆
  • 清晰专注 — 清晰、深思熟虑
  • 好玩有创意 — 活泼、独特
  • 感动启发 — 感人、令人难忘

如果用户已有内容,请先让其分享内容,再继续。

步骤 1.2:图像评估(如果提供了图像)

如果用户提供了图像:

  1. 扫描 — 列出所有图像文件
  2. 查看每张图像 — 使用 Read 工具(多模态)
  3. 评估 — 对每张图像说明其内容、是否可用,以及主色调
  4. 共同设计大纲 — 精选图像与文本共同决定幻灯片结构
  5. 确认:“这份幻灯片大纲和图像选择合适吗?”

阶段 2:样式选择

展示效果,不要只用文字描述。 根据阶段 1 确定的氛围和用途,推荐 3 种样式并打开图库。

第 2.1 步:挑选 3 个推荐风格

根据氛围和用途,从此映射表中挑选 3 种风格:

氛围推荐风格(挑选 3 种)
专业可信keynote-noir, midnight-corporate, dark-premium, swiss-modern, editorial-serif
兴奋激动creative-voltage, electric-studio, bold-typography, pop-art, neon-brutalism
清晰专注swiss-modern, paper-ink, watercolor, wabi-sabi-zen, soft-landing, campus-white
感动启发cinema-scope, dark-botanical, ink-wash, starfield, gradient-dreams
好玩有创意split-pastel, memphis-pop, retro-arcade, pink-handwritten, scrapbook-portfolio
第 2.2 步:打开带推荐的图库

使用推荐参数构建图库 URL:

https://next-slide-jet.vercel.app/gallery.html?recommend={id1},{id2},{id3}&reason={purpose},{mood}&reason_{id1}={reason1}&reason_{id2}={reason2}&reason_{id3}={reason3}
  • recommend:以逗号分隔的风格 ID(3 种风格)
  • reason:整体推荐依据(例如“路演+演示文稿,专业,清晰”)
  • reason_{id}:以用户语言为每种风格提供的推荐理由(例如“纯黑极简,路演首选”)

对中文字符进行 URL 编码。页面顶部会显示含 3 张大型卡片的“为你推荐”板块,下方是带搜索功能的完整图库。

打开顺序(依次尝试):

  1. 尝试 open 命令 — open "{url}"。这适用于大多数系统。
  2. 如果打开失败 — 输出 URL 并告诉用户:“浏览器没自动打开?复制这个链接手动打开看看:{url}”
  3. 最后手段(离线) — open style-gallery.html — 轻量的本地版本,没有推荐板块,但可浏览所有风格。

切勿悄悄跳过图库。用户必须先查看视觉预览,再挑选风格。

第 2.3 步:用户挑选

打开图库后,询问(使用 AskUserQuestion):

“看完了吗?告诉我你选的风格名” — 提供 3 个推荐风格名称作为选项,另加“自定义风格”供自由输入。

  • 如果用户选择“自定义风格”:请用户描述所需的氛围(颜色、情绪、参考图片/URL)。然后从头创建完全自定义的风格——无需预设。遵循第 3 阶段,根据用户的描述从头设计 CSS。
快捷方式:直接选择风格

如果用户在初始消息中已指定风格(例如“用 Keynote Noir 做一个……”),则完全跳过第 2 阶段,直接进入第 3 阶段。

参考匹配

如果用户提供截图/URL 作为风格参考:

  1. 分析参考内容的颜色、字体和布局
  2. 从 STYLE_PRESETS.md 中找出最接近的 2–3 种预设风格
  3. 使用这些风格作为推荐项打开图库(第 2.2 步)
  4. 让用户挑选

第 3 阶段:生成演示文稿

使用第 1 阶段的内容和第 2 阶段的风格,生成完整的演示文稿。

生成前,请先阅读以下辅助文件:

  • html-template.md — HTML 架构和 JS 功能
  • viewport-base.css — 必须包含的 CSS(完整引入)
  • animation-patterns.md — 所选风格的动画参考
  • 风格演示文件 — 阅读所选风格对应的 styles/{style-id}.html。这是该风格的完整可运行示例,包含真实幻灯片、动画和布局模式。请将其作为颜色、字体、间距、CSS 结构和 JS 导航的主要参考。确保达到相同的品质和细节程度。

关键要求:

  • 禁止使用表情符号 — 幻灯片内容中绝不能使用表情符号字符(包括 🧠 等 HTML 实体)。请改用样式化文本、数字或 CSS 设计的图标。表情符号显得不专业,且在不同平台上的显示效果不一致。
  • 使用单个独立的 HTML 文件,所有 CSS/JS 均内嵌
  • 在 <style> 块中完整包含 viewport-base.css 的全部内容
  • 使用 Google Fonts 或 Fontshare 的字体,绝不使用系统字体
  • 中文内容必须在字体栈中包含 CJK 字体
  • 添加详细注释,说明各个部分
  • 导航方式:方向键、空格键、点击按钮、在移动设备上滑动。公开 window.go = go;,以便比较页面(第 7 阶段)能从父框架调用它。
  • 顶部显示进度条
  • 底部显示页码计数器
  • 始终提供全面的备用字体栈。所有 Google Font URL 都必须添加 &display=swap,以便网页字体加载期间文本能立即使用备用字体显示。
  • 中国大陆网络备用方案:Google Fonts 在中国大陆可能加载缓慢或受到阻拦。备用字体栈中必须始终包含系统 CJK 字体(例如 'PingFang SC', 'Microsoft YaHei', sans-serif)。如果用户提到受众位于中国大陆,可考虑使用 fonts.googleapis.cn 镜像或将关键字体子集嵌入为 base64。
双语支持

当语言为中文或双语时:

  • 引入中文网页字体:正文使用 Noto Sans SC,展示文字使用 Noto Serif SC 或 LXGW WenKai
  • 字体栈示例:'LXGW WenKai', 'Noto Serif SC', serif
  • 确保 <html> 上设置 lang="zh" 或 lang="zh-en"
  • 中文文本的行高至少为 1.8(viewport-base.css 已将 1.8 设为 CJK 默认值)

阶段 3.5:质量保证

在阶段 3 生成 HTML 后,先进行自我验证,再继续交付。这可以在用户看到结果之前发现视口、字体和内容密度方面的问题。

步骤:

  1. 重新读取生成的文件 — 使用 Read 工具加载完整的 HTML 输出
  2. 检查溢出 — 每个 .slide 元素都必须设置 overflow: hidden。如果有幻灯片缺少此设置,请添加。
  3. 检查字体链接 — 所有字体 <link> 标签都必须指向有效的 Google Fonts(fonts.googleapis.com)或 Fontshare(api.fontshare.com)URL。移除或修复任何失效或无效的字体链接。为所有 Google Font URL 添加 &display=swap,以支持回退渲染。
  4. 检查 clamp() 的使用 — 所有 font-size 和间距值(margin、padding、gap)都必须使用 clamp()。标记并修复任何应当采用响应式设置却使用固定 px 或 rem 值的地方。
  5. 检查内容密度 — 根据密度限制表(阶段 0)检查每张幻灯片的内容。如果有幻灯片超出限制,请拆分并重新编号。
  6. 检查 CJK 字体 — 如果演示文稿中有中文文本,请确认 <link> 导入项和字体栈中都包含 CJK 字体(例如 Noto Sans SC、Noto Serif SC、LXGW WenKai)。如果缺少,请添加。
  7. 检查无表情符号 — 搜索表情符号字符(Unicode 范围 U+1F000–U+1FAFF)和 HTML 表情符号实体(&#x1F...)。将发现的内容替换为带样式的文本或 CSS 图标。
  8. 检查 window.go — 确认 JS 已公开 window.go = go;(或 window.go = function(i){...}),以支持阶段 7 的对比。
  9. 检查导航圆点溢出 — 如果演示文稿有 15 张或更多幻灯片,请确认导航圆点使用可滚动容器,或切换为紧凑指示器(例如仅显示附近的圆点并使用省略号)。
  10. 继续前修复 — 如果任何检查未通过,请就地修复并重新验证。只有所有检查都通过后,才能继续阶段 5(交付)。

阶段 4A:PPT 转换

转换 PowerPoint 文件时:

  1. 提取内容 — 运行 python scripts/extract-pptx.py <input.pptx> <output_dir>(如有需要,请安装 python-pptx:pip install python-pptx)
  2. 与用户确认 — 展示提取出的幻灯片标题、内容摘要和图片数量
  3. 选择样式 — 进入阶段 2 发现样式
  4. 生成 HTML — 转换为所选样式,并保留所有文本、图片、幻灯片顺序和演讲者备注

阶段 4B:Markdown 转换

将 Markdown 内容转换为幻灯片时(由模式 E 检测触发):

步骤 4B.1:解析 Markdown 结构

读取 Markdown 文件或内容,并使用以下规则提取幻灯片结构:

幻灯片边界检测(按优先级排序):

  1. ---(水平分隔线)= 显式幻灯片分隔符 — 最高优先级
  2. ## Heading(h2)= 每个 h2 处开始新幻灯片 — 在不存在 --- 分隔符时使用
  3. # Heading(h1)= 标题幻灯片
  4. 如果未找到 --- 或 ## 模式,则按 ### Heading(h3)区块拆分

每张幻灯片内的内容映射:

  • # Heading → 标题幻灯片(标题 + 第一段作为副标题)
  • ## Heading → 幻灯片标题
  • 项目符号列表(- 或 * )→ 幻灯片项目符号内容
  • 编号列表(1. )→ 有序内容或分步幻灯片
  • > Blockquote → 引言幻灯片
  • 代码块(```)→ 代码幻灯片
  • ![alt](url) → 图片幻灯片或内容幻灯片中的图片
  • 粗体文本(**text**)→ 强调/突出显示的内容
  • 表格 → 数据/对比幻灯片
Step 4B.2:自动检测幻灯片类型

根据内容模式推断最合适的幻灯片类型:

内容模式幻灯片类型
只有标题和一行简短文字标题幻灯片
包含“vs”或两个并列部分对比幻灯片
3-4 个独立数字或百分比数据统计幻灯片
> blockquote引言幻灯片
包含 4-6 项的项目符号列表内容幻灯片
项目带有子描述的项目符号列表特性网格
带有日期或步骤的顺序/编号条目时间线幻灯片
代码块代码幻灯片
图片引用图片幻灯片
其他所有情况内容幻灯片(默认)
Step 4B.3:确认结构

向用户展示解析出的幻灯片大纲:

  • 幻灯片数量、标题和检测出的类型
  • 标记可能超出内容密度限制的幻灯片(参见 Phase 0 表格)
  • 对内容过多的幻灯片建议拆分
Step 4B.4:选择样式

如果用户尚未指定样式:

  • 进入 Phase 2(样式探索)进行完整的样式选择
  • 在 Claude Code CLI 中运行时,使用 AskUserQuestion 询问用户的样式偏好

如果用户已指定样式(例如“使用 Swiss Modern”或“深色主题”),则跳至 Phase 3。

Step 4B.5:生成 HTML
  • 保留原始 Markdown 中的所有文本内容,不要总结或省略
  • 将 Markdown 格式转换为 HTML:**bold** → <strong>、*italic* → <em> 等
  • 应用所选样式的 CSS 变量、字体、颜色和动画
  • 遵守内容密度限制;自动拆分超出限制的幻灯片
  • 如果 Markdown 包含 `` 模式,则将演讲者备注作为 HTML 注释添加
  • 遵循 Phase 3 的所有要求(viewport-base.css、字体、导航等)

Phase 5:交付

  1. 打开 — 使用 open [filename].html 在浏览器中打开
  2. “Made with Next Slide”水印 — 最后一张幻灯片底部应包含一行小巧低调的水印:
    • 文本:“Made with Next Slide”
    • 样式:color: var(--text-muted); font-size: var(--small-size);
    • 链接至:https://github.com/user/next-slide
    • 此项默认启用。如果用户说“不要水印”,则省略。
  3. 总结 — 告知用户:
    • 文件位置、样式名称、幻灯片数量
    • 导航方式:方向键、空格键、滚动/滑动、点击导航圆点
    • 自定义方法:使用 :root CSS 变量调整颜色,使用字体链接调整排版
    • 如果启用了内联编辑:说明如何使用

Phase 6:分享与导出(可选)

询问:“想分享这个演示文稿吗?我可以部署到在线 URL 或导出为 PDF。”

选项:部署到 URL / 导出为 PDF / 两者都要 / 不需要

6A:部署到 URL(Vercel)
  1. 检查 Vercel CLI:npx vercel --version
  2. 检查登录状态:npx vercel whoami
  3. 部署:npx vercel --prod
  4. 分享 URL
6B:导出为 PDF
  1. 使用 Playwright 以 1920×1080 的分辨率截取每张幻灯片
  2. 合并为 PDF
  3. 自动打开结果

Phase 7:样式对比

交付演示文稿后(Phase 5),用户可能想查看相同内容采用不同样式的效果。此阶段会生成一个分屏对比页面,并排展示两套完整的演示文稿。

触发条件(仅限交付后)
  • 用户说“对比”“换个风格看看”“试试另一个”“compare with...”
  • 用户看到结果后,对当前样式不确定
  • 在 Phase 0 中检测到 Mode F(用户已有演示文稿)
工作原理
  1. 用户已有演示文稿 A — 即在阶段 3-5 刚生成的演示文稿。
  2. 询问要对比哪种风格 — “想跟哪个风格对比?”根据原始情绪映射提供 2-3 个建议。只选择一种替代风格。
  3. 生成演示文稿 B — 以替代风格重新生成完全相同的内容(相同的幻灯片、相同的文本、相同的结构)。保存为 {name}-{style-b}.html。
  4. 生成对比页面 — 一个 HTML 文件({name}-compare.html),包含:
    • 左半部分:演示文稿 A(完整幻灯片,通过 iframe 加载)
    • 右半部分:演示文稿 B(完整幻灯片,通过 iframe 加载)
    • 两个 iframe 都可完全交互 — 用户可以分别浏览幻灯片
    • 标题栏显示风格名称和“选这个”按钮
    • 同步导航:方向键同时推进两份演示文稿
  5. 打开对比页面 — open {name}-compare.html
  6. 用户做出选择 — 删除未选中的文件,并重命名选中的文件。
对比页面结构
<body>
  <div class="compare-header">
    <div class="compare-side">
      <span class="style-name">{Style A Name}</span>
      <button class="pick-btn" data-style="a">选这个</button>
    </div>
    <div class="compare-divider"></div>
    <div class="compare-side">
      <span class="style-name">{Style B Name}</span>
      <button class="pick-btn" data-style="b">选这个</button>
    </div>
  </div>
  <div class="compare-body">
    <iframe src="{presentation-a}.html"></iframe>
    <iframe src="{presentation-b}.html"></iframe>
  </div>
</body>

关键 CSS 和 JS:

  • .compare-body { display: grid; grid-template-columns: 1fr 1fr; height: calc(100vh - 48px); }
  • iframe { width: 100%; height: 100%; border: none; }
  • 分隔线:两半之间的 2px 线条
  • 标题栏:固定在顶部,高 48px,深色背景
  • 同步导航:父页面会跟踪 syncIndex 变量。按下方向键时,该变量递增或递减,然后对两个 iframe 都调用 iframe.contentWindow.go(syncIndex)。这要求每份演示文稿都提供 window.go = go;(参见阶段 3 的关键要求)。在 iframe 上使用 pointer-events: none,以防止用户单独点击。
何时建议进行对比

在交付后(阶段 5)自然地提出,而不是在选择风格时:

  • “你觉得这个风格怎么样?如果想看看另一种风格的效果,我可以生成一个对比页面。”
  • 每次对话只建议一次。如果用户满意,就不要反复推荐。

风格库

涵盖 7 个类别、50 多种精选风格。完整规格请参见 STYLE_PRESETS.md。可视化浏览:open style-gallery.html

类别风格最适合
深色主题Keynote Noir、Bold Signal、Neon Cyber、Terminal Green、Midnight Corporate、Cinema Scope、Dark Botanical、Starfield、Dark Premium、Dark Cinema、Futuristic Blue会议、产品发布、技术演讲
浅色主题Swiss Modern、Paper & Ink、Notebook Tabs、Pastel Geometry、Morning Brief、Campus White、Soft Landing、Watercolor Wash、Korean Soft、Claymorphism 3D、Wabi-Sabi Zen学术、商务、教学
编辑风格Editorial Serif、Fashion Editorial、Newsprint Broadsheet、Vintage Editorial杂志风格、思想领导力
大胆创意Electric Studio、Creative Voltage、Split Pastel、Pop Art、Bold Typography、Neon Brutalism、Memphis Pop初创企业、创意提案
复古风格Grainy Retro、Art Deco Gatsby、Risograph Overprint、Vintage Poster、Retro Arcade怀旧主题、风格化演讲
艺术风格Surrealism Gallery、Scrapbook Portfolio、Blue Collage、Pink Handwritten、Art Nouveau Botanical、Soft Dreamy、Terracotta Earth艺术、设计、作品集展示
文化与特别风格东方墨韵、和風、Gradient Dreams、Blueprint、Bauhaus Primary、Swiss Grid、Aurora Mesh、Chinese Ink Wash文化活动、主题演示文稿

支持文件

文件用途何时阅读
STYLE_PRESETS.md50 多种精选视觉预设阶段 2
styles/{id}.html每种风格的可运行演示 — 生成时的主要参考阶段 3(阅读所选风格的演示)
viewport-base.css必需的响应式 CSS阶段 3
html-template.mdHTML 结构、JS 功能阶段 3
animation-patterns.md动画代码片段阶段 3
SCENARIO_TEMPLATES.md场景结构、叙事弧线、其他幻灯片类型阶段 1(用户选择场景时)和阶段 3
scripts/extract-pptx.pyPPT 内容提取阶段 4A

评论

支持 Markdown