name: ai-chapter-consolidate description: 使用AI将单个页面HTML文件合并为统一的章节文档。创建连续文档格式,以改善阅读体验和语义一致性。
AI章节合并技能
目的
本技能使用AI智能合并单个页面HTML文件为单个连续的章节文档。不仅仅是简单的拼接,AI会:
- 移除连续页面中的重复页眉/页脚
- 确保跨页面标题层次结构一致
- 在整个文档中保持语义结构
- 保留所有内容,无丢失或重复
- 创建流畅的内容流(无分页符)
结果是统一的章节文档,采用连续格式(单个page-container,单个page-content)。
操作步骤
-
收集章节的所有页面HTML文件
- 收集章节中所有页面的
04_page_XX.html文件 - 验证所有文件存在且有效
- 按页码升序排序
- 收集章节中所有页面的
-
从每个页面提取内容
- 加载每个HTML文件
- 从
<main class="page-content">中提取主要内容 - 保留语义类和结构
-
为AI合并准备输入
- 第1页:包含章节标题的完整内容
- 第2+页:提取内容部分,移除章节标题/导航
- 保留所有文本和结构
- 注意任何特殊部分(图表、表格等)
-
调用AI合并
- 将所有页面内容发送给Claude
- 请求合并为单个连续文档
- 指定结构要求
- 请求标题层次结构规范化
-
处理AI输出
- 从响应中提取合并后的HTML
- 验证结构完整性
- 确保所有页面都有体现
- 检查标题层次结构
-
保存合并后的文档
- 保存到:
output/chapter_XX/chapter_artifacts/chapter_XX.html - 创建元数据/日志文件
- 计算统计信息
- 保存到:
输入文件
每页HTML文件(由前一关卡验证):
output/chapter_XX/page_artifacts/page_16/04_page_16.html(章节开头)output/chapter_XX/page_artifacts/page_17/04_page_17.html(续页)output/chapter_XX/page_artifacts/page_18/04_page_18.html(续页)- …(章节中所有页面)
章节元数据(来自分析):
- 页面范围(章节的第一页和最后一页)
- 章节编号
- 章节标题
- 预期页面数量
AI合并提示
发送给Claude的提示:
您正在将单个页面HTML文档合并为单个连续的章节。
输入页面:
第1页(开头 - 包含章节标题):
[第1页的HTML内容]
第2页(续页):
[第2页的HTML内容]
第3页(续页):
[第3页的HTML内容]
...(所有页面)
任务:
将这些页面合并为一个HTML文档,使其作为一个连续的章节阅读。
要求:
1. 结构:
- 创建单个<div class="page-container">包装所有内容
- 创建单个<main class="page-content">用于所有内容
- 移除分页指示器或注释
- 创建真正的连续文档(无分页元素)
2. 章节标题:
- 保留第1页的章节标题(章节编号、标题)
- 移除续页中的章节标题/标题
- 如果第1页存在,保留章节导航
- 移除其他页面中的重复导航
3. 内容保留:
- 包含所有页面的所有文本内容
- 保留确切措辞(不进行释义)
- 维护所有列表、段落、表格
- 包含所有语义类
- 保留所有HTML结构
4. 标题层次结构:
- 在合并页面中规范化标题级别
- 第1页h1 = 章节标题(保持为h1)
- 每个页面的第一部分 = h2(主要部分)
- 子部分 = h3或h4(根据需要)
- 确保无层次跳跃(h1 → h3 无h2)
- 逻辑编号连续标题
5. 内容流:
- 移除页面特定的页眉/页脚
- 无缝合并,使内容自然流动
- 无人工中断或过渡
- 段落逻辑延续
- 列表保持连贯性
6. 图表和图像:
- 保留所有表格和图形
- 保留图表标题和说明
- 包含所有图像及正确路径
- 保留目录(如果存在)
7. CSS类:
- 保留所有语义类(section-heading、paragraph等)
- 保持一致的类使用
- 确保类匹配章节开头页面样式
- 不添加或移除类
8. 元数据:
- 包含标题标签:"Chapter N: Title - Pages X-Y"
- 保留meta charset和viewport
- 链接样式表:<link rel="stylesheet" href="../../styles/main.css">
输出:
仅返回单个有效的HTML5文档:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Chapter [N]: [Title] - Pages [X-Y]</title>
<link rel="stylesheet" href="../../styles/main.css">
</head>
<body>
<div class="page-container">
<main class="page-content">
<!-- 所有页面内容,无缝合并 -->
</main>
</div>
</body>
</html>
验证:
- 单个HTML5文档
- 所有页面都有体现
- 无分页符或过渡
- 正确的标题层次结构
- 所有文本保留
## 页面内容提取逻辑
发送给AI前,策略性提取内容:
### 第1页(开头):
- **包含**:整个页面HTML内容
- **原因**:包含章节标题、导航、第一部分
- **保留**:所有元素(标题、导航、分隔线、内容)
### 第2-N页(续页):
- **提取**:仅章节标题之后的内容
- **跳过**:章节编号、章节标题、章节导航
- **保留**:章节标题、段落、列表、图表
- **包含**:所有语义内容部分
### 提取示例:
```html
<!-- 第1页:保留所有内容 -->
<div class="chapter-header">
<span class="chapter-number">2</span>
<h1 class="chapter-title">Rights in Real Estate</h1>
</div>
<nav class="section-navigation">...</nav>
<h2 class="section-heading">REAL PROPERTY RIGHTS</h2>
<p class="paragraph">...</p>
<!-- 第2页:跳过标题,保留内容 -->
<!-- <div class="chapter-header">...</div> 已跳过 -->
<!-- <nav class="section-navigation">...</nav> 已跳过 -->
<h4 class="subsection-heading">Physical characteristics.</h4>
<p class="paragraph">...</p>
<ul class="bullet-list">...</ul>
<!-- 第3页:继续相同模式 -->
<h4 class="subsection-heading">Interdependence.</h4>
<p class="paragraph">...</p>
输出文件
合并后的章节HTML
路径:output/chapter_XX/chapter_artifacts/chapter_XX.html
结构:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Chapter 2: Rights in Real Estate - Pages 16-29</title>
<link rel="stylesheet" href="../../styles/main.css">
</head>
<body>
<div class="page-container">
<main class="page-content">
<!-- 章节标题(来自第1页) -->
<div class="chapter-header">...</div>
<nav class="section-navigation">...</nav>
<hr class="section-divider">
<!-- 第1页内容 -->
<h2 class="section-heading">REAL PROPERTY RIGHTS</h2>
<p class="paragraph">...</p>
<!-- 第2页内容(无缝合并) -->
<h4 class="subsection-heading">Physical characteristics.</h4>
<p class="paragraph">...</p>
<ul class="bullet-list">...</ul>
<!-- 第3页内容(继续流) -->
<h4 class="subsection-heading">Interdependence.</h4>
<p class="paragraph">...</p>
<!-- ... 更多剩余页面内容 ... -->
<!-- 最后一页内容 -->
<h2 class="section-heading">REGULATIONS AND LICENSING</h2>
<p class="paragraph">...</p>
</main>
</div>
</body>
</html>
合并日志
路径:output/chapter_XX/chapter_artifacts/consolidation_log.json
{
"chapter": 2,
"title": "Rights in Real Estate",
"book_pages": "16-29",
"pdf_indices": "15-28",
"consolidated_at": "2025-11-08T14:35:00Z",
"pages_merged": 14,
"pages_included": [
{
"page": 16,
"book_page": 17,
"status": "opening_chapter",
"content_type": "header_navigation_content"
},
{
"page": 17,
"book_page": 18,
"status": "continuation",
"content_type": "subsections_paragraphs"
},
{
"page": 18,
"book_page": 19,
"status": "continuation",
"content_type": "subsections_paragraphs_list"
}
// ... 所有页面
],
"content_statistics": {
"total_headings": {
"h1": 1,
"h2": 4,
"h3": 0,
"h4": 12
},
"total_paragraphs": 156,
"total_lists": 12,
"total_list_items": 42,
"total_tables": 3,
"total_images": 5,
"total_words": 12547
},
"ai_model": "claude-3-5-sonnet-20241022",
"consolidation_notes": "成功将14个页面合并为连续格式"
}
实现
通过Python包装器执行合并:
cd Calypso/tools
# 运行合并
python3 consolidate_chapter.py \
--chapter 2 \
--pages 15-28 \
--output "../output" \
--mapping "../analysis/page_mapping.json"
# 或直接通过Claude API调用:
# 编排器发送包含所有页面内容的AI提示
质量检查
传递到下一关卡前:
-
文件已创建
- [ ]
chapter_XX.html存在 - [ ] 文件是有效的HTML(可解析)
- [ ] 文件大小合理(通常> 50KB)
- [ ]
-
结构已验证
- [ ] 单个
<div class="page-container"> - [ ] 单个
<main class="page-content"> - [ ] 所有标签正确关闭
- [ ] 无重复内容
- [ ] 单个
-
内容完整性
- [ ] 所有页面都有体现
- [ ] 无缺失部分
- [ ] 段落/标题数量合理
- [ ] 所有文本内容存在
-
标题层次结构
- [ ] 以h1开头(章节标题)
- [ ] h1计数 = 1
- [ ] h2 = 主要部分
- [ ] h3/h4 = 子部分
- [ ] 无层次跳跃
-
元数据已记录
- [ ] 记录合并时间戳
- [ ] 记录合并页面数量
- [ ] 计算内容统计信息
- [ ] 保存日志文件
成功标准
✓ 所有页面合并为单个文档 ✓ 从第1页保留章节标题 ✓ 从续页中移除重复标题 ✓ 内容自然流动(连续格式) ✓ 标题层次结构正确 ✓ 所有文本内容保留 ✓ 语义类保持 ✓ 准备进行语义验证
错误处理
如果页面HTML不完整:
- 在合并日志中记录
- 包含可用的任何内容
- 继续验证(验证将捕获问题)
如果标题层次结构模糊:
- AI做出最佳判断
- 语义验证关卡将根据需要细化
- 在日志中记录决策
如果内容出现重复:
- AI自动去重
- 验证字数是否合理
- 记录任何异常内容模式
后续步骤
合并完成后:
- 质量关卡2(语义验证)检查语义结构
- 技能5(质量报告生成)生成最终报告
- 质量关卡3(视觉准确性检查)验证外观
设计说明
- 本技能是AI驱动的(使用概率合并)
- 依赖AI对文档结构的理解
- 产生连续格式(无分页符)
- 智能合并(不仅仅是拼接)
- 输出将通过验证关卡细化
测试
测试第2章合并:
# 输入:14个单独的页面HTML文件(第16-29页)
# 处理:AI合并为单个连续章节
# 输出:chapter_02.html(单个统一文档)
# 验证:
# - 文件大小是所有页面的总和
# - 内容逻辑流动
# - 标题层次结构合理
# - 无重复部分