首页 / 全部技能 / 内容创作 / product-launch-video
内容创作 · heygen-com/hyperframes

product-launch-video

Turn a product or marketing URL, pasted script, or brief into a product launch / promo video — SaaS promos, feature reveals, product demos, app and company launches. Use when the user wants to market, launch, promote, or reveal a product; the default for any commercial URL. Site tours / showcases of a website route here too — the brief carries the show-it-as-is intent. Unclear → /hyperframes.

L4 高权限 · 分级授权与审计V1 已固定执行命令联网读写文件Dual-pass Audit
Author heygen-comGitHub heygen-com/hyperframes ↗Stars 44283License Apache-2.0(仓库根 LICENSE 为 Apache License Version 2.0;池内值亦为 Apache-2.0)Commit b8328f9573
管控等级描述 skill 的能力与建议配套的管控措施,不代表质量或安全认证,也不表示可用或不可用。是否使用由用户和管理者决定。不同 agent 宿主对权限的约束各不相同,请勿假定宿主一定会提供安全兜底。第三方 skill 版权归原作者,使用风险由使用者自行承担。

1实现原理 · 为什么它能做到

六步编排 + 逐 step 门禁:Setup → Capture → Design System → Storyboard/Script → Audio → Visual Design → Frames → Finalize,每步都有明确的「本步不许做什么」与通过条件,不许跳步继续。

skills/product-launch-video/SKILL.md
You are the orchestrator. Work in `videos/<project>/`. Run steps in order and pass each gate before continuing. User-gated steps are Step 0, Step 3, and Step 6.
这里在做什么:把「一次做出长视频」拆成可验证的阶段,每个 Gate 段写明产物必须存在(例如 Step 1 要求 capture JSON ok:true、BLOCKED.md 不存在、tokens.json/visible-text.txt/asset-descriptions.md 与 assets/ 都在)。编排者自己做除 Step 5 以外的全部步骤;Step 5 一帧一个子代理。

素材获取靠本仓 CLI 抓站:`npx hyperframes capture "<URL>" -o ./capture --json`,脚本自述是抓页面+资产;抓取失败是硬停,不许造假降级。

skills/product-launch-video/SKILL.md
A non-zero exit, JSON `ok: false`, or `capture/BLOCKED.md` is a **hard stop** for the capture path: report the recorded reason and do not consume partial screenshots, DOM, tokens, or assets. Do not manufacture a synthetic no-capture fallback after a failed URL capture.
这里在做什么:防「抓不到就编一个页面」这种典型幻觉式兜底。只有原始 brief 自带素材、或用户明确改为提供截图/文案时,才允许走 no-capture 路径。同时禁止把 'very little text content' 之类的警告当作页面可用的证据。

可选视觉能力由环境里的 key 决定:检测到 GEMINI_API_KEY / GOOGLE_API_KEY / OpenRouter key 时,抓取阶段会把资产自动描述写进 asset-descriptions.md;没有 key 就用 DOM 上下文继续。

skills/product-launch-video/SKILL.md
If `GEMINI_API_KEY`, `GOOGLE_API_KEY`, or an OpenRouter key exists, capture auto-captions assets into `capture/extracted/asset-descriptions.md`. This is not a review gate. Without a vision key, use DOM context and continue.
这里在做什么:把「有没有视觉模型」变成能力分级而不是失败点——有 key 资产清单更准,无 key 仍能出片。注意这是**环境凭证探测**(读 env 判断能力),不落盘、不外发 key 本身。

设计系统不手改:只允许选定一个 shipped frame preset,然后由 build-frame.mjs 确定性地把 preset 的 FRAME.md 与 brand tokens 做「按角色的颜色重映射 + 字体替换」并自校验。

skills/product-launch-video/scripts/build-frame.mjs
// Remix rule — ONLY `colors:` values and `typography:` fontFamily change; keys, // structure, geometry, and components are untouched: // colors — map brand tokens onto the preset's keys BY ROLE: the ink-role key takes // the brand ink (darkest/ink-named), the canvas-role key takes the brand // canvas (lightest), and every other color is repainted with the nearest // brand accent's hue+saturation while KEEPING its own lightness
这里在做什么:作者注释直说了动机——『Strict on brand 是确定性的,所以它该是脚本而不是 LLM 手改(手改会抄错 hex / 改坏 key)』。空品牌色/字体时保留 preset 自己的调色板(本身已是完整可交付设计)。

配音/BGM 走 HeyGen(登录态)或本地引擎:`auth status` 的 exit 1 是「未登录」的正常语义,skill 明确要求不要当失败重试或 && 串联;凭证是 ~/.heygen。

