freshcrate
Home > MCP Servers > story-shot-agent

story-shot-agent

剧本分镜智能体(PenShot):剧本→分镜→片段→prompt | 基于 LangGraph+LLM,自动解析任意格式剧本,生成 Sora/Veo/Runway 等模型可用的连贯text-to-video提示词。保持角色/剧情跨片段一致,支持 MCP/REST API/函数调用 | Python库 + A2A集成。(LLM-powered screenplay-to-video-prompt a

Description

剧本分镜智能体(PenShot):剧本→分镜→片段→prompt | 基于 LangGraph+LLM,自动解析任意格式剧本,生成 Sora/Veo/Runway 等模型可用的连贯text-to-video提示词。保持角色/剧情跨片段一致,支持 MCP/REST API/函数调用 | Python库 + A2A集成。(LLM-powered screenplay-to-video-prompt agent. Break scripts into Sora/Veo-ready shots with character consistency. LangGraph + Chroma + MCP)

README

剧本分镜智能体 (Penshot)

一个基于多智能体协作的剧本分镜系统,能够将多种格式的剧本拆分为符合 AI 文生视频时长的脚本单元,输出高质量分镜片段描述,并保证叙事连续性。系统基于 LangChain + LangGraph 构建,通过 LLM 将任意格式剧本解析转换为符合主流模型的“Text to Video”提示词片段,支持任务池优先级排队、多层级记忆管理与 Chroma 向量检索。

中文 | English | 文档 | PyPI

License: MIT Python 3.10+ LangGraph PyPI Downloads GitHub stars


核心功能

特性 说明
智能剧本解析 自动识别场景、对话和动作指令,理解故事结构,支持长文本分段处理
精准时序规划 按镜头粒度智能切分内容,分配合理时长,严格适配 AI 视频生成模型的时长限制
连续性守护 基于任务池优先级排队、多层级记忆(短期/中期/长期)与 Chroma 向量检索,确保相邻分镜间角色状态、场景和情节高度一致
高质量提示词输出 生成详细的中英双语画面描述、负面提示词及音频提示词,开箱即用
多模型兼容 支持 OpenAI、Qwen、DeepSeek、Ollama 等主流 LLM 提供商,可插拔切换
多协议集成 提供 Python SDK、REST API、LangGraph 节点、A2A 协作协议与 MCP 标准接口
健壮性与可追溯 内置自动重试、错误降级机制,每个分镜片段均可双向追溯至原剧本位置

系统架构与创作流程

flowchart TD
    subgraph Input [输入层]
        A1[客户端 / 上游智能体] --> A2[REST API / MCP / A2A]
        A2 --> A3[任务管理器]
    end

    subgraph Core [LangGraph 多智能体核心工作流]
        direction TB
        
        P1[剧本解析智能体] --> P2[分镜生成智能体]
        P2 --> P3[视频分割智能体]
        P3 --> P4[提示词转换智能体]
        P4 --> P5[质量审计智能体]
        P5 --> P6[连续性守护智能体]
        P6 --> P7[辅助生成智能体<br/>三视图/背景图/关键帧]
        
        subgraph Control [控制节点]
            C1[循环检查] --> C2[错误处理]
            C2 --> C3[人工干预]
            C3 --> C4[结果生成]
        end
        
        P1 -.->|重试/修复| Control
        P2 -.->|重试/修复| Control
        P3 -.->|重试/修复| Control
        P4 -.->|重试/修复| Control
        P5 -.->|重试/修复| Control
        P6 -.->|重试/修复| Control
        Control -.->|路由决策| P1
    end

    subgraph Memory [记忆层]
        M1[(短期记忆)]
        M2[(中期记忆)]
        M3[(长期记忆)]
        M4[(向量数据库<br/>Chroma)]
        
        M1 <--> Core
        M2 <--> Core
        M3 <--> Core
        M4 <--> Core
    end

    subgraph Output [输出层]
        O1[Workflow Output Fixer<br/>片段序列修复] --> O2[结果格式化]
        O2 --> O3[JSON / SDK / MCP / A2A]
    end

    subgraph Downstream [下游渲染]
        D1[多模型适配器] --> D2[Sora/Veo/Runway/可灵/SVD]
        D2 --> D3[FFmpeg 合成]
        D3 --> D4[最终成片]
    end

    A3 --> P1
    P7 --> O1
    O3 --> D1
Loading

该系统为典型的自然语言处理(NLP)应用场景,通过多智能体协作与记忆机制实现端到端的分镜转码。详细架构设计、记忆池实现与一致性保障机制请参考:《剧本分镜智能体架构设计与实现》


快速开始

1. 环境准备

# 方式 A:直接安装 PyPI 包(推荐)
pip install penshot

# 方式 B:开发模式安装(源码)
git clone https://github.com/neopen/story-shot-agent.git
cd story-shot-agent
pip install -e .

2. 环境配置

cp .env.example .env

编辑 .env 文件,配置必要的 LLM 与 Embedding 参数:

########################## LLM 模型配置 #########################
PENSHOT_LLM__DEFAULT__BASE_URL=https://dashscope-intl.aliyuncs.com/api/v1
PENSHOT_LLM__DEFAULT__API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PENSHOT_LLM__DEFAULT__MODEL_NAME=qwen-plus
PENSHOT_LLM__DEFAULT__TIMEOUT=30

########################## 嵌入模型配置 #########################
PENSHOT_EMBED__DEFAULT__BASE_URL=https://dashscope-intl.aliyuncs.com/api/v1
PENSHOT_EMBED__DEFAULT__API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PENSHOT_EMBED__DEFAULT__MODEL_NAME=text-embedding-v4

########################## Redis 配置 ##########################
PENSHOT_REDIS_URL=redis://:123456@localhost:6379/0

3. 启动服务

python main.py

服务默认运行于 http://0.0.0.0:8000,提供完整的 REST API 接口。

4. API 调用示例

提交分镜任务:

curl -X POST 'http://localhost:8000/api/v1/storyboard' \
-H 'Content-Type: application/json' \
-d '{
  "script": "深夜11点,城市公寓客厅,窗外大雨滂沱。林然裹着旧羊毛毯蜷在沙发里,电视静音播放着黑白老电影..."
}'

