文本转故事板视频工具

SceneCraft MCP是一个将纯文本转换为可视化故事板并可选择生成垂直视频的工具,支持Python模块和MCP工具调用,适用于快速原型设计和自动化视频制作。

  • by snippetWizard
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 snippetWizard/scenecraft_mcp

使用说明

SceneKraft MCP——文本→ 故事板→ 视频(测试版)

作者:snippetWizard

SceneKraft MCP将纯文本转换为视觉计划(故事板),并可选地转换为组装的垂直视频。它将管道作为Python模块和MCP工具公开,以便代理客户端可以对其进行编排。

  • 使用LLM(OpenAI、Ollama或离线模拟)进行文本到场景分解。
  • Pydantic支持的镜头、场景和故事板模型。
  • 可选稳定扩散帧生成+MoviePy组装成垂直MP4。
  • 基于文件的生成故事板存储。
  • MCP服务器(可选),因此精通工具的LLM可以直接调用它。

此存储库是测试版本。更多功能正在开发中,包括云上传和跨平台社交调度。

什么是MCP?模型上下文协议是一种轻量级协议,允许LLM安全一致地与本地/远程工具通信。在这里,我们提供了一个简单的MCP服务器,它公开了一个“create_storyboard”工具。

为什么是这个项目?计划拍摄很耗时。这个想法来自于为独奏创作者提供一个零摩擦的循环:描述一个场景→ 制定一个结构化的拍摄计划→ (可选)生成视觉效果→ 制作一个视频草稿。这是一个用于脚本到屏幕实验的快速原型制作通道。

管道概述(文件和流)

  1. 输入(您的文本/脚本)

    • 入口点:
      • examples/test_scene_local.py:1 --仅生成故事板。
      • examples/script_to_video.py:1 --完整故事板→ 帧→ 视频演示。
  2. 解析脚本→ 场景

    • scenecraft_mcp/engine/script_parser.py:1
      • parse_script(script) --将整个文本视为一个场景的最小解析器(稍后可替换为真正的slugline解析器)。
  3. 平面射击(LLM)

    • scenecraft_mcp/engine/shot_planner.py:1
      • plan_shots(scene_text, scene_number, style_preset) → list[Shot]
      • _build_system_prompt(...), _build_user_prompt(...) 工艺提示指示。
      • 用途 scenecraft_mcp/llm/factory.py:1 → get_llm_client() 选择提供商。
    • 供应商(实施 LLMClient):
      • scenecraft_mcp/llm/base.py:1 --抽象接口(complete_json, complete_text).
      • scenecraft_mcp/llm/openai_client.py:1 --调用OpenAI Chat Completions并解析严格的JSON。
      • scenecraft_mcp/llm/ollama_client.py:1 --致电当地Ollama /api/chat 并解析JSON。
      • scenecraft_mcp/llm/mock_client.py:1 --本地演示的离线确定性模拟(默认为 .env).
    • 配置:
      • scenecraft_mcp/config.py:1 — LLMProvider enum(openai, ollama, mock)以及环境驱动的设置。
  4. 数据模型和存储

    • scenecraft_mcp/models.py:1 --Pydantic模型: Shot, Scene, Storyboard,枚举(ShotType, CameraAngle等等)。
    • scenecraft_mcp/storage/repository.py:1 --repo接口。
    • scenecraft_mcp/storage/file_repository.py:1 --基于JSON的持久化 ~/.scenecraft_mcp/projects/.
    • scenecraft_mcp/utils/ids.py:1 — generate_project_id() 喜欢 proj_ab12cd34.
  5. 可选:帧生成(稳定扩散)

    • scenecraft_mcp/video/framegen_sd.py:1 — SDFrameGenerator.generate_frame(...)
      • 加载稳定扩散管道(例如。, runwayml/stable-diffusion-v1-5)在CPU/GPU上。
      • 每次拍摄产生风格化的垂直9:16 PNG。
  6. 可选:视频组装(MoviePy)

    • scenecraft_mcp/video/assembler.py:1 — assemble_video(frames, output_path, fps=24)
      • 调整每个镜头的图像大小并将其连接成垂直MP4(需要ffmpeg)。
  7. MCP服务器(可选集成)

    • scenecraft_mcp/mcp_server.py:1 — build_server() 带着一个 create_storyboard(script, title=None) 工具。
    • 将故事板创建暴露给MCP兼容主机(例如Claude Desktop)一次 mcp 已安装。

