HTML样式布局代码生成。将步骤2的页面清单转换为HTML文件。采用内容→组件→布局→代码流程。用于处理:内容元素识别、HTML组件匹配、布局选择、代码生成。严格根据beauty-html skill选择布局。使用beauty-html-reference.md中指定的颜色规范。
Generates interactive HTML slides with charts and insights from content outlines using specified layouts and color schemes.
npx claudepluginhub within-7/minto-plugin-toolsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
beauty-component-guide.mdbeauty-html-reference.md将步骤2生成的幻灯片页面清单转换为完整的、可运行的HTML文件。
采用内容→组件→布局→代码的优化流程。
幻灯片格式 [强制 - 新增]:
.slide 类position: absolute 定位,实现全屏切换.active 类控制当前显示的幻灯片图表使用 [强制 - 新增]:
颜色规范 [强制]:
必读资源:
重要:布局选择必须严格遵循beauty-html skill规则:
beauty-html/LAYOUTS_INDEX.md 获取完整布局索引beauty-html/COMPONENTS_INDEX.md 获取组件索引beauty-html/assets/layouts/*.html 布局示例文件beauty-html/assets/components/*.html 组件示例文件项目特定资源优先级(如果存在):
.ppt_assets/INDEX.md - 项目特定的布局和图表示例(优先级最高)Token限制处理:
步骤3.1:读取必读资源 → 步骤3.2:识别内容元素 → 步骤3.3:匹配组件 → 步骤3.4:选择布局 → 步骤3.5:生成HTML
完整读取所有必读资源,为后续代码生成提供参考。
阶段1:读取 beauty-html/LAYOUTS_INDEX.md
├─ 布局类型索引(L1-L17)
├─ 布局结构示例
├─ 布局配置参数
└─ 布局选择决策树
阶段2:读取 beauty-html/COMPONENTS_INDEX.md
├─ 图表组件索引(C1-C3)
├─ 图示组件索引(D1-D3)
├─ 表格组件索引(T1)
├─ 组件CSS类名和配置
└─ 组件选择决策树
阶段3:读取 beauty-html-reference.md
├─ 配色方案(必须严格遵循)
├─ CSS变量定义
├─ 布局结构
└─ 组件模板
阶段4:读取 beauty-component-guide.md
├─ 图表组件选择决策树
├─ 图示组件说明
└─ 表格组件配置
阶段5:检查并读取 .ppt_assets/INDEX.md(如果存在)
├─ 项目特定的布局示例
├─ 项目特定的图表示例
├─ 项目特定的样式和组件
└─ ⚠️ 优先级规则:如果某个布局、图表或图文展示在 beauty-html 和 .ppt_assets 中都存在,
必须优先使用 .ppt_assets/INDEX.md 中的版本
优先级顺序(从高到低):
1. .ppt_assets/INDEX.md(如果存在)
2. beauty-html/INDEX.md
3. beauty-html/LAYOUTS_INDEX.md
4. beauty-html/COMPONENTS_INDEX.md
5. beauty-html/assets/layouts/*.html
6. beauty-html/assets/components/*.html
示例:
├─ 如果 .ppt_assets/INDEX.md 存在且包含"漏斗图"示例 → 使用项目版本
├─ 如果 .ppt_assets/INDEX.md 不存在 → 使用 beauty-html 版本
└─ 如果两者都存在相同组件 → 优先使用 .ppt_assets 版本
识别每页幻灯片的内容元素类型,为组件匹配做准备。
| 类别 | 类型 | 说明 |
|---|---|---|
| 文本 | 主标题、要点列表、编号列表 | 文字内容 |
| 数据 | 数字、百分比、货币 | 量化信息 |
| 图表 | 柱状图、折线图、饼图、雷达图 | 可视化 |
| 表格 | 简单表格、对比表格 | 结构化数据 |
| 布局 | 卡片、对比框、强调框 | 容器组件 |
为每页生成元素识别清单:
页面X:[页面标题]
- 文本元素:标题1个,要点列表N项
- 数据元素:数字N个,百分比N个
- 图表元素:柱状图1个(5数据点)
- 表格元素:无
- 布局元素:卡片N个
根据识别的元素类型,从资源文件中读取并匹配对应的HTML组件。
步骤3.3.1:读取beauty-html组件索引
执行操作:
├─ 读取 beauty-html/assets/COMPONENTS_INDEX.md
│ ├─ 图表组件索引(C1-C3)
│ ├─ 图示组件索引(D1-D3)
│ ├─ 表格组件索引(T1)
│ └─ 组件选择决策树
├─ 遍历 beauty-html/assets/components/*.html
│ ├─ 图表组件示例(bar-chart, line-chart, pie-chart等)
│ ├─ 图示组件示例(swot, timeline, flowchart等)
│ └─ 特殊组件示例(funnel, pyramid, gauge等)
└─ 记录可用组件及其CSS类名和配置参数
步骤3.3.2:读取.ppt_assets组件资源(如存在)
执行操作:
├─ 检查 .ppt_assets/COMPONENTS_INDEX.md(如存在)
├─ 遍历 .ppt_assets/components/*.html(如存在)
├─ 遍历 .ppt_assets/assets/components/*.html(如存在)
└─ 记录项目特定的组件配置(优先级高于beauty-html)
组件资源读取优先级:
优先级顺序(从高到低):
1. .ppt_assets/assets/components/*.html(如存在)
2. .ppt_assets/components/*.html(如存在)
3. .ppt_assets/COMPONENTS_INDEX.md(如存在)
4. beauty-html/assets/components/*.html
5. beauty-html/assets/COMPONENTS_INDEX.md
示例:
├─ 需求:漏斗图组件
├─ 检查.ppt_assets/assets/components/funnel-chart.html → 存在则使用
├─ 检查.ppt_assets/components/funnel-chart.html → 存在则使用
├─ 检查.beauty-html/assets/components/funnel-chart-example.html → 使用此版本
└─ → 根据实际找到的文件路径读取组件代码
根据识别的元素类型,从已读取的资源中选择匹配组件:
数据内容必须使用图表组件,数据可视化优先级规则:
【必须使用图表的情况】
├─ 数值对比(如:市场规模、增长率、占比)→ 柱状图或饼图
├─ 时间趋势(如:历年数据变化、季度趋势)→ 折线图
├─ 多维评估(如:SWOT分析、竞争力评估)→ 雷达图
├─ 流程转化(如:销售漏斗、用户转化)→ 漏斗图
└─ 分类占比(如:市场份额、预算分配)→ 饼图或环形图
【图表类型选择规则】
├─ 柱状图:适用离散类别数据比较,3-10个数据点
├─ 折线图:适用连续时间序列数据,3-12个时间点
├─ 饼图:适用部分与整体占比,2-6个分类
├─ 雷达图:适用多维度能力评估,4-8个维度
└─ 漏斗图:适用流程转化分析,3-6个阶段
【布局规则】
├─ 单图表页:必须使用两列布局(图表55% + 洞察45%)
├─ 多图表页:必须使用三列布局(并排对比)
└─ 禁止单列布局放置图表
内容元素 → 推荐组件(从已读取的组件资源中选择)
├─ 要点列表 → ul.bullet-list / ul.numbered-list
├─ 数字强调 → .big-number
├─ 柱状图 → div.bar-chart(多列布局,必须)
├─ 折线图 → div.line-chart(多列布局,必须)
├─ 饼图 → div.pie-chart(多列布局,必须)
├─ 雷达图 → div.radar-chart(多列布局,必须)
├─ 漏斗图 → div.funnel-chart(多列布局,必须)
├─ 金字塔图 → div.pyramid-chart
├─ 对比分析 → div.comparison-chart
├─ SWOT分析 → div.swot-analysis
├─ 时间线 → div.timeline
├─ 流程图 → div.flowchart
├─ 表格 → table.comparison-table
└─ 图表解释说明 → div.chart-insights / div.insight-panel
图表组件使用验证清单 [强制检查]:
每个包含数据的页面 图表类型选择必须验证:
□正确
├─ □ 数值对比使用柱状图
├─ □ 时间趋势使用折线图
├─ □ 占比分析使用饼图
├─ □ 多维评估使用雷达图
└─ □ 流程转化使用漏斗图
□ 图表布局正确
├─ □ 使用两列布局(图表+洞察)
└─ □ 禁止单列布局
□ 图表数据完整
├─ □ 所有数据点已可视化
├─ □ 数据标签完整显示
└─ □ 图表标题准确描述
□ 洞察面板完整
├─ □ 图表概述完整
├─ □ 数据解读逐项展开
├─ □ 洞察分析提炼到位
└─ □ 行动建议(推荐)
□ 禁止行为
├─ □ 没有用文本列表代替图表
├─ □ 没有省略图表数据标签
├─ □ 没有删除图表数值
└─ □ 没有简化图表说明
必须为每个图表配置解释说明组件:
图表页组件结构:
├─ 图表容器(左侧55%)
│ └─ 图表HTML(柱状图/折线图/饼图等)
└─ 洞察面板(右侧45%)
├─ 图表概述
├─ 数据解读
├─ 洞察分析
└─ 行动建议(推荐)
洞察面板组件资源读取:
读取流程:
1. 检查 .ppt_assets/assets/components/*insight*.html(如存在)
2. 检查 .ppt_assets/components/*insight*.html(如存在)
3. 检查 beauty-html/assets/components/*insight*.html
4. 检查 beauty-html/assets/guides/INSIGHT_VISUALIZATION_GUIDE.md
5. 复制洞察面板的HTML结构和CSS样式
6. 根据步骤2.3.2生成的洞察内容填充数据
组件结构参考:
├─ .insight-panel(洞察面板容器)
│ ├─ .insight-section.chart-overview(图表概述)
│ ├─ .insight-section.data-interpretation(数据解读)
│ ├─ .insight-section.insight-analysis(洞察分析)
│ └─ .insight-section.action-recommendations(行动建议)
❌ 绝对禁止:
✅ 正确做法:
选择组件时,必须按优先级读取以下资源:
1. .ppt_assets/assets/components/[component-name]-example.html(如存在)
2. .ppt_assets/components/[component-name]-example.html(如存在)
3. .ppt_assets/INDEX.md 中的组件示例(如存在)
4. beauty-html/assets/components/[component-name]-example.html
5. beauty-html/assets/COMPONENTS_INDEX.md 中的组件配置
示例参考步骤:
1. 确定组件类型(如:漏斗图)
2. 按优先级检查资源文件是否存在
3. 读取找到的资源文件,获取HTML结构和CSS样式
4. 复制组件代码到当前页面
5. 根据实际内容调整数据和标签
根据页面类型和组件需求,从资源文件中读取并选择合适的布局。
步骤3.4.1:读取beauty-html布局索引
执行操作:
├─ 读取 beauty-html/assets/LAYOUTS_INDEX.md
│ ├─ 布局类型索引(L1-L17)
│ ├─ 布局结构示例
│ ├─ 布局配置参数
│ └─ 布局选择决策树
├─ 遍历 beauty-html/assets/layouts/*.html
│ ├─ 封面页布局(cover-page, NEW_01-cover-page.html等)
│ ├─ 内容页布局(two-column, three-column, card-grid等)
│ ├─ 章节页布局(chapter-overview, NEW_05-chapter-cover等)
│ └─ 特殊布局(toc-grid, traffic-analysis等)
└─ 记录可用布局及其CSS类名和配置参数
步骤3.4.2:读取.ppt_assets布局资源(如存在)
执行操作:
├─ 检查 .ppt_assets/LAYOUTS_INDEX.md(如存在)
├─ 遍历 .ppt_assets/layouts/*.html(如存在)
├─ 遍历 .ppt_assets/assets/layouts/*.html(如存在)
└─ 记录项目特定的布局配置(优先级高于beauty-html)
布局资源读取优先级:
优先级顺序(从高到低):
1. .ppt_assets/assets/layouts/*.html(如存在)
2. .ppt_assets/layouts/*.html(如存在)
3. .ppt_assets/LAYOUTS_INDEX.md(如存在)
4. beauty-html/assets/layouts/*.html
5. beauty-html/assets/LAYOUTS_INDEX.md
示例:
├─ 需求:封面页布局
├─ 检查.ppt_assets/assets/layouts/cover-page.html → 存在则使用
├─ 检查.ppt_assets/layouts/cover-page.html → 存在则使用
├─ 检查.ppt_assets/INDEX.md是否有封面页布局 → 存在则使用
├─ 检查.beauty-html/assets/layouts/01-cover-page.html → 使用此版本
└─ → 根据实际找到的文件路径读取布局代码
根据页面类型和组件需求,从已读取的资源中选择匹配布局:
根据页面内容特征选择布局:
1. 页面包含图表?
├─ 是 → 图表数量?
│ ├─ 1个 → 两列布局(图表+洞察)
│ ├─ 2个 → 三列布局(并排对比)
│ └─ ≥3个 → 卡片网格或分多页
└─ 否 → 内容类型?
├─ 纯文本 ≤8要点 → 单列布局
├─ 步骤/流程 → 流程布局
├─ 时间序列 → 时间线布局
├─ 多主题并列 → 卡片网格布局
└─ 章节过渡 → 章节首页布局
布局类型 → 推荐布局(从已读取的布局资源中选择)
├─ 封面页 → .cover-slide / .slide.cover
├─ 目录页 → .toc-slide / .slide.toc
├─ 章节首页 → .chapter-slide / .slide.chapter
├─ 内容页-纯文本 → .single-column / .content-text
├─ 内容页-图表+洞察 → .two-column / .chart-insights
├─ 内容页-多图表 → .three-column / .multi-chart
├─ 内容页-卡片网格 → .card-grid / .grid-cards
└─ 结束页 → .ending-slide / .slide.ending
如果.ppt_assets布局资源存在,必须优先使用:
检查流程:
1. 确定所需布局类型(如:封面页布局、图表+洞察布局)
2. 按优先级检查.ppt_assets资源文件是否存在
3. 如果有 → 读取并使用.ppt_assets版本
4. 如果没有 → 读取并使用beauty-html版本
示例:
├─ 需求:封面页布局
├─ 检查.ppt_assets/assets/layouts/cover-page.html → 存在
└─ → 使用.ppt_assets中的封面页布局和样式
├─ 需求:漏斗图布局(.ppt_assets中不存在)
├─ 检查.ppt_assets/assets/layouts/funnel-chart.html → 不存在
├─ 检查.beauty-html/assets/layouts/funnel-chart.html → 不存在
├─ 检查.beauty-html/assets/layouts/05-chart-text.html → 存在
└─ → 使用beauty-html中的两列布局(图表+洞察)适配漏斗图
选择布局后,从已读取的资源中获取配置参数:
布局配置参数来源(从已读取的资源中选择):
├─ 布局CSS类名(来自LAYOUTS_INDEX.md或布局HTML文件)
├─ 容器宽度和间距(来自布局HTML文件的CSS样式)
├─ 列配置(grid-template-columns)
├─ 响应式断点
└─ 动画和过渡效果
配置参考步骤:
1. 从已读取的LAYOUTS_INDEX.md获取布局类型和配置参数
2. 从已读取的布局HTML文件获取实际CSS样式
3. 从已读取的mckinsey-design-standards.css获取CSS变量
4. 根据实际内容需求调整布局参数
必须严格使用beauty-html-reference.md中定义的颜色规范:
主背景色:#FFFFFF(配黑字:#1A202C)
标题栏背景:#000000(配白字)
主要强调色:#F85d42(用于重点突出)
辅助色:#74788d, #556EE6, #34c38f, #50a5f1, #f1b44c
对比度要求:≥ 4.5:1
颜色规范资源读取:
读取流程:
1. 检查 .ppt_assets/INDEX.md 中的颜色规范(如存在)
2. 检查 .ppt_assets/assets/colors.md(如存在)
3. 检查 beauty-html-reference.md 中的颜色规范
4. 读取并应用指定的CSS变量
颜色变量参考:
├─ --color-bg: #FFFFFF
├─ --color-header: #000000
├─ --color-accent: #F85d42
├─ --color-gray: #74788d
└─ --color-primary: #556EE6
根据规划的布局和组件,分阶段生成完整的HTML文件到本地。
由于HTML文件可能较大,必须分阶段写入本地文件:
阶段1:创建HTML框架和CSS样式
├─ 写入DOCTYPE和head部分
├─ 写入CSS变量和全局样式
└─ 写入导航栏结构
阶段2:按章节生成幻灯片
├─ 写入封面页
├─ 写入目录页
├─ 逐个写入章节首页
├─ 逐个写入内容页
└─ 写入结束页
阶段3:生成JavaScript和结束标签
├─ 写入导航功能JavaScript
├─ 写入键盘和触摸事件
└─ 写入body结束标签
步骤3.5.1:写入HTML头部
执行操作:
├─ 使用Write工具创建或覆盖输出HTML文件
├─ 写入<!DOCTYPE html>声明
├─ 写入<html lang="zh-CN">标签
├─ 写入<head>部分,包含meta标签和title
├─ 写入CSS样式(beauty-html-reference.md定义的颜色规范)
│ └─ :root变量定义
│ ├─ --color-bg: #FFFFFF
│ ├─ --color-header: #000000
│ ├─ --color-accent: #F85d42
│ ├─ --color-gray: #74788d
│ ├─ --color-blue: #556EE6
│ ├─ --color-green: #34c38f
│ ├─ --color-light-blue: #50a5f1
│ ├─ --color-yellow: #f1b44c
│ └─ 字体和间距变量
├─ 写入布局基础样式
└─ 写入导航栏样式
步骤3.5.2:写入幻灯片容器和导航控件 [强制更新]
执行操作:
├─ 写入.presentation-container容器(width: 100%, height: 100vh, overflow: hidden)
├─ 写入.slide基础样式:
│ ├─ position: absolute
│ ├─ top: 0, left: 0
│ ├─ width: 100%, height: 100%
│ ├─ opacity: 0, visibility: hidden
│ ├─ transition: opacity 0.4s ease, visibility 0.4s ease
│ └─ overflow-y: auto(每页内容可滚动)
├─ 写入.slide.active状态(opacity: 1, visibility: visible, z-index: 1)
├─ 写入.slide-header固定导航栏:
│ ├─ position: fixed, top: 0
│ ├─ height: 60px, background: #000000
│ ├─ color: white, z-index: 100
│ └─ 封面页/章节首页/结束页隐藏:.cover-slide .slide-header { display: none; }
├─ 写入导航按钮(.nav-button):
│ ├─ .nav-prev(上一页按钮,左侧)
│ ├─ .nav-next(下一页按钮,右侧)
│ └─ 必须显示:display: flex
├─ 写入页码计数器(.slide-counter):
│ ├─ position: fixed, bottom: 20px
│ ├─ 显示格式:"{当前页} / {总页数}"
│ └─ 必须显示:display: block
├─ 写入全屏按钮(.fullscreen-button):
│ ├─ position: fixed, top: 20px, right: 20px
│ └─ 必须显示:display: flex
└─ 禁止行为:
├─ 禁止删除或隐藏导航按钮
├─ 禁止删除或隐藏页码计数器
├─ 禁止使用长页面滚动格式
└─ 禁止省略JavaScript导航功能
幻灯片CSS样式模板 [强制使用]:
.presentation-container {
width: 100%;
height: 100vh;
position: relative;
overflow: hidden;
background: var(--color-bg, #FFFFFF);
}
.slide {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: var(--color-bg, #FFFFFF);
padding: var(--page-padding, 80px 60px 60px 60px);
box-sizing: border-box;
opacity: 0;
visibility: hidden;
transition: opacity 0.4s ease, visibility 0.4s ease;
overflow-y: auto;
}
.slide.active {
opacity: 1;
visibility: visible;
z-index: 1;
}
.slide-header {
position: fixed;
top: 0;
left: 0;
right: 0;
height: 60px;
background: var(--color-primary, #000000);
color: white;
display: flex;
align-items: center;
padding: 0 60px;
z-index: 100;
}
.cover-slide .slide-header,
.chapter-slide .slide-header,
.ending-slide .slide-header {
display: none;
}
导航功能JavaScript模板 [强制包含]:
// 幻灯片导航功能
document.addEventListener('DOMContentLoaded', function() {
const slides = document.querySelectorAll('.slide');
const totalSlides = slides.length;
let currentSlide = 1;
// 显示第一页
showSlide(1);
// 显示指定幻灯片
function showSlide(n) {
if (n < 1) n = 1;
if (n > totalSlides) n = totalSlides;
slides.forEach(slide => {
slide.classList.remove('active');
});
const targetSlide = document.getElementById('slide-' + n);
if (targetSlide) {
targetSlide.classList.add('active');
}
// 更新页码计数器
const counter = document.querySelector('.slide-counter');
if (counter) {
counter.textContent = n + ' / ' + totalSlides;
}
// 更新导航按钮状态
const prevBtn = document.querySelector('.nav-prev');
const nextBtn = document.querySelector('.nav-next');
if (prevBtn) prevBtn.disabled = (n === 1);
if (nextBtn) nextBtn.disabled = (n === totalSlides);
currentSlide = n;
}
// 上一页
document.querySelector('.nav-prev').addEventListener('click', function() {
showSlide(currentSlide - 1);
});
// 下一页
document.querySelector('.nav-next').addEventListener('click', function() {
showSlide(currentSlide + 1);
});
// 键盘导航
document.addEventListener('keydown', function(e) {
if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {
showSlide(currentSlide - 1);
} else if (e.key === 'ArrowRight' || e.key === 'ArrowDown' || e.key === ' ') {
showSlide(currentSlide + 1);
} else if (e.key === 'Home') {
showSlide(1);
} else if (e.key === 'End') {
showSlide(totalSlides);
}
});
// 触摸滑动支持
let touchStartX = 0;
let touchEndX = 0;
document.addEventListener('touchstart', function(e) {
touchStartX = e.changedTouches[0].screenX;
});
document.addEventListener('touchend', function(e) {
touchEndX = e.changedTouches[0].screenX;
if (touchStartX - touchEndX > 50) {
showSlide(currentSlide + 1);
} else if (touchEndX - touchStartX > 50) {
showSlide(currentSlide - 1);
}
});
// 全屏功能
document.querySelector('.fullscreen-button').addEventListener('click', function() {
if (document.fullscreenElement) {
document.exitFullscreen();
} else {
document.documentElement.requestFullscreen();
}
});
});
步骤3.5.3:写入封面页
执行操作:
├─ 写入<div class="slide cover-slide active" id="slide-1">
├─ 写入纯色背景样式(从以下颜色随机选取:#556EE6、#F85d42、#34c38f、#50a5f1、#f1b44c、#000000)
├─ 写入标题<h1>和副标题
├─ 写入品牌标识
└─ 封面页必须隐藏导航栏
步骤3.5.4:写入目录页
执行操作:
├─ 写入<div class="slide" id="slide-2">
├─ 使用.toc-grid网格布局
├─ 写入所有章节入口
├─ 添加点击跳转功能
└─ 恢复导航栏显示
步骤3.5.5:逐个写入章节首页
执行操作(每个章节):
├─ 写入<div class="slide chapter-slide" id="slide-N">
├─ 写入纯色背景样式(从以下颜色随机选取:#556EE6、#F85d42、#34c38f、#50a5f1、#f1b44c、#000000)
├─ 写入章节编号(01、02...)
├─ 写入章节标题
├─ 写入章节描述
├─ 写入章节概览列表(包含所有子标题和页码)
└─ 章节首页必须隐藏导航栏
步骤3.5.6:逐个写入内容页
执行操作(每个内容页):
├─ 写入<div class="slide" id="slide-N">
├─ 写入导航栏(显示当前标题)
├─ 根据布局类型选择结构:
│ ├─ 单列布局 → .single-column
│ ├─ 双列布局 → .two-column
│ └─ 三列布局 → .three-column
├─ 写入页面标题<h2>
├─ 写入页面导语(从步骤2.3.1获取)
├─ 写入详细内容(每个要点的完整描述)
├─ 写入关联说明(如果适用)
├─ 如果页面包含图表:
│ ├─ 使用两列布局(图表+洞察)
│ ├─ 左侧写入图表HTML
│ └─ 右侧写入洞察面板:
│ ├─ 图表概述(从步骤2.3.2获取)
│ ├─ 数据解读(从步骤2.3.2获取)
│ ├─ 洞察分析(从步骤2.3.2获取)
│ └─ 行动建议(从步骤2.3.2获取,推荐)
├─ 应用颜色规范
│ ├─ 强调色:#F85d42
│ ├─ 辅助色:#74788d
│ └─ 图表颜色:#556EE6、#34c38f、#50a5f1、#f1b44c
└─ 确保每页内容≤8个要点
内容页HTML结构模板 [NEW]:
<!-- 内容页 -->
<div class="slide" id="slide-N" data-title="[页面标题]">
<div class="slide-header">
<span class="slide-title">[页面标题]</span>
</div>
<div class="slide-content [布局类型]">
<h2 class="page-title">[页面标题]</h2>
<!-- 页面导语 -->
<div class="page-intro">
<p>[从步骤2.3.1获取的页面导语内容]</p>
</div>
<!-- 详细内容 -->
<div class="content-body">
<!-- 要点1 -->
<div class="content-point">
<h3 class="point-title">[要点标题]</h3>
<div class="point-content">
<p class="background-description"><strong>背景描述:</strong>[背景信息]</p>
<p class="main-description"><strong>具体内容:</strong>[完整描述]</p>
<p class="data-support"><strong>数据支撑:</strong>[相关数据]</p>
<p class="impact-analysis"><strong>影响分析:</strong>[影响说明]</p>
<p class="conclusion"><strong>结论说明:</strong>[结论]</p>
</div>
</div>
<!-- 要点2... -->
</div>
<!-- 关联说明 -->
<div class="content-connections">
<h4>要点关联说明</h4>
<p>[多个要点之间的逻辑关系说明]</p>
</div>
<!-- 图表页专用:图表+洞察 -->
<div class="chart-insight-layout" style="display: none;">
<div class="chart-container">
<!-- 图表HTML -->
</div>
<div class="insight-panel">
<div class="insight-section chart-overview">
<h4>图表概述</h4>
<p>[从步骤2.3.2获取]</p>
</div>
<div class="insight-section data-interpretation">
<h4>数据解读</h4>
<p>[从步骤2.3.2获取]</p>
</div>
<div class="insight-section insight-analysis">
<h4>洞察分析</h4>
<p>[从步骤2.3.2获取]</p>
</div>
<div class="insight-section action-recommendations">
<h4>行动建议</h4>
<p>[从步骤2.3.2获取,推荐]</p>
</div>
</div>
</div>
</div>
</div>
内容页CSS样式 [NEW]:
.page-intro {
background: var(--color-bg-secondary, #F5F7FA);
padding: var(--spacing-lg);
border-left: 4px solid var(--color-accent, #F85d42);
margin-bottom: var(--spacing-xl);
border-radius: 0 var(--radius-md, 4px) var(--radius-md, 4px) 0;
}
.page-intro p {
font-size: var(--font-size-body, 14px);
line-height: var(--line-height-relaxed, 1.6);
color: var(--color-text, #1A202C);
margin: 0;
}
.content-point {
margin-bottom: var(--spacing-xl);
padding-bottom: var(--spacing-lg);
border-bottom: 1px solid var(--color-border, #E2E8F0);
}
.content-point:last-child {
border-bottom: none;
margin-bottom: 0;
}
.point-title {
font-size: var(--font-size-h4, 18px);
font-weight: var(--font-weight-semibold, 600);
color: var(--color-blue, #556EE6);
margin-bottom: var(--spacing-md);
}
.point-content p {
font-size: var(--font-size-body, 14px);
line-height: var(--line-height-relaxed, 1.6);
color: var(--color-text, #1A202C);
margin-bottom: var(--spacing-sm);
}
.point-content strong {
color: var(--color-accent, #F85d42);
}
.content-connections {
background: var(--color-bg-secondary, #F5F7FA);
padding: var(--spacing-lg);
border-radius: var(--radius-md, 4px);
margin-top: var(--spacing-xl);
}
.content-connections h4 {
font-size: var(--font-size-h5, 16px);
font-weight: var(--font-weight-semibold, 600);
color: var(--color-gray, #74788d);
margin-bottom: var(--spacing-md);
}
.content-connections p {
font-size: var(--font-size-body, 14px);
line-height: var(--line-height-relaxed, 1.6);
color: var(--color-text, #1A202C);
}
.chart-insight-layout {
display: grid;
grid-template-columns: 55% 45%;
gap: var(--spacing-xl);
margin-top: var(--spacing-xl);
}
.chart-insight-layout .chart-container {
background: var(--color-bg-secondary, #F5F7FA);
padding: var(--spacing-lg);
border-radius: var(--radius-lg, 8px);
}
内容丰富化验证清单 [NEW]:
每个内容页生成时,必须验证以下要素:
□ 页面导语
├─ □ 包含1-2段核心观点概括
├─ □ 说明内容对整体报告的意义
└─ □ 建立读者阅读预期
□ 要点详细展开
├─ □ 每个要点有独立标题
├─ □ 每个要点包含背景描述
├─ □ 每个要点包含具体内容
├─ □ 每个要点包含数据支撑
├─ □ 每个要点包含影响分析
└─ □ 每个要点包含结论说明
□ 图表解释说明(如果页面包含图表)
├─ □ 图表概述完整
├─ □ 数据解读逐项展开
├─ □ 洞察分析提炼到位
└─ □ 行动建议(推荐)
□ 关联说明
├─ □ 揭示要点之间的逻辑关系
└─ □ 说明内容如何相互支撑
□ 禁止行为检查
├─ □ 没有只列出要点标题
├─ □ 没有省略解释说明
├─ □ 没有删除数据单位
├─ □ 没有简化专业术语
└─ □ 没有压缩完整描述
步骤3.5.7:写入结束页
执行操作:
├─ 写入<div class="slide ending-slide" id="slide-last">
├─ 写入纯色背景样式(从以下颜色随机选取:#556EE6、#F85d42、#34c38f、#50a5f1、#f1b44c、#000000)
├─ 写入"谢谢"标题
├─ 写入品牌标识
└─ 结束页必须隐藏导航栏
步骤3.5.8:写入导航功能JavaScript
执行操作:
├─ 写入导航状态变量
├─ 写入showSlide(n)函数
├─ 写入changeSlide(direction)函数
├─ 写入goToSlide(n)函数
├─ 写入键盘事件监听(←、→、空格、Home、End)
├─ 写入触摸滑动支持
└─ 写入全屏切换功能
步骤3.5.9:写入结束标签
执行操作:
├─ 写入导航按钮(上一页、下一页)
├─ 写入页码计数器
├─ 写入全屏按钮
├─ 写入</div>(关闭presentation-container)
├─ 写入</body>
└─ 写入</html>
生成HTML时,必须遵循以下规则:
1. 布局代码来源:
├─ 首选:.ppt_assets/INDEX.md中的布局代码(如存在)
├─ 次选:beauty-html/assets/layouts/*.html中的对应布局
└─ 参考:beauty-html/LAYOUTS_INDEX.md中的布局配置
2. 组件代码来源:
├─ 首选:.ppt_assets/INDEX.md中的组件代码(如存在)
├─ 次选:beauty-html/assets/components/*.html中的对应组件
└─ 参考:beauty-html/COMPONENTS_INDEX.md中的组件配置
3. CSS样式来源:
├─ beauty-html/mckinsey-design-standards.css
├─ beauty-html/assets/styles.css
└─ beauty-html-reference.md中的样式定义
4. 代码整合步骤:
a. 分阶段写入本地文件(每个Write操作≤500行)
b. 复制基础HTML结构
c. 插入布局容器
d. 填充组件内容
e. 应用颜色规范(beauty-html-reference.md)
f. 添加交互逻辑
阶段验证:
HTML结构验证:
功能验证:
规范验证:
内容丰富化验证 [NEW]:
NEVER单列布局放图表
NEVER省略组件匹配步骤
NEVER跳过资源读取
NEVER忽略项目特定资源优先级
NEVER使用AI生成色板
NEVER页面无导航栏
NEVER直接编写布局代码而不参考示例
✅ 步骤3.1:必读资源已读取(包括beauty-html/LAYOUTS_INDEX.md和COMPONENTS_INDEX.md) ✅ 步骤3.2:内容元素已识别 ✅ 步骤3.3:HTML组件已匹配(参考beauty-html示例) ✅ 步骤3.4:布局已选择(严格遵循beauty-html规则,优先使用.ppt_assets) ✅ 步骤3.5:HTML已生成(代码参考beauty-html示例文件)
准备进入步骤4:请输入"继续"或"next"
Use when working with Payload CMS projects (payload.config.ts, collections, fields, hooks, access control, Payload API). Use when debugging validation errors, security issues, relationship queries, transactions, or hook behavior.