查询任务状态:

curl 'http://localhost:8000/api/v1/status/{task_id}'

获取任务结果:

curl 'http://localhost:8000/api/v1/result/{task_id}'

多场景集成方式

1. Python SDK 调用

from penshot.api import create_penshot_agent

agent = create_penshot_agent(max_concurrent=5)

script = "早晨,一个女孩在咖啡馆读书,阳光透过窗户..."
task_id = agent.breakdown_script_async(
    script,
    callback=lambda r: print(f"任务 {r.task_id} 已完成")
)

status = agent.get_task_status(task_id)
result = await agent.wait_for_result_async(task_id)

完整示例:direct_usage.py

2. 嵌入 FastAPI Web 应用

可通过标准 HTTP 接口集成至现有业务系统:

from fastapi import FastAPI, HTTPException
from penshot.api import create_penshot_agent

app = FastAPI(title="Penshot API", version="0.1.0")
agent = create_penshot_agent(max_concurrent=5)

@app.post("/api/generate")
async def generate(script_text: str):
    task_id = agent.breakdown_script_async(script_text)
    return {"task_id": task_id, "status": "PENDING"}

完整示例:web_app.py

3. LangGraph 节点集成

支持作为独立 Node 接入 LangChain/LangGraph 工作流,实现端到端自动化流水线。 完整示例:langgraph_integration.py

4. A2A 协议协作

支持与上游剧本创作 Agent、下游文生视频/剪辑 Agent 进行上下文传递与任务编排。 完整示例:a2a_integration.py

5. MCP (Model Context Protocol) 支持

启动 MCP Server:

python -m penshot.mcp_server --max-concurrent 5 --queue-size 500

客户端调用工具 breakdown_scriptget_task_result 即可无缝接入支持 MCP 的 IDE 或 Agent 框架。 完整示例:mcp_client.py


输出数据结构

