# Story Pipeline

> 剧情生成管道流技能。支持多剧集连续生成、图谱管理、AI质检+人工确认的双控机制。自动管理人物、场景、钩子的关联关系。

- Skill: `dvcrn/story-pipeline` (Agent Skill, multi-file: 10 files)
- Install (CLI): `npx skillmds@latest add dvcrn/story-pipeline`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dvcrn/story-pipeline/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: dvcrn (https://skillmd.com/u/dvcrn)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/dvcrn/story-pipeline

---


# 剧情生成管道流 Skill

## 功能说明

本技能实现一个完整的剧情生成管道：

1. **连续剧集生成** - 基于前集内容自动生成下一集
2. **图谱管理** - 人物、场景、钩子的关联存储与查询
3. **双确认控制** - AI质检通过后，等待人工确认
4. **状态持久化** - 支持暂停、恢复、多剧本并行

---

## 核心工作流程

```
┌──────────┐    ┌──────────┐    ┌──────────┐    ┌──────────────┐
│ 生成第N集 │ -> │ AI质检   │ -> │ 图谱存储  │ -> │ 等待人工确认  │
└──────────┘    └──────────┘    └──────────┘    └──────────────┘
     │              │               │                   │
     ▼              ▼               ▼                   ▼
 查询图谱       通过/重试       存储关联            继续/修改/结束
```

---

## 使用方法

### 启动新管道

```
用户：开始一个新的剧情管道，主题：中国小女孩逆袭，目标集数：10集
```

### 继续管道

```
用户：继续剧情管道 [pipeline_id]
```

### 用户确认操作

```
用户：通过，继续下一集
用户：修改：[具体意见]
用户：暂停
用户：结束
```

---

## 双确认控制机制

### 第一层：AI 质量检查

每集生成后，AI 自动检查：

| 检查项 | 说明 |
|--------|------|
| 剧情连贯性 | 与前集衔接是否自然 |
| 人物一致性 | 角色行为是否符合设定 |
| 钩子处理 | 新增/闭环钩子是否合理 |
| 节奏控制 | 剧情推进是否恰当 |
| 情感曲线 | 情绪起伏是否合理 |

**评分标准：** 0-10分，低于7分触发重试（最多3次）

### 第二层：人工确认

AI 审核通过后，展示预览并等待用户确认：

```
📋 第N集预览
━━━━━━━━━━━━━━━━━━━━━━━━
【剧情摘要】
...

✅ AI 评分：8.5/10
✅ 钩子状态：新增1个，闭环1个

请选择：
1️⃣ 通过，继续下一集
2️⃣ 需要修改（请说明）
3️⃣ 暂停
4️⃣ 结束
━━━━━━━━━━━━━━━━━━━━━━━━
```

---

## 图谱管理

### 图谱查询

生成第N集前，查询第N-1集的图谱：

```python
graph_manager.query_graph(pipeline_id, episode=N-1)
```

返回：
- 上一集的完整内容
- 人物列表及其状态
- 未闭环的钩子
- 关键场景
- 关系网络

### 图谱存储

用户确认后，存储当前集的完整内容：

```python
graph_manager.save_graph(pipeline_id, episode=N, content)
```

存储内容：整集的生成结果（不拆分要素）

---

## 状态管理

### 状态文件：`data/pipeline_state.json`

```json
{
  "pipelines": {
    "pipeline_2026-03-05-001": {
      "theme": "中国小女孩逆袭",
      "target_episodes": 10,
      "current_episode": 3,
      "status": "waiting_user_confirm",
      "created_at": "2026-03-05T15:00:00",
      "updated_at": "2026-03-05T15:30:00",
      "ai_review": {
        "score": 8.5,
        "checks": {...}
      },
      "last_output": {
        "episode": 3,
        "summary": "...",
        "content": "完整内容..."
      }
    }
  }
}
```

### 状态类型

| 状态 | 说明 |
|------|------|
| `generating` | 正在生成 |
| `ai_reviewing` | AI 审核中 |
| `waiting_user_confirm` | 等待人工确认 |
| `paused` | 已暂停 |
| `completed` | 已完成 |
| `error` | 错误状态 |

---

## 脚本说明

### pipeline.py - 主控循环

- 初始化管道
- 协调各模块
- 处理用户指令
- 管理循环状态

### ai_reviewer.py - AI 质量检查

- 执行质量评分
- 生成审核报告
- 判断是否通过

### episode_generator.py - 剧集生成

- 基于图谱上下文生成新剧集
- 处理钩子的延续与闭环
- 处理重试逻辑

### graph_manager.py - 图谱管理

- 图谱查询（调用远程接口）
- 图谱存储（调用远程接口）
- 本地缓存管理

---

## 接口说明

### 图谱接口

**URL:** `https://framedream.art/n8n/webhook-test/open_frame_construct`

**查询接口：**
```json
{
  "action": "query",
  "pipeline_id": "pipeline_2026-03-05-001",
  "episode": 2
}
```

**存储接口：**
```json
{
  "action": "save",
  "pipeline_id": "pipeline_2026-03-05-001",
  "episode": 3,
  "content": "第3集的完整生成内容..."
}
```

---

## 剧集生成逻辑

### 第一集生成

基于用户提供的主题和目标，生成：
- 主要人物设定
- 初始场景
- 核心冲突
- 开放钩子

### 后续剧集生成

基于图谱查询结果：
1. 读取上一集内容和未闭环钩子
2. 延续剧情主线
3. 处理钩子（延续/闭环/新增）
4. 推进人物成长弧
5. 调整情感曲线

### 结局生成

当达到目标集数或用户要求结束时：
- 闭环所有剩余钩子
- 完成人物成长弧
- 生成总结性结局

---

## 注意事项

1. **重试机制** - AI 审核不通过时，最多重试 3 次
2. **暂停恢复** - 暂停后可通过 pipeline_id 恢复
3. **多管道** - 支持同时运行多个不同主题的管道
4. **图谱一致性** - 确保人物、钩子的关联关系正确
5. **钩子管理** - 追踪每个钩子的创建和闭环状态

---

## 完整工作流程

### 步骤 1：创建管道

```
用户：开始一个新管道，主题：修仙少年，目标20集

AI：好的，创建管道 pipeline_20260305160000
    主题：修仙少年
    目标：20集
    风格：写实电影感
    
    状态：已初始化，准备生成第1集
```

### 步骤 2：生成剧集

AI 调用 `start_generation(pipeline_id)` 获取生成提示词，然后根据提示词生成剧集内容。

### 步骤 3：提交AI审核

AI 调用 `submit_episode(pipeline_id, episode, content)` 提交生成的内容，然后执行AI审核。

### 步骤 4：处理审核结果

AI 调用 `process_ai_review(pipeline_id, episode, ai_result, content)` 处理审核结果。

如果审核不通过（得分<7），自动重试（最多3次）。

### 步骤 5：等待用户确认

审核通过后，展示预览并等待用户确认：

```
📋 第1集预览
━━━━━━━━━━━━━━━━━━━━━━━━
【修仙之路开启】

少年李云在山中发现一块神秘玉佩，
从此踏上了修仙之路...

✅ AI 评分：9.0/10
✅ 新增钩子：H-001 神秘玉佩来历

━━━━━━━━━━━━━━━━━━━━━━━━

请选择：
1️⃣ 通过，继续下一集
2️⃣ 需要修改（请说明）
3️⃣ 暂停
4️⃣ 结束
```

### 步骤 6：处理用户确认

用户确认后，AI 调用 `user_confirm(pipeline_id, action, note)`：

- **approve**：存储图谱，准备下一集
- **modify**：根据意见重新生成
- **pause**：暂停管道
- **end**：结束管道

### 步骤 7：循环生成

重复步骤 2-6，直到达到目标集数或用户结束。

---

## API 接口说明

### 创建管道
```python
create_pipeline(theme: str, target_episodes: int, style: str = "写实电影感")
# 返回：{"success": True, "pipeline_id": "...", "message": "..."}
```

### 开始生成
```python
start_generation(pipeline_id: str)
# 返回：{"success": True, "episode": N, "prompt": "生成提示词"}
```

### 提交剧集
```python
submit_episode(pipeline_id: str, episode: int, content: str)
# 返回：{"success": True, "review_prompt": "审核提示词"}
```

### 处理AI审核
```python
process_ai_review(pipeline_id: str, episode: int, ai_result: str, content: str)
# 返回：{"success": True, "passed": True/False, ...}
```

### 用户确认
```python
user_confirm(pipeline_id: str, action: str, note: str = None)
# action: "approve" / "modify" / "pause" / "end"
# 返回：{"success": True, "status": "...", ...}
```

### 获取状态
```python
get_status(pipeline_id: str)
# 返回：管道当前状态信息
```

### 列出管道
```python
list_pipelines()
# 返回：所有管道列表
```

### 恢复管道
```python
resume_pipeline(pipeline_id: str)
# 返回：恢复结果
```

---

## 示例对话

```
用户：开始一个新管道，主题：修仙少年，目标20集

AI：好的，创建管道 pipeline_20260305160000
    正在生成第1集...
    
    📋 第1集预览
    ━━━━━━━━━━━━━━━━━━
    【修仙之路开启】
    少年李云在山中发现一块神秘玉佩...
    
    ✅ AI 评分：9.0/10
    ✅ 新增钩子：H-001 神秘玉佩来历
    
    请确认：通过/修改/暂停/结束
    
用户：通过

AI：正在存储图谱...
    开始生成第2集...
```

---

## 注意事项

1. **重试机制**：AI审核不通过时，最多重试3次
2. **状态持久化**：所有状态保存在 `data/pipeline_state.json`
3. **图谱存储**：通过远程接口存储，需要网络连接
4. **暂停恢复**：暂停后可通过 `resume_pipeline` 恢复
5. **多管道**：支持同时运行多个不同主题的管道
