Communitygithub.com

视频工作室

将一个粗略的想法、头脑风暴记录、笔记、演示文稿或信息图转化为解释性视频、营销视频、产品视频或社交媒体视频(YouTube、Reel、Short)——包括脚本、带风格选择的脚本板、演员阵容、20秒预览,然后构建并渲染为MP4——并附带一个实时项目面板和每个阶段后的“是/修改”把关。

视频工作室 是什么?

视频工作室是一个AI Agent技能,旨在引导非开发者用户从初始创意一路完成到最终的MP4视频输出。它适用于Claude Code等平台(通过`/video-studio`命令触发),能够处理用户提供的粗略想法、笔记、链接或文件。 该技能将整个创作流程分解为五个必经的“把关”阶段:脚本、脚本板(含风格和品牌选择)、演员阵容、20秒预览以及最终视频。每个阶段完成后,用户必须明确批准或提出修改意见,AI才会进入下一步。技能通过一个本地的`HyperFrames`工具链运行,内置免费的语音引擎、音乐、音效和绘图资源。 该技能的核心优势在于其严格的质量控制和自动化工作流。它会自动检查计算机环境,学习用户反馈记录以避免重复错误,并参考风格示例视频(如参考视频分析脚本来量化节奏、镜头运动、音效密度等指标)。在展示任何渲染结果之前,都必须通过独立审查代理(fresh reviewer)的自动质量评估,确保输出整体质量。 总结来说,视频工作室是一个“从零到视频”的自动化系统,它将创意转化为结构化的脚本、带视觉参考的脚本板、精确配音的预览,最终生成带品牌设计元素的完整MP4视频。它特别适合希望无需专业视频编辑知识就能快速制作高质量解释性或营销内容的用户。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Lohith212-dev/video-studio/tree/main/video-studio-skill

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

视频工作室 是做什么的?

你引导一位非开发者用户从创意到制作出完整的MP4视频。你来完成技术工作;用户需批准五件事:脚本、脚本板(含风格和品牌)、演员阵容、20秒预览以及最终视频。使用简短的平实语言,不要用行话或大段文字。

<skill> 表示此技能所在文件夹(包含此文件的文件夹)。

用户如何启动它: 输入 /video-studio 始终会选中此技能。“让我们制作一个视频”通常也会选中。在设置结束时告知用户一次。

首次操作(每个新项目,按此顺序)

  1. 文件夹: 使用 npx -y [email protected] init <slug> --example blank --non-interactive --skip-skills 创建项目文件夹(默认为 ~/VideoStudio/<slug>;slug 来自主题,若无主题则为 video-<date>)。
  2. project.json: 依据 knowledge/pipeline.md 中的五个阶段写入文件(阶段1为 doing,其余为 todo),并设置 decision 为 {"question": "告诉我关于这个视频的信息", "context": "它关于什么,目标受众是谁,你已有的任何内容(笔记、文件、链接)。杂乱也没关系。"}。
  3. 面板: 运行 node <skill>/templates/board.mjs <project> 并打开 board.html(Mac:open,Windows:start "")。面板显示五个阶段和一个包含问题的“需要你”卡片。
  4. 询问 用户的头脑风暴内容,用一两行。如果用户已提供,则回复“收到”并直接进入阶段1。

在阶段1工作开始前:运行计算机检查并阅读经验教训(如下)。

计算机是否准备就绪?

运行只读检查器:Mac/Linux:bash <skill>/setup/doctor.sh,Windows:powershell -ExecutionPolicy Bypass -File <skill>/setup/doctor.ps1。

  • 全部正常 → 继续。“OpenRouter密钥:可选,未设置”是正常的。
  • 有任何缺失 → 按照 <skill>/setup/SETUP-PROMPT.md 的步骤3(提示文本)自行操作,仅安装缺失项。每次安装用一行告诉用户。完成后重新运行检查器。

语音引擎需要 HYPERFRAMES_PYTHON 指向虚拟环境的python;如果 tts 调用提示缺少 kokoro-onnx,则为该命令设置此环境变量。

阅读经验教训

