Communitygithub.com

EvovexAI/EvoFlow

将产品链接、营销网址、粘贴的脚本或简报转化为产品发布视频,适用于 SaaS 推广、功能演示、应用发布、公司宣传和产品营销视频。当用户需要营销、发布、推广或展示产品时使用此技能。

EvoFlow 是什么?

EvoFlow 是一款 AI 代理技能,专为将产品营销素材(如 URL、脚本或简报)自动化生成专业的产品发布视频而设计。它支持 Claude Code、Cursor、Codex 等平台,通过一个结构化的六步工作流(从项目设置、素材捕获、设计系统到分镜/脚本、视觉设计、帧构建和最终渲染)来完成视频制作。该技能的核心在于其“镜头序列”架构:每个视觉帧都基于“黄金蓝图”菜单编写为时码化镜头序列,确保画面在整个持续时间内逐步展开,避免了传统视频的“冻结效果”。EvoFlow 集成了 HeyGen 平台进行语音和背景音乐生成,并支持用户批准关键步骤(如分镜、最终渲染),以保持创意控制。

兼容平台~Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/EvovexAI/EvoFlow/tree/HEAD/skills/public/product-launch-video

在你喜欢的 AI 中提问

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

文档

media-use:在获取音频/图片之前,先调用 /media-use 从 HeyGen 目录中解析 BGM/SFX/图片。首先运行 --adopt 注册现有资产。参见 /media-use 技能。

产品发布到 HyperFrames

使用此技能捕获产品,理解其品牌,规划发布视频,并在 HyperFrames 中逐帧构建它。

在步骤 0 之前确认路线。 你是编排者。运行每个步骤,验证其门控,然后才继续下一步。此技能适用于正在被营销、发布、推广或展示的产品,包括诸如“为我们网站做推广”等推广目的的请求。将其他意图路由到别处:一般的非发布网站导览 -> /general-video;无产品的主题讲解 -> /faceless-explainer;GitHub PR -> /pr-to-video;现有视频配字幕 -> /embedded-captions;简短无旁白的动态图形 -> /motion-graphics。如果用户只说“制作视频”或路线不明确,请先阅读 /hyperframes。

你是编排者。在 videos/<project>/ 目录下工作。按顺序运行步骤,并在继续之前通过每个门控。用户门控步骤包括步骤 0、步骤 3 和步骤 6。除步骤 5(你为每个帧分派一个子代理)外,每个步骤都自行完成。不要在此处放置设计或运动规则;这些规则存在于帧工作子代理、此技能的本地 ../hyperframes-animation/rules/ + ../hyperframes-animation/blueprints/ 以及 hyperframes-creative 中。

工作流:步骤 0 设置 -> hyperframes.json;步骤 1 捕获 -> capture/;步骤 2 设计系统 -> frame.md;步骤 3 分镜/脚本 -> STORYBOARD.md 和 SCRIPT.md;步骤 3.1 音频 -> audio_meta.json;步骤 4 视觉设计 -> 增强的 STORYBOARD.md;步骤 5 帧 -> compositions/frames/NN-*.html 和 index.html;步骤 6 最终渲染 -> renders/video.mp4。


步骤 0:设置和简报

目标:锁定核心视频简报,并根据需要创建 HyperFrames 项目。

仅在 hyperframes.json 缺失时初始化。使用品牌或域名的 kebab-case 命名 <project>,例如 acme-promo;切勿使用工作区名称或时间戳。

npx hyperframes init "videos/<project>" --non-interactive --example=blank — init 会检查安装的技能是否与 GitHub 上的最新版本一致,并更新全局集(如有过时)。

