Communitygithub.com

FireAmun/remotion-dev-video-kit

从一个句子创意开始,制作完整的品牌短开发者视频:研究、提案、审批、配音、动画场景、预览、渲染,并为 Instagram、TikTok 和 LinkedIn 准备 Buffer 草稿。当创作者提出视频创意或话题、询问下一集/“今天的视频”或说“做一个关于……的视频”时使用。

remotion-dev-video-kit 是什么?

这是一个端到端的视频制作技能,专为 AI 代理(如 Claude Code、Codex、Cursor 等)设计,用于自动化每日短开发者视频创作流程。该技能通过 7 个步骤将简单的创意转化为发布就绪的视频:研究(获取可靠来源)、提案(等待创作者审批)、配音(使用 Qwen3-TTS 语音克隆)、构建(基于 Remotion 生成动画场景)、预览(再次等待创作者审批)、渲染(输出 1080×1920 MP4)以及发布(在 Buffer 中为 Instagram、TikTok 和 LinkedIn 创建定时草稿)。 该技能严格遵循指定的品牌规则——使用固定的视觉风格、角色道具、章节结构和 60 秒以内的时长。它通过 `topics-log.json` 确保话题不重复,并将提案和预览环节设为硬性审批节点。它支持零样本语音克隆、玻璃态 UI 卡片、多种动画场景(如 Kinetic 文字、Split-flap 显示等),并自动处理字幕和社交平台标签。关键约束包括:只能在 GPU 空闲时生成语音,不允许在每日运行中添加新的组件代码,以及始终在 Buffer 草稿中公开 AI 生成标签。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/FireAmun/remotion-dev-video-kit/tree/HEAD/.claude/skills/daily-video

在你喜欢的 AI 中提问

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

文档

每日视频:创意 → 研究 → 审批 → 构建 → 预览 → 渲染 → Buffer

首先阅读 .claude/CLAUDE.md;它是事实来源(品牌、视频规则、语音、安全区域)。 此技能是逐步执行的流程。有两个强制性的创作者审批节点:提案(步骤 2)和预览(步骤 5)。 切勿跳过它们。

以下路径使用 <date> = 今天,格式为 YYYY-MM-DD(亚洲/利雅得时区)。剧集文件夹:public/episodes/<date>/。

外观与风格:每集保持一致

每集都必须看起来像你的第一集——系列通过其外观被识别。因此:

  • 只使用相同的构建块。 使用现有的场景、装备好的角色、姿势、动作、道具和物品。不要在日常运行中更改 src/theme.ts、字体、颜色、角色美术、章节栏、字幕样式或音效。新的视觉效果(新场景、姿势、道具或物品)是创作者单独要求的任务;当他要求时,以相同的黑金风格构建它,并将其添加到此技能的文件列表中。
  • 相同的结构。 1080×1920,30 fps,≤ 60 秒。顶部有“EP NN”标签 + 7 章节栏,底部有逐词字幕(当前词高亮,即将出现的词暗淡,每行一个金色关键词)。一句话 = 一个场景;角色表演每句话;道具/物品在口语词上出现;每 1.5-3 秒有一次视觉变化;每次场景切换有“嗖”声。
  • 相同的节奏。 前 2 秒内吸引观众 → 早期“关注”提示(关注按钮场景)→ 内容章节 → 带有者网站和精确结束语的开场卡片 → “明天:<下一个主题>”预告。
  • 相同的语音。 使用 assets/voice/reference_energy.wav 进行 Qwen3-TTS,相同种子,有活力的标点。
  • 相同的发布。 利雅得时间 19:00,Instagram Reel(分享到信息流)+ TikTok + LinkedIn,在 Instagram 和 TikTok 上打开 AI 生成标签(语音是 AI 克隆;标签是诚实的并保护账户)。
  • 剧集编号从 topics-log.json 递增(下一集 = 最后一集 + 1)。

1. 研究

  1. 读取 topics-log.json:不重复话题;如果上一集承诺了“下一个”话题,优先使用它。
  2. 网络搜索:2 到 4 个可靠来源(官方文档、GitHub README、论文、供应商自己的页面)。验证每个数字、价格、版本或声明。变化快的事物加上“截至 ”。绝不编造事实、基准或代码。
  3. 定位:一个真实的开发者提供有用的技巧,而不是炒作或“看 AI 做了什么”。将工具类话题作为开发者技巧来呈现。