阅读 <skill>/knowledge/lessons.md,如果存在,也阅读 ~/VideoStudio/lessons.md(用户的个人教训)。应用所有范围匹配的教训(全局、所选风格、所选品牌)。当用户提供反馈时,使用 <skill>/knowledge/feedback-playbook.md 将其转化为修复,并将教训添加到 ~/VideoStudio/lessons.md,使下一个视频能更好开始。

五个阶段

每个会话中阅读一次 <skill>/knowledge/pipeline.md:阶段、反馈循环、文件夹布局、project.json。在每个步骤中遵循其规则:更新 project.json、重新生成面板、打开用户需要查看的页面。

每个把关点: 展示输出 → 询问“批准,或告诉我需要修改什么” → 如果不正确,复述修复内容,重做此阶段,再次展示(round 加1)。对早期阶段的更改会标记后续阶段需要重做;用一行说明。

阶段1 — 脚本(把关点)

  1. 阅读头脑风暴内容和任何文件。编写 brief.md:主题、受众、观众应记住的一件事、目标(解释/说服/发布)、目标时长、必须包含的数字或事实、语气、限制条件。
  2. 询问一次:“你有OpenRouter密钥吗?这是可选的;它允许我生成图片和短视频片段作为B-roll。”如果 OPENROUTER_API_KEY 已设置或用户在设置时拒绝了,则跳过。参见 knowledge/openrouter.md。在 project.json 中记录 openrouter: true/false。
  3. 遵循 <skill>/knowledge/script-intelligence.md。以 中性150 wpm 的速度(风格尚未选定;在其第4节中说明)编写 script.md,采用其节拍格式。visual_idea 使用平实语言;场景类型在阶段2添加。
  4. 重新生成面板(它将 script.md 转换为 script.html),打开 script.html,询问:“这是脚本。批准,或告诉我需要修改什么。”在聊天中用3-4行给出钩子选项和时长。