在简报之前显示登录状态 — 运行 npx hyperframes auth status,并逐字输出其内容(不要转述或重新编写)。 它会报告语音/BGM 是使用 HeyGen 还是本地引擎,以及未登录时如何登录。如果未登录,请停止并等待用户选择 — 登录,或说“go”/“offline”以继续使用本地引擎 — 然后再询问简报或任何其他内容。 将其视为一个真正的决策点,而不是一个过场便签;不要将选择合并到简报问题中,也不要将密钥写入每个仓库的 .env 文件中。(在自主模式下,记下状态并继续离线。)参见 ../hyperframes-media → Preflight 以获取标准指导。

门控: hyperframes.json 存在,并且视角、时长、宽高比和语言已锁定;登录状态已显示(已登录,或继续离线)。


步骤 1:捕获资产

目标:收集源材料、品牌信号和可用的视频资产。

对输入进行分类并选择路径。显式 URL -> 捕获它,并使用网站进行旁白和资产。粘贴的脚本/简报 -> 逐字保存为 user_script.txt,询问一次“逐字使用还是重构?”,将答案存储为 VO_MODE,然后解析捕获目标:文本中的 URL -> 使用它;仅品牌名称 -> WebSearch,在一行中确认 URL,然后爬取;无 URL/网站 -> 无捕获路径。

使用以下命令运行捕获:npx hyperframes capture "<URL>" -o ./capture

如果存在 GEMINI_API_KEY、GOOGLE_API_KEY 或 OpenRouter 密钥,捕获会自动将资产注释到 capture/extracted/asset-descriptions.md 中。这不是一个审查门控。如果没有视觉密钥,请使用 DOM 上下文并继续。

无捕获路径:手动创建 capture/extracted/tokens.json、capture/extracted/visible-text.txt、capture/extracted/asset-descriptions.md 和 capture/assets/。tokens.json 应为 { "title": "", "description": "", "colors": [], "fonts": [] };尽可能从简报中填写标题/描述。visible-text.txt 包含完整的简报或脚本。asset-descriptions.md 应说明未捕获任何资产,除非用户提供了资产说明。

门控: capture/extracted/tokens.json、capture/extracted/visible-text.txt、capture/extracted/asset-descriptions.md 和 capture/assets/ 存在;你可以用一句清晰的话陈述品牌。将 asset-descriptions.md 视为主资产清单。如果实际捕获后该文件缺失,请停止并报告捕获不完整。如果存在 capture/BLOCKED.md,请遵循它。


步骤 2:设计系统

目标:选择一个已发布的帧预设;一个脚本将其转换为该视频的 frame.md + 字幕皮肤。

你需要做一个判断决策 — 选择哪个预设。阅读 ../hyperframes-creative/references/design-spec.md,选择外观最符合品牌和简报的预设。然后运行:

node <SKILL_DIR>/scripts/build-frame.mjs --preset <name> --hyperframes .

脚本将确定性地完成其余部分:将预设的 FRAME.md 复制到 frame.md,并混音到 capture/extracted/tokens.json 中的品牌令牌上(品牌颜色按角色映射到预设的颜色键上 — 墨水、画布、强调色 — 保持键/结构/组件;预设的显示字体和正文字体替换为品牌的字体),将预设的字幕皮肤复制到 .hyperframes/caption-skin.html,并自我验证(映射损坏时退出代码 1)。脚本退出代码 0 后立即进入下一步 — 无需手动编辑规范。

没有品牌颜色/字体的 tokens.json(例如无捕获时) -> 脚本保留预设自己的调色板,即一个完整的可发布设计。如果简报中提到了捕获遗漏的品牌颜色/字体,请在运行前将它们添加到 capture/extracted/tokens.json 中(或使用用户的 design.md 来填充它);仅在映射确实需要时才手动调整 frame.md。

门控: build-frame.mjs 退出代码 0 — 从命名预设生成的 frame.md 存在,并且(当预设包含时).hyperframes/caption-skin.html 作为字幕皮肤源存在。


步骤 3:分镜和脚本

目标:将简报和捕获的材料转化为经批准的逐帧故事计划。