2. 提案 - 停止等待审批

在聊天中向创作者展示简短的:

  • 吸引点(前 2 秒):一个具体的赌注、数字或声明。没有问候语。
  • 场景表格,每句话一行(5-8 个章节,~12-16 个场景,30-60 秒总时长,~2.5-3.5 个口语词/秒): # | 章节 | 句子 | 场景 | 角色做什么 | 道具落在哪个词上 章节:HOOK, WHAT, WHY IT MATTERS, HOW, CATCH, TRY IT, NEXT。吸引点后立即出现早期关注提示。 最后一句话始终是:“访问我的网站 yoursite.com 并点击关注按钮以获取更多内容。”
  • 事实 + 来源(URL),以及创作者必须确认的任何内容(以他的口吻说的观点、工具名称)。
  • 字幕:用于 Instagram/TikTok(吸引行、悬念行、行动号召、话题标签)以及一个独立的、更专业的 LinkedIn 字幕(3 个话题标签)。

等待“继续”/审批或修改。如果修改较大,应用修改并重新展示。

3. 语音(GPU 任务;期间 GPU 不做其他事情)

编写 public/episodes/<date>/narration.txt:每个 TTS 段落写一个段落(段落间空行),通常每段 1-3 句话。按照口语的方式写: your site 按口语拼写(例如“my site dot com”)、N P X create video、Qwen three T-T-S、pip install Qwen T-T-S,数字如果可能歧义则拼写出来。在吸引行使用 !(模型将标点解读为能量)。

.venv-qwen\Scripts\python scripts\tts_qwen.py public\episodes\<date>\narration.txt
.venv-qwen\Scripts\python scripts\timestamps.py public\episodes\<date>\narration.wav --hint "<5-10 个技术术语>"
  • 语音 = Qwen3-TTS 1.7B 零样本,参考 assets/voice/reference_energy.wav(+ .txt 转录)。绝不使用付费语音服务。
  • 绝不将整个脚本作为提示传递给 Whisper(会导致循环);仅使用 --hint 并提供少量术语。
  • 检查旁白时长(必须 ≤ 60 秒,含 1.5 秒尾部),并浏览 narration.json 文本以检查误听。
  • tts_qwen.py 自动均衡语音(scripts/audio_level.py:压缩器 → -16 LUFS → -1 dBFS 峰值)。src/components/Sfx.tsx 中的音效已针对该级别调整(比语音低约 12 dB);不要提高它们。如果旁白以其他方式生成,先对其运行 scripts/audio_level.py。

4. 构建剧集(仅数据 - 日常运行中不添加新的组件代码)

编写 public/episodes/<date>/plan.json,然后:

.venv-qwen\Scripts\python scripts\build_episode.py public\episodes\<date>
npm run lint

plan.json 结构(完整示例见 public/episodes/example/plan.json):

{
  "episode": 2, "date": "<date>", "title": "...", "keywords": ["word,", "..."], "tailMs": 1500,
  "sources": [{ "title": "...", "url": "https://..." }],
  "scenes": [{
    "chapter": "HOOK",
    "display": "字幕应显示的内容(书面形式:yoursite.com, npx create-video)",
    "set": "stage", "setVariant": "", "zoom": 1.05,
    "actor": { "x": 540, "scale": 0.9, "facing": "right", "enterFrom": "right",
               "beats": [{ "atMs": 0, "pose": "talk" }, { "atWord": "build", "pose": "pointUp", "motion": "talk" }] },
    "items": [{ "kind": "label", "text": "...", "atWord": "camera!", "untilWord": "...", "x": 540, "y": 420 }]
  }]
}
  • 所有场景的 display 连接起来必须与口语旁白逐字匹配(书面形式可能不同,例如“Qwen3-TTS”对应“Qwen three T-T-S”)。开始一个旁白段落的场景从 TTS 精确计时开始;其他场景从第一个口语词开始。
  • 时间键:atWord / crossAtWord / untilWord(匹配时忽略大小写和标点),occurrence 用于重复的词,offsetMs 微调,或直接使用 atMs。
  • 姿势(src/rig/poses.ts):idle, talk, explain, shrug, wave, point, pointUp, pointViewer, celebrate, think, search, laptop, holdUp, thumbsUp, headScratch。动作: talk(手势跟随语音),wave, shake, celebrate, search, type, still。手持道具: magnifier, phone, trophy;"laptop": true 表示手持笔记本电脑。facing: "left" 使角色镜像(向左指东西)。
  • 场景(src/sets/Sets.tsx):stage, coderoom, desk(桌面隐藏腿;监视器在右侧),sky(setVariant 为“sunrise”或“timelapse”),chalkboard(黑板在左侧),library, blueprint(金色技术图纸在海军蓝背景上 - 用于 HOW /“工作原理”场景),plain。每个场景都有飘动的金色粒子("particles": false 关闭它)。
  • 物品(src/scene/Items.tsx):icon(相机/时间线,crossAtWord),label(金色/浅色),code(飞行芯片,fromX/fromY),window(终端或 "style": "chalk",线条使用 kind command/code/output),counter, stamp, steps, waveform, calendar(从→到),banner, confetti, book, follow, end(网址 + 行动号召,装饰艺术框架),kinetic(大词逐个猛烈撞击;highlight 词金色;size,stagger 帧 - 最适合吸引行),splitflap(机场式数字,最多 10 个字符,可选 label - 最适合吸引数字)。
  • 卡片自动为磨砂玻璃(玻璃态)。样式预览:StyleTest 合成。
  • 用真实内容(实际代码、真实终端输出、真实数字)填充物品,绝不使用占位符。