skills/product-launch-video/SKILL.md
Note the exit code contract: `auth status` **exits 1 when not signed in** (and when the stored credential is rejected) — that non-zero exit is the normal signed-out state, not a command failure, so don't treat it as an error, don't retry it, and don't chain it with `&&`/`set -e` in a way that would abort the workflow.
这里在做什么:把 CLI 的非零退出码语义写进流程,避免 agent 把「未登录」当故障而反复重试或中断。音频步骤用的是 HeyGen Audio API 做**检索**(音乐库/BGM 查找),与 TTS 共用同一份 ~/.heygen 凭证。

跨帧连续性用数值交接契约(handoff_out / handoff_in)而不是靠 worker 互相猜:每个字段都要写全,常量也要显式写出。

skills/product-launch-video/SKILL.md
When an element visibly continues across a frame boundary, give both workers the same numerical handoff in `STORYBOARD.md`: add `handoff_out:` to the outgoing frame and a matching `handoff_in:` to the incoming frame. Name the element and its exact x/y position, scale, opacity, and motion direction/speed at the cut — state every field even when it does not change, because a constant is `opacity: 1`, not an omission.
这里在做什么:并行 worker 各自写一段 HTML,接缝最容易崩;本 skill 用「切点上的数值握手」把接缝前移到 STORYBOARD.md 的设计阶段,并配 Step 6 的 snapshot 切点前后对比(cut 前 0.1s / 后 0.2s)做验收。

验证与审批链收尾:inject/verify 转场 → lint → check → 接触表快照 → 人工/自动审批 → preview → render;渲染后不再重复跑检查。