阅读 references/story-design.md、../hyperframes-animation/blueprints-index.md、../hyperframes-core/references/storyboard-format.md 和 ../hyperframes-core/references/script-format.md。使用它们编写 STORYBOARD.md,并在需要旁白时编写 SCRIPT.md。

使用 story-design.md 获取故事蓝图、钩子、说服逻辑、节拍、VO_MODE 和资产选择。作为软指南,查阅 ../hyperframes-animation/blueprints-index.md 中的角色→蓝图菜单:对于每个节拍,当某个蓝图合适时,记下一个候选蓝图 ID。故事真实性仍然决定哪些节拍存在 — 切勿强行让节拍适应蓝图,也切勿仅仅因为有可用形状就发明节拍。从 capture/extracted/asset-descriptions.md(规范清单)中选择每个视觉帧的 asset_candidates — 不要浏览原始的 capture/assets/。除非该清单缺失或不可用,否则不要让用户选择资产。使用分镜和脚本参考中的确切必填字段。

草稿完成后,展示逐帧摘要。在同一消息中询问用户两件事:(a)批准或请求更改,以及(b)是否需要分镜草稿的实时预览(npx hyperframes preview) — 仅在用户同意时打开它。迭代直到获得批准,并将预览选择带到步骤 6。

门控: STORYBOARD.md 存在,每个视觉帧都有 asset_candidates,需要旁白时 SCRIPT.md 存在,并且用户批准了逐帧计划。


步骤 3.1:音频

目标:从已批准的脚本生成旁白、单词时间、音乐和音频元数据。

在步骤 3 批准后开始音频处理。在后台运行它,然后继续步骤 4。

node <SKILL_DIR>/scripts/audio.mjs --script ./SCRIPT.md --storyboard ./STORYBOARD.md --hyperframes . --out ./audio_meta.json &

音频脚本处理旁白、单词时间、从 HeyGen 音乐库查找 BGM 以及时间元数据。BGM 情绪来自分镜的 music: 字段。这使用 HeyGen 音频 API 进行检索,而非生成,并且使用与 TTS 相同的 ~/.heygen 凭据。有关提供商详细信息,请阅读 ../hyperframes-media/references/tts.md。

如果没有旁白且没有 SCRIPT.md,则跳过语音生成。如果分镜有音乐情绪,BGM 可能仍会运行。

门控: 音频作业已启动,或者项目标记为静音。


步骤 4:帧视觉设计

目标:为每个分镜帧添加视觉方向、布局意图和运动选择。

就地编辑 STORYBOARD.md。不要创建另一个分镜。将 frame.md 作为颜色、字体、布局感觉和风格的真理源。

