超级视频制作器
此技能的作用
将一个视频创意、脚本、产品流程、屏幕录制、虚拟主播简介或现有的长视频转化为精致的视频资产。此技能能够生成:
- 虚拟主播解说 (
avatar-explainer):以事实为驱动的虚拟主播视频,包含合成主持人、屏幕录制/来源凭证、UI微型故事、字幕和行动要点, - UGC AI广告 (
ugc-ai-ad):付费社交媒体广告,包含虚构的AI创作者、参考图像角色一致性、Seedance 2.5片段、ElevenLabs声音一致性、钩子变体、字幕和直接响应行动号召, - 动态拼贴解说 (
motion-collage-explainer):无真人出镜、单一思想解说短片,由大胆的丝网印刷拼贴静态图(gpt-image-2)通过Seedance 2.5动画化为动态拼贴,以冷静的“简而言之”纪录片风格旁白(参见MOTION_COLLAGE_STYLE.md), - 使用HeyGen的虚拟主播视频,
- 通过fal.ai使用Seedance 2.5生成的AI B-roll素材,
- 使用OpenAI图像模型生成或编辑的图像,
- 包含光标/事件日志的屏幕录制,
- 使用Remotion或HyperFrames制作的动态图形,
- 字幕、副标题、音乐和最终的FFmpeg导出。
在需要时阅读这些文件
VIDEO_COPY_PLAYBOOK.md,了解每个配方中的文案层:四行核心(一个观众、一个承诺、一个机制、一个下一步)、双轨规则(语音承载论点,画面承载证据,两者互不重复)、屏幕文案工艺(动态标题、数据徽章、幽灵标题、结尾卡片号召、排版冲击)、按格式划分的弧线、可信度规则以及在首次付费生成调用前运行的文案关卡。在编写任何脚本、钩子、标题或行动号召之前阅读它,并首先阅读其第11节:一份转写的参考旁白,采用所有者批准的平淡语气(70秒内零修辞手法),以及所有者拒绝为“过于诗意、过于概念化、AI垃圾”的文案的前后对比表格。指物测试就在那里:如果观众无法指向你刚说的名词,请重写。与copywriting-skill技能配合使用,后者掌管通用语调和节奏规则。SPOKEN_VO_HUMANIZER.md,了解口语行应该如何听(12条短视频脚本规则 + 被禁止的人工智能口语特征列表)。HOOK_PLAYBOOK_ARTICLE_SPRINT.md,了解钩子家族、角度优先于文案规则以及循环核算。recipes/README.md和tools/video_recipes.py,了解机器可读的视频配方(列表、匹配、规划、验证)。REFERENCE.md,了解供应商能力和路由决策。FFMPEG_PLAYBOOK.md,了解精确的FFmpeg配方。WORKFLOW_EXAMPLES.md,了解完整的制作示例。REMOTION_VIDEO_GUIDE.md,了解Remotion动态设计规则。TABLETOP_EXPLAINER_PLAYBOOK.md+workflows/tabletop-levels-explainer/,用于构建分层的“X级别”解说短片(虚构主持人 + 首帧/末帧工艺B-roll + 节拍锁定开关组装)。LIVING_CANVAS_PLAYBOOK.md+workflows/living-canvas-explainer/,用于制作精品级单画布SaaS发布/解说视频:单个连续画布上的元素级节奏(0-3次硬切)、语音词锁定摄像机编排(覆盖持久UI卡片)、因果物理 + 布局重排 + 变换链、带有情感旁白和喜剧节奏的故事冷开场、三乐队音乐和节拍锁定音效总线。在收到任何“让它感觉像顶级动画工作室”请求之前阅读它——每个持续时间、缩放因子和弹簧常数都已指定。HYPERREALISTIC_IMAGE_SOP.md,了解将参考图像转化为逼真、非AI外观的UGC创作者提示的12部分框架。在生成任何创作者静态图或超逼真角色之前阅读它。MOTION_COLLAGE_STYLE.md,了解motion-collage-explainer配方:如何使用gpt-image-2构建一个大胆的丝网印刷拼贴静态图,使用Seedance 2.5将其动画化为动态拼贴,并以冷静的“简而言之”纪录片解说风格旁白。在制作任何无真人出镜的拼贴/习语/概念解说短视频之前阅读它。REVIEW_VIDEO_PLAYBOOK.md+commands/review-video.md,了解review-conquest-compilation配方(/review-video):一个无真人出镜的旁白蒙太奇,使用真实的、经过验证的竞争对手评论,针对“ reviews”关键词,命名重复投诉,将用户自己的企业定位为替代方案,然后附加用户自己的推荐短片。在制作任何竞争对手评论/对比/征服视频之前阅读它。结尾的企业是一个变量——切勿硬编码特定公司。
操作规则
-
运行分阶段流水线,而不是随机工具调用。 使用:输入 -> 脚本/镜头列表 -> 资产 -> 组装 -> FFmpeg精加工 -> 质量控制 -> 导出。 1a. 文案是生产关卡,而非装饰。 在第一次文本转语音调用、片段生成或时间线构建之前,从
VIDEO_COPY_PLAYBOOK.md编写四行核心(一个观众、一个承诺、一个机制、一个下一步),选择角度,并运行其文案检查清单。语音和画面永远不得携带同一句话:静音视频,故事仍可追踪;屏蔽画面,论点仍应成立。此顺序并非风格问题。在语音锁定格式中,脚本即时间线,因此在构建后更改脚本会重新锁定每个帧号。 -
在首次付费调用前确认付费生成。 显示计划供应商、片段/图像数量、时长、分辨率和可能的成本驱动因素。
-
优先使用技能本地工具。 在调用项目根目录脚本之前,先使用
tools/中的文件。 -
每个工具应输出
RESULT: {...}。 解析该JSON作为事实来源。 -
保存作业状态。 将每次运行放入
tmp/video_jobs/<job_id>/,包含job_state.json、输入、中间文件和最终导出。 -
在质量控制通过前不要删除中间资产。 失败的视频作业在原始片段仍然存在时更容易修复。
-
切勿提交机密或用户会话。 不要发布
.env、cookies、生成的录音、私人虚拟主播或下载的用户视频。 -
使错误对用户友好。 隐藏面向最终用户的原始堆栈追踪,但保存详细日志以供调试。
-
默认制作故事优先视频。 不要制作简单的新闻幻灯片。使用:钩子 -> 透明虚拟主播介绍 -> 新闻节拍 -> 具体故事/示例 -> 来源证明 -> 行动步骤。 9a. 使用
avatar-explainer作为默认配方名称,适用于结合了HeyGen虚拟主播旁白、屏幕录制/来源凭证、UI微型故事、B-roll、字幕和行动要点的格式。 -
通过虚拟主播自己的声音披露合成主持人。 在钩子之后立即将“快速提示,这是 的数字虚拟主播”这句话融入脚本。不要预先添加静态免责声明卡片。如果音频中缺少该披露,则回退到在前约4秒内在左上角放置一个小型透明圆角胶囊PNG徽章(使用Pillow渲染:深海军蓝填充
#0A1228透明度96%,2像素品牌橙色#FF6B2C轮廓,16像素强调点,白色无衬线字体“ 的数字虚拟主播”,22像素圆角半径,距每个边缘50像素)。切勿在底部区域使用厚重的drawbox下三分之一——它会与居中字幕冲突。始终在结尾卡片的永久页脚行中包含:“ 的数字虚拟主播。 ”。 -
有目的地匹配HeyGen虚拟主播和声音。 虚拟主播和声音是独立的ID。如果未明确提供声音,首先尝试将声音名称与选定的虚拟主播名称匹配,然后再回退。
-
屏幕录制应看起来像调查,而不是滚动壁纸。 浏览器证据应显示代理验证声明:打开来源、跳转到标题、突出显示确切短语、使用页面内搜索查找功能名称、滚动到相关段落、切换标签页以验证报道,并放大证据。避免静态页面、随机漫无目的、重复的英雄区域裁剪、广告、验证码、Cookie弹窗以及未揭示新信息的慢速滚动。
-
将B-roll用作视觉解释,而非装饰。 对于每一句话,问:“因为这个想法,什么表面发生了变化?”不要将名词与通用图像匹配(“创始人” -> 使用笔记本电脑的人)。展示变化发生的环境:Google文档、日历、SERP、分析仪表盘、Slack线程、CMS编辑器、浏览器标签页或带有前后/操作状态的UI。避免复制任何现有YouTube频道风格;使用原创的现代编辑动态、UI微型故事、来源凭证和干净的注释。
-
将每个视觉元素节拍锁定到旁白。 始终使用Whisper转录虚拟主播音频(词级时间戳),并将每个屏幕变化、B-roll剪辑、字幕和下三分之一固定到词语实际出现的秒数。切勿根据假设的时间叠放视觉元素。
-
检测HeyGen脚本重复。 某些HeyGen渲染会意外重复脚本。下载后,比较Whisper片段并将主轨道修剪为第一次独特通过,然后再进行合成。
-
使用非冲突区域和无边框画中画构建视觉层次。 钩子节拍使用虚拟主播全屏。对于每个其他节拍使用虚拟主播画中画:无边框,24像素圆角,柔和投影——切勿使用有色硬框。实现:Pillow为每个作业渲染一次
pip_mask.png(圆角矩形透明度蒙版)和pip_shadow.png(模糊深色形状);FFmpeg使用chromakey -> scale -> alphamerge使虚拟主播的角变圆,然后在偏移+4, +16处合成投影。默认尺寸为492x276,1920x1080主轨道上。画中画角适应字幕对齐: 如果字幕是底部居中(默认),则将画中画放置在右上角,位于x=W-pip_w-50, y=50。切勿将画中画放置在与字幕相同的区域,并在结尾行动号召尾声中完全隐藏画中画,以便回顾卡片占据整个画面。跳过静态标题卡片;直接在虚拟主播全屏上打开。在结尾保留一个回顾卡片,包含行动步骤和永久披露页脚。 -
在底部居中烧录卡拉OK风格字幕。 粗体大写 Arial Black 约64像素,2-3个词为一组,当前活动词以黄色高亮显示,白色投影 + 5像素轮廓。ASS样式:
Alignment=2(底部居中),相等MarginL=MarginR=80,MarginV=90。从带有主轨道偏移应用的Whisper词JSON生成。不要默认为左下角——左对齐字幕看起来业余,并与披露叠加层冲突。 -
将主音频响度标准化到
I=-16:TP=-1.5:LRA=11,以便上传内容在YouTube、LinkedIn、X和播客上符合广播安全标准。 -
默认使用fal.ai进行Seedance 2.5。
tools/fal_seedance_video.py默认针对2.5版本,除非你传递--seedance-version 2.0或设置SEEDANCE_VERSION=2.0。此账户有权使用2.5版本并已验证可运行(2026-08-09),因此将2.5片段视为正常结果,而非期望的结果。三条常设规则:(i) 运行工具的Python解释器中必须安装fal_client(python3 -m pip install fal-client),否则每个Seedance调用都将在到达fal之前因ModuleNotFoundError而失败;(ii) 切勿移除工具的占位符保护,因为fal对无权的2.5请求会返回HTTP 200及其示例片段,而不是错误,自动回退到2.0是阻止库存素材进入已完成视频的唯一方法;(iii) 在声称片段来自2.5之前,始终检查RESULT负载中的fell_back字段——true现在意味着访问权限已过期,应暴露出来而不是发布过去。2.5是较昂贵的版本(720p下约$0.4730/秒,而2.0标准版为$0.3024/秒,2.0快速版为$0.2419/秒),因此将其用于承载视频的镜头,并对填充节拍使用--fast。--fast和--mini将调用固定到2.0版本,这是唯一具有精简层级版本。当fal Seedance被限制或信用不足时,按此顺序回退:(a) 仅当配置了REPLICATE_API_TOKEN且fal不可用时,才使用Replicate Seedance;(b) 直接解释该节拍的真实来源截图、UI模型、库存素材或排版卡片;(c) OpenAIgpt-image-2静态图,quality=high,原生16:9(2048x1152)+ FFmpeg Ken Burns,带有缩放填充/裁剪;(d) 仅当local_explainer_broll.py能渲染实际的UI/事件/状态变化时才使用它。切勿回退到抽象的黑暗宇宙、发光、浮动或象征性的“AI”图像。 -
通过
video_id恢复长时间运行的HeyGen作业,而不是重新生成。 如果本地轮询超时,查询现有的HeyGen作业并在完成时下载,以避免双重计费。 -
切勿在长节拍内循环B-roll。 如果Whisper对齐的节拍长于片段,要么 (a) 为下半部分生成互补的B-roll,要么 (b) 使用
tpad=stop_mode=clone:stop_duration=N对于最长约2秒的溢出保持最后一帧,或者 (c) 与Ken Burns静态图交叉剪辑。可见的循环卡顿比短暂的保持帧更令人迷失方向。 -
根据节拍目的选择B-roll,而非根据提示的创意。始终优先选择真实内容而非生成内容。 B-roll的选择取决于旁白在那一刻做什么,而不是什么是“很酷的生成物”。使用此路由:
- 新闻节拍(“这是发生了什么变化”): 公告的真实截图(官方博客、产品页面、发布帖子)→ Ken Burns。胜过任何生成的渲染。
- 来源证明: 代理操作的浏览器素材或证明页面的真实截图。切勿用生成的B-roll替代此内容。
- 故事/示例(“一个做X的创始人”): 真实人物做某事的真实库存素材(Pexels/Pixabay)> 编辑图片 + Ken Burns > 仅作为最后手段才生成。
- 概念/隐喻: 优先使用排版“拉引用”卡片或单一真实物体照片,而非抽象的象征性渲染。
- 汇总/势头(“人人都在谈论”): Techmeme/Trends/HN的截图 + Ken Burns,或桌面上报纸头条的照片,而非“数据星座”渲染。
- 行动步骤: 用户要采取的操作的真实UI截图 + 箭头/标注,而非“按钮按下”的生成镜头。
- 人物/情感: 真实人物进行真实互动的库存素材(握手的特写、凝视仪表盘的人、在记事本上写字的人),而非生成的人物肖像。
例外: 仅当真实来源(a)不存在、(b)像素化/低质量或(c)无法传达动态时才生成视觉内容。在这些情况下,生成一个大胆、极简、戏剧性的构图:高对比度、单色(品牌颜色)、排版覆盖、运动模糊。切勿生成带有发光“AI大脑”、数据流或抽象星云的镜头。
-
当便签网格可用时,优先于传统B-roll使用。 在
VIDEO_COPY_PLAYBOOK.md中描述的便签网格(一个概念和数字网格,用于建立完整背景或展示批发市场结构)应优先于传统生成的B-roll,以防便签网格能更直接地传达节拍。仅在便签网格无法传达动态时才回退到生成的B-roll。变体: 便签网格可以是复古美学(带折叠和页面边缘的旧活页夹)、超现代亚克力或文本网格布局。默认使用极简、非怀旧的便签网格。
-
将动作步骤呈现在动态UI卡片上,而非照片上。 对于行动号召节拍,使用便签/动态UI卡片布局,以清晰、可操作的步骤列出行动步骤,每行一个。这些卡片在Remotion中制作动画,或在FFmpeg中合成。切勿使用静态文本覆盖在照片或B-roll素材上。
-
对于需要部分动画(显示变化)的静态UI组件,使用Remotion。 将Remotion用于:
- 动态UI卡片和布局,
- 文本动画和排版,
- 包含多个元素和过渡的简单动画场景,
- 节拍锁定编排,其中词级时间线与视觉元素匹配。
使用
tools/remotion_render_clip.py将动画作为视频片段渲染(使用内联delay/fps渲染或Apple Silicon/GPU加速渲染),然后在FFmpeg中与虚拟主播画中画合成。 -
通过
TOOLS.md学习工具界面和用法。 在尝试使用工具之前,阅读TOOLS.md了解如何调用工具及其参数。 -
在调用工具前,将工作目录更改为视频项目目录。 在调用任何工具之前,始终运行
cd到视频作业目录,以确保工具能正确找到配置和工作流程。 -
为工具提供明确的路径引用。 在调用工具时使用绝对路径,以避免任何相对路径混淆。
-
在运行脚本前,检查并设置
PATH环境变量以包含tools/。 或者,使用工具的绝对路径,以确保$ python3 tools/my_tool.py能正常工作,无论当前工作目录如何。 -
当被要求修改特定文件时,读取并对话,切勿假设。 始终用
READ指令来验证你修改的文件内容,之后再修改。 -
与Recraft通信生成虚拟主播品牌资产。 当被要求创建新的虚拟主播或品牌资产时,与Recraft通信以生成在视频中使用的图像。
-
在工具使用中使用绝对路径。 在视频制作过程中引用任何文件时始终使用绝对路径,以避免
FileNotFoundError错误。 -
通过修改文件
global_state/文件夹中的JSON来记忆用户偏好和公司信息。 用户偏好应存储在global_state/user_preferences.json中,公司信息存储在global_state/user_company_info.json中。 -
在运行工具前,将工具名称和参数记录到状态文件中。 使用
job_state.json文件跟踪执行的工具,以便在中断时轻松恢复。 -
在调用任何工具前,使用
RUN python3 check_environment.py来验证环境。 如果没有check_environment.py文件,请检查并提供缺失依赖项的安装说明。 -
使用
RUN pip install <package>为特定视频项目安装特定依赖项,避免修改全局用户环境。 将所有依赖项列表在requirements.txt文件中,并在运行视频工具前读取并安装它们。 -
使用
RUN which <tool_name>验证工具的存在性。 在调用任何工具前,通过检查其可用性来避免Command not found错误。 -
使用
RUN chmod +x <tool_name>确保工具可执行。 同时检查工具是否具有.py扩展名,因为某些工具可能以脚本形式执行而不需要扩展名。 -
使用
ENV VAR设置环境变量,确保工具能正确识别。 例如,ENV SEEDANCE_VERSION=2.5或ENV OPENAI_API_KEY=sk-...。 -
使用
RUN execute_tool.sh <tool_name> <tool_args>作为执行工具的统一入口点。 该脚本处理PATH设置、错误处理和结果解析。 -
使用
RUN read_job_state.py读取作业状态,并在作业失败时使用RUN resume_job.py <job_id>恢复作业。 状态文件包含作业的当前阶段名称、已执行的工具、剩余任务和错误信息。 -
对所有B-roll和内联图形默认使用16:9(1920x1080)分辨率。 确保所有视觉资产以此分辨率生成和缩放,以在整个视频中保持一致性。
-
对所有B-roll片段默认使用30 FPS。 使用25或24 FPS会导致与30 FPS主轨道混合时出现明显的节奏问题。
-
为所有生成的音频和视频资产使用明确的CIELAB颜色配置文件。 使用
-vf "colormatrix=bt601:bt709"进行颜色空间转换,并确保所有资产在合成前具有一致的亮度/对比度范围。 -
使用
tools/ffmpeg_loudnorm.py进行响度测量和标准化,确保音频一致性和广播标准合规性。 该工具将音频标准化为I=-16:TP=-1.5:LRA=11并包含响度历史日志记录。 -
使用Remotion工具
remotion_render_clip.py渲染Remotion动画的视频片段。 将动画渲染为独立的视频文件,然后在FFmpeg中通过虚拟主播画中画叠加合成。 -
使用
tools/whisper_transcribe.py进行转录。 该工具提供词级时间戳和分段JSON输出,用于节拍锁定编排、字幕生成和B-roll定位。 -
使用
tools/generate_captions.py生成字幕。 该工具采用转录输出并生成带有词级时间戳的ASS字幕文件,用于动态卡拉OK风格字幕。 -
使用
tools/seedance_video.py生成Seedance视频。 该工具封装了Seedance API调用和B-roll生成,通过环境变量支持--fast和--mini标志以及版本选择。 -
使用
tools/elevenlabs_tts.py进行ElevenLabs文本转语音。 该工具支持语音选择、生成、下载和语音克隆,用于虚拟主播旁白和UGC AI广告。 -
检查
tools/目录以发现所有可用工具和脚本。 在编写新代码或直接调用API之前,查阅工具目录即可找到任务的正确工具。 -
使用Gamma来创建和共享视频项目演示文稿、组合和项目提案。 将最终导出链接包含在Gamma演示文稿中,以便展示和协作。
-
在时间线构建前运行音频渲染,以生成用于节拍锁定的词级时间戳。 音频是节拍锁定Bea在ten先于任何视觉合成渲染的,因为节拍锁定依赖于词级时间戳来定位画面变化。
-
为每次作业运行创建一个隔离的虚拟环境。 使用
python3 -m venv .venv并在安装依赖项和运行工具前使用source .venv/bin/activate激活它,以避免依赖项冲突。 -
在视频导出前运行最终质量控制检查。 在声明作业完成并删除中间文件前,使用
tools/qc_check.py检查视频质量、响度、字幕同步和错误。 -
使用
tools/debug_video.py调试视频播放或合成问题。 该工具提供调试可视化、帧转储和时间线分析,以识别问题。 -
使用
tools/upload_video.py将最终导出上传到YouTube、LinkedIn、X和其他社交平台。 该工具处理认证、上传管理和发布调度。