Communitygithub.com

anudeepadi/视频发布技能

零 API 的 SaaS 发布视频制作工具:从产品网站 HTML/CSS 出发,经 Playwright 截图、ffmpeg 合成,并集成本地 Kokoro TTS。

视频发布技能 是什么?

该技能提供了一个完整的零 API 工作流,用于从产品网站生成 SaaS 发布视频。它通过 Playwright 捕获网站内容,使用 ffmpeg 合成视频帧,并依赖本地 Kokoro TTS 生成语音,全程无需外部 API 调用。技能支持在 Node 18+ 和 Python 3.10+ 环境中运行,首次使用时会自动下载 Kokoro 和 whisper 模型到本地缓存。用户可以通过 `npx launch-video-skills` 命令进行场景搭建、渲染和审查,最终输出符合专业标准的 MP4 视频。该技能特别强调了视频质量优于“AI 生成内容”的理念,要求严格按照网站真实内容进行脚本编写和画面构建,避免虚构指标、客户或界面元素。它适用于开发者工具和 SaaS 产品的快速发布视频制作,支持在命令中通过环境变量调整浏览器路径和 SSL 证书等细节。

兼容平台~Claude Code✓Codex CLI✓Cursor
npx skills add anudeepadi/launch-video-skills

在你喜欢的 AI 中提问

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

文档

发布视频生成器

渲染器:launch-video-skills npm 包。完整场景合约参见:https://github.com/anudeepadi/launch-video-skills#scene-contract

  • npx launch-video-skills setup:每台机器执行一次(安装 headless Chromium 和 Python 语音包)。需要 Node 18+、Python 3.10+、ffmpeg。首次运行语音时,会将 Kokoro 权重(约 350 MB)和 whisper small.en 模型(约 480 MB)下载到 ~/.cache/lvk。
  • npx launch-video-skills new <name>:创建脚手架 launch-videos/scenes/<name>/index.html,同时生成 launch-videos/kit/。
  • npx launch-video-skills render <scene.html> [flags]:输出到 ./out/。
  • 如果 Chromium 下载卡住,设置 export LVK_CHROME=/path/to/chrome-headless-shell(任意本地构建版本均可)。
  • 如果在 macOS 上使用 python.org 的 Python 遇到 SSL 失败,设置:export SSL_CERT_FILE=$(python3 -c 'import certifi;print(certifi.where())')。

优秀的发布视频与“AI 生成内容”的区别在于 references/craft.md 中所述。在故事板创作之前请先阅读它。

步骤

  1. 从真实产品中提取品牌和事实。 使用 Playwright 获取网站内容。逐字记录标题、副标题、功能名称、网站自带的示例内容(演示贴文、提示词、代码、问题列表)以及 CTA。读取计算后的字体族/字重/字间距样式以及背景/文本/强调色的示例像素颜色(CSS 变量会过期)。将 Logo SVG 和所有图片保存到 launch-videos/scenes/<name>/assets/。仅当网站字体的许可证允许分发时才使用该字体;否则使用最接近的内置字体(Inter、JetBrains Mono、Space Grotesk)。切勿捏造指标、客户、集成或用户界面。如果某功能标记为“计划中”或“预览”,请将其省略或标注清楚。如果无法获取真实的用户界面示例,请停止并说明原因。在场景文件顶部以注释形式注明来源 URL 和日期。
  2. 先写脚本,再画故事板。 每个镜头用一至两行简短描述,摘取自网站文案;总时长 20–40 秒。当口语形式与书面形式不同时(如点号、缩写),使用 say:例如 say: 'Build A.I. agents'。5–6 个镜头,每个镜头一个想法:吸引点(2 秒内让产品或标题上屏)→ 首次使用瞬间 → 产品实际运行(根据网站自有示例用 HTML 重建真实用户界面,绝不用截图)→ 第二个功能 → 三大支柱或工作原理 → 带 Logo 的 CTA。平静品牌使用 music.style: 'ambient',柔和音效(0.2–0.6)。开发者工具使用 'pulse' 和强烈节奏。语音为可选;纯音乐在 X 平台上常见。
  3. 编写 launch-videos/scenes/<name>/index.html,引用 ../../kit/kit.css 和 kit.js。基于生成的模板开始。使用 data-shot="id" 标记镜头,不硬编码 --in/--out。语音行放在 SCENE.voice.lines 中(包含键、镜头、文本/say、at/after、pause 节拍)。通过 data-on="key"、data-on="key:word"、data-edge="e" 将节拍与语音对应。在定义 SCENE 后调用 K.layout(),然后使用 K.at/K.end/K.shot 推导 JS 节拍:打字速度 = 文本长度 / 说话时长,关键字上发出光标点击声,通过相同常量控制打字音效提示。onFrame(t) 必须是关于 t 的纯函数。JS 变换作用在无 CSS 动画类的包装器上。不使用大尺寸的 filter: blur、backdrop-filter 或全屏混合模式。
  4. 审查循环。 运行 npx launch-video-skills render launch-videos/scenes/<name>/index.html --sheet 1。每行 <- ASR heard: 都可能表示发音错误:用 say 重新拼写并再次检查(whisper 有时会误听正确的音频;将这些标记出来供人工审听)。检查生成的 PNG 图片:文字是否叠加在杂乱的背景上、小文字是否清晰、是否有空帧、过渡中文字碰撞、打字效果在镜头结束前完成、语法高亮是否出错。使用 --stills t1,t2 进行全分辨率检查。迭代时附上品味笔记(如“太快了”、“不清楚发生了什么”),而不是一次性完成。
  5. 渲染并验证。 运行 npx launch-video-skills render launch-videos/scenes/<name>/index.html --workers 4。然后:
    • ffprobe:检查 h264 + aac 编码和预期时长。
    • volumedetect:平均音量约 −19 至 −17 dB,最大音量低于 −1 dB。
    • 同步:使用 faster-whisper small.en 对最终 MP4 进行逐字时间戳转录;每行第一个单词与日志中打印的时间线偏差约在 0.2 秒内。关键字落在视觉节拍上。
    • 连续性:比较不同工作进程边界处的帧(帧数 / 工作进程数)。
  6. 交付。 提供 MP4 文件路径。切勿覆盖之前的剪辑(使用 mv -n 或新的 --out)。明确说明语音和音乐是合成的且未经人工审听。提供后期文案,避免使用“一键生成”之类的表述。付费语音(ElevenLabs、OpenAI、Google)可在包内的 lib/tts.py 中切换;仅在用户希望获得更自然的朗读效果时提及。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能