系统返回标准化的 JSON 格式,包含视频提示词、负面提示词、时长估算、风格参数及配套的音频提示词:

{
  "fragments": [
    {
      "fragment_id": "frag_001",
      "prompt": "Cinematic wide shot: midnight 11 PM in a compact urban apartment living room...",
      "negative_prompt": "cartoon, anime, 3D render, bright lighting, text, watermark...",
      "duration": 4.2,
      "model": "runway_gen2",
      "style": "cinematic 35mm film, moody realism, shallow depth of field...",
      "audio_prompt": {
        "audio_id": "audio_001",
        "prompt": "Low-frequency rain ambience (intensity 0.95), distant muffled TV static...",
        "model_type": "AudioLDM_3",
        "audio_style": "cinematic"
      }
    }
  ]
}

系统说明与注意事项

类别 说明
网络依赖 需稳定访问外部 LLM API,建议配置代理或国内镜像源
长文本处理 超长剧本建议分段输入,系统已内置上下文记忆与 RAG 机制
生成时长 AI 视频模型输出时长可能存在 ±10% 偏差,属行业正常现象
多语言支持 当前针对中文剧本深度优化,其他语言效果持续迭代中
声音同步 当前提供音频提示词,口型同步与环境音融合需下游工具配合
错误处理 内置自动重试与降级机制,极端异常情况可能需人工介入

开发路线图

短期规划

  • 智能长镜头分割逻辑优化,保持动作连贯性
  • 角色服装、位置、道具的一致性校验器
  • 针对 Sora、Pika 等模型的提示词格式专项适配
  • 规则引擎与 LLM 混合处理架构
  • 完整英文剧本支持与节点失败智能降级
  • 片段置信度评分与调试模式(中间结果保存)

中期规划

  • 复杂镜头语言支持(推拉摇移跟)
  • 情感分析驱动视觉风格自动调整
  • 超长剧本分块处理 + 向量数据库上下文记忆
  • 多剧本批量队列处理与 Web 可视化界面
  • 角色/场景参考图接入与多格式导出(XML/EDL/JSON)

长期规划

  • 多模态输入(图+音+文混合)
  • 实时低分辨率预览与自动连续性修复
  • 专业剪辑软件插件(Premiere/FCP/DaVinci)
  • 多人协同、版本控制与从用户反馈中自动学习进化
  • 剧本-片段双向追溯、语义对齐度检测与多轮修正机制

终极目标

实现任意长度/语言/类型剧本的零信息损失视觉化,输出达到专业导演分镜水准的标准化工作流。系统具备风格可定制、结果可追溯、自动优化循环与跨模态高度一致性能力。


贡献指南

欢迎通过 Issue 或 Pull Request 参与项目共建:

  • 报告问题:请提供复现步骤、环境信息与错误日志
  • 功能建议:使用 Enhancement 标签
  • 代码优化:性能调优、架构重构或补充测试用例
  • 文档完善:翻译、示例补充或技术细节修正

开发环境快速搭建:

git clone https://github.com/neopen/story-shot-agent.git
cd story-shot-agent
pip install -e ".[dev]"
pytest tests/

许可证

本项目采用 MIT 开源协议,详见 LICENSE 文件。 Copyright (c) 2025 HiPeng


联系方式

感谢 LangChain、LangGraph、Chroma、Ollama 及开源社区的技术支持。如本项目对您的工作有帮助,欢迎 Star 关注与反馈。

Release History

