Communitygithub.com

Video Reel Studio — 全能短片工坊

一个超级编排器,将一句指令自动转化为成品竖屏视频:撰写创意简报,选择模式(口播短片、混剪、播客、动态电影、网页/应用演示、纯封面),端到端运行视频广告编辑管线,委托独立上下文进行阿拉伯语字幕和视觉审核,并在自动门控失败时拒绝交付(检查源文件、剪辑、字幕、帧、响度、真实峰值、安全区域、打包)。当用户说出如“منتج الفيديو ده”、“حوّله لريل”等命令时启用。

Video Reel Studio — 全能短片工坊 是什么?

Video Reel Studio 是一个高度自动化的 AI 编排技能,能够将用户的一句简短指令自动生成为完整的竖屏视频。它不直接负责绘制或剪辑,而是作为一个超级管理者,协调多个专业子技能(如视频广告编辑器、混剪编辑器、播客视频编辑器、动态视频编辑器和缩略图制作器)协同工作。该技能的核心在于其严格的“门控”机制:在交付最终视频前,会自动检查源文件、剪辑逻辑、字幕准确性、帧画面、音频响度(-14 LUFS)、真实峰值(≤-1.0 dBTP)、安全区域和打包格式等多项指标。任何一项未通过,系统都会拒绝交付并要求修复。它支持 Windows 和 macOS 双平台,通过 `preflight.py` 脚本自动检测环境并安装缺失依赖。在开始工作前,它会询问用户是否需要建立品牌标识(颜色、字体、语气),并记录在配置文件中供后续项目复用。用户交互严格限定:只问一个关键决策性问题(如选择哪个模型或哪种编辑风格),其余一切技术工作由 AI 全权负责。该技能极其注重 Token 经济,通过一步命令完成一个阶段,使用单一预览图(sheet.jpg)代替多张图片,并通过 `grep` 和 `tail` 等工具高效读取文件,避免浪费上下文。最终交付的是一份带有完整门控报告的视频文件,不涉及发布或调度。

兼容平台✓Claude Code✓Codex CLI✓Cursor✓Gemini CLI✓OpenCode
npx skills add https://github.com/MostaDaoud/video-reel-studio/tree/HEAD/skill/video-reel-studio

在你喜欢的 AI 中提问

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

文档

Video Reel Studio — 一个总管,多道严管闸门

这个技能 不自己绘制,也不自己剪辑。它是一个位于五个现有技能之上的管理者:

技能管理者用它来负责
video-ad-editor所有脚本(scripts/)、口播短片、字幕、封面
montage-video无口播片段按节奏剪辑
podcast-video双摄像头 → 短片或 16:9 完整节目
motion-video根据文本生成动态电影(motion/ 引擎)
thumbnail-video短片封面和 YouTube 缩略图

脚本根目录:.opencode/skills/video-ad-editor/ — 请传递完整路径。

平台:Windows 和 Mac

该技能为在两个平台上运行而编写。区别仅在于 如何调用工具,而非逻辑本身:

WindowsMac
Pythonpythonpython3
.sh 脚本& "C:\Program Files\Git\bin\bash.exe" … (⛔ 不是普通 bash = WSL)bash …
ChromeC:\Program Files\Google\Chrome\Application\chrome.exe/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
3DGL=gpu (ANGLE/D3D11)Metal 自动选择
路径D:/work/x 或 D:\work\x/Users/you/work/x

在任何工作之前,每个会话只需要一次:

python scripts/preflight.py        # Mac: python3

它会检查:Python、ffmpeg/ffprobe、node、bash、Chrome、numpy/scipy、相关技能、字体以及身份文件夹 — 并为每个系统打印正确的安装命令(Windows 上使用 winget,Mac 上使用 brew)。闸门 G-2。

脚本本身会自动检测平台:_vision.py 在 Mac 上选择苹果工具,在 Windows 上选择开源替代品; _chrome_flags.js 在 Mac 上选择 Metal,在其他地方选择 SwiftShader;31_device3d.js 和 motion/render.js 会在两个系统的路径中寻找 Chrome。

合同:一句话 → 一个就绪文件

用户给你一个 文件或链接和一句话。你来掌握所有步骤。不要给他们命令,也不要问任何你可以自己检查的事情。只问 一个问题,当决策关乎品味而非技术时(哪个角度,哪个钩子,删除哪句话)。

