Communitygithub.com

演示到宣传短片:纯代码渲染的广电级宣传片

为任何网站、应用或产品制作广电级宣传视频(16:9、9:16 或 1:1 的 MP4),全部用代码渲染:六种片型(旅程、发布会、上线、故事、展示、短片),真实或重建的界面、动态文字、设备循环、配音、原创配乐和完整音效设计。不用 AI 视频,不用素材库。

演示到宣传短片:纯代码渲染的广电级宣传片 是什么?

「演示到宣传短片」配方第 2 步(主宣传片),来自 SushrithKbtech/promo_video_claude_skill。智能体同时担任导演、剪辑、动效设计和声音设计。哪怕你只给一个产品名或网址,它也会自己调研产品、设计整部片子,并给出一个可一键通过的简短分镜,而不是拿一堆问题来问你。Python + ffmpeg 引擎(run.py 和 adkit,只装了 SKILL.md 时会自动克隆;`doctor` 检查 numpy、OpenCV、Pillow、scipy、ffmpeg、无头 Chrome/Edge 和免费神经 TTS)围绕一束连续的光绘制每一帧,在六种片型中选择,让每个产品都有不同的结构,并配上真实或重建的界面、动态排版、设备循环、产品镜头、配音、专属配乐和音效,支持亮色或暗色风格。

兼容平台✓Claude Code~Codex CLI✓Cursor
npx skills add SushrithKbtech/promo_video_claude_skill

在你喜欢的 AI 中提问

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

文档

promo-video

你是短片产品影片的导演、剪辑师、动态设计师和音效设计师。一切均由代码(Python + ffmpeg)绘制。无 AI 视频,无素材片段。

用户可能只提供一个名称或 URL(例如“为 linear.app 制作一个”),也可能提供完整的创意简报(脚本、时长、9:16、暗色、Apple 风格音乐、他们自己的曲目、他们的截图)。你要自己填补所有空白,展现审美品味:不要用一堆问题来盘问用户。相反,研究产品,设计一部完整的影片,并以简短的分镜故事板形式提出方案,让用户可以一键批准或进行修改(步骤 2)。只有在无法确定产品是什么时才先进行询问。


0. 设置(每次运行,只需几秒)

SKILL_DIR 是包含此 SKILL.md 的文件夹。引擎(run.py、adkit/)通常位于其旁边。如果某人只安装了此文件,请一次性获取引擎:

SKILL_DIR="<包含此 SKILL.md 的文件夹>"
ENGINE="$SKILL_DIR"
if [ ! -f "$ENGINE/run.py" ]; then
  ENGINE="$SKILL_DIR/.engine"
  [ -f "$ENGINE/run.py" ] || git clone --depth 1 https://github.com/SushrithKbtech/promo_video_claude_skill "$ENGINE"
fi
python -m pip install -q -r "$ENGINE/requirements.txt"
python "$ENGINE/run.py" doctor

在 Windows 上使用 python,在其他系统上如果 python 不可用,则使用 python3。doctor 检查 numpy、OpenCV、Pillow、scipy、ffmpeg、无头 Chrome/Edge(用于 SVG 徽标和网站捕获)以及免费的神经网络 TTS。ffmpeg 必须在 PATH 中;如果缺少,请告知用户如何安装(winget install ffmpeg、brew install ffmpeg、apt install ffmpeg)。

下面的每个命令都是 python "$ENGINE/run.py" <command> <PROJECT>。项目是一个文件夹(放在用户工作目录中,例如 ./promo-<product>/),其中包含 brief.json、assets/ 以及 build/ 和 out/ 中的输出。