skills/product-launch-video/SKILL.md
Render only after user approval (autonomous mode: after the preview-or-render question): `npx hyperframes render --skill=product-launch-video --quality high --output renders/video.mp4` Do not rerun `lint`, `check`, or `snapshot` after rendering unless the user asks.
这里在做什么:把「改了就重跑全部门禁」的浪费显式禁掉,并要求失败时先 surface stderr 再就地修一行最便宜的改动、重跑失败的那一项('don't pile on recovery commands')。

2核心能力

01从 URL / 贴入脚本 / brief 生成产品推广片(SaaS promo、功能发布、产品演示、App 与公司发布、站点导览)
02网站抓取与资产清点(含可选视觉模型自动资产描述、full-page.png 1x 底板用于滚动镜头)
03品牌设计系统落位:preset 选择 + 品牌色/字体按角色重映射 + caption skin 拷贝(一个脚本完成并自校验)
04TTS 配音 / BGM 检索 / SFX / 时长同步(provider 与 voice 由用户诉求决定,含 provider 选择与 voice 列表查询)
05逐帧子代理构建:packet 构建器(场景块 + blueprint 正文 + 引用规则 + _role.md)→ 一帧一 worker 并行派发
06素材暂存到项目 assets/(stage-assets.mjs,按 storyboard 命名的资产)
07装配与转场:captions(含 caption-skin)→ assemble-index → transitions inject/verify
08音乐与画面的匹配复核:对比开头与后段 5 秒,必要时从更强的段落裁切并加淡入淡出

3外部依赖

KindDependency / Endpoint
clihyperframes CLI:capture(抓站)/ init / lint / check / snapshot / preview / render / auth status / skills update
network被抓取的目标网站(任意用户给定 URL;含抓取期的页面导航与资产下载)
apiHeyGen Audio API(TTS 与音乐库检索)/ 凭证文件 ~/.heygen
api视觉模型 key(仅探测是否可用,用于抓取期资产描述)
cliffprobe / ffmpeg(BGM 时长探测与循环补齐,缺失时降级为警告)
networkGSAP CDN(写进装配后的 index.html / caption 皮肤,带 SRI 完整性校验)
climedia-use 侧脚本(prefs.mjs 记录偏好、recipe.mjs 应用配方、audio/scripts/heygen-tts.mjs 列语音)
package兄弟 skill 依赖(/hyperframes 路由、/hyperframes-core、/hyperframes-creative、/hyperframes-animation、/media-use、/figma)

4管控建议与判定依据

建议配套管控措施
面向 Agent
分级或逐次授权,建议在沙箱运行
面向管理者
审批流程、可回滚、全程审计
判定依据(文件路径与关键语句摘要)
  • scripts/: 执行本地脚本或命令: node scripts/build-frame.mjs --preset <name> --hyperframes .(拷贝 preset FRAM
  • 网络端点: 声明外部网络访问: npx hyperframes capture "<URL>"(抓取用户给定的产品网站:截图、DOM、token、资产)
  • 本地工作目录: 文件读写与工件输出: videos/<project>/BRIEF.md、hyperframes.json、STORYBOARD.md、SCRIPT.md、audio_me
审计说明: 。触发橙档的是**凭证与环境变量面**:流程会读取 ~/.heygen 登录凭证(TTS/BGM 检索共用),并探测 GEMINI_API_KEY / GOOGLE_API_KEY / OpenRouter key 的存在以决定是否做资产自动描述;同时会联网抓取用户给定的产品网站(页面内容、截图、DOM、token 全量落盘)。这些都是设计使然的能力,不是恶意行为,但意味着:① 使用者的 HeyGen 账号会被本流程的音频步骤调用;② 视觉 key 存在时,抓取到的页面资产会被送往该视觉模型;③ 抓取对象与产出目录都是本地的,但页面内容会进入模型上下文。未发现 TLS 降级、反爬绕过、凭证外泄(无把 key 写入 per-repo .env 的行为,SKILL.md 反而明确禁止)或任意代码执行面(脚本调用的是固定 CLI/二进制)。

5第二遍独立确认

  • [ok] 『外部资源』逐条回查调用点是否真实存在 — hyperframes capture 命令原文在 Step 1;~/.heygen 与 HeyGen Audio API 在 Step 3.1 原文;GEMINI/GOOGLE/OpenRouter key 探测在 Step 1 原文;ffprobe/ffmpeg 在 assemble-index.mjs 的 ensureBgmCovers 内真实 spawnSync;gsap CDN 在 assemble-index.mjs:727 与 captions.mjs:480;media-use 的 prefs.mjs/recipe.mjs/heygen-tts.mjs 在 Step 0/3.1 原文。无一条属于推测。
  • [ok] 凭证读取是否被夸大或漏报 — 脚本层(23 个 mjs)未发现任何读取 ~/.heygen 或 env key 的代码——凭证读取发生在 media-use / hyperframes CLI 侧,本 skill 只以文字指令调用它们。SKILL.md 同时明令不得把 key 写进 per-repo .env。判定为『授权链式凭证读取』而非本 skill 直读,橙色理由已按此措辞。
  • [ok] 抓取失败是否真的硬停(有无隐藏的合成兜底) — Step 1 原文 'Do not manufacture a synthetic no-capture fallback after a failed URL capture.';no-capture 路径被限定为『原始 brief 自带素材』或『用户在失败后明确改用提供的截图/brief』两种情形。未发现绕过路径。
  • [ok] 验证:抓取/装配脚本是否有未声明的网络调用 — 对 23 个 mjs 做 fetch/axios/http.request/urllib 扫描 → 0 命中;唯一的对外引用是 HTML 模板字符串里的 CDN URL(浏览器侧加载)。脚本自身不发起 HTTP 请求,网络行为全在 hyperframes CLI 与 media-use 侧。
  • [ok] 与同批 skill 的组内一致性(默认 provider/voice 与静音标记) — 本 skill 与 faceless-explainer 都用 'Marcia (female) on HeyGen / am_michael on Kokoro' 作默认声线、都用 `music: none` 作静音标记;本 skill 额外要求传 `--provider <provider>`(因为它需要在 Step 0 就确定 provider 并在 Step 0 展示登录态语义)。差异有据,未见矛盾。

6结论

  • 门禁密度高且可执行:每步都有明确的通过条件与产物清单,抓取失败/结构缺失一律硬停而非编造
  • 品牌保真交给确定性脚本,避免 LLM 手改 hex/键名造成的静默损坏
  • 跨帧接缝有数值契约(handoff_out/handoff_in),把并行 worker 最容易崩的地方显式化
  • 对 CLI 的非常规退出码语义有明确指引,减少 agent 误判与重试
  • 能力降级路径完整:无视觉 key 用 DOM 继续、无 HeyGen 登录走本地引擎、无 BGM 工具链只告警不硬失败
  • 装配产物带 SRI 加载外部 GSAP,CDN 依赖有完整性校验
  • 适合: 适合要把「产品/网站」变成推广片的场景:SaaS 发布、功能揭示、产品演示、App/公司上线,以及「把我们网站做成导览视频」这类 show-it-as-is 需求(description 说这是任何商业 URL 的默认技能)。团队若有 HeyGen 账号即可获得配音与音乐库检索;没有也能走本地引擎出片。也适合想看「如何把长视频流水线做成有门禁、可续做」的 skill 作者参考。
    不适合: 不适合:① 无 URL、无素材、也不接受自带素材的模糊需求(抓取失败即硬停,不会替你编页面);② 纯文本解说(无网站可抓)——应走 /faceless-explainer;③ 短无旁白动效——应走 /motion-graphics;④ 不想使用任何外部账号/凭证的离线场景(配音与 BGM 检索默认依赖 HeyGen,只有部分能力有本地降级);⑤ 对抓取目标站有合规限制或不希望流量触及目标站的场景;⑥ 期望一键出片无需审批的场景——Step 0/3/6 有用户门禁,渲染前必须获批。
    Install Agent-Ready
    ① Verified Mirror 2026-09-15
    Option A · Direct DownloadDownload product-launch-video.tar.gz
    sha256: 744e4c9d6dfc554d…
    Option B · Copy Guide for Agent
    install.json
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit b8328f9573.