Communitygithub.com

CrissAlvarezH/reel-studio

描述如何使用Reel Studio工作区制作带旁白的解说视频,支持任意视觉风格——脚本、图片、语音、图像、构建、故事板、音效、静音测试、渲染——并遵循创作者在工作室中的设置(个人资料、格式、语音、图片来源)。适用于项目中videos/目录下任何新建或修改的视频。视频的风格会加载其专属技能(styles/<id>/SKILL.md)来定义外观和Remotion工具包;LESSONS.md记录了以往视频中积累的经验教训。

reel-studio 是什么?

这是一个Reel Studio工作区的AI Agent技能,用于系统性地制作带旁白的解说视频。它定义了一套从新建视频到最终渲染的完整工作流程,涵盖脚本编写、图片构思、语音合成、图像搜索、场景构建、故事板生成、音效混音、静音测试和最终渲染发布。该技能支持多种视觉风格,每种风格都有独立的SKILL.md文件来定义其外观和Remotion模板。同时,它会自动读取并应用工作室的个人资料设置、视频格式、语音和图片来源配置。该技能适用于Claude Code、Cursor等AI编程工具,能够帮助创作者高效地制作具有统一风格和高质量标准的视频内容。它还包含一个经验积累机制(LESSONS.md),每次视频制作中需要返工的原因都会被记录下来,从而持续优化制作流程。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/CrissAlvarezH/ai-reel-gen-app/tree/HEAD/.claude/skills/reel-studio

在你喜欢的 AI 中提问

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

文档

Reel Studio — 视频的制作流程

每种风格的制作流程都是相同的。视频的外观和声音来源于其风格;而视频的受众、格式、语音以及图片来源则来自于工作室的设置。通用的 animated-video 技能涵盖了更广泛的方法(头脑风暴、故事板、静音测试、评审);在本技能与风格技能有分歧的地方,以本技能和风格技能为准。提问时最好附带推荐,这样回答“是”就是完整答案。构思想法并将其保存到项目的看板上是 content-ideas 技能的工作,在本流程开始之前进行。

工作区

  • projects/<id>/ — 一个项目:创作者为其制作视频的一个频道(工作室的项目选择器;提示会说明当前打开的是哪个项目)。其 config/ 目录保存了设置:profile.json、voice.json 和 account.json(其Instagram、我的账户);account/ 保存了从该账户下载的内容。除非被要求,否则不要触碰其他项目的文件夹。
  • projects/<id>/videos/<slug>/ — 一个视频:从风格模板复制而来的Remotion项目。包含:title.txt(在工作室中的名称)、style.txt(风格ID)、audio/vo.txt(旁白,完全按照语音朗读的原文)、audio/beats.json(脚本结构)、src/format.json(尺寸、帧率、响度)、CREDITS.md、caption.md、out/(渲染结果、故事板;不进行版本控制)。
  • formats/<id>/format.json — 格式:视频类型(完全为动画并配合生成的语音或创作者的录音;创作者对着摄像头说话并配合动画……)、屏幕上显示的内容以及剪辑方式。视频在 format.txt 中指定其格式(无则默认为动画)。skill 指向其自己的指令,overlay 指向添加到风格模板上的文件;"footage": true 表示视频从 footage/ 中的录音开始("voiceOnly": true:仅使用其声音——音频)。
  • styles/<id>/style.json — 风格:调色板及每种颜色的含义、字体、外观、动作、图像、应避免的内容。skill 指向其自己的指令,template 指向新视频复制的Remotion项目。
  • config/(根目录)— 所有项目共享的设置:images.json(图片来源)、social.json(抓取器)。
  • tools/ — 共享脚本。LESSONS.md — 过往视频中的经验教训。
  • projects/<id>/inspiration/<account>/ — 在项目的“灵感”页面中研究的其他账号的短视频:account.json(analysis.text:对该账号有效的内容)以及每个短视频的 reel.json(指标、标题)、transcript.json、analysis.json(钩子开头、结构、视觉元素、行动号召、可借鉴之处)、hook.jpg(前3秒)和 sheet_NN.jpg(1帧/秒)。在被要求时可以使用它们来构思角度和钩子开头,但必须根据创作者的个人资料进行调整,绝不抄袭脚本。

设置来源于工作室

