Story Master/通过图谱和管道方式创建剧本
v1.0.1剧情生成管道流技能。支持多剧集连续生成、图谱管理、AI质检+人工确认的双控机制。自动管理人物、场景、钩子的关联关系。
Security Scan
OpenClaw
Suspicious
medium confidencePurpose & Capability
技能名和描述表明这是一个本地/管道化的剧情生成与图谱管理工具 — 代码实现(graph_manager.py)只使用本地 JSON 存储(data/graphs 和 data/pipeline_state.json),这与 SKILL.md 中多处声称“图谱存储(调用远程接口)”和在文档顶部列出的图谱接口 URL (https://framedream.art/...) 不一致。如果远程接口确实被期望使用,代码没有任何配置项、环境变量或凭据字段来安全配置该外部 URL,这种不匹配是值得关注的。
Instruction Scope
SKILL.md 指示流程会调用远程图谱接口并写入/查询远端 webhook,但实际代码的 GraphManager 仅在本地文件系统读写,没有网络调用。SKILL.md 还在不同地方对重试次数给出矛盾说明(文档中有“最多3次”的表述,而 pipeline.py 的注释和 process_ai_review 实际上允许无限重试)。这些不一致会导致运行时行为与用户预期不符(例如数据可能在本地保存或在远端发送),应在安装前澄清。其他运行指令主要在 data/ 目录读写,与技能目的相关且有限。
Install Mechanism
没有安装规范(instruction-only / 无安装脚本)。这降低了安装时的代码下载风险;代码文件随 skill bundle 一起提供且没有外部依赖下载步骤。
Credentials
清单中没有要求任何环境变量或凭据,这本身是可接受的,但 SKILL.md 中公开了一个远端 webhook URL(https://framedream.art/...)并暗示会通过网络存取图谱。如果远端接口被实际使用,应当有配置项或凭据声明;当前既没有 env var 也没有在代码中看到对该远端的调用,造成不透明和潜在风险(若维护者后续改变代码去调用该 URL 而未在 manifest 中声明,这将是问题)。
Persistence & Privilege
技能会在本地写入和读取 data/pipeline_state.json 及 data/graphs/*,并提供删除图谱的接口。这与其功能声明一致,权限范围限于本包相对的 data/ 目录,没有要求系统级权限或修改其它技能的配置。always: false(默认)且没有声明强制常驻,自治调用留为平台默认。
What to consider before installing
要点与建议(简短、可操作):
- 主要不一致:SKILL.md 多处宣称会使用远端图谱接口并给出 webhook URL,但当前代码(graph_manager.py)只在本地 data/graphs/*.json 中读写;请作者或发布者确认是否应当调用远端接口,以及如何安全配置URL/凭据。
- 重试逻辑矛盾:文档中提到“AI 审核失败最多重试3次”,但 pipeline.py 注释和实现允许无限重试;如果你担心资源或成本(例如并发生成消耗),要求固定的最大重试次数或限流策略。
- 如果你准备运行此技能:
- 先在隔离环境(沙箱或受限容器)中运行,观察是否有网络连接尝试(使用网络监控/防火墙),以确认是否会访问 SKILL.md 提到的远端 URL。
- 检查并备份 data/pipeline_state.json 和 data/graphs 目录,避免意外数据覆盖或泄露敏感内容。
- 如果希望使用远端图谱服务,要求作者把远端 URL 和凭据作为可配置项(环境变量或配置文件),并在 manifest 中声明所需的 env vars 与安全要求。
- 要求作者修正文档与代码之间的矛盾(重试次数、图谱存储位置、是否会发送数据到外部),并提供版本说明或变更日志,确保透明度。
总体建议:在得到上述澄清前,将此技能标记为“仅在受控/测试环境中使用”或等待作者更新以消除这些不一致。Like a lobster shell, security has layers — review code before you run it.
latest
剧情生成管道流 Skill
功能说明
本技能实现一个完整的剧情生成管道:
- 连续剧集生成 - 基于前集内容自动生成下一集
- 图谱管理 - 人物、场景、钩子的关联存储与查询
- 双确认控制 - AI质检通过后,等待人工确认
- 状态持久化 - 支持暂停、恢复、多剧本并行
核心工作流程
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────┐
│ 生成第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集的图谱:
graph_manager.query_graph(pipeline_id, episode=N-1)
返回:
- 上一集的完整内容
- 人物列表及其状态
- 未闭环的钩子
- 关键场景
- 关系网络
图谱存储
用户确认后,存储当前集的完整内容:
graph_manager.save_graph(pipeline_id, episode=N, content)
存储内容:整集的生成结果(不拆分要素)
状态管理
状态文件:data/pipeline_state.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
查询接口:
{
"action": "query",
"pipeline_id": "pipeline_2026-03-05-001",
"episode": 2
}
存储接口:
{
"action": "save",
"pipeline_id": "pipeline_2026-03-05-001",
"episode": 3,
"content": "第3集的完整生成内容..."
}
剧集生成逻辑
第一集生成
基于用户提供的主题和目标,生成:
- 主要人物设定
- 初始场景
- 核心冲突
- 开放钩子
后续剧集生成
基于图谱查询结果:
- 读取上一集内容和未闭环钩子
- 延续剧情主线
- 处理钩子(延续/闭环/新增)
- 推进人物成长弧
- 调整情感曲线
结局生成
当达到目标集数或用户要求结束时:
- 闭环所有剩余钩子
- 完成人物成长弧
- 生成总结性结局
注意事项
- 重试机制 - AI 审核不通过时,最多重试 3 次
- 暂停恢复 - 暂停后可通过 pipeline_id 恢复
- 多管道 - 支持同时运行多个不同主题的管道
- 图谱一致性 - 确保人物、钩子的关联关系正确
- 钩子管理 - 追踪每个钩子的创建和闭环状态
完整工作流程
步骤 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 接口说明
创建管道
create_pipeline(theme: str, target_episodes: int, style: str = "写实电影感")
# 返回:{"success": True, "pipeline_id": "...", "message": "..."}
开始生成
start_generation(pipeline_id: str)
# 返回:{"success": True, "episode": N, "prompt": "生成提示词"}
提交剧集
submit_episode(pipeline_id: str, episode: int, content: str)
# 返回:{"success": True, "review_prompt": "审核提示词"}
处理AI审核
process_ai_review(pipeline_id: str, episode: int, ai_result: str, content: str)
# 返回:{"success": True, "passed": True/False, ...}
用户确认
user_confirm(pipeline_id: str, action: str, note: str = None)
# action: "approve" / "modify" / "pause" / "end"
# 返回:{"success": True, "status": "...", ...}
获取状态
get_status(pipeline_id: str)
# 返回:管道当前状态信息
列出管道
list_pipelines()
# 返回:所有管道列表
恢复管道
resume_pipeline(pipeline_id: str)
# 返回:恢复结果
示例对话
用户:开始一个新管道,主题:修仙少年,目标20集
AI:好的,创建管道 pipeline_20260305160000
正在生成第1集...
📋 第1集预览
━━━━━━━━━━━━━━━━━━
【修仙之路开启】
少年李云在山中发现一块神秘玉佩...
✅ AI 评分:9.0/10
✅ 新增钩子:H-001 神秘玉佩来历
请确认:通过/修改/暂停/结束
用户:通过
AI:正在存储图谱...
开始生成第2集...
注意事项
- 重试机制:AI审核不通过时,最多重试3次
- 状态持久化:所有状态保存在
data/pipeline_state.json - 图谱存储:通过远程接口存储,需要网络连接
- 暂停恢复:暂停后可通过
resume_pipeline恢复 - 多管道:支持同时运行多个不同主题的管道
Comments
Loading comments...