埃及命令 — 如果他们这么说,那就是这个模式

如果他说模式
「منتج الفيديو ده」·「حوّله لريل」·「اقصّ السكتات」·「هات الكابشن」talking-reel
「اعمل مونتاج من المقاطع دي」·「ركّبهم على الأغنية」montage
「اعمل ريلات من الحلقة」·「عندي كاميرتين」·「الحلقة كاملة」podcast
「اعمل فيديو موشن من النص ده」·「اشرح بالحركة」·「موشن جرافيكس」motion
「اشرح الموقع ده بفيديو」·「ديمو للتطبيق」·「اللينك ده」web-demo
「اعمل كوفر」·「ثمبنيل يوتيوب」·「صورة مصغرة」cover-only
「عايز أعدّل بنفسي」·「اعمله كاب كت」·「افتح الاستوديو」基础模式 + CapCut/工作室

不必让他明确说出模式。如果句子中 动词 + 文件,你从上面的表中推断出模式并继续。

快速通道

#阶段输出闸门
-2环境检查:preflight.py (Windows/Mac)工具报告G-2
-1身份(可选):先问 — 已保存 / 新建 / 默认theme.json + brand.mdG-1
0读取请求并编写 brief.jsonpromise + mode + lengthG0
1源:复制,检查帧,检查曝光src.movG1
2剪切 + 转录 + 纠正 + 字幕cut.json a.json caps.jsonG2 · G3 · G3b
3设计:动画、场景、预览scenes*.js + sheet.jpgG4b
4完整渲染out/ = 时长×30G4
5编码 + 母版 + 翻译ad-master.mp4 .srtG5
6封面 + 缩略图 + 手机预览cover.jpg …G6 · G6b
7交付报告gates.mdG8

详细说明和精确命令 → references/pipeline.md。 角色以及何时移交代理 → references/roles.md。 每个闸门条件及其限制 → references/gates.md。 艺术方向: 在第一个场景之前从 styles/pack.json (10) 中选择一个样式 — python scripts/style_pack.py apply "<work>" <id> — 样式控制动画和纹理,品牌控制颜色 → references/styles-adapted.md。

-1a) 代理和模型 — 在身份之前

ai.json 在任何事情之前写入:代理 从环境可知(你在其中工作),所以不要问。 如果模型不明确,只问 一个问题:

"你要在哪个模型上工作?只需名字 — 以便我调整场景大小和审核方式。"

回答即时影响
模型 强 + vision6-8 个场景,深度时刻,由子代理进行视觉审核
强但无 vision4-6 个场景,仅数字审核 + 用户对 sheet.jpg 的肉眼检查
快/便宜3-5 个来自既定模式的场景,一个预览,每个闸门一次
上下文小将转录分成窗口,不要一次性读取所有文本
  • 代理:opencode · claude-code · codex · cursor · gemini-cli — 并且 preflight.py 将项目标记与 ai.json 进行比较。
  • 如果能力未知,将其保留为 null → 技能采取谨慎态度(数字 + 肉眼)。
  • 详细信息和完整矩阵 → references/ai-fit.md。

-1b) 身份 — 可选入职(不要强加)

第一次视频请求时,在任何脚本之前,只问一个问题:

"在我们开始之前:我们要一次性设置你的品牌(5 分钟:颜色、字体、语气、禁止项), 还是使用已保存的品牌,或者继续使用默认品牌并稍后修改?"

他的答复你的操作
"有已保存的品牌"python scripts/onboard.py list ← 列出名称 ← apply <work> <slug>
"设置它"七个问题 ← new ← card ← 显示品牌卡 ← apply
"继续使用默认"在同一项目中不要再问;默认 #0B0C0C · #F4F2EE · #19C3AE · Cairo · chunk
"没时间"开始视频,在首次交付后提供品牌设置
  • 七个问题(名称、账号、受众、语气、行动号召、颜色、禁止项)→ references/onboarding.md。
  • 有图片/标志?用 scripts/00_theme_refs.py 提取调色板,而不是猜测。
  • G-1: ink/bg ≥ 4.5,acc/bg ≥ 3,onAcc/acc ≥ 4.5 的对比度。onboard.py new 如果失败则拒绝保存。
  • 品牌保存在 ~/.config/opencode/brands/<slug>.json 中,并在每个后续项目中使用。