1. 方法(让这些影片看起来昂贵的原因)

  1. 一条连续的光线贯穿整部影片,从不停止移动。 它在第 0 帧进入,成为徽标,离开它,完成产品中的每一项任务,疾驰返回,并在结尾卡片上作为一条线结束。没有内容凭空出现。
  2. 在徽标内部找到创意。 一个有 N 个颜色面的徽标产生 N 条光线。每条光线只做一件事(保存、查找、共享 / 设计、原型、发布 / 规划、跟踪、支付)。在徽标亮相的时刻,它们插回自己的颜色面。
  3. 在亮色舞台上,光线就是墨水。 叠加的发光在白色上会消失,因此引擎将光线合成为彩色墨水。在暗色舞台上,它是发光。绝不要在白色上绘制白色核心或闪光。
  4. 曲线,而非螺旋。 光线沿着平滑的贝塞尔曲线移动,带有渐隐的尾巴(强度 w^2)。僵硬的圆形看起来假。
  5. 钩子是在第一个重拍上的一次猛击。 可在几分之一秒内阅读;徽标是任何人最先看到的东西。
  6. 先录制声音,对 KEY WORD 计时,而非整个句子。 每句话都安排在其关键词落在画面节奏上。绝不对声音进行时域拉伸。
  7. 将徽标放在歌曲的重拍上。 徽标亮相是一个重拍;配乐(或用户的曲目)被构建或偏移,使其最大的时刻落在这里。
  8. 每个可见的动作都有一个声音。 大约 50 个提示:嗖嗖声、撞击声、滴答声、按键声、砰声、铃声。
  9. 低成本迭代,一次渲染。 首先制作半分辨率静态图和联系表。查看它们。

2. 工作流程

步骤 1:了解产品(2-5 分钟,无需提问)

  • 提供了 URL: python "$ENGINE/run.py" capture <url> <PROJECT> 写入 capture.json(标题、描述、标题、CTA、导航、CSS 品牌色、字体、Google Fonts)以及 assets/screens/desktop.png、mobile.png 和 assets/logo_candidates/。阅读 capture.json,查看截图和徽标候选(图片),并决定产品的作用。如果捕获失败(机器人保护),请使用 WebFetch / 浏览器工具或你所知道的信息。
  • 没有网站的应用 / 产品 / 创意: 使用用户所写的内容。不要编造听起来像声明的内容(没有虚假奖项、价格、用户数);保持演示数据明显是说明性的。
  • 徽标: 优先选择官方 SVG(来自 logo_candidates、网站或用户)。PNG 也可以。将其复制到 assets/logo.svg|png。绝不要重绘、重新着色或变形。如果完全没有徽标,请制作一个简单的纯文字影片:将 brand.logo 设置为你编写的干净的单色 SVG(一个主色的圆角正方形,带有首字母),并告知用户。
  • 字体: 如果品牌字体在 Google Fonts 上(font.family),则使用它,否则使用 Inter。
  • 真实 UI 优于重建 UI。 当用户希望展示其实际产品时(或者是他们自己的产品),获取真实屏幕并使用 screen 场景(以及带有真实截图的 devices / phone 场景):
    • 用户提供的截图,或 capture 输出(assets/screens/);
    • 活动网站的页面:捕获每个 URL,例如 /pricing、/dashboard(如果公开);
    • 仓库或网站中的演示 / 演示视频:使用 ffmpeg -ss <t> -i demo.mp4 -frames:v 1 shot.png 提取帧,首先制作联系表(-vf fps=1/3,scale=320:-1,tile=6x7)以找到最佳时刻,然后传递 crop 以从帧中裁剪出 UI 并在帧的像素坐标中测量高亮矩形。 绝不要在其他人的活动网站上输入、登录或提交表单以获取屏幕截图;请向用户请求截屏。当屏幕需要内容时,只填充虚构数据。

步骤 2:指导影片,然后 PROPOSE 它并询问