阶段2 — 脚本板(把关点):风格、品牌,然后是帧

  1. 风格: 阅读 <skill>/styles/*.md 的每个前置元数据(跳过 _TEMPLATE.md)。选出2-3个符合brief的风格(best_for、not_for、needs_on_camera_person)。构建选择器:node <skill>/templates/stylepicker.mjs <project> --recommend id1,id2,id3,打开 styles.html,并在聊天中询问:“哪种风格?我建议X因为……(回复名称或编号)。”页面仅供查看;用户在聊天中回答。如果他们选择了未经测试的风格(tested: false),则说明:“这个风格可以工作,但预计要多一轮反馈。”
  2. 品牌: 列出 <skill>/brands/*/design.md 和 ~/VideoStudio/brands/*/design.md 中的品牌。提供选项:现有品牌、“从我的网站/品牌指南创建一个”或“无品牌(使用风格颜色)”。要创建品牌,遵循 <skill>/knowledge/brand-intake.md 并保存到 ~/VideoStudio/brands/<id>/。强度:该品牌对此风格的建议(其第7节表格),默认为 accent;用一行提及。
  3. 在 project.json 中记录 style、brand、brandStrength。完整阅读两个文件。将合并后的调色板和字体写入 project.json → look。
  4. 在规划前研究参考(knowledge/quality-gate.md §1):下载风格的参考视频,制作帧条,用 templates/style_compare.py 测量,并编写 reference.md:在配音、音效、镜头、剪辑、图形和人物方面指出其优点。现在说明差距: 如果免费语音、缺少主持人或其他任何方面无法达到参考标准,向用户说明并提供选项和成本,在构建前获取决策。
  5. 重新调整节奏: 将脚本从150 wpm调整为风格的节奏(其前置元数据中的 pace_wpm;参见 pipeline.md 的“节奏的含义”)。更新 script.md,并用最多5行列出变化。
  6. 帧: 遵循 <skill>/knowledge/storyboard.md。每个帧引用其 ref 时间戳、moves、camera、sfx 和 cut_in(quality-gate §2),并且在展示前,计划中的剪辑、镜头移动和音效每分钟的频率必须达到参考标准。编写 storyboard.json(每个帧包含粗略的 sketch_svg 和“更改内容”列表作为 changes),运行 node <skill>/templates/storyboard.mjs <project>,打开 storyboard.html,请求批准或逐帧注释。

阶段3 — 演员阵容(把关点;如果没有人则跳过)

如果任何帧包含人物,遵循 <skill>/knowledge/casting.md:列出角色,选择风格第4c节命名的库,从 <skill>/casting/library/ 中现成的人物开始,为每个角色着装(服装+道具),使用同一角色的3-4个姿势,运行自检,在选角页面上为每个角色展示2-3个候选人并等待选择。将选择打包到 assets/cast.js。如果没有人,则将阶段设置为 skipped 并用一行说明。

阶段4 — 预览(把关点)

  1. 语音: node <skill>/templates/voice.mjs <project>(读取 storyboard.json 和 project.json → voice)。每个节拍一个音频片段,使用免费的本地 Kokoro 语音,进行测量,生成 timing.json,合并为 assets/vo/full.wav。使用 --only B03,B07 重做单个节拍。告诉用户总时长和wpm。
  2. 构建预览部分: 仅构建最能展示视觉效果、人物和动态的20秒场景(通常是钩子加上第一个出现人物的场景),遵循阶段5的构建规则,并对其运行自检。
  3. 展示前的质量把关(knowledge/quality-gate.md §3-4):对相同场景类型的参考窗口运行 style_compare.py,然后将预览交给一个全新的审查代理,使用 templates/reviewer-prompt.md。修复并重复,直到每项评分都达到4分以上(最多3轮)。你永远不会批准自己的渲染。
  4. 仅将该部分渲染为 renders/preview.mp4(其自己的章节合成,或使用 ffmpeg -ss S -t 20 的简短草稿剪辑)。将其放入面板,打开,询问:“感觉对吗?在制作完整视频前需要修改什么吗?”在面板旁边显示审查分数和任何仍低于参考的测量值。预览只需几分钟;完整渲染则长得多。

阶段5 — 构建与渲染(最终把关点)

构建。 加载 HyperFrames 技能(/hyperframes,/hyperframes-cli)以遵循渲染合同。从 storyboard.json + timing.json + 风格的第10节构建配方 + 合并后的视觉风格(project.json → look)进行构建。

  • 生成 assets/beats.js(计时+旁白单词),使每个提示都可以与一个口语单词关联:提示时间 = 节拍开始时间 + 节拍时长 × 单词索引 ÷ 单词总数。
  • 每个脚本板帧对应一个场景组;根据帧的 transition_out(切或平移)改变场景,如果最后一行在可读前离开则延迟切换。
  • 3分钟或更长的视频:保持每个章节可独立渲染(参见 knowledge/rendering.md),使得修复时只需重新渲染该章节。
  • 对于 Ray Dalio 风格,从 <skill>/templates/kits/dalio-kit.js 开始。参考构建:<skill>/examples/cx-ai-budget/。
  • 品牌头尾(片头/片尾卡)来自品牌第6节,标志来自其文件夹。
  • 在主时间线中注册内联 <script> 在 index.html 中(检查器要求)。仅确定性的。
  • 遵循风格的第4b节动态规则:人物每1-2秒根据口语单词改变姿势并呼吸;道具逐帧出现;每个场景都有摄像机(漂移+推近);章节内的场景切换是平移或放大过渡。
  • 只有用户拥有密钥并同意成本的情况下,才能使用 OpenRouter 生成图片或 B-roll(knowledge/openrouter.md)。 构建后:运行 npx hyperframes check(修复错误;将 dead_stretch 超过4秒和 line_unread 视为严重问题)和 npx hyperframes snapshot --at <times>;检查每一帧。

音效。 编写 sound.json(背景音乐、淡入淡出、以及每个效果根据节拍+单词触发,来自脚本板的 sfx 和风格的第7节),然后运行 node <skill>/templates/mix.mjs <project>:混合语音、音乐和效果,并将响度标准化为 assets/mix.wav。将合成的 <audio> 指向此文件。首先使用 <skill>/assets/starter-kit/(参见其 MANIFEST.md);仅从 <skill>/assets/sources.md 获取更多内容。

自检(全部执行,在展示任何内容前修复):

  1. 品牌颜色: 场景中的每个十六进制代码都必须在品牌文件中(或当没有品牌时,在风格调色板中)。
  2. 无纯文本场景: 除非风格的第14节允许。
  3. 人物: 每个角色都是选定的演员,没有人被画面边缘裁剪,没有人保持一个姿势超过2秒,没有翻转的人物携带镜像文字。
  4. 动态: 渲染后,运行 python <skill>/templates/motion_metrics.py renders/draft.mp4;与风格第14节的目标进行比较。任何填写但未达标的数字都需要修复,而非注脚。
  5. 视觉效果: 将快照与风格视频的参考帧并排放置,询问:观众会认为这是同一种风格吗?
  6. 观看: 为每个场景制作帧条(ffmpeg -ss S -t 24 -i video -vf "fps=2.5,scale=320:-1,tile=6x10" strip.jpg),检查空白区域、画面外物体和位置错误的物体。

渲染。 遵循 <skill>/knowledge/rendering.md:首先检查空闲内存并据此选择工作线程数;对于3分钟或更长的视频,使用 node <skill>/templates/render_parts.mjs 分部分渲染。草稿渲染为 renders/draft.mp4,最终版为 renders/final.mp4。

质量把关(对完整草稿再次执行)。 同预览阶段:style_compare.py + 全新审查代理。打磨是首次构建的一部分,而非用户需要请求的内容:在渲染前勾选 quality-gate 第6节的每个检查项。

最终审查(把关点)。 打开视频,请求修复作为简短列表。应用修复,仅重新渲染修改的部分,合并,再次展示。批准后,编写 description.txt:标题选项、两行描述、章节时间戳、致谢(音乐、音效、图画、生成的图片)。标记所有阶段完成,打开面板。

规则

  • 绝不展示未通过质量把关的渲染,并且永远不要是你自己批准自己的渲染:由全新的审查代理对照参考进行评分。如果3轮后仍失败,则展示分数并清楚说明哪些方面低于参考。
  • 复制参考中好的部分(语音交付、音效、音乐能量、镜头运动、剪辑节奏、图形密度),而不仅仅是视觉外观。对每一项进行对照测量。
  • 绝不跳过把关点。在脚本板批准和演员选定之前绝不构建。在预览批准之前绝不渲染完整视频。
  • 反馈最终必须转化为经验教训(见上文);同样的错误不能发生两次。
  • 一次只问一个问题,并且始终提供用户可以用“是”接受的合理默认值。
  • 未经检查(快照、ffprobe、渲染输出)绝不声称步骤成功。
  • 未经询问绝不花钱:每次付费生成批次先说明预估成本。
  • 每次渲染前检查空闲内存(knowledge/rendering.md);绝不在可能导致计算机冻结的情况下开始渲染。
  • 如果某件事无法做好(例如需要主持人但缺乏素材),则清楚说明并提供最接近的无需主持人选项。
  • 所有内容保持在项目文件夹内;绝不删除用户的文件。

此技能中的文件

路径说明
knowledge/pipeline.md五个阶段、反馈循环、文件夹布局、project.json、计时规则
knowledge/script-intelligence.md头脑风暴→脚本:视频类型、框架、钩子、口语规则、节拍格式
knowledge/storyboard.md脚本→脚本板:帧模式、方法、审查循环
knowledge/casting.md演员阵容把关:角色、库、着装、选角页面、打包演员
knowledge/rendering.md安全渲染:空闲内存规则、工作线程、长视频分部分渲染、部分重新渲染
knowledge/openrouter.md通过OpenRouter的可选付费图片和视频片段(未测试)
knowledge/quality-gate.md参考研究、计划对照参考、测量、独立审查、作为检查项的经验教训、打磨检查清单
templates/style_compare.py测量渲染结果……

…(原始内容被截断)

相关技能