阅读 references/visual-design.md、../hyperframes-animation/blueprints-index.md、references/motion-language.md 和 ../hyperframes-animation/rules-index.md。使用 visual-design.md 获取方法(时码化镜头序列、内联布局词汇表以及所需的 ## Video direction 块)。使用 ../hyperframes-animation/blueprints-index.md 选择每个帧的镜头形状。使用 motion-language.md(运动词汇 + 运动准则)和 ../hyperframes-animation/rules-index.md(有效规则名称)进行运动 — 不要发明运动名称。

对于每个视觉帧,按照 visual-design.md 的方法在 STORYBOARD.md 中编写一个时码化镜头序列:选择帧的蓝图(或组合),用此产品的内容实例化它,并将每个场景的揭示节奏与配音对齐,使帧在其整个持续时间内展开,而不是前部加载然后冻结。每个场景内联说明布局和运动(词汇见 visual-design.md 和 motion-language.md)。添加一个视频级别的 ## Video direction 块。

不要更改故事、脚本、资产选择、asset_candidates、transition_in 或已捕获的源材料。不要在此步骤中编写 HTML。

在视觉设计锁定后暂存命名资产:

node <SKILL_DIR>/scripts/stage-assets.mjs --storyboard ./STORYBOARD.md --hyperframes .

门控: 每个视觉帧都有一个时码化镜头序列,其揭示节奏与配音对齐(无前部加载);## Video direction 存在;assets/ 包含命名的资产。


步骤 5:构建帧

目标:将每个分镜帧构建为 HTML 合成,并组装可播放的视频。

如果音频已启动,请等待步骤 3.1 的音频完成。然后同步时长并获取 SFX;如果静音,则跳过两者。

node <SKILL_DIR>/scripts/audio.mjs sync-durations --audio-meta ./audio_meta.json --storyboard ./STORYBOARD.md

node <SKILL_DIR>/scripts/audio.mjs fetch-sfx --storyboard ./STORYBOARD.md --hyperframes .

时长同步是机械性的:真实配音时长优先;静音帧保留估计值;切勿手动编辑同步后的时长。

在分派之前,阅读 sub-agents/frame-worker.md 和 ../hyperframes-core/references/subagent-dispatch.md。为每个帧分派一个子代理,如果可能则并行;否则,以波次运行工作器。每个工作器只处理一个帧。

每个工作器上下文必须包含 PROJECT_DIR、frame_id、画布大小、字幕状态和启用字幕时的保持带,以及 RULES_DIR(此技能的 ../hyperframes-animation/rules/ 的绝对路径)。每个工作器读取 frame.md、来自 STORYBOARD.md 的其自己的 ## Frame N 块、每个引用的运动的本地规则配方(../hyperframes-animation/rules/<id>.md)以及帧的蓝图模板(../hyperframes-animation/blueprints/<id>.md)。每个工作器只写入 compositions/frames/NN-*.html。工作器绝不能编辑 STORYBOARD.md。

每个工作器返回时,编排者在 STORYBOARD.md 中将该帧标记为 animated。

在音频时间存在后,在后台构建字幕并组装索引:

node <SKILL_DIR>/scripts/captions.mjs build --storyboard ./STORYBOARD.md --audio-meta ./audio_meta.json --hyperframes . --out ./caption_groups.json &

node <SKILL_DIR>/scripts/assemble-index.mjs --storyboard ./STORYBOARD.md --hyperframes .

captions.mjs 使用项目的 .hyperframes/caption-skin.html(在步骤 2 中复制)作为字幕外观,注入来自 frame.md 的品牌令牌;如果没有皮肤,则渲染内置的默认药丸样式。captions: skipped (<reason>) 是有效的。当显式跳过时,继续处理而不带字幕。

门控: 每个帧都被标记为 animated,index.html 存在,并且字幕已构建或显式跳过。


步骤 6:最终确定

目标:验证组装的视频,获得用户批准,并渲染最终的 MP4。

注入转场,运行检查,暂停供审查,然后渲染。

node <SKILL_DIR>/scripts/transitions.mjs inject --storyboard ./STORYBOARD.md --hyperframes .

node <SKILL_DIR>/scripts/transitions.mjs verify --storyboard ./STORYBOARD.md --index ./index.html

npx hyperframes lint

npx hyperframes validate

npx hyperframes inspect

npx hyperframes snapshot --at <frame-midpoints>

snapshot 将捕获的帧拼接成一个联系表(snapshots/contact-sheet.jpg)。快速浏览一下;如果没有明显损坏,就继续 — 不要在此处停留。

如果某个命令失败,请显示 stderr 并停止 — 不要堆积恢复命令。自行修复:对 compositions/frames/NN-*.html 进行最安全的编辑,然后重新运行失败的检查。

检查通过后,暂停以供用户审查。视频已组装、可查看,并可在 Studio 中编辑。在步骤 3 和步骤 6 之间只管理一次预览:如果用户之前要求过,则打开它;如果他们之前拒绝过,则提供它;如果他们已经在 Studio 中审查,则不再询问。

预览:npx hyperframes preview

渲染只有在用户指定时才会发生。如果用户请求渲染,使用: npx hyperframes render

门控: 所有检查通过,用户已经审查,以及(用户请求时)视频已渲染。

Individual skills in this repo

This repo contains 15 individual skills — each has its own dedicated page.

EvovexAI/EvoFlow

Add captions to a talking-head video. ONE catalog (CATALOG.md) of 32 visual identities behind two engines: column-flow (captions composited INTO the scene — matte occlusion + mix-blend; cream/ink/editorial/keynote/documentary/loud/neon/glitch/chrome/velocity) and themed constitutions (anchor/ordnance/terminal/neonsign/stardust/stomp/scoreboard/transit/vhs/arcade/dossier/laser/thunder/hologram/biolume/aurora/spectrum/papercut/popup/chalkboard/graffiti/brush/inkwater/ransom/lastpage/nightcity — e.g. a glyph-decode climax, a neon sign WRITTEN stroke by stroke, or the quiet `anchor` rail default). Route by identity, never by mode. Trigger on "captions/subtitles", "embed/cinematic captions", "VFX captions", "炸/特效/酷炫字幕", a named identity, or top-tier motion-graphics asks. Embedding every word is wrong for most talking-head content — `anchor` is the verbatim default. Pipeline: transcription → hyperframes remove-background matting → HTML render → ffmpeg overlay. Requires hyperframes and a single-subject clip.

EvovexAI/EvoFlow

The fallback workflow for authoring custom HyperFrames video compositions at any length or format — longer or multi-scene pieces, brand / sizzle reels, montages, title cards, static loops, and freeform compositions. Input- and length-agnostic. If a specialized workflow clearly fits the input — a marketed product, a website, a topic explainer, a GitHub PR, existing footage, a short motion graphic, or a Remotion port — prefer it (see /hyperframes); use this only as the general fallback when none fit.

EvovexAI/EvoFlow

All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). HyperFrames-native: single paused timeline, seek-safe, deterministic.