⛔ 禁止不先询问就开始入职,禁止因为颜色而停止项目,禁止问超过 7 个问题。

G0 — 简报(不要跳过)

在任何脚本之前写入 <work>/brief.json。模板:assets/brief.template.json。

  • promise = 观众在最初 3 秒内理解的内容。一句话。如果你写不出来,说明你没理解请求。
  • mode 来自六个模式。如果请求可能包含两种模式,选择 最接近用户意图的 并告诉他你理解了什么。
  • length_s = 现实范围(短片 45–90 秒;长内容 → 多个短片,不是单个短片)。
  • must_keep = 禁止删除或更改的名称和数字。

闸门 G0:三个都存在?如果没有,问一个问题然后继续。

领导权:谁做决定

你来领导。不要等待每一步的许可,也不要将工作交给一个会指挥你的代理。

  • 亲自检查 所有技术细节:时长、帧率、音频、大小、安全区域。
  • 只交出判断 当判断需要新鲜上下文时:阿拉伯语审核、图像审核。
  • 代理 只读和判断 — 不写也不画。提示模板在 references/roles.md 中。

闸门:故障封闭

python scripts/gate_runner.py "<work>" --safe
  • 打印一个表格,写入 gates.json + gates.md,如果有阻塞器则退出代码为 1。
  • 任何阻塞器未消除就不交付。 没有"我们试试看"。
  • 每个闸门最多尝试两次。 第三次 = 原因不明 ← 停止并向用户提供证据(截图 + 闸门文本)。
  • 禁止禁用闸门、提高 --maxmb 或忽略警告"因为很小"。那是作弊。

严格规则

  1. 字幕是其话语的忠实副本 — 不要编造,不要无故删除任何单词,纠正时要保持单词数不变。
  2. 安全区域优先 — 文本不能位于 y 0–150 或 y 1620–1920,也不能位于右侧按钮列中。
  3. 颜色仅来自 theme.json;未经其同意,不得对他的图像进行任何颜色调整。
  4. 屏幕上每个数字都来自 facts.md 或他的话语 — 没有你自己编的数字。
  5. 没有发布或排程。 交付文件。
  6. 封面是强制性的 — 第一帧,且在手机尺寸下可读(cover_phone.jpg)。
  7. 大小和响度是质量的一部分: ≤29 MB,-14 LUFS,峰值 ≤ -1.0 dBTP。

运行模式

  • 口播短片(默认):talking-reel — 完整视频全屏,图形在上方或后面条带中。
  • 无口播短片:montage — 需要 10–20 个片段 + 音频轨道。不重复镜头。
  • 播客:podcast — 双摄像头。必须包含钩子文本。
  • 动态电影:motion — 默认无旁白(audio.py --no-bed --lufs -20)。3D 需要 GL=gpu。
  • 网站/应用:web-demo — 27_web_capture.js 然后 30_demo.js(或 31_device3d.js)。
  • 仅封面:cover-only。

交付报告

两行,然后一个短表格:

时长 · 剪辑数量 · 大小 · 响度 · 峰值
闸门 7/7 ✅(或可接受警告 + 原因)
文件:mp4 · srt · txt · cover.jpg
没有发布任何内容。

Token 经济

  • 每个阶段一条命令,而不是 41 条分散的命令。
  • 一张预览图(sheet.jpg)而不是 6 张图片。
  • 不要读取整个文件:使用 grep -n 查找函数,tail -5 查看日志。
  • 只在需要时引用 — 此文件 + 一个与当前阶段相关的引用。
  • 不要展示图像,除非有一个视觉问题没有其他方式回答。

预期失败(不要惊讶)

症状原因解决方案
UnicodeEncodeError在 Windows 上未使用 utf-8 写入设置 PYTHONUTF8=1(脚本已修复,但不要依赖)
3D 卡死Chrome 路径/工作路径确保 CHROME 正确 + GL=gpu(已在 31_device3d 中修复)
字幕延迟/截断剪辑在字幕之后更改重新运行 02_captions.py 然后 G3
压缩后峰值高AAC 提高峰值在封面路径中使用 alimiter 或 06c_loudfix.sh
转录混乱方言/英语术语运行 02a_whisper_check.py --fix 然后用固定字数纠正

相关技能