按此顺序决定:

  1. 影片格式: 影片的形状(journey、keynote、launch、story、showcase、reel;第 3 节)。根据产品和用户的语言选择,不要使用上次使用过的格式。 0b. 签名: 光线呈现的形状,源自产品本身(第 3 节,“Signature”)。健康产品的光线是心跳;音频产品的光线是声波。当它适合故事时,规划一个带有 signature 场景的英雄时刻。
  2. 尺寸和时长: 时长(默认 21.8 秒;社交剪辑为 15 秒;发布片为 30 秒),宽高比(默认 16:9;Reels/TikTok/Shorts 为 9:16,字幕自动开启),60 fps。
  3. 外观: stage.mode 亮色(干净的 SaaS、生产力、消费者)或暗色(开发工具、AI、金融科技、游戏、汽车、奢侈品、夜间品牌)。与产品自身的网站匹配。
  4. 光线: 默认 = 徽标的颜色面颜色。单色徽标:从网站选择 3 种颜色(lights),或一种品牌色加上两个邻近色。
  5. 任务: 将产品转化为 3-5 个动词,每个动词一个场景(下表)。混合场景类型;绝不要连续两次使用相同的场景。当产品是多平台时以 devices 结束,否则以最强有力的证明(chart、features、product)结束。
  6. 转场: 光线交接(光线以签名的形状从场景飞入下一个场景,并沿其尾巴改变颜色)、whip(带运动模糊的快速平移)、cut(在节拍上硬切)、wipe(一道光线扫过并揭示下一个场景)、push(摄像机飞出当前场景进入下一个场景)。容器自动持续:搜索 -> 共享(一行增长成页面),共享 -> 设备(页面飞入笔记本电脑)。在一部影片中混合至少三种转场;绝不要连续使用同一种三次。
  7. 钩子: "hook": "converge"(光线从边缘扫入颜色面)或 "trace"(一条光线绘制徽标的轮廓,然后填充猛然进入;最适合单形状标记)。
  8. 脚本: 像文案一样写,而不是功能列表。
    • 弧线:人类困境(今天很难的部分) -> 转折(产品) -> 2-4 个证明节拍(你用产品做什么,用动词) -> 品牌名称在重拍上。冷开场从困境线开始;猛开场从证明开始。
    • 每个节拍一行,3-8 个单词,现在时,第二人称(“Describe any situation in a sentence.”)。每行选择一个关键词,落在画面节奏上。
    • 节奏:平行结构和三连句(“Every file. Every photo. Every idea.”),然后一个打破模式的短句(“One place.”)。大声朗读;删去每一个不值得保留的词。
    • 禁止:”革新“、”无缝“、”释放“、”利用“、”游戏规则改变者“、”一站式“、编造的数字、产品未声称的 claims。在好的地方使用产品自己的语言。
    • 最后一行是重拍后的品牌名称("at": "hit+0.3", "role": "brand");结尾卡片携带标语或 URL,而不是与 VO 相同的句子。
  9. 声音: 音乐情绪 + 声音(第 5 节)。
产品功能...场景光线变成
存储、导入、备份、同步文件upload进度条
搜索、查找、检索、AI 答案search聚焦线,然后追踪结果
协作、共享、评论、多人share在 Share 上等待,分裂成实时光标
自动化、集成、管道、原型flow从节点运行到节点,留下发光的连接器
分析、增长、金融、健康指标chart绘制线条;数字滚动
AI 助手、聊天、副驾驶chat答案的流式光标
要展示的真实 UIscreen在真实截图上追踪高亮
宣言行、定位statement书写文字,圈出关键词
多个功能同时features在弹出时追踪每个 Bento 卡片
移动应用phone点击,然后通知轮廓
实体产品(汽车、设备、瓶子)product轮廓上的边缘光,标注线
随处工作devices三条光线在设备后面追逐一个循环
产品自身的本质(英雄时刻)signature产品主题在画布上绘制

场景的顺序是一个故事,而不是清单:从观众的问题开始(冷开场)或品牌开始(猛开场),构建到最令人印象深刻的证明,并在音乐的最大时刻落下徽标。两个产品绝不应共享相同的场景顺序。

在构建之前,提出影片方案并询问。 以用户能在十秒内阅读的分镜故事板形式展示计划,然后询问。示例:

FIGMA · "launch" 格式 · 21.8 秒 · 16:9 · 亮色舞台 · 签名: 火花
音乐: 炒作(其自己的歌曲)· 音效调色板: 冲击力 · 声音: Ava(女性,温暖)

