--- name: make-ai-video description: 协助把想法、文章、提纲、已有口播、资料包或音频制作成有来源、可审核、可恢复的 AI 视频,并可选接入本地声音克隆。适用于用户提出“帮我把这个思路做成视频”“文章转视频”“整理口播和分镜”“用我的声音生成”“制作课程视频或短视频”“检查字幕、渲染或发布状态”等任务;也适用于需要区分首次声纹建档、本次配音、视频渲染和人工发布门禁的场景。 --- # AI 视频制作助手 从用户已有的想法或素材开始,先判断输入和当前阶段,再协助完成内容、声音、画面与审核。不要把文章当作默认入口,也不要把首次声音建档、本次正式配音和整片发布合并成一次生成。 ## 启动即执行 触发 Skill 后,立即进入工作流并执行当前可安全完成的步骤,不要只复述流程、列菜单或让用户自己拼命令。 1. 先运行 `node scripts/doctor.mjs --json` 检查基础能力。定位或创建本次生产包,检查已有文件、设备、运行时和当前状态;没有生产包时运行 `node scripts/create-package.mjs --dir <目录> --input-mode <类型> --summary <摘要>`,不要临时拼接一套不可复用目录。 2. 把用户现有输入写入 `video-brief.json`,明确缺失项,并继续执行到下一个真实人工门禁。 3. 可逆的本地检查、建目录、生成合同对象和校验应主动执行。安装依赖、下载大模型或需要额外系统权限时,说明体积、目录和用途后发起所需批准;获准后继续,不要退回成教程。 4. 只有授权/权利不明、核心事实待核验、口播确认、声音所有者选声、整片审核和发布授权等人工门禁才暂停。 5. 每次暂停或交付都报告:`当前阶段 / 已完成动作 / 产物路径 / 校验结果 / 需要用户做的一个决定 / 批准后下一步`。 用户说“帮我做成视频”代表持续推进到下一个人工门禁;用户明确要求本人克隆声音且没有可用 Profile 时,按下文时钟 A 先执行本地声音建档,然后自动回到时钟 B。不要把“给一句开始话术”当作完成。 ## 读取所需合同 1. 先读 `references/input-routing.md`,把用户输入整理为 `VideoBrief`。 2. 设计内容时读 `references/content-contract.md`。 3. 选择画幅和分镜时读 `references/visual-routing.md`。 4. 使用声音、渲染或报告状态前读 `references/production-gates.md`。 5. 只有用户要求克隆或复用克隆声音时,才读 `references/voice-cloning.md`。 6. 进入画面与渲染阶段时读 `references/rendering-adapter.md`。如果当前项目没有渲染适配器,继续交付内容、声音、字幕和 `video-unit.json`,但不得声称已经可以生成正式 MP4。 7. `assets/example-package/` 只用于理解完整对象和测试,不作为新项目直接改写;需要首次本地声纹建档时,再复制 `assets/voice-clone-starter/`。 ## 使用两条时钟 ### 时钟 A:低频声音能力建立 仅在用户明确选择克隆声音且没有可用 `VoiceProfile` 时执行: ```text 授权与私有范围 → 参考录音和准确逐字稿 → 三个校准候选 → 机器 QA → 声音所有者选择 → production-pilot VoiceProfile ``` 这条链通常只在首次建档、参考或模型漂移、授权范围变化时重跑。它先于完整视频生产,但不生成本次正式口播。 ### 时钟 B:每条视频自己的生产 每个视频项目都执行: ```text VideoBrief → ContentDecision → VideoContentPlan → 口播人工确认 → 本次 VoiceRun 或其他配音 → 正式时序 → 视觉预检 → 渲染与技术检查 → 整片人工审核 → 发布候选 ``` 如果已有可用声音档案,在项目开始时做一次 preflight,口播确认后再生成本次三个候选。不要在口播未冻结时提前生成正式音频。 ## 执行工作流 ### 1. 建立 `video-brief.json` 识别 `idea`、`article`、`outline`、`script`、`source-pack` 或 `audio` 输入。记录受众、期望变化、来源、权利、证据成熟度、时长/画幅偏好和声音意图。 用户只有想法时,协助展开方向,但把假设与待核验事实写入 `verificationNeeds`;不要编造个人经历、数据或案例。 ### 2. 检查声音依赖 - `none`、`human` 或普通 `synthetic`:按相应合同继续。 - `cloned` 且已有 Profile:立即 preflight;漂移则阻断。 - `cloned` 且没有 Profile:读取 `references/voice-cloning.md`,先做设备与本地模型预检;缺少模型时按该参考执行下载与锁定,随后走时钟 A,再自动进入完整生产。 ### 3. 建立 `content-decision.json` 根据输入成熟度生成 2–6 个候选,每个候选只回答一个问题,包含核心判断、观众动作、来源锚点、待核验项、时长建议和画幅建议。一次只推荐一个;保留其余候选。 ### 4. 建立 `video-content-plan.json` 按内容密度选择时长: - `quick`:35–50 秒,一个纠偏或动作; - `standard`:60–85 秒,一个机制、比较或诊断; - `deep`:90–120 秒,一个带证据的案例; - `course-master`:130–180 秒,只用于一个需要 3–5 个相互依赖章节的问题。 每段绑定来源、时间预算、口播职责、情绪和唯一视觉任务。先建立具体冲突,再引入术语;结尾给出动作或边界。 ### 5. 冻结内容和口播 向用户展示主问题、核心判断、事实边界、时长、画幅和完整口播。`content_plan_reviewed` 与 `narration_reviewed` 未通过时,不生成本次克隆配音,也不做完整渲染。 ### 6. 生成本次声音 克隆声音时先重新 preflight,再按认知章节整段生成三个候选。机器淘汰坏音频;声音所有者明确选择其中一个。本次选择只批准该 VoiceRun,不批准整片或发布。 ### 7. 建立正式时序与 `video-unit.json` 把已审内容和选定声音翻译成连续 beat。每个 beat 只使用一个 `visualJob`:`conflict`、`mechanism`、`comparison`、`evidence`、`action` 或 `conclusion`。 估算字幕只能用于草案。使用转写或人工对齐后,才能把 `timing_ready` 标为通过。 ### 8. 预览、渲染与检查 先检查当前项目是否存在可用的 Remotion、剪辑工程或其他渲染适配器。存在时,先检查开场、核心解释、证据/动作和结尾代表帧,再渲染完整视频;检查尺寸、帧率、编码、音频、字幕范围、缺失资产和隐私残留。不存在时,明确报告 `rendering_adapter_required`,保留已完成产物,不得把视觉计划写成已经生成成片。 ### 9. 记录真实状态 分别记录 `local_package`、`review_candidate`、`release_candidate`,以及各平台 `draft`、`previewed`、`scheduled`、`published`。自动校验、文件存在、本人选声和整片发布是不同事实。 ## 校验生产包 在 Skill 目录运行: ```bash node scripts/validate-package.mjs --dir <生产包> ``` 加 `--json` 获取机器可读结果。修复错误后再推进状态;警告必须在交付说明中解释。 ## 停止条件 遇到以下情况时停止并报告精确阻塞点: - 用户意图、输入类型或权利边界不明确; - 待核验事实会改变核心结论; - 请求时长会删除结论边界; - 声音授权、Profile、模型、参考或哈希漂移; - 口播未审却准备生成本次克隆音频; - 估算字幕被当成正式时序; - 渲染命令结束但目标文件不存在; - 自动检查被用来推断人工批准。 保留已完成对象,从失败阶段恢复,不要重做整条链。