# 内容生成步骤
**本文引用的文件**
- [server/src/modules/book-generator/README.md](file://server/src/modules/book-generator/README.md)
- [server/src/modules/book-generator/book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts)
- [server/src/modules/book-generator/book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts)
- [server/src/modules/book-generator/graph.ts](file://server/src/modules/book-generator/graph.ts)
- [server/src/modules/book-generator/book-generator.types.ts](file://server/src/modules/book-generator/book-generator.types.ts)
- [deploy-package/server/modules/book-generator/langgraph/controller.js](file://deploy-package/server/modules/book-generator/langgraph/controller.js)
- [deploy-package/server/modules/book-generator/langgraph/index.js](file://deploy-package/server/modules/book-generator/langgraph/index.js)
- [server/src/modules/book-generator/stage-manager.ts](file://server/src/modules/book-generator/stage-manager.ts)
- [server/src/modules/book-generator/book-generator.store.ts](file://server/src/modules/book-generator/book-generator.store.ts)
- [server/src/services/websocket.service.ts](file://server/src/services/websocket.service.ts)
- [server/src/modules/video-generator/video-generator.service.ts](file://server/src/modules/video-generator/video-generator.service.ts)
- [server/src/modules/player/player.service.ts](file://server/src/modules/player/player.service.ts)
- [server/src/modules/book-generator/strategies/sequential.strategy.ts](file://server/src/modules/book-generator/strategies/sequential.strategy.ts)
- [server/src/modules/book-generator/strategies/per-chapter.strategy.ts](file://server/src/modules/book-generator/strategies/per-chapter.strategy.ts)
- [server/src/modules/book-generator/strategies/one-step-outline.strategy.ts](file://server/src/modules/book-generator/strategies/one-step-outline.strategy.ts)
- [server/src/modules/book-generator/strategies/selector.ts](file://server/src/modules/book-generator/strategies/selector.ts)
- [server/src/modules/book-generator/strategies/types.ts](file://server/src/modules/book-generator/strategies/types.ts)
- [server/src/modules/book-generator/nodes/content.node.ts](file://server/src/modules/book-generator/nodes/content.node.ts)
- [server/src/modules/book-generator/nodes/outline.node.ts](file://server/src/modules/book-generator/nodes/outline.node.ts)
- [server/src/modules/book-generator/nodes/full-outline.node.ts](file://server/src/modules/book-generator/nodes/full-outline.node.ts)
- [server/src/modules/book-generator/nodes/foreword.node.ts](file://server/src/modules/book-generator/nodes/foreword.node.ts)
- [server/src/modules/book-generator/nodes/afterword.node.ts](file://server/src/modules/book-generator/nodes/afterword.node.ts)
- [server/src/modules/book-generator/nodes/per-chapter.node.ts](file://server/src/modules/book-generator/nodes/per-chapter.node.ts)
- [server/src/modules/book-generator/nodes/plan.node.ts](file://server/src/modules/book-generator/nodes/plan.node.ts)
- [server/src/modules/book-generator/nodes/sections.node.ts](file://server/src/modules/book-generator/nodes/sections.node.ts)
- [server/src/modules/book-generator/parsers/outline.parser.ts](file://server/src/modules/book-generator/parsers/outline.parser.ts)
- [server/src/modules/book-generator/parsers/section.parser.ts](file://server/src/modules/book-generator/parsers/section.parser.ts)
- [server/src/modules/book-generator/parsers/subsection.parser.ts](file://server/src/modules/book-generator/parsers/subsection.parser.ts)
- [server/src/modules/book-generator/prompts/builder.ts](file://server/src/modules/book-generator/prompts/builder.ts)
- [server/src/modules/book-generator/prompts/templates.ts](file://server/src/modules/book-generator/prompts/templates.ts)
## 目录
1. [引言](#引言)
2. [项目结构](#项目结构)
3. [核心组件](#核心组件)
4. [架构总览](#架构总览)
5. [详细组件分析](#详细组件分析)
6. [依赖关系分析](#依赖关系分析)
7. [性能考量](#性能考量)
8. [故障排查指南](#故障排查指南)
9. [结论](#结论)
10. [附录](#附录)
## 引言
本技术文档围绕“内容生成步骤”展开,系统性阐述书籍生成的全流程:从大纲生成、章节内容创作到全文整合;深入解析各生成节点的功能与实现、提示词工程、内容模板与质量控制策略;明确生成步骤的依赖关系与执行顺序、前置条件检查与错误处理机制;说明批量生成的协调机制(任务调度、进度同步与状态管理);并提供生成质量评估方法(内容审核、重复检测与合规性检查),以及具体的API调用示例与参数说明。
## 项目结构
书籍生成模块采用“LangGraph工作流 + 编排服务 + 节点与策略 + 提示词与解析器”的分层设计:
- LangGraph工作流:定义状态、节点与执行顺序,驱动生成过程
- 编排服务:负责批量生成的步骤编排、进度推送与状态管理
- 节点与策略:实现具体生成步骤(大纲、章节内容、前言、后记等)
- 提示词与解析器:支撑提示词工程与输出解析
- 控制器与存储:对外提供API、持久化与状态推进
```mermaid
graph TB
subgraph "前端"
FE["前端页面
生成入口与状态展示"]
end
subgraph "后端"
CTRL["控制器
book-generator.controller.ts"]
SVC["编排服务
book-generator.service.ts"]
STORE["存储接口
book-generator.store.ts"]
WS["WebSocket服务
websocket.service.ts"]
VID["视频服务
video-generator.service.ts"]
AUD["音频服务
player.service.ts"]
end
subgraph "LangGraph"
GRAPH["状态定义
graph.ts"]
LGCTRL["LangGraph控制器
deploy-package/.../langgraph/controller.js"]
end
FE --> CTRL
CTRL --> SVC
SVC --> STORE
SVC --> WS
SVC --> VID
SVC --> AUD
LGCTRL --> GRAPH
LGCTRL --> STORE
```
图表来源
- [server/src/modules/book-generator/book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts)
- [server/src/modules/book-generator/book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts)
- [server/src/modules/book-generator/book-generator.store.ts](file://server/src/modules/book-generator/book-generator.store.ts)
- [server/src/services/websocket.service.ts](file://server/src/services/websocket.service.ts)
- [server/src/modules/video-generator/video-generator.service.ts](file://server/src/modules/video-generator/video-generator.service.ts)
- [server/src/modules/player/player.service.ts](file://server/src/modules/player/player.service.ts)
- [deploy-package/server/modules/book-generator/langgraph/controller.js](file://deploy-package/server/modules/book-generator/langgraph/controller.js)
- [server/src/modules/book-generator/graph.ts](file://server/src/modules/book-generator/graph.ts)
章节来源
- [server/src/modules/book-generator/README.md](file://server/src/modules/book-generator/README.md)
- [server/src/modules/book-generator/book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts)
- [server/src/modules/book-generator/book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts)
## 核心组件
- LangGraph状态与工作流:定义生成过程中的状态字段、进度计算与节点连接
- 批量生成编排器:顺序执行内容生成、音频生成、音频合并、视频生成、视频合并,并推送进度
- 书籍生成控制器:提供LangGraph创建与生成、批量生成、取消与状态查询API
- 书籍生成类型定义:统一书籍、章节、任务、配置与提示词模板的类型
- 节点与策略:实现大纲生成、章节内容生成、前言/后记生成等具体步骤
- 提示词工程与解析器:支撑提示词构建、模板化与输出解析
章节来源
- [server/src/modules/book-generator/graph.ts](file://server/src/modules/book-generator/graph.ts)
- [server/src/modules/book-generator/book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts)
- [server/src/modules/book-generator/book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts)
- [server/src/modules/book-generator/book-generator.types.ts](file://server/src/modules/book-generator/book-generator.types.ts)
## 架构总览
整体架构分为三层:
- API层:控制器暴露REST接口,接收用户请求并触发生成流程
- 编排层:编排服务按步骤顺序执行,监控状态与进度,处理取消与异常
- 执行层:LangGraph工作流与节点负责具体生成动作,存储层持久化状态与内容
```mermaid
sequenceDiagram
participant U as "用户"
participant C as "控制器
book-generator.controller.ts"
participant S as "编排服务
book-generator.service.ts"
participant L as "LangGraph控制器
deploy-package/.../langgraph/controller.js"
participant G as "LangGraph状态
graph.ts"
participant ST as "存储
book-generator.store.ts"
U->>C : POST /api/book-generator/books/ : id/batch-generate
C->>S : 创建批量任务并启动后台执行
S->>L : 触发LangGraph生成异步
L->>G : 初始化状态并进入工作流
G->>ST : 写入大纲/章节/内容等中间态
S->>ST : 轮询检查进度并更新
S-->>U : 通过WebSocket推送进度
S->>S : 执行后续步骤音频/视频/合并
```
图表来源
- [server/src/modules/book-generator/book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts)
- [server/src/modules/book-generator/book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts)
- [deploy-package/server/modules/book-generator/langgraph/controller.js](file://deploy-package/server/modules/book-generator/langgraph/controller.js)
- [server/src/modules/book-generator/graph.ts](file://server/src/modules/book-generator/graph.ts)
- [server/src/modules/book-generator/book-generator.store.ts](file://server/src/modules/book-generator/book-generator.store.ts)
## 详细组件分析
### LangGraph状态与节点
- 状态字段:包含书籍ID、主题、生成层级、描述、规划结果、当前处理章节、已完成章节列表、完成标志、错误信息、进度、失败章节列表等
- 节点职责:
- 大纲生成节点:生成章级大纲
- 全量大纲节点:生成节与小节,并入库
- 章节内容写入节点:逐小节生成正文并入库
- 前言/后记节点:生成并写入元数据
```mermaid
flowchart TD
Start(["开始"]) --> Outline["生成章大纲"]
Outline --> FullOutline["为每章生成节与小节"]
FullOutline --> WriteChapters["逐小节生成正文"]
WriteChapters --> Foreword["生成前言"]
Foreword --> Afterword["生成后记"]
Afterword --> End(["结束"])
```
图表来源
- [server/src/modules/book-generator/README.md](file://server/src/modules/book-generator/README.md)
- [server/src/modules/book-generator/graph.ts](file://server/src/modules/book-generator/graph.ts)
章节来源
- [server/src/modules/book-generator/README.md](file://server/src/modules/book-generator/README.md)
- [server/src/modules/book-generator/graph.ts](file://server/src/modules/book-generator/graph.ts)
### 批量生成编排器
- 步骤类型:内容生成、音频生成、音频合并、视频生成、视频合并
- 执行流程:
- 初始化书籍信息与步骤列表
- 顺序执行每个步骤,推送进度与状态
- 步骤间检查取消标志,异常捕获并返回失败步骤
- 完成后更新书籍进度至100
- 进度计算:步骤级进度与节点级进度结合,确保只增不减
- 取消机制:通过任务ID设置取消标志,编排器在关键点检查并抛出取消异常
```mermaid
classDiagram
class BatchGenerationOrchestrator {
+taskId : string
+bookId : string
+steps : GenerationStep[]
+execute() Promise
-pushProgress(step, progress, message) void
-checkCancellation() void
-sleep(ms) Promise
-executeGenerateContent() Promise
-executeGenerateAudio() Promise
-executeMergeAudio() Promise
-executeGenerateVideo() Promise
-executeMergeVideo() Promise
}
```
图表来源
- [server/src/modules/book-generator/book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts)
章节来源
- [server/src/modules/book-generator/book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts)
### 书籍生成控制器
- LangGraph创建与生成API:支持新建书籍并启动LangGraph生成,或对已有书籍再次生成
- 批量生成API:启动内容、音频、合并、视频、合并的完整流程,支持步骤选择
- 取消与状态查询:为每个书籍维护运行中的批量任务,支持取消与状态查询
```mermaid
sequenceDiagram
participant C as "控制器"
participant S as "编排服务"
participant WS as "WebSocket"
participant ST as "存储"
C->>S : POST /books/ : id/batch-generate
S->>WS : 推送任务启动
loop 步骤循环
S->>S : 执行步骤并检查取消
S->>WS : 推送步骤进度
S->>ST : 更新书籍/章节状态
end
S->>WS : 推送完成
C-->>C : 返回任务信息
```
图表来源
- [server/src/modules/book-generator/book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts)
- [server/src/modules/book-generator/book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts)
- [server/src/services/websocket.service.ts](file://server/src/services/websocket.service.ts)
章节来源
- [server/src/modules/book-generator/book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts)
### 节点与策略
- 节点实现:大纲节点、全量大纲节点、章节内容节点、前言节点、后记节点、按章节点、规划节点、章节节点等
- 策略实现:顺序策略、按章策略、一步大纲策略、策略选择器与类型定义
- 解析器实现:大纲解析器、章节解析器、子章节解析器,用于结构化解析LLM输出
```mermaid
classDiagram
class OutlineNode {
+invoke(state) State
}
class FullOutlineNode {
+invoke(state) State
}
class PerChapterNode {
+invoke(state) State
}
class ContentNode {
+invoke(state) State
}
class ForewordNode {
+invoke(state) State
}
class AfterwordNode {
+invoke(state) State
}
OutlineNode --> FullOutlineNode : "生成节与小节"
FullOutlineNode --> PerChapterNode : "逐章"
PerChapterNode --> ContentNode : "生成正文"
ContentNode --> ForewordNode : "生成前言"
ForewordNode --> AfterwordNode : "生成后记"
```
图表来源
- [server/src/modules/book-generator/nodes/outline.node.ts](file://server/src/modules/book-generator/nodes/outline.node.ts)
- [server/src/modules/book-generator/nodes/full-outline.node.ts](file://server/src/modules/book-generator/nodes/full-outline.node.ts)
- [server/src/modules/book-generator/nodes/per-chapter.node.ts](file://server/src/modules/book-generator/nodes/per-chapter.node.ts)
- [server/src/modules/book-generator/nodes/content.node.ts](file://server/src/modules/book-generator/nodes/content.node.ts)
- [server/src/modules/book-generator/nodes/foreword.node.ts](file://server/src/modules/book-generator/nodes/foreword.node.ts)
- [server/src/modules/book-generator/nodes/afterword.node.ts](file://server/src/modules/book-generator/nodes/afterword.node.ts)
章节来源
- [server/src/modules/book-generator/nodes/outline.node.ts](file://server/src/modules/book-generator/nodes/outline.node.ts)
- [server/src/modules/book-generator/nodes/full-outline.node.ts](file://server/src/modules/book-generator/nodes/full-outline.node.ts)
- [server/src/modules/book-generator/nodes/per-chapter.node.ts](file://server/src/modules/book-generator/nodes/per-chapter.node.ts)
- [server/src/modules/book-generator/nodes/content.node.ts](file://server/src/modules/book-generator/nodes/content.node.ts)
- [server/src/modules/book-generator/nodes/foreword.node.ts](file://server/src/modules/book-generator/nodes/foreword.node.ts)
- [server/src/modules/book-generator/nodes/afterword.node.ts](file://server/src/modules/book-generator/nodes/afterword.node.ts)
### 提示词工程与内容模板
- 提示词构建器:根据书籍类型、目标受众、风格、规模等动态构建系统提示与章节提示
- 模板化:提供大纲、章节、前言、后记的模板接口,便于扩展与定制
- 质量控制:通过模板约束与解析器校验,确保输出结构化与一致性
章节来源
- [server/src/modules/book-generator/prompts/builder.ts](file://server/src/modules/book-generator/prompts/builder.ts)
- [server/src/modules/book-generator/prompts/templates.ts](file://server/src/modules/book-generator/prompts/templates.ts)
### 解析器与结构化输出
- 大纲解析器:解析章节与小节的层级结构
- 章节解析器:解析节内的要点与字数估算
- 子章节解析器:解析小节的具体内容与结构
章节来源
- [server/src/modules/book-generator/parsers/outline.parser.ts](file://server/src/modules/book-generator/parsers/outline.parser.ts)
- [server/src/modules/book-generator/parsers/section.parser.ts](file://server/src/modules/book-generator/parsers/section.parser.ts)
- [server/src/modules/book-generator/parsers/subsection.parser.ts](file://server/src/modules/book-generator/parsers/subsection.parser.ts)
### LangGraph控制器与索引
- LangGraph控制器:提供创建书籍并启动生成、对已有书籍再次生成的API
- LangGraph索引:导出类型与生成器,供编排服务调用
章节来源
- [deploy-package/server/modules/book-generator/langgraph/controller.js](file://deploy-package/server/modules/book-generator/langgraph/controller.js)
- [deploy-package/server/modules/book-generator/langgraph/index.js](file://deploy-package/server/modules/book-generator/langgraph/index.js)
## 依赖关系分析
- 控制器依赖编排服务与WebSocket服务,编排服务依赖存储、视频与音频服务
- LangGraph控制器依赖LangGraph状态与存储,驱动生成流程
- 节点与策略相互协作,形成完整的生成链路
- 解析器与提示词工程为节点提供输入与输出保障
```mermaid
graph LR
CTRL["book-generator.controller.ts"] --> SVC["book-generator.service.ts"]
SVC --> STORE["book-generator.store.ts"]
SVC --> WS["websocket.service.ts"]
SVC --> VID["video-generator.service.ts"]
SVC --> AUD["player.service.ts"]
LGCTRL["langgraph/controller.js"] --> GRAPH["graph.ts"]
LGCTRL --> STORE
```
图表来源
- [server/src/modules/book-generator/book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts)
- [server/src/modules/book-generator/book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts)
- [server/src/modules/book-generator/book-generator.store.ts](file://server/src/modules/book-generator/book-generator.store.ts)
- [server/src/services/websocket.service.ts](file://server/src/services/websocket.service.ts)
- [server/src/modules/video-generator/video-generator.service.ts](file://server/src/modules/video-generator/video-generator.service.ts)
- [server/src/modules/player/player.service.ts](file://server/src/modules/player/player.service.ts)
- [deploy-package/server/modules/book-generator/langgraph/controller.js](file://deploy-package/server/modules/book-generator/langgraph/controller.js)
- [server/src/modules/book-generator/graph.ts](file://server/src/modules/book-generator/graph.ts)
## 性能考量
- 并行化:LangGraph工作流支持多节点并行生成,提升吞吐
- 轮询与异步:内容生成与音频/视频生成采用异步与轮询方式,避免阻塞
- 进度只增不减:通过reducer确保进度不会因回退而倒退,提升可观测性
- 超时与重试:编排器设置最大等待时间与步骤级重试策略,增强鲁棒性
- 存储与索引:数据库表对bookId、level、parentId建立索引,加速查询与更新
## 故障排查指南
- 取消任务:通过取消API设置取消标志,编排器在检查点抛出异常并返回已执行步骤
- 失败定位:编排器记录失败步骤与错误信息,可通过状态查询接口查看
- 状态监控:通过WebSocket推送实时进度,前端可据此展示生成状态
- 常见问题:
- 书籍不存在:创建/生成前需验证书籍ID
- 步骤无效:仅允许指定的步骤集合
- 任务冲突:同一书籍同时只能有一个批量任务运行
- 超时:若超过最大等待时间,编排器会抛出超时错误
章节来源
- [server/src/modules/book-generator/book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts)
- [server/src/modules/book-generator/book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts)
## 结论
该内容生成体系以LangGraph为核心,结合编排服务与节点策略,实现了从大纲到全文的自动化生成,并通过提示词工程与解析器保证输出质量。批量生成机制提供了完善的任务调度、进度同步与状态管理能力,适合在生产环境中稳定运行。建议持续完善质量评估与合规检查机制,进一步提升生成内容的可用性与安全性。
## 附录
### API参考与调用示例
- 创建书籍并启动LangGraph生成
- 方法与路径:POST /api/book-generator/langgraph/books
- 请求体参数:
- title: string(必填)
- description: string(必填)
- bookScale: string(可选,默认“标准教程”)
- 返回:任务启动状态与bookId
- 对已有书籍启动LangGraph生成
- 方法与路径:POST /api/book-generator/langgraph/books/:id/generate
- 路径参数:id(书籍ID)
- 返回:任务启动状态与taskId
- 一键完整生成书籍
- 方法与路径:POST /api/book-generator/books/:id/batch-generate
- 路径参数:id(书籍ID)
- 请求体参数:
- steps: GenerationStep[](可选,步骤集合,默认全部)
- 返回:任务ID、书籍ID、状态与步骤列表
- 取消批量生成任务
- 方法与路径:POST /api/book-generator/books/:id/batch-generate/cancel
- 返回:taskId与bookId
- 查询批量生成任务状态
- 方法与路径:GET /api/book-generator/books/:id/batch-generate/status
- 返回:是否运行中、taskId与bookId
章节来源
- [deploy-package/server/modules/book-generator/langgraph/controller.js](file://deploy-package/server/modules/book-generator/langgraph/controller.js)
- [server/src/modules/book-generator/book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts)
### 生成质量评估方法
- 内容审核:对生成的小节正文进行关键词过滤与敏感词检测
- 重复检测:对章节内容进行去重与相似度比对,避免AI生成重复段落
- 合规性检查:依据法律法规与平台规范,对前言、后记与正文进行合规性扫描
- 结构完整性:通过解析器校验大纲与章节结构,确保层级正确与字数估算合理
章节来源
- [server/src/modules/book-generator/prompts/builder.ts](file://server/src/modules/book-generator/prompts/builder.ts)
- [server/src/modules/book-generator/parsers/outline.parser.ts](file://server/src/modules/book-generator/parsers/outline.parser.ts)
- [server/src/modules/book-generator/parsers/section.parser.ts](file://server/src/modules/book-generator/parsers/section.parser.ts)
- [server/src/modules/book-generator/parsers/subsection.parser.ts](file://server/src/modules/book-generator/parsers/subsection.parser.ts)