Communitygithub.com

adminosinthub-bit/Claude-Video-Skill

从 HTML 动画创建视频。生成多种设计方案,将每个方案渲染为视频(逐帧截图 + ffmpeg),分析帧,选出最佳方案,并融合其他方案的优点进行最终合成。适用于制作短片、宣传片、动画横幅、片头、演示视频或“从 HTML 生成视频”。

Claude-Video-Skill 是什么?

该技能核心功能是将 HTML/CSS 动画转换为高质量视频。它首先依据用户需求(主题、时长、格式等)生成多个设计各异的 HTML 动画方案,并使用 Playwright 和 ffmpeg 将其渲染为视频。渲染后,通过生成联系表(contact sheet)并逐帧分析,从可读性、节奏、流畅度等 8 个维度对每个方案进行评分,选出最佳方案。最后,它从其他方案中借用成功的设计元素(如排版、动画、色彩),合成一个优于任何单个方案的最终视频。支持在 Claude 等 Python 环境以及 Cursor、Codex 等 IDE 中使用,需要 Node.js、Playwright(含 Chromium)和 ffmpeg 环境。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add adminosinthub-bit/Claude-Video-Skill

在你喜欢的 AI 中提问

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

文档

HTML → 视频:多种方案、择优、最终合成

Claude 最擅长 HTML/CSS 设计。因此视频的制作方式如下:用 HTML 编写动画,渲染成视频,通过肉眼观察结果(帧),比较不同方案并进行优化。

要求

  • node + playwright(含 Chromium)、ffmpeg。检查:bash scripts/check-env.sh。

快速开始

cp references/template-scenes.html work/<名称>/v1.html     # 场景引擎模板
node scripts/render.mjs work/<名称>/v1.html --preset vertical-preview --duration 20 --out work/<名称>/v1.mp4
  • references/engine.js — 场景引擎:背景、高亮字幕(*单词*)、进度条、转场、缓动(E.pop、E.type、E.set)。
  • references/parts.js — 部件:吉祥物 P.bot、图标 P.icon、macOS 窗口 P.win、聊天气泡。
  • references/design-notes.md — 让视频“生动”的关键要素(故事情节、钩子、节奏、字幕)。在编写方案前请先阅读。
  • 示例成品视频:examples/(claude-ad — 16:9;chatgpt-ad — 9:16,25 秒;duolingo-ad — 9:16,40 秒,60 fps,有剧情和演示;claude-self-ad — 9:16,39 秒,60 fps,Claude 的自我宣传,带有元转折)。
  • 文件大小:40 秒 / 60 fps 视频 ≈ 10 MB;如需更小体积,可使用 --fps 30 或重新编码:ffmpeg -i in.mp4 -crf 24 out.mp4。

主要质量原则

  1. 展示,而非告知。 视频中的任何主张都应通过场景来证明,而不是单纯显示文字。

    主张应展示的内容
    “能写代码”打印请求,然后逐行显示代码
    “解释清晰”显示真实错误(“she drink”),高亮并显示规则“+s”,配有猫头鹰解释
    “实践教学”手指点击单词,短语组合,显示绿色“正确!”面板
    “连续 346 天”计数器从 1→346 并带火焰效果,日历波浪式填充,通知,祝贺并伴有彩花
    “游戏”排行榜,主角行升至第 1 名,并显示 +XP
  2. 描述正在发生的事。 每个场景包含两层文字:上方小标题标签(<div class="kick">:“课程”、“排行榜”)和下方字幕,其中关键单词高亮(cap: '清晰讲解*错误*')。完整句子优于单个标语。

  3. 流畅性。 最终渲染采用 60 fps。所有内容应连续变化:弹性入场(E.spring、E.pop)、缓慢镜头推进(cam: [1, 1.05])、吉祥物晃动、眨眼(P.blink)、手指点击带涟漪(P.touch)、计数器(E.count)、circle/wipe/left 等转场效果。连续静态画面不应超过约 0.5 秒。

  4. 情节结构: 钩子(痛点/幽默)→ 演示 → “核心优势” → 高潮(奖励/结果)→ 行动号召。广告片长 30–45 秒。

  5. 三种方案代表三种不同思路,而非三种配色方案(例如:“连续计数器”、“实时课程”、“与吉祥物对话”三种不同思路)。最终版本将从所有方案中选取最佳场景进行合成。

