Skip to main content
Glama
README.md
# 剪映 AI 编辑 MCP + Skill

自然语言剪辑规划、视频观察与草稿执行相互分离:视频观察器负责本地元数据、字幕和代表帧;Skill 负责需求引导、画面理解与紧凑编辑清单;MCP 负责确定性生成、参考草稿复用、批量换料、安全校验和本地阶段进度。

验证基线:剪映专业版 `10.0.5.13816`、pyJianYingDraft `0.3.0`、MCP Python SDK `1.29.0`。

## 目录

- `src/jianying_ai_mcp/`:批处理 MCP 服务
- `skills/jianying-ai-editor/`:可复用 Skill
- `docs/capability_matrix.md`:完整测试结论
- `configs/`:客户端配置样例
- `tests/`:从零生成、参考复用、批量换料及安全边界测试

## MCP 工具

- `get_jianying_capabilities`:版本、能力与限制
- `analyze_reference_draft`:从明文或本机可解密草稿提取剪辑蓝图
- `build_draft`:一次提交编辑清单,从零生成草稿
- `build_from_reference`:复制蓝图并按轨道/片段换料换字
- `batch_from_template`:一个模板批量生成多份草稿
- `analyze_video_source`:提取带时间戳字幕和代表帧,支持缓存与局部复查
- `save_video_observations`:保存 Agent 实际读取代表帧后的结构化理解
- `get_video_analysis_context`:按时间范围和页码读取长字幕与缓存上下文

工具默认 `dry_run=true`,会在项目暂存区完整生成和校验,但不发布到剪映目录。正式发布不会覆盖同名草稿。

## 启动

Python 3.12:

```powershell
py -3.12 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e .
```

需要分析在线视频时改用 `-e ".[video-url]"`。本地视频只需要系统已有的 ffmpeg/ffprobe,不需要 yt-dlp。

Skill 可从仓库安装到支持 Agent Skills 的客户端:

```powershell
npx skills add . -g
```

然后按客户端使用 [MCP 配置样例](configs/mcp-stdio.example.json)。

启动服务:

```powershell
.\.venv\Scripts\python.exe -m jianying_ai_mcp
```

服务使用 stdio MCP;普通日志不写 stdout。客户端支持时会显示 `[阶段]` 日志和 progress,其他客户端仍可从返回值的 `stages` 查看阶段。

## 环境变量

- `JIANYING_DRAFT_ROOT`:剪映草稿根目录
- `JIANYING_MCP_WORK_ROOT`:暂存和参考蓝图目录
- `JIANYING_EXE`:剪映程序路径,用于检测版本
- `JIANYING_DRAFT_CRYPTO`:可选的 `jy-draftc.exe` 兼容读取器;启用加密草稿学习/复制
- `JIANYING_MCP_TRANSPORT`:默认 `stdio`,也可使用 `sse` 或 `streamable-http`
- `JIANYING_FFMPEG` / `JIANYING_FFPROBE`:视频观察器使用的可执行文件
- `JIANYING_YT_DLP`:可选,仅 URL 输入需要
- `GROQ_API_KEY` / `OPENAI_API_KEY`:可选,仅无字幕时的 Whisper 转写需要

ffmpeg/ffprobe 可从 `PATH` 自动发现,也可通过环境变量显式配置。视频和画面始终留在本机;只有无字幕且启用 Whisper API 时会上传压缩音频。

## 加密草稿读取

剪映保存后的 `draft_content.json` 可能是加密文本。0.3 通过已审计的 MIT 开源 `jy-draftc` 接口调用本机剪映目录中的 `videoeditor.dll`,支持分析、参考复制和批量换料。读取时会先复制到一次性工作目录,解密结果用完即删,绝不原地改写参考草稿。

仓库包含最小读取器源码 [native/jy_draft_crypto.cpp](native/jy_draft_crypto.cpp),可用 MinGW-w64 执行 `g++ -std=c++17 -O2 -municode -static -o jy-draftc.exe native/jy_draft_crypto.cpp` 构建。随后配置 `JIANYING_DRAFT_CRYPTO`;`JIANYING_EXE` 必须指向同一套剪映安装。先调用 `get_jianying_capabilities`,确认 `encrypted_draft_reader.available=true` 再读取加密草稿。

## 视频理解

推荐先调用 `analyze_video_source(detail="efficient", max_frames=24~40)` 粗看。Agent 必须实际读取返回的代表帧后,才能调用 `save_video_observations` 声称理解画面。长视频先读字幕定位,再对候选区间用 `start/end` 局部复查,避免一次输入大量图片。

当前为语句级字幕时间戳,不是逐字强制对齐;代表帧也不是完整逐帧视频流。快动作、口型级同步、音乐节拍仍需专用分析器。

配置格式见 [OpenCode 配置](configs/opencode.example.json) 和 [通用 stdio 配置](configs/mcp-stdio.example.json)。

## 验证

```powershell
.\.venv\Scripts\python.exe -m unittest discover -s tests -v
```

测试前可使用 [测试与反馈清单](docs/testing_guide.md)。

## 当前边界

当前不自动操作剪映内置音乐/音效库、TTS、节拍卡点和自动导出。独立视频观察器已支持旁挂字幕及可选 Whisper 语句级转写,但不等同于剪映内置字幕识别。蒙版、模糊背景及音量关键帧因当前版本实测不稳定而被显式拒绝。参考草稿支持明文 JSON;配置本地读取器后也支持有权访问的剪映加密草稿。

第三方许可说明见 [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)。

每次工具调用都返回版本兼容提示。若剪映版本与 `10.0.5.13816` 不同,客户端必须向用户说明预设、在线资源和草稿结构可能变化,并先生成小样抽检。

TDQS

A3.9/5.0

Scored across 5 tools

Disambiguation4/5

Most tools have clear, distinct purposes: capability discovery, analysis, single build, batch build, and reference-based build. However, analyze_reference_draft and build_from_reference both involve reference drafts and could be confused in some workflows, though descriptions clarify their different roles.

Naming Consistency3/5

Tool names are snake_case and mostly descriptive, but the pattern is inconsistent. 'get_', 'analyze_', and 'build_' are clear verbs, while 'batch_from_template' lacks a strong verb prefix, and 'build_from_reference' introduces a prepositional modifier absent in 'build_draft'.

Tool Count5/5

With 5 tools, the server is well-scoped for its purpose of generating Jianying drafts through various methods. Each tool addresses a distinct need without redundancy or excessive breadth, fitting comfortably within the ideal 3-15 range.

Completeness4/5

The tool set covers the core workflow of understanding capabilities, analyzing references, and building drafts from manifests, templates, or references. Minor gaps exist such as no explicit tool for updating or deleting existing drafts, but these are likely outside the server's intended generation-focused scope.

Maintenance

ActivityStale
ResponsivenessNo issues