影片回顾
调用和默认范围
Claude Code:/movie-recap Lucky。
Codex:$movie-recap Lucky(或在此主机或任务选板中选择此技能)。
带引号的视频路径或文件夹同样适用。从调用消息中读取标题/路径和可选范围。Claude Code 参数:$ARGUMENTS。如果主机未展开此令牌,请使用用户的实际消息,而不是将字面令牌作为文件名。
默认:完成完整回顾和 Reel 两者,包括以下文件。将其视为执行工作的指令,而不仅仅是编写脚本、大纲或编辑计划。仅当用户明确要求时,才仅执行完整回顾或仅执行 Reel。不要仅仅因为有人要求检查、安装、解释或修改此技能就开始渲染。
此文件包含两种当前的回顾模板,已合并且没有过时的偏好历史。完整回顾的编辑规则绝不能泄露到 Reel 中。用户当前的显式指令覆盖这些默认设置。在正常运行期间,不要更改源模板或其他影片项目。
解析输入
- 从用户选定的项目文件夹开始。搜索提供的本地视频文件(
.mkv、.mp4、.mov、.m4v、.webm、.avi)和侧边字幕文件。优先使用提供的显式路径。对于像 Lucky 这样的标题,匹配文件名和相关子文件夹,忽略标点符号/大小写和常见的发布后缀。 - 从源选择中排除之前的回顾导出文件、预告片、样片、缩略图和临时文件。在选择前探测候选媒体;不要仅仅因为文件最长就选择它。通过镜头、演职员表和字幕验证身份。
- 如果请求的标题只有唯一一个合理的源,则直接处理,无需询问。如果 Lucky 匹配多个剧集,或者两个不同的影片仍然合理,则提出一个简洁的问题来识别候选者。不要默默合并剧集或任意选择一个。如果没有标题,则使用唯一明确的源;否则询问。如果找不到源,则报告查找位置并请求其路径。不要自动下载影片。
- 保持源文件不变。在源文件旁边创建新的
<Title>-Full-Recap和<Title>-Reel-Recap文件夹。如果任一文件夹已存在,则选择一对一致的未使用名称,如-Edit-2、-Edit-3等,而不是覆盖之前的工作。适用时在名称中使用剧集标识符。 - 在最终文件夹之外创建一个作用域任务工作文件夹。读取适用的项目指令,但保持两种模式合同分离。不要覆盖不相关的现有 AGENTS.md。如果项目指令需要持久化,则将其保留在源根目录或单独的任务工作空间中,而不是放在精简的最终输出中。
工具、语音和实际执行
自动安装的运行时
在搜索全局工具之前,请读取此已安装的 SKILL.md 旁边的 runtime.json。遵循其 manifest_path 并重新读取共享清单;需要 status: ready。使用其绝对路径的 python、ffmpeg、kokoro_model、kokoro_voices、source_whisper_model(用于多语言源影片识别)和 whisper_model(用于英文解说对齐)。这些路径消除了用户激活虚拟环境或手动定位模型的需求。使用此 Python 环境中的 PyAV 进行探测;安装程序不提供单独的 ffprobe 可执行文件。默认优先使用 CPU,仅在验证 GPU 可用后使用。
如果指针不存在,也检查 ~/.movie-recap/runtime-v1/runtime.json,然后执行下面的便携式发现。如果共享清单不存在、过时或未就绪,请解释实际的设置错误,并指导用户运行此仓库的 python install.py --target claude 或 --target codex(替换技能时使用 --update)。如果用户要求您设置依赖项并且仓库可用,请自行运行安装程序。不要仅仅因为清单文件存在就报告设置成功;请检查引用的可执行文件/模型。切勿在公共仓库中包含 runtime.json,因为它包含机器特定的路径。
这是一个代理工作流程,而不是独立的视频渲染程序。在编写缺失的编辑逻辑之前,检查并重用兼容的生产辅助工具。发现 FFmpeg/ffprobe(或 PyAV 探测)、Python、TTS 引擎和 ASR/对齐工具。在提交长时间渲染之前,先探测一个短视频编码。如果 NVENC 不可用,则使用兼容的 CPU 编码。当只产生了文本指令时,切勿声称完成了视频。
默认解说员:本地 Kokoro am_michael,英语,以 1.00x 速度合成。完整回顾:应用恰好一个 atempo=1.10 调整。Reel:优先使用 1.00x,在考虑提高至 1.30x 之前先缩短脚本。不要在输出之间默默切换声音或声称有精确的 Instagram 声音。重用已安装的模型;在调用付费服务前询问。如果所需的本地执行或可用语音不可用,请报告具体的阻塞原因,不要假装一个独立的 SKILL.md 能安装这些功能。仓库安装程序提供自动设置。
便携式依赖项发现:
- 从活动环境或用户提供的路径定位 Python 和 FFmpeg/ffprobe。如果已安装,
imageio_ffmpeg.get_ffmpeg_exe()可以定位 FFmpeg 二进制文件。 - 从用户安装的 TTS 环境中定位 Kokoro ONNX 模型和语音数据。不要假定特定的用户名、下载文件夹或操作系统。如果文件缺失,报告所需的资源并请求其路径或根据需要请求设置许可。
- 在当前用户的 Hugging Face 缓存或用户指定的模型目录中查找缓存的 faster-whisper 模型。探测 CUDA 支持并在需要时回退到 CPU。
- 在每台机器上发现等效的本地工具。不要将模型权重、API 凭证或影片素材打包到此技能中。
重用、新内容和重叠工作
- 在编写替代品之前,重用可用的通用代码、已安装的工具/模型、模式、渲染/滤镜构建器、字幕工具、验证和打包逻辑。首先检查兼容性;仅适配缺失的行为。保持代码与影片特定数据分离。切勿将旧的影片路径、情节、脚本、源时间映射、解说、品牌或凭据带入新的任务或公共辅助工具中。
- 每个新的回顾制作都需要对提供的源进行全新分析、新编写的完整/Reel 脚本和新合成的解说。不要读取或重用以前的回顾分析、生成的转录、脚本、镜头选择或语音作为捷径。提供的源字幕是有效的输入。在当前运行的完整回顾和 Reel 之间共享其全新的分析,保持其脚本和编辑合同独立。明确的修订(如“相同视频,更改裁剪”)可以保留未受影响的内容;无需不必要地重新生成。
- 相同运行的重试可以重用已验证但未更改的结果。记录源身份、脚本修订、语音/模型/速率、变换、编码器设置以及中间文件。当输入更改时,使受影响的工作及其依赖的时间、字幕、图片和章节失效。仅文件存在不能作为缓存验证。新的全新运行不得继承旧的内容缓存。
- 重叠独立工作:转录与视觉采样同时进行;已批准的自然段落的合成与镜头检查同时进行;缩略图和草稿上传文案与渲染同时进行。在当前运行分析之后,完整回顾和 Reel 可以独立推进。仅在测量/对齐相关语音后最终确定图片时长和字幕,在时间线锁定后最终确定章节。不要仅仅为了让工人忙碌而合成未经审查的草稿。
- 在有用的地方,使用可重用的作业运行器来执行 Shell 阶段;阅读其清单和工作流程指南。它提供依赖项、有界的并发、独占资源和阶段计时。它不分析影片或构建编辑。重用兼容的本地生产辅助工具,而不是重新创建它们;仅编写缺失的逻辑。将编辑审查保留在代理处。在支持的情况下,使用长时间运行的 TTS 进程来跨段落保持加载的模型。
- 开始时保守地使用两个独立作业和一个针对受限资源的繁重作业。在采用 GPU TTS 或额外工作进程之前进行基准测试;保持发音、停顿、语音和编码质量。如果内存或 CPU/GPU 争用减慢了工作速度,降低并发度。重叠进程并不意味着授权生成代理或付费服务。
- 从源检查到最终验证的经过时间,包括设置、修正和失败。分别记录各阶段计时;切勿合计重叠的持续时间或将缓存的重新渲染等同于全新制作。不要为了速度目标而缩短故事、超过解说速度限制、降低导出质量或跳过检查。
共享的生产工作流程
- 探测源流、时长、活动尺寸、帧率、音频语言和字幕。读取对话并对整个故事(包括其结局)进行采样。如果缺少可用的字幕,则使用本地 ASR;视觉验证重要的动作,而不是信任 ASR 猜测。区分梦、闪回、传说和不确定的结果与实际事件。网络研究可以佐证影片身份/年份;切勿用情节猜测取代镜头分析。
- 编写清晰、具体的英文解说,并带有准确的因果逻辑。避免 AI 口号、堆叠的戏剧性片段、虚构的对话和重复的填充词。为每个解说事件建立一个带有精确段落的源时间映射。完整回顾覆盖整个故事。Reel 建立上下文并在高潮开始前停止,拥有自己的脚本和剧透截止点。
- 合成完整的段落或自然的句子,而不是短的显示字幕片段。将它们连接成连续的解说,并带有自然的呼吸停顿。测量实际调整后的语音,然后构建图片时间线。保留音节,不要拉伸音频以适配任意的镜头时长。
- 将单词对齐到生成的语音。审计遗漏、专有名词和意外的发音。使用 faster-whisper 时,避免将整个预期的脚本作为
initial_prompt提供;它可能会产生幻词或跳过开头。如果由于 PyAV API 不匹配导致音频解码失败,请使用 FFmpeg 解码为单声道 16kHz PCM 并将 NumPy 数组传递给 Whisper。检查低置信度的结果,而不是接受伪造的词时间戳。 - 维护临时编辑清单,包含源入/出点、输出开始/结束、解说短语锚点、冻结点和变换。在口头短语出现时或稍早前放置命名动作。检查中间动作帧和渲染后的镜头边界。切勿将“他们接吻”的镜头用冻住的拥抱覆盖,或将“搜索 CCTV”与不相关的镜头延迟几秒才显示。
- 使用部分 A 渲染完整回顾,使用部分 B 渲染 Reel;独立工作可以在机器限制内重叠。仅重用当前运行的全新源分析,而不是完整回顾的变换后图片。保持时间线帧精确,使用一致的 CFR、显式帧计数和 concat 时长。检查相同运行的缓存渲染与当前脚本、源选择设置是否一致;对于已更改的剪辑使其失效,而不是重用过时的文件。尽可能一次编码兼容的图片批次并通过流复制进行组装;重用 Reel 图片流用于其两个混音。当修正允许时,仅重新渲染受影响的批次,然后重新检查最终组装的导出。
- 将清晰的解说与安静且合适的背景音乐混合。可以接受谨慎的原始合成背景音乐。不要自动添加 Undertow。显式音频映射必须排除完整导出的所有影片音频。两种模式均使用 H.264 High、yuv420p、CFR、方形像素、AAC-LC 立体声(48kHz 合适)、MP4 faststart。
- 从相同的解说词和测量的时间独立生成自然短语的 TTS SRT 和简短显示的 SRT。两者都使用部分 A 中的共享字幕规则;其无原始音频/仅完整导出的限制不覆盖部分 B。保留每个单词、标点和顺序。按指定提供上传文案和缩略图。
- 验证完整解码、预期的帧数/时长、尺寸、编码配置文件、音频动态余量、非重叠的 SRT 时间和精确的脚本重建。审计每个完整剪辑的总时长和非连续源选择。比较两个 Reel 图片流/时间。检查缩略图和选定的叙述动作。在可用时,用音频审查具有代表性的运动;仅凭静态图像和元数据无法证明流畅播放。如实报告任何不可用的正常速度收听/观看通行证。
- 仅在验证后,使用任务项目内显式验证的路径清理任务生成的临时文件。保留源文件、之前的编辑、共享工具/模型、指令和交付物。不要移除共享缓存。如果主机阻止清理,不要通过另一个 shell 或语言重试以绕过阻塞;报告保留的位置和原因。未经明确授权,切勿发布、上传或对权利要求提出异议。
最终包合同
将 <Title> 替换为验证过的影片/剧集标签。默认交付共包含三个 MP4 文件:一个完整回顾和两个 Reel 版本。
<Title>-Full-Recap/
<Title>-recap-with-narration.mp4
<Title>-narration-TTS.srt
<Title>-captions-display.srt
youtube-upload.txt
thumbnails/
thumbnail-01.png
thumbnail-02.png
thumbnail-03.png
<Title>-Reel-Recap/
<Title>-recap-with-narration.mp4
<Title>-recap-without-narration.mp4
narration.txt
<Title>-narration-TTS.srt
<Title>-captions-display.srt
instagram-copy.txt
不要创建不带解说的完整回顾视频或空的原始音频 SRT。在此组合工作流程中,完整回顾的上传文案是强制性的,而不是可选的。除非获得了显式的授权(例如针对推广片或频道品牌),否则不要添加徽标、水印或频道品牌。