通过艰苦实践得出的布局规则(1080×1920):

  • 顶部栏(EP 标签 + 章节)结束于约 y 215:物品顶部必须保持在约 230 以下(记住场景缩放会将物品向上推)。
  • 地面 y 1440;字幕在 y 1490;保留 60 像素的侧边距。
  • 角色缩放 0.9 → 头顶约 y 570;0.8 → 约 670;0.7 → 约 760。大物品(窗口、波形、结束卡片)需要角色缩放 0.58-0.8,或将角色放在侧面(x≈790,面向左)。
  • 默认大小下,标签每个字符约 38 像素:保持简短,否则会跑出屏幕。
  • 绝不用物品遮挡角色的脸;将标签放在窗口旁边或下方。

5. 预览 - 停止等待审批

  1. Studio:npx remotion studio → http://localhost:3000/Episode(可能已在运行)。
  2. 首先自己渲染每个场景的静态帧(缩放 0.4)并检查:重叠、文本跑出屏幕、脸部被遮挡、物品时间。修复、重新构建、重新检查。
  3. 向创作者展示 Studio 链接(并提及你无法验证的任何内容,例如发音)。等待审批或截图反馈——精确修复他指出的问题。

6. 渲染

npx remotion render Episode out/<date>/video.mp4 --codec=h264 --crf=18

(将 Episode 合成的 episodeFile 默认属性在 src/Root.tsx 中设置为新文件夹,或传递 --props='{"episodeFile":"episodes/<date>/episode.json","episode":null}'。) 验证:≤ 60 秒,1080×1920,30 fps,有音频,并且语音明显高于每个音效(语音 ≈ -16 LUFS)。编写 out/<date>/caption.txt(IG/TikTok)和 out/<date>/caption-linkedin.txt。

7. Buffer 草稿(创作者附加视频)

Buffer 的 API 只接受来自公共 URL 的视频,因此创建草稿,时间设置为利雅得时间 19:00;创作者在 Buffer 中打开每个草稿,附加 out/<date>/video.mp4,然后点击“排程”。

  • 组织 <你的 Buffer 组织 ID>(使用 Buffer MCP 的 get_account 获取;免费计划允许 10 个排程帖子)。
  • 频道:Instagram <id>,TikTok <id>,LinkedIn <id>(使用 list_channels 获取)。
  • 使用 mode: "customScheduled"、dueAt: "<date>T19:00:00+03:00"、saveToDraft: true、schedulingType: "automatic" 创建帖子。
    • Instagram:metadata.instagram = { type: "reel", shouldShareToFeed: true, isAiGenerated: true }。
    • TikTok:metadata.tiktok = { title: "<简短吸引>", isAiGenerated: true }(语音是 AI 克隆——始终公开)。
    • LinkedIn:专业字幕,无需元数据。
  • 如果 19:00 已过,询问创作者时间,不要猜测。未经他的许可,绝不发布或排程任何内容。

8. 收尾工作

  • 将剧集追加到 topics-log.json(日期、剧集、标题、话题、“下一个”承诺、来源)。
  • 告知创作者:视频路径、三个 Buffer 草稿以及他必须附加视频、下一集承诺的话题。

相关技能