Skip to main content
Glama

videolab-mcp

一个将 Claude(或任何 MCP 主机)转化为短视频实操编辑器的 MCP 服务器。你可以浏览音乐库或生成新曲目,使用 Veo 为静态图片制作动画,或使用 OmniHuman 进行人像口型同步。编写并重写脚本,通过 ElevenLabs 合成配音,使用 FFmpeg 拼接时间轴,播放结果,然后通过替换音乐、配音或任何单个片段进行低成本迭代——无需从头开始重新渲染。

它还附带了一个文本转纪录片技能,可将长文本(PDF、书籍、论文)转换为带有 AI 生成配音、字幕和空镜头的结构化纪录片视频。

独立、便携、可配置。自带 API 密钥即可使用。

功能概览

工作流中的工具:

分类

工具

音乐

list_music, preview_music, generate_music

空镜头

list_broll, preview_broll

场景素材

list_scene_assets, get_scene_asset

图像

generate_image, list_images, get_image

配音 (ElevenLabs)

list_voices, generate_voiceover, preview_voiceover, list_voiceovers

脚本 (Anthropic)

generate_script, rewrite_script, get_script, list_scripts

视频拼接 (FFmpeg)

assemble_promo, swap_music, swap_voiceover, swap_clip, play_render, list_recent_renders, describe_render

动画 (Veo)

animate_image_to_video

数字人 (Fal OmniHuman)

generate_talking_head

纪录片

extract_pdf, split_chapters, plan_documentary_scenes, validate_attention

诊断

ping, describe_capabilities

资源(无需消耗工具调用次数即可浏览):library://music, library://broll, library://renders, library://voiceovers, library://scripts, library://scenes。

提示词(用于引导多步流程):make-scene-promo, remix-render, compose-music-for-scene。

技能(位于 skills/):text-to-documentary — 将 PDF/书籍转换为带有结构化叙事弧的章节化纪录片视频。

Related MCP server: Video MCP

要求

  • Node.js 18+

  • FFmpeg (需在 PATH 中,或在配置中将 ffmpeg.binary 设置为绝对路径)

  • 所需服务商的 API 密钥(无需预先配置——仅在首次调用时懒加载)

快速开始

git clone <this-repo> videolab-mcp
cd videolab-mcp
npm install
npm run build
cp videolab.config.example.json videolab.config.json
cp .env.example .env  # then fill in keys you have

将其接入 Claude Desktop(macOS 上为 ~/Library/Application Support/Claude/claude_desktop_config.json,Windows 上为 %AppData%\Claude\claude_desktop_config.json):

{
  "mcpServers": {
    "videolab": {
      "command": "node",
      "args": ["C:\\path\\to\\videolab-mcp\\build\\index.js"],
      "env": {
        "ELEVENLABS_API_KEY": "...",
        "ANTHROPIC_API_KEY": "...",
        "GOOGLE_VEO_API_KEY": "...",
        "FAL_KEY": "...",
        "VIDEOLAB_CONFIG": "C:\\path\\to\\videolab-mcp\\videolab.config.json"
      }
    }
  }
}

重启 Claude Desktop。打开聊天窗口并调用 ping 以确认连接。

配置

两个文件。.env 仅用于存放密钥:

ELEVENLABS_API_KEY=
ANTHROPIC_API_KEY=
GOOGLE_VEO_API_KEY=
FAL_KEY=

videolab.config.json 用于其他所有配置(存储、服务商、FFmpeg 标志、默认值)。示例文件配置合理且无依赖:本地存储、JSON 索引、ElevenLabs/Anthropic/Veo/Fal 服务商、移动端 (9:16) 默认设置。

演练 — 从零制作宣传片

在连接了 MCP 服务器的 Claude Desktop 中:

User: Make a 20-second mobile promo for the test scene.

Claude:
  → list_scene_assets({ sceneRef: { key: "test-scene" } })
     → 3 assets: magenta, cyan, orange

  → generate_script({
      context: "Test scene with three coloured backdrops",
      durationSeconds: 20, tone: "punchy"
    })
     → scriptId: script_a3f, slot breakdown shown

  → generate_voiceover({ text: "<the script>" })
     → voiceoverId: vo_8d2

  → generate_music({
      prompt: "driving electronic, slow build, retro synth pad",
      durationMs: 20000
    })
     → trackId: music_4e1

  → assemble_promo({
      timeline: {
        platform: "mobile",
        slots: [
          { source: { kind: "scene", id: "asset-test-magenta" }, durationMs: 7000 },
          { source: { kind: "scene", id: "asset-test-cyan" },    durationMs: 7000 },
          { source: { kind: "scene", id: "asset-test-orange" },  durationMs: 6000 }
        ]
      },
      voiceoverId: "vo_8d2",
      musicId: "music_4e1"
    })
     → renderId: render_94c, autoplays in default video player