安装

核心(故事板+MCP):

pip install -r requirements.txt

可选(帧+视频):

  • ffmpeg(MoviePy要求)
  • Python包:
pip install moviepy diffusers
# Then install PyTorch appropriate for your system:
# CPU-only example:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu

提示:对于NVIDIA GPU,请使用PyTorch官方网站获取正确的CUDA控制盘:https://pytorch.org/get-started/locally/

配置

复制 .env (已包含)并设置提供者:

# LLM Provider (openai / ollama / mock)
LLM_PROVIDER=mock

# OpenAI
OPENAI_API_KEY=sk-your-key
OPENAI_MODEL=gpt-4.1-mini

# Ollama
OLLAMA_MODEL=llama3
OLLAMA_BASE_URL=http://127.0.0.1:11434

# Performance
LOW_LATENCY_MODE=true
  • mock 完全离线运行,以进行可预测的本地演示。
  • ollama 需要 ollama serve 和一个拉模型一样 llama3.
  • openai 需要有效的 OPENAI_API_KEY.

快速入门

仅故事板(默认离线):

python examples/test_scene_local.py

故事板→ 框架→ 视频(需要可选deps):

python examples/script_to_video.py

输出:

  • 故事板JSON: ~/.scenecraft_mcp/projects/<project_id>.json
  • 框架: outputs/frames/*.png
  • 视频: outputs/videos/<project_id>.mp4

使用MCP服务器(可选)

pip install mcp
python -m scenecraft_mcp.mcp_server

将此服务器连接到MCP兼容主机(例如,Claude Desktop)。工具 create_storyboard 接受 script 并返回 { project_id, scene_count, shot_count }.

这解决了什么

  • 快速构思:将草稿描述转化为结构化的拍摄计划。
  • 一致的视觉语言:拍摄类型、角度、持续时间作为数据捕获,而不是散文。
  • 可扩展管道:在不改变流的情况下交换LLM、模型或帧生成器。
  • 自动化就绪:MCP工具界面和基于文件的输出易于编排。

路线图(测试版——即将推出)

  • 视频生成后的云上传(S3/GCS/AAzure)。
  • 自动脚本,按id/日期获取并自动发布到YouTube和Instagram。
  • 一次性安排整个月的内容。
  • 用于多场景脚本的更好的文本到场景解析器。
  • 过渡、字幕/叠加、TTS/VO集成、音乐床。
  • 更多的MCP工具和更丰富的模式。

请继续关注——更多的MCP项目即将推出。在GitHub上发布并关注:snippetWizard。敬请期待!

逐个文件快速参考

  • scenecraft_mcp/engine/script_parser.py:1 — parse_script(script) → 最小单场景字典。
  • scenecraft_mcp/engine/shot_planner.py:1 — plan_shots(...) 调用LLM进行输出 ShotPlan.
  • scenecraft_mcp/llm/factory.py:1 — get_llm_client() 来自env配置的提供程序。
  • scenecraft_mcp/llm/openai_client.py:1 --OpenAI JSON完成。
  • scenecraft_mcp/llm/ollama_client.py:1 --Ollama JSON完成。
  • scenecraft_mcp/llm/mock_client.py:1 --离线JSON合成演示。
  • scenecraft_mcp/models.py:1 --核心Pydantic模型和枚举。
  • scenecraft_mcp/storage/file_repository.py:1 --保存/加载 Storyboard 到 ~/.scenecraft_mcp/projects/.
  • scenecraft_mcp/video/framegen_sd.py:1 --每次拍摄稳定的扩散图像生成器。
  • scenecraft_mcp/video/assembler.py:1 --MoviePy图像序列→ MP4.
  • scenecraft_mcp/mcp_server.py:1 --MCP工具 create_storyboard.
  • examples/test_scene_local.py:1 --故事板演示。
  • examples/script_to_video.py:1 --完整的管道演示。

许可证

该项目根据MIT许可证获得许可。看 LICENSE 了解详情。

版权所有(c)2025 snippetWizard