EvovexAI/EvoFlow

HyperFrames CLI dev loop. Use when running npx hyperframes init, add, catalog, capture, lint, validate, inspect, layout, snapshot, preview, play, render, publish, lambda, doctor, browser, info, upgrade, skills, compositions, docs, benchmark, telemetry, transcribe, tts, or remove-background, or when troubleshooting the HyperFrames build/render environment. Entry point for AWS Lambda cloud rendering (`hyperframes lambda deploy / render / progress / destroy / policies`).

EvovexAI/EvoFlow

The HyperFrames composition contract — build one renderable project. Use for composition structure, the `data-*` timing attributes, `class="clip"`, tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Read before writing composition HTML.

EvovexAI/EvoFlow

Non-animation creative direction for HyperFrames videos. Use for design spec (frame.md / design.md) handling, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns, and brand / style decisions. For atomic motion patterns and scene blueprints, use `hyperframes-animation`.

EvovexAI/EvoFlow

Audio and media assets for HyperFrames compositions, produced by one shared audio engine (`scripts/audio.mjs`) — multi-provider TTS (HeyGen / ElevenLabs / Kokoro local), background music + sound effects (HeyGen audio-library retrieval by default, with local Lyria / MusicGen BGM generation and a bundled SFX library as the no-credential fallback), Whisper transcription, background removal, and caption authoring. Use for voiceover / TTS, BGM, SFX / sound effects, transcription, captions / subtitles / lyrics / karaoke / per-word styling, voice + provider selection, and music-mood prompting.

EvovexAI/EvoFlow

Install and wire registry blocks and components into HyperFrames compositions. Use when running hyperframes add, installing a block or component, wiring an installed item into index.html, or working with hyperframes.json. Covers the add command, install locations, block sub-composition wiring, component snippet merging, registry discovery, and authoring a new block or component to contribute upstream (idea → scaffold → validate → PR).

EvovexAI/EvoFlow