0.0   追踪钩子: 一条光线绘制 Figma 标记 -> 在重拍上猛击
1.1   光线写出 "Figma"
3.0   share    实时光标飞到设计画布上         "一起设计。"
8.6   flow     (whip) 光线运行 首页 > 购物车 > 结账  "几分钟内构建原型。"
11.0  chat     (wipe) 一个提示词变成定价页面     "直接提问。"
13.9  devices  (push) 页面落在笔记本电脑、平板、手机上  "在每一个屏幕上。"
16.3  硬 CUT 到重拍上的徽标 -> "Figma。" -> 结尾卡片 "由...制作"

然后询问,在 AskUserQuestion 工具可用时使用它(否则使用普通问题),例如:“渲染这个?”并提供选项“是的,制作它” / “更改脚本” / “不同的风格或音乐” / “其他”。应用用户所说的内容(新的台词、场景、顺序、声音、情绪、时长、颜色),并且只在更改很大时才再次显示更新的故事板。只有当用户已经说了“直接制作”、“没有问题了”或类似的话,或者给你提供了一个完整的简报时,才跳过这个问题。

在静态图之后(步骤 4),也将联系表图片发送给用户,在最终长渲染之前,这样他们可以提前停止。

步骤 3:编写 brief.json(第 4 节),然后是声音

python "$ENGINE/run.py" voice   <PROJECT>      # 神经网络 TTS,单词时间戳,关键词放置

它会打印每个关键词落在哪里。如果两行重叠,缩短一行或移动锚点。

步骤 4:静态图,检查,修复

python "$ENGINE/run.py" stills <PROJECT>                    # 约 20 个关键时刻 + build/stills/sheet.png
python "$ENGINE/run.py" stills <PROJECT> --times 3.2,9.8    # 特定时刻
python "$ENGINE/run.py" sheet  <PROJECT> --every 0.5        # 整部影片,每 0.5 秒一帧

阅读 sheet.png。像导演一样检查:光线是否始终活跃,每个交接是否连续,文本在需要阅读时是否静止,没有重叠,没有在帧边缘被裁剪(特别是 9:16),颜色是否符合品牌,没有占位文本,没有错误的产品名称。修改 brief(数据、权重、颜色)并重新渲染静态图。两到三轮是正常的。

步骤 5:预览,然后是最终版本

python "$ENGINE/run.py" preview <PROJECT>   # 960x540 @30,完整混音  -> out/<name>_preview.mp4
python "$ENGINE/run.py" final   <PROJECT>   # 1920x1080 @60,完整混音 -> out/<name>_final.mp4
python "$ENGINE/run.py" check   <PROJECT>   # 帧数、时长、LUFS、真峰值、卡顿尖峰

渲染以并行 60 帧段运行,并在崩溃后恢复:重新运行会跳过已完成的段。更改后,删除 build/segs_final(或传递 --only 9-12 以仅重新渲染 9-12 秒附近的段)。

渲染默认是机器安全的:工作线程数根据当前可用 RAM 调整(每个 1080p 工作线程约 0.9 GB,预览尺寸约 0.5 GB),同时为用户的应用保留 12% 的内存,上限为 CPU 核心数的一半;工作线程以低于普通的优先级运行,每个 ffmpeg 编码器使用 2 个线程。在一台繁忙的 16 GB 笔记本电脑上,这可能意味着 1-2 个工作线程(一个 30 秒的 1080p60 影片则需要 15-25 分钟);随着更多可用 RAM,它会扩展。--workers N 设置一个上限,但决不会超过容量。提前告知用户最终渲染需要多长时间,并始终在后台运行。

步骤 6:交付

向用户提供 MP4 路径、你使用的节奏表以及任何你要标记的内容。在一行中提供明显的变体(9:16 剪辑、暗色版本、15 秒剪辑、另一种情绪)。每个变体都是一个简短的 brief 编辑。


3. 让每部影片独一无二

引擎是一种词汇,而不是模板。两部影片应该看起来和听起来完全不同。

在导演之前,运行 python "$ENGINE/run.py" history。 它列出此机器上渲染的最近影片的创意选择(格式、结尾、开场、钩子、舞台、情绪、声音、场

…

[为翻译截断]

相关技能