用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/ArcReel/ArcReel --skill compose-video命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | compose-video |
| description | 把已生成的视频片段按剧本顺序拼接为单集成片,可选混入 BGM 与场景间转场。当用户说"拼成片"、"合成本集视频"或"加背景音乐"时使用。 |
把单集已生成的视频片段(videos/*.mp4)按剧本顺序串接为一段成片,写入 output/。可选混入 BGM、按 transition_to_next 添加场景间转场。
scenes[] 剧本骨架 — 脚本读取顶层 scenes[];顶层为 segments[]、shots[] 或 video_units[] 的剧本会被拒绝。这些剧本的成片导出请走 Web 端剪映草稿导出(广告/短片草稿含视频轨 + 口播文案字幕轨,导出后在剪映配音成片)服务端 presentation 统一决定声音归属与字幕时序,但只由 Web 端 JianyingDraftService 导出消费。
本 skill 调用的 compose_video.py 不读取 presentation:
generated_assets(scene).video_clip,保留片段内置音频;不添加 TTS 或字幕轨--music 时,BGM 先按固定 volume=0.3 调整,再由 ffmpeg amix 与片段音频混合;
不指定时原音原样透传duration_seconds 反推声画边界stale 产物照常参与成片,不因「看起来旧」跳过或触发重生。
脚本必须在含 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[])