원클릭으로
원클릭으로
项目管理工具集。使用场景:(1) 分集切分——探测切分点并执行切分,(2) 新增/修改角色/场景/道具到 project.json(经 patch_project 工具,按 table+name upsert 或写顶层 settings 字段)。提供 peek(预览)+ split(执行)的渐进式切分工作流,以及角色/场景/道具与项目级 settings 写入。
无人值守驱动 CodeRabbit、Gemini Code Assist、OpenAI Codex 的 review → 修复 → push → 再 review 循环,直到全部通过或触发收敛退出。主动调用:用户刚 push PR 或跑完 /commit-push-pr;提到 review / coderabbit / gemini / codex / 审查 / AI review / 等 bot 回复;CodeRabbit paused 需 resume;reviewer 有 actionable comments。即使用户只说"PR 怎么样了""review 回了吗"也应触发。
调用项目配置的文本模型生成 JSON 剧本(同时产出每个分镜的 image_prompt 与 video_prompt)。由 create-episode-script subagent 调用。读取 step1 中间文件和 project.json,输出符合 Pydantic schema 的剧本。
为剧本场景生成视频片段。当用户说"生成视频"、"把分镜图变成视频"、想重新生成某个场景的视频、或视频生成中断需要续传时使用。支持整集批量、单场景、断点续传等模式。
为剧本场景生成分镜图。当用户说"生成分镜"、"预览场景画面"、想重新生成某些分镜图、或剧本中有场景缺少分镜图时使用。自动保持角色和画面连续性。
"统一资产生成 skill:接受 `--type=character|scene|prop`,或不传自动扫所有 pending(缺 sheet)资源并按类型分发。当用户说"生成角色图"/"生成场景图"/"生成道具图"、想为新资产创建参考图、或有资产缺少 *_sheet 时使用。"
| name | compose-video |
| description | 把已生成的视频片段按剧本顺序拼接为单集成片,可选混入 BGM 与场景间转场。当用户说"拼成片"、"合成本集视频"或"加背景音乐"时使用。 |
把单集已生成的视频片段(videos/*.mp4)按剧本顺序串接为一段成片,写入 output/。可选混入 BGM、按 transition_to_next 添加场景间转场。
scenes[];narration(segments[])和 reference_video(video_units[])会被脚本拒绝。这两种模式的成片导出请走 Web 端剪映草稿导出脚本必须在含 project.json 的项目 cwd 内运行,并使用相对项目根 cwd 的剧本文件名:
# 最简形式:按剧本顺序拼接 + 自动转场(按 transition_to_next)
python .claude/skills/compose-video/scripts/compose_video.py scripts/episode_1.json
# 混入 BGM(音乐文件相对项目根 cwd 或绝对路径)
python .claude/skills/compose-video/scripts/compose_video.py scripts/episode_1.json --music background_music.mp3
# 关闭转场(一律 cut 拼接,可用于规避 xfade 编码不一致问题)
python .claude/skills/compose-video/scripts/compose_video.py scripts/episode_1.json --no-transitions
# 自定义输出文件名(输出固定落在 output/ 下)
python .claude/skills/compose-video/scripts/compose_video.py scripts/episode_1.json --output episode_1_final.mp4
完整参数:
| 参数 | 类型 | 说明 |
|---|---|---|
script | 位置参数(必填) | 剧本文件名(相对项目 cwd) |
--output OUTPUT | 可选 | 输出文件名;缺省按剧本 novel.chapter 字段生成。无论何种取值,最终都落在 output/ 子目录内 |
--music MUSIC | 可选 | BGM 文件路径(相对项目 cwd 或绝对路径),但必须解析后位于项目目录内 |
--no-transitions | flag | 全部用 cut 直接拼接,忽略剧本里的 transition_to_next |
ProjectManager.load_script() 从 scripts/ 加载(路径过滤复用 lib 内 _safe_subpath)scenes[i].generated_assets.video_clip 逐个解析视频文件并校验存在xfade 转场需求时按 transition_to_next 加滤镜--music,再做一遍 audio mix;输出文件名追加 _with_music按剧本字段 scenes[i].transition_to_next 映射:
| 字段值 | ffmpeg 行为 |
|---|---|
cut(默认) | 直接拼接,无淡入淡出 |
fade | xfade=transition=fade:duration=0.5 |
dissolve | xfade=transition=dissolve:duration=0.5 |
wipe | xfade=transition=wipeleft:duration=0.5 |
project.json)scenes[])generated_assets.video_clip 都已生成ffmpeg / ffprobe 都在 PATH(脚本会预检)--music)下列能力未实现,请使用 Web 端剪映草稿导出:
scenes[])