Skill: hexidyg/shorts-builder-cn (version 1.0.0)

--- name: story-pipeline description: 剧情生成管道流技能。支持多剧集连续生成、图谱管理、AI质检+人工确认的双控机制。自动管理人物、场景、钩子的关联关系。 --- # 剧情生成管道流 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. **多管道**：支持同时运行多个不同主题的管道

path: scripts/generate_engine.py
content: #!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
"""



Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)