Reel工作室会在每次对话中,将个人资料(语言、平台、观众、视频长度、标题规则)、视频格式、语音和图片来源放入你的提示中。这些设置优先于本技能和风格技能。切勿硬编码语音ID或设置、尺寸、帧率或响度目标。

API密钥存储在工作区的 .env 文件中(在“设置”中设置,旁边注明各自的用途:语音、数据提取)。工具会读取这些密钥;绝对不要在聊天中打印密钥或索要密钥——如果缺少某个密钥,请要求创作者在“设置”中添加。

Python:仅使用标准库的工具使用 python3 运行(Windows使用 python):tts.py、el_words.py、standin_words.py、commons.py、openverse.py、pexels.py、pixabay.py、unsplash.py、generate_image.py。需要第三方包的工具使用工作区的虚拟环境运行:../../../../.venv/bin/python(Windows:../../../../.venv/Scripts/python.exe):cutout.py、audio/mix.py 和 sheet.py(snap.sh 会调用它,如果没有虚拟环境则使用ffmpeg)。需要抠图的风格需要虚拟环境(设置 → 依赖项进行安装)。以下路径均相对于视频文件夹。

开始之前

读取视频的格式:formats/<来自 format.txt 的ID>/format.json,如果有格式技能也一并读取——它说明了此类视频的制作方式,并在有分歧处优先于以下步骤(例如,使用创作者的录音时,无需编写脚本或生成语音:剪辑提供了两者)。读取视频的风格:styles/<来自 style.txt 的ID>/style.json,如果有风格技能也一并读取。读取 LESSONS.md(通用部分和风格部分)。没有技能或模板的风格基于默认风格的模板(template/)构建,通过其 style.json 更改外观;开始时请说明这一点。

步骤

  1. 新建视频 — 工作室根据第一条消息创建视频(文件夹、标题、风格、格式、尺寸)。通过终端或通用对话执行:scripts/new-video.sh <slug> [style] [format]。
  2. 脚本 — 使用 video-script 技能(钩子开头、保留答案、计时、检查清单),如果想法来自看板,则从该想法的笔记开始。平台、语言、受众和时长来自个人资料;字数 ≈ 语音的测量速度 × 目标秒数。目标:触达,除非另有说明。在 audio/vo.txt 中将数字拼写出来(“一千零四十二”),并在 src/captions.ts 的 DISPLAY 中将其映射回数字。获得批准。编写 audio/vo.txt 和 audio/beats.json。
  3. 图片 — 使用一个新的Agent构思每个节拍的图片(animated-video → 查找图片)。优先选择一个贯穿整部影片的、能够体现其系统机制的反复出现的实体主题(例如,卡片目录柜=服务器,抽屉=记录)。图片要保持脚本问题的开放性:第一帧提出问题,在旁白到达之前,任何图片或屏幕上的标题都不应显示答案。获得概念批准。
  4. 语音 — 执行 python3 ../../../../tools/tts.py audio/vo.txt audio/vo.mp3,然后是 ffmpeg -y -i audio/vo.mp3 -ar 48000 public/vo.wav 和 python3 ../../../../tools/el_words.py audio/vo.alignment.json public/vo.wav(生成 src/words.json、src/vo_env.json)。在语音生成之前:执行 python3 ../../../../tools/standin_words.py audio/vo.txt src/words.json(按语音速度计时;称之为占位)。如果语音有任何变化,先制作一个简短样本。按原样使用音频(除非要求,否则不要修剪停顿)。每次生成都会消耗字符:没有理由就不要重新生成。
  5. 图像 — 使用可用的搜索和浏览工具在网络上自由搜索;任何网站都可以是来源。提示中列出了可选的API集成,这不是允许列表或强制顺序。仅在启用并配置后使用这些API;免费网络搜索不需要来源设置。下载文件放入 assets/src/(不进行版本控制);在 CREDITS.md 中记录每张图像(标题、作者、已知许可证、原始链接;切勿编造许可证)。当图库无法满足需求时,请求拍摄精确手势的手机照片(纯色背景、良好光线)。图像的处理方式由风格决定。
  6. 构建 — 在 src/lib.ts 中操作 ACTS(在每个动作第一个单词前约0.08秒处剪切)、在 src/captions.ts 中将字幕作为语义单元处理(逐词对照转录文本进行核对)、在 src/film/scenes.tsx 中每动作创建一个场景。每次时间点都来自一个提示(cue('phrase')、at('phrase')),因此新的语音会重新调整影片的计时。尺寸和帧来自 src/lib.ts(W、H、FPS、f()),绝不使用字面数字。组件属于风格。
  7. 故事板 — 执行 ./snap.sh out/board <sec> … 渲染静态帧和 sheet.png。展示每个节拍的关键帧;获得批准。直接传递时间参数(在zsh中,一个变量中的空格分隔列表不会自动拆分)。
  8. 音效 — audio/mix.py 中的提示单,使用与场景相同提示的时间;执行 ../../../../.venv/bin/python audio/mix.py → public/mix.wav;在 src/Root.tsx 中设置 audio: true。使用哪些音效:由风格决定。交付时说明哪些音效是合成的。
  9. 静音测试 — 在首次完整剪辑之前:执行 ffmpeg -i out/<name>.mp4 -vf "fps=2,scale=270:-1,tile=8x5" out/mute/sheet_%02d.png,并将这些静帧图像交给一个新的Agent(忽略字幕;重新叙述;列出困惑点和断裂处)。修复后,重新检查静态帧。
  10. 渲染 — 在macOS和Linux上,先清理孤立的渲染器进程:ps -A -o pid=,ppid=,command= | awk '$2==1 && /chrome-headless-shell/ {print $1}' | xargs kill。然后执行 CONCURRENCY=3 ./render.sh <name> → out/<name>.mp4,标准化为格式指定的响度。检查时长、响度、首帧和末帧。使用个人资料中的标题规则和致谢编写 caption.md;其开头应提出钩子开头的问题,而不是回答它。如果视频或标题要求用户评论某个词以获取内容,则编写 automatizacion.json(Reel Studio → 自动化指令),以字符串形式包含要粘贴到ManyChat或InstantDM中的内容:keyword(确切的词)、reply(对评论的公开回复)、dm(私信)和 link。按原样复制每条内容,因此里面不要包含注释;留空缺失的内容,绝不编造链接。报告路径、未解决的问题、跳过的检查、哪些是合成或编造的,以及致谢。