VersionChangesUrgencyDate
v0.2.4Latest release: v0.2.4High4/21/2026
v0.2.3- langchain、LLM 及相关依赖版本升级,提高稳定性 - 优化工作流重试机制,避免无限循环 - 添加剧本ID,根据剧本分类记忆,节省token和内存 - 支持自定义视频风格参数 - 优化其他已知异常 - 解决一般标准性问题Medium4/6/2026
v0.2.2- 统一标准化客户端接口 - 优化工作流逻辑和基类接口 - 引入嵌入模型,支持长记忆 - 引入记忆分层架构的“记忆管理”,解决各个阶段涉及的一致性问题 - 优化状态管理机制 - 修复 MCP Server 相关问题,并优化 客户端示例 - 优化统一环境变量 - 细粒度任务池进度,实时跟踪流程进度 - 提供 HTTP 服务,支持命令启动 - 其他相关问题的优化Medium4/1/2026
v0.2.1- 增强质量审查智能体功能,修复 各个阶段 智能体的存在的问题 - 修复增强工作流逻辑和相关功能 - 修复 function_calls ,解决已知异常问题 - 添加连续性守护节点,完善其检测功能 - 修复任务池响应问题,并为缓存添加过期时间 - 统一输出数据模型(标准json) - 解决其他已知问题Medium3/29/2026
v0.2.0- 优化任务池:支持任务并发和等待,支持持久化和停止恢复 - 提示词优化:增加更多细节和统一标准 - 优化质量审查智能体,支持更细致的审查 - 新增 Function Call 接口、命令行工具 和 MCP Server,支持 Claude、Cursor 等 MCP 兼容智能体调用 - 优化拓展 REST API 接口,支持批量和同步提交 - 优化用法示例,支持更多方式使用案例 - 优化语言配置 - 解决合规性问题 - 解决其他异常问题 **包名存在问题,下一版本解决,统一使用 penshot 名,neoshot 将用于 AI Agent video系列项目中,敬请期待**Medium3/25/2026
v0.1.3-beta- 解析并添加音频提示词,与视频保持同步(台词、背景声、画外音等) - 优化提示词管理,解决片段衔接和切割丢失问题 - 解决动作、特写、道具等解析丢失问题 - 标准化全局上下文信息 - 参数校验和合规性优化 - 标准化API输出 - 优化其他已知问题 - 解决智能体安装集成调用异常问题Low3/6/2026
v0.1.2-alpha1. 优化视频分割功能 2. 完善质量审查,从多个方面检测和修复相关问题 3. 增强提示词管理,增加特写和细节描述,使得情感层次更加丰富 4. 解决其他已知缺陷 5. **包可能存在问题**,请安装最新版Low2/28/2026
v0.1.1-alpha.1一个基于LLM的多智能体协作系统,实现从原始文字剧本到AI视频生成指令的端到端自动化转换。 系统通过剧本解析智能体将非结构化剧本转化为结构化元素序列,镜头分割智能体将剧本元素映射为具体的镜头语言描述,视频切割智能体对长镜头进行智能分割(2-5秒),提示词转换智能体将镜头描述编译为适配多模型的AI视频生成提示词,质量审查智能体对片段时长、提示词质量、角色一致性、场景连贯性进行全面验证并生成改进报告。 整个流程基于LangGraph工作流引擎构建,支持智能决策、循环检测、错误重试与自动降级,可在无需人工干预的情况下完成从剧本输入到可执行AI视频指令集的完整转换链路。 ### 核心功能 1. **智能剧本解析** - 自动提取场景、角色、动作、对话,生成结构化剧本分析 2. **AI分镜生成** - 13种镜头类型分类,LLM驱动镜头拆分与描述生成 3. **视频片段分割** - 长镜头智能分割(5秒阈值),AI决策+规则分割双引擎 4. **提示词工程** - 自动转换Runway Gen2/Sora/Pika等模型提示词 5. **质量审查系统** - 时Low2/12/2026

Dependencies & License Audit

Loading dependencies...

Similar Packages

fim-oneLLM-powered Agent Runtime with Dynamic DAG Planning & Concurrent Execution0.0.0
finance-agent-mcpAI-powered group finance assistant using MCP architecture, Gemini LLM and Streamlit.0.0.0
learn-hermes-agentA 27-chapter hands-on tutorial for building an autonomous AI agent from zero in Python. Agent loop, tool system, memory, skills, MCP, multi-platform gateway, and self-evolution — inspired by Herme0.0.0
aiA productive AI coworker that learns, self-improves, and ships work.main@2026-04-21
mcp-rag-agent🔍 Build a production-ready RAG system that combines LangGraph and MCP integration for precise, context-aware AI-driven question answering.main@2026-04-21