User: Make the music more chill.

Claude:
  → generate_music({ prompt: "soft ambient pad, gentle rhythm", durationMs: 20000 })
     → trackId: music_c70
  → swap_music({ renderId: "render_94c", newMusicId: "music_c70" })
     → renderId: render_d11 (rev of render_94c) — only re-mixes audio (~2s)

User: Replace the orange shot with a Veo animation of the magenta image zooming in.

Claude:
  → animate_image_to_video({
      imageSource: { kind: "scene", id: "asset-test-magenta" },
      prompt: "slow camera push-in, dust particles drifting"
    })
     → clipId: broll_veo_a8b
  → swap_clip({
      renderId: "render_d11",
      slotIndex: 2,
      newSource: { kind: "broll", id: "broll_veo_a8b" }
    })
     → renderId: render_2f9 (rev of render_d11)

迭代循环

这是让工作流体验良好的关键:

  • assemble_promo 会写入每个片段的中间文件 (slot_*.mp4)、静音的 visuals.mp4、音频混音以及最终的 output.mp4 —— 全部存放在 media/renders/<renderId>/ 下。

  • swap_music / swap_voiceover 会复用父级的 visuals.mp4 并仅重新混合音频。典型耗时:约 2 秒。

  • swap_clip 会重建视觉流并重新混合音频。典型耗时:约 5–10 秒。

  • 每次渲染都是一个新的 renderId,并通过 parentId 链接 —— 你永远不会丢失之前的版本。

文本转纪录片模式

skills/text-to-documentary/ 技能可将 PDF、书籍或粘贴的长文本转换为一系列约 5 分钟的纪录片视频(每章一个)。每个视频都有结构化的叙事弧(钩子 → 核心观点 → 示例 → 模式中断 → 微总结 → 悬念),带有来自 ElevenLabs 对齐时间戳的卡拉 OK 字幕,以及 AI 生成的空镜头。

使用的工具:extract_pdf, split_chapters, plan_documentary_scenes, validate_attention, generate_voiceover, generate_image, animate_image_to_video, generate_music, assemble_promo。

如果你使用的是 Claude Code 或其他支持技能的主机,触发时技能会自动加载(例如“将此 PDF 转为纪录片”、“用这本书制作视频”等)。否则,请阅读 skills/text-to-documentary/SKILL.md 获取完整步骤列表并直接调用工具。

自定义场景素材提供程序

该服务器对场景素材提供程序是不可知的。自带的 json-manifest 提供程序从 JSON 文件读取。任何更复杂的实现(你的 CMS、数据库、API)都可以作为 SceneAssetProvider 实现:

export interface SceneAssetProvider {
  readonly kind: string;
  describeRefShape(): string;  // shows up in the tool description so the host knows what to send
  listAssets(ref: SceneRef): Promise<SceneAsset[]>;
  getAsset(id: string): Promise<SceneAsset | null>;
}

将你的实现放入 src/providers/scene-assets/<your-name>.ts,在 src/providers/factory.ts 的 buildSceneAssets 中注册,并将其添加到 src/config.ts 的配置模式中。同样的模式也适用于存储后端(S3、Azure)——请参阅 src/providers/types.ts:StorageProvider。

服务商矩阵

内容

默认提供程序

环境变量

配置字段

存储

local

—

storage.kind

索引 (素材元数据)

json

—

index.kind

音乐生成

ElevenLabs Music

ELEVENLABS_API_KEY

providers.musicGen

TTS

ElevenLabs

ELEVENLABS_API_KEY

providers.tts

脚本 LLM

Anthropic Claude

ANTHROPIC_API_KEY

providers.llm

图像生成

Gemini Nano Banana

GOOGLE_VEO_API_KEY

providers.imageGen

图生视频

Google Veo

GOOGLE_VEO_API_KEY

providers.animate

数字人

Fal OmniHuman

FAL_KEY

providers.talkingHead

场景素材

json-manifest

—

providers.sceneAssets

通过环境变量进行可选的模型覆盖:ANTHROPIC_MODEL, ELEVENLABS_MUSIC_MODEL, VEO_MODEL, VEO_ENDPOINT, VEO_POLL_INTERVAL_MS, VEO_POLL_TIMEOUT_MS, FAL_OMNIHUMAN_MODEL, PROMO_VIDEO_LOG_LEVEL。

许可证

MIT — 见 LICENSE。

Related MCP Connectors

Related MCP Servers