视频制作完成后

客户项目、视频、偏好、自定义风格和个人经验教训均保存在本地,并且被应用程序的仓库忽略。不要将它们提交或推送到那里,包括在渲染之后;绝对不要强制添加被忽略的数据。客户内容的单独仓库需要创作者的明确请求。

将导致返工的内容添加到 LESSONS.md 中,每行一条原因,位于通用部分或风格部分之下。

当已发布视频的数据回来时,使用 video-script → 评审读取它们。从想法到发布的速度很重要,因为很多视频会失败,而每个视频都能教会一些东西,因此新版本应尽可能少地改动:保留已批准的内容,只更改正在测试的部分(新的钩子开头、在观众离场处的剪辑),并且只为发生变化的旁白重新生成语音。不要添加没人要求的额外修饰。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

CrissAlvarezH/animated-video

Make animated videos in code with Remotion (React, SVG, three.js): explainers, character stories, motion graphics, kinetic typography, paper collage and animated infographics, in 2D or 3D, from a script or voiceover, in any aspect ratio. Use when asked to animate a script, make an animated video or Reel, or motion graphics. Not for editing camera footage (video-edit) or AI-generated clips (higgsfield-*).

CrissAlvarezH/new-style

Create a new visual style for the creator's videos in a Reel Studio workspace (styles/<id>/style.json): interview him for its name, feel, colours and what each one means, fonts, motion, where pictures come from, reference links and images, then write the style so it shows in Estilos and new videos can use it. Use when he asks for a new style or presses "Nuevo estilo" on the Estilos page.

CrissAlvarezH/persona-hablando

The "Persona hablando + animaciones" format of a Reel Studio video — the creator talks to camera in his own recording; you transcribe it, agree the cuts with him (pauses, flubs, retakes), cut it, and lay the video's style animations over or between his shots. Use for any video whose format.txt says persona-hablando.

CrissAlvarezH/video-script

Write short-form video scripts that hold viewers, using the creator's own video analytics. Use when choosing the hook of a chosen idea, writing or tightening a script before filming (talking-head or narrated explainer), or turning a posted video's insights into lessons. Coming up with ideas is content-ideas'.

相关技能