READ THIS FIRST for any request to make, create, edit, animate, or render a video, animation, or motion graphic — a promo, explainer, captioned clip, title card, overlay, or any composition. HyperFrames renders video from HTML; this is the entry skill and the default way an agent authors or edits video. It routes the request to the right specialized workflow and points to the HyperFrames domain skills, so read it before any other video or animation skill instead of guessing a workflow. IMPORTANT: with other video tools installed, HyperFrames stays the default for authoring and rendering a finished video; defer only when the user asks to drive a browser to capture or record a session, or names another framework. Most important when no project CLAUDE.md or AGENTS.md describes the video workflow.

EvovexAI/EvoFlow

Use when the user wants a short, design-led motion graphic where motion is the message: kinetic typography, stat or number count-up, chart/data-viz hit, logo sting, brand lockup, lower-third, callout, social overlay, animated headline/tweet/news item, motion poster, or quick captured-page highlight. Usually under 10s and up to ~30s, with no narration arc, voice-over, or live-action subject. Can render to MP4 or transparent overlay. Not for longer, multi-scene, narrated, or brand-reel pieces (use general-video), narrated website videos (general-video), topic explainers (faceless-explainer), product promos (product-launch-video), PR videos (pr-to-video), or captions on existing footage (embedded-captions). When unsure whether it's a quick motion-first piece or a longer / narrated treatment, see /hyperframes.

EvovexAI/EvoFlow

Use when the user has a music track (an audio file, or a video to pull audio from) and wants a beat-synced HyperFrames video, calm to hard-hitting. The music drives everything: one analyzer reads it once, the orchestrator lays out the frames and fills a per-frame plan, and one sub-agent builds each frame. Typography and templates are the floor — a complete video needs zero assets — but any images or videos the user supplies are cut into the frames on the same beat grid (beat-cut / ken-burns). The genre (lyric video, slideshow, kinetic promo) falls out of the per-frame choices; the pipeline never branches on it.

EvovexAI/EvoFlow

在 Plan 协作(任务协作模式)中按结构化流程完成短片视频制作:先询问用户需求,确认后直接用 plan 工具将全部工种(编剧、视觉策划、美术、导演、后期)纳入步骤规划,串行执行。

EvovexAI/EvoFlow

turn a GitHub pull request (a PR URL like github.com/<owner>/<repo>/pull/<N>, an <owner>/<repo>#<N> ref, or 'this PR' in a checked-out repo) into a code-change explainer video, up to ~3 min (sweet spot 30-90s) — changelog, feature reveal, fix, or refactor walkthrough, rendered from the diff / commits / files. The input is a CODE CHANGE read via the gh CLI; there is no website capture. Use this skill for a GitHub PR. Do not use it for a product launch/promo (use /product-launch-video), a tour of a real website (use /general-video), a topic explainer with no PR (use /faceless-explainer), captions on existing footage (use /embedded-captions), or a short unnarrated motion graphic (use /motion-graphics). If the intent is unclear, route through /hyperframes first.

EvovexAI/EvoFlow

Port an existing Remotion (React) composition to HyperFrames HTML. Use ONLY when the user explicitly asks to port/convert/migrate/translate a Remotion source. Do NOT use: (a) authoring a new HyperFrames composition; (b) Remotion mentioned in passing; (c) Remotion code shared as reference only; (d) "same video as my Remotion one" without explicit migrate request — treat as fresh build. Doubt → `/general-video`. One-way, Remotion-only: no reverse export (HyperFrames→Remotion or any framework), no non-Remotion source (After Effects, Framer Motion, plain React/CSS) → out of scope, re-create via `/general-video`. Flags unsupported patterns (useState, useEffect, async calculateMetadata, third-party React libs, `@remotion/lambda`) and recommends runtime interop over lossy translation. Unsure whether to port vs. build fresh, or only a passing Remotion mention? → /hyperframes.

EvovexAI/EvoFlow

本地文字转语音,使用sherpa-onnx(离线,无需云端)。当需要离线语音合成时使用。

相关技能