流程

1. 简报

明确(或选择合适的默认值):主题/文案、目标受众、时长(广告 20–30 秒,故事片最长 60 秒)、格式(默认竖屏 1080×1920 适用于 Reels/Shorts/TikTok;1920×1080 和 1080×1080 按需设置)、fps(30)、风格、颜色/字体。制定简短分镜:钩子 → 问题 → 解决方案 → 演示 → 行动号召。品牌广告不使用官方 Logo,而是绘制自己的吉祥物。

2. 三套或以上不同的方案

创建工作目录 work/<名称>/,并在其中创建 v1.html、v2.html、v3.html(可更多)。方案应在概念上有所区别,而非细节差异。例如:(a)吉祥物故事,(b)产品卡片演示,(c)快速剪接配上大号字体排版。不同的构图、配色、节奏。每个文件应为自包含 HTML(无外部加载,字体使用系统字体或内嵌)。动画规则见 references/animation-contract.md;起始模板见 references/template.html。

3. 渲染每个方案

方案使用预览分辨率(快速渲染),最终版本使用全分辨率:

node scripts/render.mjs work/<名称>/v1.html --out work/<名称>/v1.mp4 --preset vertical-preview --duration 21
node scripts/render.mjs work/<名称>/final.html --out work/<名称>/final.mp4 --preset vertical --fps 60 --duration 40 [--audio music.mp3]

渲染为确定性的且可并行(根据 CPU 核心数):每帧手动设置时间,无需担心丢帧或卡顿。--from 5 --to 9 仅渲染片段。单帧截图(无视频):node scripts/frame.mjs v1.html 3.5,7 work/<名称>/frames --width 540 --height 960。

4. 分析 — 必须通过肉眼观察

bash scripts/contact-sheet.sh work/<名称>/v1.mp4 work/<名称>/v1-sheet.png 12

打开 *-sheet.png 并通过 Read 查看单帧(图像可被视觉读取)。依据 references/rubric.md 进行评估(8 个标准,每项 5 分,总计 40 分):可读性、层次结构、节奏、流畅度、平衡性、完整性、与简报的符合度。对于每个方案,记录:每项得分、最佳表现点、最弱表现点。仅凭帧上所见内容进行评估,而非代码。如有任何不明确之处,可生成更密集的帧或特定时间点的帧:bash scripts/contact-sheet.sh <mp4> <png> 12 <start_s> <end_s>。

5. 选择最佳方案并进行合成

  • 根据总分选出最佳方案。
  • 列出“借鉴点”:从其他方案中提取的具体优秀设计(例如,“v2 的排版” 、“v3 的入场动画” 、“v1 的配色”)。
  • 以最佳方案为基础创建 final.html,并应用这些借鉴的改进。同时修复最佳方案的薄弱环节。

6. 迭代与最终验证

渲染 final.mp4,再次生成联系表,与最佳方案进行比较。如果最终版本在评分上未优于最佳方案,则继续修改(最多 3 次迭代)。然后向用户展示结果:final.mp4 路径、各方案评分简表以及每项改进的来源。

7. 添加音频(可选)

ffmpeg -i final.mp4 -i music.mp3 -shortest -c:v copy -c:a aac final-audio.mp4

规则

  • 不要复制品牌吉祥物和 Logo:绘制自己的角色,品牌名称仅以文字形式出现。
  • 不可跳过第 4 步:决策基于看到的帧,而非猜测。
  • 所有工件均放入 work/ 目录(已在 .gitignore 中),只向仓库提交技能和示例。
  • 如果 Chromium/ffmpeg 不可用,请直接说明,不要模拟结果。

相关技能