hyperframes-read-first
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseHyperFrames — read this first
HyperFrames — 请先阅读本文
Start here for any HyperFrames task — especially with no project agent config ( / / ) present. Capability map + video router below.
CLAUDE.mdAGENTS.md.cursorrules所有HyperFrames任务请从此处开始 — 尤其当项目中没有代理配置文件( / / )时。下方为能力映射表及视频路由规则。
CLAUDE.mdAGENTS.md.cursorrulesCapability map — which skill for which intent
能力映射表 — 不同需求对应哪个技能
| You want to… | Go to |
|---|---|
| Make a video (from a URL, brief, topic, GitHub PR, existing footage, or a single element to animate) | the video router below (§ Video routing) |
Author / edit an HTML composition — the | |
| Animate — atomic motion rules, scene blueprints, transitions, runtime adapters (GSAP / Lottie / Three.js / Anime.js / CSS / WAAPI / TypeGPU) | |
Creative direction — | |
| Media preprocessing — TTS voiceover, background music, transcription, background removal, captions | |
| CLI dev loop — init, lint, validate, inspect, preview, render, publish, doctor | |
Install registry blocks / components ( | |
The composition authoring contract (every timed element needs/data-start/data-duration; timed elements needdata-track-index; GSAP timelines are paused and registered onclass="clip"; deterministic logic only — nowindow.__timelines/Date.now()/ network) is not duplicated here — it lives inMath.random(). Read that before writing composition HTML./hyperframes-core
| 你想要…… | 前往 |
|---|---|
| 制作视频(从URL、brief、主题、GitHub PR、现有素材或单个元素制作动画) | 下方的视频路由规则(§ 视频路由) |
创作/编辑HTML合成内容 — | |
| 动画制作 — 原子运动规则、场景蓝图、转场效果、运行时适配器(GSAP / Lottie / Three.js / Anime.js / CSS / WAAPI / TypeGPU) | |
创意指导 — | |
| 媒体预处理 — TTS旁白、背景音乐、转录、背景移除、字幕 | |
| CLI开发循环 — 初始化、代码检查、验证、查看、预览、渲染、发布、诊断 | |
安装注册表模块/组件( | |
合成内容创作约定(每个定时元素需要/data-start/data-duration;定时元素需添加data-track-index;GSAP时间轴默认暂停并注册到class="clip";仅使用确定性逻辑 — 禁止window.__timelines/Date.now()/ 网络请求)未在此处重复 — 该内容位于Math.random()。编写合成HTML前请先阅读该文档。/hyperframes-core
What HyperFrames cannot do — check this first
HyperFrames无法完成的任务 — 请先查看这部分
HyperFrames authors an HTML composition and renders it to MP4 from code. That model has hard outer edges. A request past one of them is not a routing choice — it is out of scope, so decline (or point at the right tool) instead of reaching for a workflow. These follow from the architecture, not from any single request:
- The render is deterministic and self-contained. Every value, asset, and piece of text is baked in when you author; the render does no network call and no live / at-render-time data pull (core rule: no /
Date.now()/ network). "Refresh the numbers live at render time" is out — fetch the data once at author time and bake it in, or decline.Math.random() - Existing video is overlaid, never edited. HyperFrames composes frames on top of a source clip — adds a caption layer,
/embedded-captionsadds designed graphic cards (lower-thirds, data callouts, titles) — and the clip plays unchanged underneath, but neither post-processes the encoded video stream. Changing the footage itself (its timing, color, framing, order, or audio) is NLE-style editing and out of scope./graphic-overlays - Remotion import is one-way. translates the Remotion framework's source into HyperFrames. There is no reverse (HyperFrames → Remotion, or → any other framework — out of scope), and a non-Remotion React / web-animation source has no Remotion source to translate — re-create it via
/remotion-to-hyperframes./general-video - It cannot produce inputs it does not have. No screen / session recording, no camera capture, no AI talking-head / lip-synced avatar generation. If the footage or asset does not exist yet, HyperFrames cannot conjure it — ask the user to supply it (or use the right capture tool) first.
Everything else — a video from a URL, brief, topic, PR, footage-to-annotate, or a single element to animate — is in scope; route it below.
HyperFrames通过代码创作HTML合成内容并将其渲染为MP4。该模式存在明确的边界。超出边界的请求不属于路由选择范畴,而是超出范围,因此应直接拒绝(或指向正确工具),而非尝试适配工作流。这些限制源于架构设计,而非单个请求:
- 渲染过程是确定性且独立的。创作时需嵌入所有数值、资源和文本;渲染过程不进行网络调用,也不实时拉取数据(核心规则:禁止/
Date.now()/ 网络请求)。“渲染时实时刷新数据”的需求超出范围 — 需在创作时一次性获取数据并嵌入,或直接拒绝。Math.random() - 仅能叠加现有视频,无法编辑视频本身。HyperFrames在源片段之上合成帧 — 添加字幕层,
/embedded-captions添加设计好的图形卡片(下三分之一栏、数据标注、标题) — 源片段在下方正常播放,但两者均不处理编码后的视频流。修改素材本身(时长、颜色、画幅、顺序或音频)属于非线性编辑(NLE)范畴,超出范围。/graphic-overlays - Remotion导入为单向操作。将Remotion框架的源文件转换为HyperFrames格式。不支持反向转换(HyperFrames → Remotion或其他框架 — 超出范围),非Remotion的React/网页动画源文件无法通过该路径转换 — 需通过
/remotion-to-hyperframes重新创建。/general-video - 无法生成未提供的输入内容。不支持屏幕/会话录制、摄像头捕获、AI虚拟主播/唇同步头像生成。若素材或资源尚未存在,HyperFrames无法凭空生成 — 需先要求用户提供(或使用正确的捕获工具)。
除此之外 — 从URL、brief、主题、PR、待标注素材或单个元素制作动画的视频需求均在范围内;请按照下方规则进行路由。
Video routing
视频路由
This section knows ONLY top-level workflows. It does not load workflow-internal phases, domain skills ( — see the capability map above), or technical references.
hyperframes-*本节仅涉及顶级工作流。不加载工作流内部阶段、领域技能( — 见上方能力映射表)或技术参考文档。
hyperframes-*Decision table
决策表
INPUT type (intent) is the primary axis; OUTPUT length is only a ceiling, not a gate. For a matching input, the specialized workflows handle anything up to ~3 min — which workflow you enter is decided by intent (the input type, and for text the subject), not by length. Length matters only at the top end: a genuinely longer piece (a 3-5 min tutorial, a 5 min+ deep dive) is a different register and routes to . Within the ≤~3 min band, a third axis splits the two text-fed workflows — the subject: a product being marketed vs a topic being explained (see the disambiguation rule in step 3 below).
/general-video| Length / Input | Product launch (URL / brief / script) | General website / URL | GitHub PR / code change | Topic / article / notes (no product, no URL) | Existing video (talking-head) † |
|---|---|---|---|---|---|
| ≤ ~3 min | | | | | |
| 3-5min tutorial | | | | | |
| 5min+ deep dive | | | | | |
| Static / loop | | | | | |
Coverage today: the ≤ ~3 min band has dedicated workflows for product-launch / general-website / GitHub-PR / topic inputs (a URL splits by kind then intent — see step 3), and the existing video column is covered at any length — by (captions / subtitles) or (designed graphic overlays), split by intent (see step 2). Every other cell is — the general HTML-composition authoring flow (input- and length-agnostic): everything longer than ~3 min (the 3-5 min / 5 min+ rows) and every static / loop format. The router never dead-ends on a creatable video; the only true "general / none" answer is a request outside HyperFrames itself (e.g. NLE-style editing of a finished video file — re-timing, recoloring, reframing, reordering, audio).
/embedded-captions/graphic-overlays/general-video† Existing footage splits by intent, not length. Captions / subtitles → ; designed graphic overlays / packaging — lower-thirds, data callouts, titled cards, pull-quotes — → . Both overlay the clip, which plays unchanged underneath; neither edits the footage itself.
/embedded-captions/graphic-overlaysGenre short-circuit (precedes the table). A short (~under 10s), unnarrated, design-led motion graphic — kinetic type, a stat / chart hit, a logo sting, a lower-third / overlay, or an animated tweet / headline / captured-page highlight — routes to regardless of input. It is an OUTPUT genre, not an input type, so it takes precedence over the input-type table above when the ask is clearly motion-first with no narration (see step 2). A longer or narrated treatment routes by input type, or .
/motion-graphics/general-video输入类型(意图)为主要依据;输出时长仅为上限,而非准入条件。对于匹配的输入,专用工作流可处理时长约3分钟以内的内容 — 进入哪个工作流由意图(输入类型,文本输入则看主题)决定,而非时长。仅在内容较长时需考虑时长:真正的长视频(3-5分钟教程、5分钟以上深度讲解)属于不同类型,需路由至。在≤约3分钟范围内,文本驱动的两个工作流需通过第三个维度区分 — 主题:推广产品 vs 讲解主题(见下方步骤3中的区分规则)。
/general-video| 时长 / 输入类型 | 产品发布(URL / brief / 脚本) | 通用网站 / URL | GitHub PR / 代码变更 | 主题/文章/笔记(无产品、无URL) | 现有视频(真人出镜) † |
|---|---|---|---|---|---|
| ≤ ~3分钟 | | | | | |
| 3-5分钟教程 | | | | | |
| 5分钟以上深度讲解 | | | | | |
| 静态/循环视频 | | | | | |
当前覆盖范围:≤ ~3分钟的内容针对产品发布/通用网站/GitHub PR/主题输入有专用工作流(URL需先区分类型再看意图 — 见步骤3);现有视频列任意时长均有对应处理方式 — (字幕/副标题)或(设计好的图形叠加层),根据意图区分(见步骤2)。其余所有情况均路由至 — 通用HTML合成内容创作流程(与输入类型和时长无关):所有超过约3分钟的内容(3-5分钟/5分钟以上行)以及所有静态/循环格式视频。路由不会在可创建的视频需求上陷入死胡同;唯一真正“通用/无对应工作流”的情况是请求超出HyperFrames本身的范围(例如,对成品视频文件进行非线性编辑 — 调整时长、重新调色、重新构图、重新排序、修改音频)。
/embedded-captions/graphic-overlays/general-video† 现有素材根据意图区分,与时长无关。字幕/副标题 → ;设计好的图形叠加层/包装 — 下三分之一栏、数据标注、标题卡片、引用内容 → 。两者均在素材上方叠加内容,素材本身正常播放;均不编辑素材本身。
/embedded-captions/graphic-overlays类型短路规则(优先于表格)。简短(约10秒以内)、无旁白、以设计为主的动态图形 — 动态文字、数据/图表展示、Logo动画、下三分之一栏/叠加层,或动画化的推文/标题/页面高亮内容 — 无论输入类型如何,均路由至。这是输出类型,而非输入类型,因此当需求明确为以动效为主且无旁白时,优先适用该规则,而非上述输入类型表格。较长或带旁白的内容则根据输入类型路由,或路由至。
/motion-graphics/general-videoMigrating an existing composition (special case)
迁移现有合成内容(特殊情况)
The table above is for creating a video from an input. One workflow sits outside it: if the user explicitly asks to port / convert / migrate an existing Remotion (React) composition into HyperFrames → . This is source translation, not creation-from-input, so it has no INPUT × LENGTH cell. Route here ONLY on explicit migration language ("port my Remotion project", "convert this Remotion comp", "rewrite this as HyperFrames") — a passing mention of Remotion is not a trigger; default to the creation table or .
/remotion-to-hyperframes/hyperframes-core上述表格适用于从输入创建视频。有一个工作流不在表格范围内:若用户明确要求移植/转换/迁移现有Remotion(React)合成内容至HyperFrames → 。这是源文件转换,而非从输入创建视频,因此没有输入×时长的对应单元格。仅当用户明确提及迁移相关表述(“移植我的Remotion项目”、“转换这个Remotion合成内容”、“重写为HyperFrames格式”)时才路由至此 — 仅提及Remotion不足以触发该路由;默认使用创建表格或。
/remotion-to-hyperframes/hyperframes-coreRouting procedure
路由流程
- Determine INPUT type + target length. Routing needs to know what the video is about — its subject and input. If the subject itself is unspecified (e.g. "make a video about our thing" with no URL, named product, topic, or asset to work from), or the input type is unknown, ask before entering any workflow — clarify first; do not invoke a workflow Skill and then ask, since committing to a workflow is itself the routing decision. Ask at most 2 clarifying questions:
- "What's your input — a product (URL or brief), a general website / URL, a GitHub PR / code change, a topic or article to explain, or an existing talking-head video to caption?"
- "Target length — about 3 minutes or under, or longer (a 3-5 min tutorial / 5 min+ deep dive)?"
- Spec defaults — state, don't ask (these do NOT affect the route, so never block routing on them): aspect 16:9 (the engine also supports 9:16 vertical — switch only if the user names a vertical destination like TikTok / Reels / Shorts); narration / caption language = the user's. Confirm only if the user pushes back; the chosen workflow re-confirms its own specifics at its Step 0.
- Pick by INPUT type (intent) first; length is only a ceiling, not a gate.
- Short design-led motion graphic (genre short-circuit, precedes the input table) — the motion itself is the message: kinetic type, a stat / number count-up, a chart hit, a logo sting, a lower-third / overlay, or an animated tweet / headline / captured-page highlight; typically under ~10s, no narration / voice-over → . This is an OUTPUT genre, not an input type — when the ask is clearly a quick, unnarrated, design-led motion piece, route here regardless of input. A longer or narrated treatment of the same material is NOT this (route by input type, or
/motion-graphics)./general-video - Existing talking-head video (the user has a clip and wants something added over it) → split by intent, at any length (input type wins over length): captions / subtitles (the spoken words as readable text) → ; designed graphic overlays — lower-thirds, data callouts, titled info-cards, pull-quotes, a graphics-packaged edit →
/embedded-captions. (Editing the footage itself — re-timing, recolor, reframe, reorder, audio — is NLE-style and out of scope; see § What HyperFrames cannot do.)/graphic-overlays - GitHub PR / code change (a link, an
github.com/<owner>/<repo>/pull/<N>ref, or "this PR") →owner/repo#N(up to ~3 min)./pr-to-video - Otherwise (product URL / brief / topic text): intent picks the workflow via step 3, and it handles anything up to ~3 min — a short 15-30 s promo and a ~100 s explainer both route by intent, not by length. Route to (the length-agnostic fallback — see step 4) only when the target is clearly longer than ~3 min (a 3-5 min tutorial, a 5 min+ deep dive). Never force a genuinely long piece into a ≤~3 min workflow — intent decides within the band,
/general-videocovers the rest./general-video
- Short design-led motion graphic (genre short-circuit, precedes the input table) — the motion itself is the message: kinetic type, a stat / number count-up, a chart hit, a logo sting, a lower-third / overlay, or an animated tweet / headline / captured-page highlight; typically under ~10s, no narration / voice-over →
- Disambiguate the ≤~3 min URL / text inputs (the intent split). Two splits:
- URL kind + intent — a URL no longer auto-wins for PLV; its kind then intent decides: a GitHub PR link (,
.../pull/<N>, "this PR") →owner/repo#N; otherwise a website URL splits by intent — marketing / launching / promoting a specific product or SaaS →/pr-to-video; a general site → video (site tour, portfolio / blog / landing-page showcase, a social clip from the site's own visuals, or just "turn this site into a video") →/product-launch-video. Both crawl with headless Chrome; PR URLs are read via/website-to-video. When it's genuinely unclear whether a site URL is a product launch or a general-site video, ask one question.gh - Product vs topic (text, no URL) — the decisive question is what the video is about, not the input format:
- A specific product / company / SaaS / app / website being marketed, launched, or promoted → .
/product-launch-video - A concept / topic / article / how-something-works being explained, with no product and no URL → .
/faceless-explainer - Tie-breakers: "Promote / launch / sell / our product" wording → PLV. "Explain / teach / how X works / what is X" with no product → faceless. The shipped style for faceless is always .
pin-and-paper - A named site without a pasted URL is still PLV. A script that mentions a product or its website ("our site is acme.io", "promote <brand>") routes to PLV even with no clickable link — PLV can web-search the site and crawl it for brand assets (unless the user opts out, → no-capture preset mode). Not pasting the URL does not make it a faceless / no-capture job. The verbatim-vs-restructure choice for a supplied script is internal to PLV and never changes the route.
- Conflicting cues → ask, don't guess. If the supplied source is a product's own marketing (its landing page, a promo blog about their platform) yet the user explicitly asks to strip the promotion — a neutral explainer of the underlying concept, not an ad — treat it as genuinely ambiguous (is the video about their product, or the general concept?) and ask one question, rather than resolving to faceless on the "neutral" cue alone. Contrast: a general topic where a product is merely an aside the user says to exclude ("explain how OAuth works — we sell an auth product but don't mention it") is unambiguously faceless — no need to ask.
- A specific product / company / SaaS / app / website being marketed, launched, or promoted →
- Still unclear after reading the request → ask exactly one question: "Is this promoting a specific product, making a video from a general website, explaining a topic/concept, walking through a GitHub PR, or adding captions to an existing video?"
- URL kind + intent — a URL no longer auto-wins for PLV; its kind then intent decides: a GitHub PR link (
- Fall back to . When no specialized workflow above matches, route to
/general-video— the general HTML-composition authoring flow (the original/general-videoflow: design system → plan → layout-before-animation → build → validate), which is input- and length-agnostic. Do not fake-route into a specialized workflow (don't force a tutorial into PLV);hyperframesis the correct general home, not a near-fit. The only genuine "no workflow / general" answer is a request outside HyperFrames itself — e.g. NLE-style cutting/editing of a finished video file (captioning a talking-head clip is/general-video; overlaying designed graphics on it is/embedded-captions)./graphic-overlays
- 确定输入类型 + 目标时长。路由需要知道视频的主题 — 内容和输入类型。若主题未明确(例如,“制作一个关于我们产品的视频”但未提供URL、产品名称、主题或素材),或输入类型未知,进入任何工作流前请先询问 — 先明确需求;不要先调用工作流技能再询问,因为选择工作流本身就是路由决策。最多询问2个澄清问题:
- “你的输入是什么 — 产品(URL或brief)、通用网站/URL、GitHub PR/代码变更、待讲解的主题或文章,或需要添加字幕的现有真人出镜视频?”
- “目标时长 — 约3分钟以内,还是更长(3-5分钟教程/5分钟以上深度讲解)?”
- 默认设置 — 直接说明,无需询问(这些不影响路由,因此不要因这些问题阻塞路由):画幅比16:9(引擎也支持9:16竖屏 — 仅当用户指定竖屏平台如TikTok/Reels/Shorts时才切换);旁白/字幕语言=用户使用的语言。仅当用户提出异议时才确认;所选工作流会在其步骤0中重新确认具体细节。
- 优先根据输入类型(意图)选择;时长仅为上限,而非准入条件。
- 简短设计导向动态图形(类型短路规则,优先于输入表格) — 动效本身即为核心内容:动态文字、数据/数字计数、图表展示、Logo动画、下三分之一栏/叠加层,或动画化的推文/标题/页面高亮内容;通常约10秒以内,无旁白/语音解说 → 。这是输出类型,而非输入类型 — 当需求明确为快速、无旁白、设计导向的动效内容时,无论输入类型如何均路由至此。较长或带旁白的同类内容不适用此规则(根据输入类型路由,或路由至
/motion-graphics)。/general-video - 现有真人出镜视频(用户已有片段并希望添加内容) → 根据意图区分,任意时长(输入类型优先于时长):字幕/副标题(将语音内容转换为可读文本) → ;设计好的图形叠加层 — 下三分之一栏、数据标注、标题信息卡、引用内容 →
/embedded-captions。(编辑素材本身 — 调整时长、重新调色、重新构图、重新排序、修改音频 — 属于非线性编辑范畴,超出范围;见§ HyperFrames无法完成的任务。)/graphic-overlays - GitHub PR/代码变更(链接、
github.com/<owner>/<repo>/pull/<N>引用,或“本次PR”) →owner/repo#N(时长约3分钟以内)。/pr-to-video - 其他情况(产品URL/brief/主题文本):通过步骤3根据意图选择工作流,该工作流可处理约3分钟以内的内容 — 15-30秒的短宣传视频和约100秒的解说视频均根据意图路由,而非时长。仅当目标时长明显超过约3分钟(3-5分钟教程、5分钟以上深度讲解)时,才路由至(与时长无关的兜底选项 — 见步骤4)。切勿强行将长视频塞入≤约3分钟的工作流 — 时长范围内根据意图选择,其余情况由
/general-video覆盖。/general-video
- 简短设计导向动态图形(类型短路规则,优先于输入表格) — 动效本身即为核心内容:动态文字、数据/数字计数、图表展示、Logo动画、下三分之一栏/叠加层,或动画化的推文/标题/页面高亮内容;通常约10秒以内,无旁白/语音解说 →
- 区分≤~3分钟的URL/文本输入(意图划分)。分为两种情况:
- URL类型 + 意图 — URL不再自动对应PLV;需先区分类型再看意图:GitHub PR链接(、
.../pull/<N>、“本次PR”) →owner/repo#N;其他网站URL根据意图区分 — 营销/发布/推广特定产品或SaaS →/pr-to-video;通用网站转视频(网站导览、作品集/博客/落地页展示、从网站素材制作社交视频,或仅“将此网站转为视频”) →/product-launch-video。两者均通过无头Chrome抓取;PR URL通过/website-to-video工具读取。若无法明确网站URL是产品发布还是通用网站视频,询问一个问题即可。gh - 产品vs主题(文本,无URL) — 决定性问题是视频主题,而非输入格式:
- 特定产品/公司/SaaS/应用/网站的营销、发布或推广 → 。
/product-launch-video - 概念/主题/文章/工作原理的讲解,且无产品、无URL → 。
/faceless-explainer - 区分依据:包含“推广/发布/销售/我们的产品”等表述 → PLV。包含“讲解/教学/X如何工作/什么是X”且无产品 → faceless。faceless默认使用风格预设。
pin-and-paper - 提及网站但未粘贴URL仍属于PLV。脚本中提及产品或其网站(“我们的网站是acme.io”、“推广<brand>”)即使未粘贴可点击链接,仍路由至PLV — PLV可通过网络搜索网站并抓取品牌资产(除非用户选择不搜索,→ 无捕获预设模式)。未粘贴URL不会使其成为faceless/无捕获任务。提供的脚本是直接用作旁白还是重构为更简洁的场景化旁白,由PLV内部决定,不影响路由。
- 线索冲突 → 询问,不要猜测。若提供的源是产品自身的营销内容(落地页、关于其平台的宣传博客),但用户明确要求去除营销属性 — 制作中性的概念讲解视频,而非广告 — 则视为真正的歧义(视频是关于他们的产品,还是通用概念?),询问一个问题,而非仅根据“中性”线索直接选择faceless。对比:通用主题中产品仅为用户要求排除的次要内容(“讲解OAuth的工作原理 — 我们销售认证产品但不要提及”),则明确属于faceless — 无需询问。
- 特定产品/公司/SaaS/应用/网站的营销、发布或推广 →
- 阅读请求后仍不明确 → 仅询问一个问题:“这是推广特定产品、将通用网站转为视频、讲解主题/概念、演示GitHub PR,还是为现有视频添加字幕?”
- URL类型 + 意图 — URL不再自动对应PLV;需先区分类型再看意图:GitHub PR链接(
- 兜底路由至。当上述专用工作流均不匹配时,路由至
/general-video— 通用HTML合成内容创作流程(原始/general-video流程:设计系统 → 规划 → 动画前布局 → 构建 → 验证),与输入类型和时长无关。不要强行路由至专用工作流(不要将教程塞入PLV);hyperframes是正确的通用选项,而非近似匹配选项。唯一真正“无工作流/通用”的情况是请求超出HyperFrames本身的范围 — 例如,对成品视频文件进行非线性编辑(为真人出镜片段添加字幕是/general-video;添加设计好的图形叠加层是/embedded-captions)。/graphic-overlays
Workflow descriptions (for disambiguation)
工作流说明(用于区分)
/product-launch-video
/product-launch-video/product-launch-video
/product-launch-video- Input: A product being marketed, supplied as one of: (a) a product URL → crawled with headless Chrome for assets, brand tokens, page structure; (b) a script / brief that names a product site (even without a pasted link) → PLV resolves the site by web search and crawls it for brand tokens + assets, unless the user opts out of searching; (c) a script / brief with no derivable site (or an explicit "don't scrape") → no-capture mode, you pick a style preset that supplies the palette + design system (text/typography scenes, no scraped assets). A supplied script can be used verbatim as the voice-over or restructured into punchier per-scene narration — PLV asks which.
- Output: product launch / SaaS explainer / promo video as a HyperFrames composition rendered to MP4 — up to ~3 min (sweet spot ~30-90s; longer still when a verbatim script runs long — verbatim length follows the script)
- Triggers: "make me a launch video for X", "promo for our website", "explain my SaaS in a minute", "feature reveal for X.com", "marketing video for our product", "I have a script — turn it into a 60s promo", "here's my launch script for <brand>, our site is <name>", "use my script word-for-word as the voiceover", "make a text-only launch video, no website / don't scrape anything"
- Do NOT use for: pure-text explainers about a topic / concept with no product (→ ) — note a script that names a product or its site is PLV, not faceless, even when no URL is pasted; a general (non-launch) website → video — a site tour / showcase / social clip not centered on marketing a product (→
/faceless-explainer); a GitHub PR / code-change explainer (→/website-to-video); adding captions to an existing video (→/pr-to-video); anything clearly over ~3 min (tutorials, deep dives →/embedded-captions); customer interviews, motion graphics without a product context, static brand assets (a short product promo, even 15-30 s, is still PLV — length is not the gate, the product intent is)/general-video
- 输入:待营销的产品,提供方式包括:(a) 产品URL → 通过无头Chrome抓取资产、品牌标识、页面结构;(b) 提及产品网站的脚本/brief(即使未粘贴链接) → PLV通过网络搜索找到网站并抓取品牌标识+资产,_除非_用户选择不搜索;(c) 无法推导网站的脚本/brief(或明确说明“不要抓取”) → 无捕获模式,选择提供调色板+设计系统的风格预设(文本/排版场景,无抓取资产)。提供的脚本可直接用作旁白或重构为更简洁的场景化旁白 — PLV会询问选择哪种方式。
- 输出:产品发布/SaaS解说/宣传视频,以HyperFrames合成内容渲染为MP4 — 时长约3分钟以内(最佳时长约30-90秒;若脚本直接用作旁白,时长则跟随脚本长度)
- 触发词:“为X制作发布视频”、“为我们的网站制作宣传视频”、“用一分钟讲解我的SaaS”、“为X.com制作功能展示视频”、“为我们的产品制作营销视频”、“我有一个脚本 — 转为60秒宣传视频”、“这是<brand>的发布脚本,我们的网站是<name>”、“直接使用我的脚本作为旁白”、“制作纯文本发布视频,不要网站/不要抓取任何内容”
- 请勿用于:无产品的纯文本主题/概念讲解(→ ) — 注意:脚本中提及产品或其网站即使未粘贴URL,仍属于PLV,而非faceless;非发布类通用网站转视频 — 网站导览/展示/社交视频,核心并非产品营销(→
/faceless-explainer);GitHub PR/代码变更解说(→/website-to-video);为现有视频添加字幕(→/pr-to-video);明显超过约3分钟的内容(教程、深度讲解 →/embedded-captions);客户访谈、无产品背景的动态图形、静态品牌资产(即使是15-30秒的短产品宣传视频,仍属于PLV — 时长并非准入条件,产品营销意图才是)/general-video
/website-to-video
/website-to-video/website-to-video
/website-to-video- Input: A general website / URL the user wants turned into a video — when the goal is a video of / from the site itself, not a product launch. Captured with headless Chrome for real screenshots + brand assets. (A product being marketed / launched / promoted is , even from a URL.)
/product-launch-video - Output: a video built from the captured site — a site tour, a portfolio / blog / landing-page showcase, or a social clip composed from the site's own visuals — as a HyperFrames composition rendered to MP4.
- Triggers: "turn this website into a video", "capture this site and make a video", "make a video from my site", "site tour / showcase from <url>", "a social clip from our homepage", "I just have a URL — make something"
- Do NOT use for: a product being marketed / launched / promoted — a launch / promo / feature-reveal / "sell our product" framing (→ , even from a URL); a topic / concept explainer with no site (→
/product-launch-video); a GitHub PR (→/faceless-explainer); adding captions to an existing video file (→/pr-to-video); a short unnarrated motion graphic that just highlights / animates a captured page (→/embedded-captions— a single quick page-highlight shot, not a narrated / multi-scene site video). When it's genuinely unclear whether a site URL is a product launch or a general-site video, ask one question./motion-graphics
- 输入:用户希望转为视频的通用网站/URL — 目标是制作网站本身的视频,而非产品发布。通过无头Chrome抓取真实截图+品牌资产。(营销/发布/推广产品的情况属于,即使提供的是URL。)
/product-launch-video - 输出:基于抓取的网站制作的视频 — 网站导览、作品集/博客/落地页展示,或从网站素材制作的社交视频 — 以HyperFrames合成内容渲染为MP4。
- 触发词:“将此网站转为视频”、“抓取此网站并制作视频”、“用我的网站制作视频”、“从<url>制作网站导览/展示视频”、“用我们的首页制作社交视频”、“我只有一个URL — 制作视频”
- 请勿用于:营销/发布/推广产品 — 发布/宣传/功能展示/“销售我们的产品”等场景(→ ,即使提供的是URL);无网站的主题/概念讲解(→
/product-launch-video);GitHub PR(→/faceless-explainer);为现有视频文件添加字幕(→/pr-to-video);仅突出/动画化单个页面的简短无旁白动态图形(→/embedded-captions— 单个快速页面高亮镜头,而非带旁白/多场景的网站视频)。若无法明确网站URL是产品发布还是通用网站视频,询问一个问题即可。/motion-graphics
/faceless-explainer
/faceless-explainer/faceless-explainer
/faceless-explainer- Input: Arbitrary text — a topic line, an article, notes, or a brief — being explained, with no product being marketed and no site to capture. (If the text names a product or its site, that is , which can resolve + crawl the site — even when no URL is pasted.) Forked from
/product-launch-video; the input phase needs no website scrape (no headless Chrome for input)/product-launch-video - Output: faceless explainer video as a HyperFrames composition rendered to MP4 — up to ~3 min (sweet spot ~30-90s). Every visual is LLM-invented per scene (typography / abstract graphics / diagram / data-viz); ships the style preset
pin-and-paper - Triggers: "make a faceless explainer about X", "explain how DNS works as a video", "turn this article into an explainer video", "video explaining [concept], no product", "topic → short educational video", "explainer from my notes"
- Do NOT use for: anything centered on a specific product / company being marketed, or a script that names a product site even without a pasted URL (→ , which web-searches + crawls it); a request that supplies a URL — a product site (→
/product-launch-video), a general website to turn into a video (→/product-launch-video), or a GitHub PR (→/website-to-video); adding captions to an existing video (→/pr-to-video); anything clearly over ~3 min (tutorials, deep dives →/embedded-captions); product ad / promo formats (→/general-video); a pre-recorded / user-supplied voiceover or other media to time visuals to — faceless invents every visual and generates its own narration (TTS), it does not sync to supplied audio (→/product-launch-video); videos that need real screenshots or scraped brand assets (a short explainer, even under 30 s, is still faceless — length is not the gate, the explain-a-topic intent is)/general-video
- 输入:任意文本 — 主题、文章、笔记或brief — 用于讲解,且无待营销产品、无待抓取网站。(若文本提及产品或其网站,则属于,可解析并抓取网站 — 即使未粘贴URL。)派生自
/product-launch-video;输入阶段无需网站抓取(无需无头Chrome获取输入)/product-launch-video - 输出:无真人出镜解说视频,以HyperFrames合成内容渲染为MP4 — 时长约3分钟以内(最佳时长约30-90秒)。每个场景的视觉元素均由LLM生成(排版/抽象图形/图表/数据可视化);默认使用风格预设
pin-and-paper - 触发词:“制作关于X的无真人出镜解说视频”、“用视频讲解DNS的工作原理”、“将此文章转为解说视频”、“制作关于[概念]的视频,无产品”、“主题→短教育视频”、“用我的笔记制作解说视频”
- 请勿用于:以特定产品/公司营销为核心的内容,或脚本中提及产品网站即使未粘贴URL的情况(→ ,可通过网络搜索+抓取);提供URL的请求 — 产品网站(→
/product-launch-video)、通用网站转视频(→/product-launch-video)、GitHub PR(→/website-to-video);为现有视频添加字幕(→/pr-to-video);明显超过约3分钟的内容(教程、深度讲解 →/embedded-captions);产品广告/宣传格式(→/general-video);预录制/用户提供的旁白或其他媒体用于同步视觉元素 — faceless会生成所有视觉元素并自行生成旁白(TTS),不支持与提供的音频同步(→/product-launch-video);需要真实截图或抓取品牌资产的视频(即使是30秒以内的短解说视频,仍属于faceless — 时长并非准入条件,讲解主题的意图才是)/general-video
/embedded-captions
/embedded-captions/embedded-captions
/embedded-captions- Input: An existing talking-head / single-subject video (MP4) the user wants captioned — actual footage, not a URL or a text brief. Transcribed locally (Whisper, no API key) and matted (RVM) so the subject can occlude captions; no website scrape, no headless Chrome.
- Output: the same footage, untouched, with a caption layer added — Standard (default): a verbatim lower-third rail carrying the transcript plus an embedded climax composited behind the subject at the peak; or Cinematic: pure embed, every caption composited into the scene behind the subject. Any length — short reel to long explainer.
- Triggers: "add captions / subtitles to this video", "embed captions into the scene", "captions behind the subject", "cinematic / embedded captions for my clip", "add subtitles to this video"
- Do NOT use for: generating a video from a URL (→ /
/product-launch-video), a topic / text (→/website-to-video), or a GitHub PR (→/faceless-explainer); a clip with no clear single subject (matting needs one); editing the footage itself — re-timing, recoloring, reframing, reordering, audio replacement (NLE editing, out of scope); footage that does not exist yet (HyperFrames cannot record — ask the user to supply it); designed graphic overlays (lower-thirds, data callouts, titled info-cards) on the clip rather than the spoken words as readable text →/pr-to-video./graphic-overlays
- 输入:用户希望添加字幕的现有真人出镜/单主体视频(MP4) — 实际素材,而非URL或文本brief。本地转录(使用Whisper,无需API密钥)并进行抠像(RVM),以便主体可遮挡字幕;无需网站抓取,无需无头Chrome。
- 输出:原素材保持不变,添加字幕层 — 标准模式(默认):底部栏显示完整转录文本,高潮部分的字幕嵌入主体后方;或电影模式:纯嵌入,所有字幕均合成到主体后方的场景中。支持任意时长 — 短视频到长解说视频均可。
- 触发词:“为这个视频添加字幕/副标题”、“将字幕嵌入场景”、“字幕置于主体后方”、“为我的片段添加电影级/嵌入字幕”、“为这个视频添加副标题”
- 请勿用于:从URL生成视频(→ /
/product-launch-video)、从主题/文本生成视频(→/website-to-video)、从GitHub PR生成视频(→/faceless-explainer);无明确单主体的片段(抠像需要单个主体);编辑素材本身 — 调整时长、重新调色、重新构图、重新排序、替换音频(非线性编辑,超出范围);尚未存在的素材(HyperFrames无法录制 — 需要求用户提供);为片段添加设计好的图形叠加层(下三分之一栏、数据标注、标题信息卡)而非将语音内容转为可读文本 →/pr-to-video。/graphic-overlays
/graphic-overlays
/graphic-overlays/graphic-overlays
/graphic-overlays- Input: An existing talking-head / interview / podcast video (MP4) the user wants packaged with designed on-screen graphics — actual footage, not a URL or brief. Transcribed locally (Whisper). The clip plays in full underneath; nothing is cut, re-timed, or recolored.
- Output: the same footage with a sequence of timed graphic-overlay cards composited on top / beside it — kinetic titles, lower-thirds, data callouts, pull-quotes, side panels, picture-in-picture — synced to the transcript, via a design system of 10 styles × 4 layouts × 3 frames. Any length. (This is the replacement for the removed info-card overlay flow.)
/footage-recut - Triggers: "package / wrap this video", "add graphic overlays / on-screen graphics", "lower-thirds / data callouts / kinetic titles / info-cards on my talk", "turn this interview into a graphics-packaged edit", "overlay cards synced to what I'm saying"
- Do NOT use for: plain readable subtitles / captions — the spoken words as text (→ ); a single short unnarrated motion element like one lower-third or a logo sting (→
/embedded-captions— this skill packages a whole narrated clip with many synced cards); editing the footage itself — re-timing, recoloring, reframing, reordering, audio (NLE editing, out of scope); building a video from a URL / topic / PR (→ the creation workflows); footage that doesn't exist yet./motion-graphics
- 输入:用户希望添加设计好的屏幕图形包装的现有真人出镜/访谈/播客视频(MP4) — 实际素材,而非URL或brief。本地转录(使用Whisper)。片段完整播放;不进行剪辑、调整时长或重新调色。
- 输出:原素材上叠加一系列定时图形卡片 — 动态标题、下三分之一栏、数据标注、引用内容、侧边栏、画中画 — 与转录文本同步,使用包含10种风格×4种布局×3种框架的设计系统。支持任意时长。(此为已移除的信息卡叠加流程的替代方案。)
/footage-recut - 触发词:“包装这个视频”、“添加图形叠加层/屏幕图形”、“为我的演讲添加下三分之一栏/数据标注/动态标题/信息卡”、“将这个访谈转为带图形包装的版本”、“添加与语音同步的叠加卡片”
- 请勿用于:纯可读字幕/副标题 — 将语音内容转为文本(→ );单个简短无旁白的动效元素如下三分之一栏或Logo动画(→
/embedded-captions— 本技能为整个带旁白的片段添加多个同步卡片);编辑素材本身 — 调整时长、重新调色、重新构图、重新排序、修改音频(非线性编辑,超出范围);从URL/主题/PR制作视频(→ 创建类工作流);尚未存在的素材。/motion-graphics
/pr-to-video
/pr-to-video/pr-to-video
/pr-to-video- Input: A GitHub pull request — a code change, given as a PR URL (), an
github.com/<owner>/<repo>/pull/<N>ref, or "this PR" in a checked-out repo. A URL, but a PR link read via theowner/repo#NCLI — NOT a marketing site to scrape.gh - Output: code-change explainer — up to ~3 min (sweet spot ~30-90s) — (changelog / feature-reveal / fix-explainer / refactor-walkthrough) — diff highlights, before/after, file-tree and impact scenes
- Triggers: "make a video about this PR", "turn PR #1187 into a changelog video", "explain what this pull request does as a video", "release-notes video from github.com/org/repo/pull/123", "turn this PR into a video"
- Do NOT use for: a product / marketing website URL (→ ) or a general website to turn into a video (→
/product-launch-video); a topic / article / text with no PR (→/website-to-video); adding captions to an existing video (→/faceless-explainer); a whole-repo tour or multi-PR release (no workflow yet →/embedded-captions)/general-video
- 输入:GitHub拉取请求 — 代码变更,提供方式包括PR URL()、
github.com/<owner>/<repo>/pull/<N>引用,或已检出仓库中的“本次PR”。属于URL,但为PR链接,通过owner/repo#NCLI读取 — 并非待抓取的营销网站。gh - 输出:代码变更解说视频 — 时长约3分钟以内(最佳时长约30-90秒) — (变更日志/功能展示/修复说明/重构演示) — 差异高亮、前后对比、文件树及影响场景
- 触发词:“制作关于本次PR的视频”、“将PR #1187转为变更日志视频”、“用视频讲解本次拉取请求的内容”、“从github.com/org/repo/pull/123制作发布说明视频”、“将本次PR转为视频”
- 请勿用于:产品/营销网站URL(→ )或通用网站转视频(→
/product-launch-video);无PR的主题/文章/文本(→/website-to-video);为现有视频添加字幕(→/faceless-explainer);整个仓库导览或多PR发布(暂无对应工作流 →/embedded-captions)/general-video
/remotion-to-hyperframes
/remotion-to-hyperframes/remotion-to-hyperframes
/remotion-to-hyperframes- Input: An existing Remotion (React) video composition's source — the user explicitly asks to port / convert / migrate / rewrite it as HyperFrames. Direction is one-way (Remotion → HyperFrames) and specific to the Remotion framework; this is NOT a creation-from-input workflow.
- Output: A HyperFrames HTML composition translated from the Remotion source, graded against the Remotion render with an SSIM eval harness + tiered test corpus
- Triggers: "port my Remotion project to HyperFrames", "convert this Remotion comp", "migrate from Remotion", "rewrite this as HyperFrames HTML"
- Do NOT use for: authoring a NEW composition (even while A/B-testing a Remotion video), a passing mention of Remotion, or "the same video as my Remotion one" without an explicit migrate request (→ creation workflows / ); the reverse direction — exporting HyperFrames back out to Remotion or any other framework (out of scope, see § What HyperFrames cannot do); a non-Remotion React / web-animation source (no Remotion source to translate → re-create it via
/hyperframes-core)/general-video
- 输入:现有Remotion(React)视频合成内容的源文件 — 用户明确要求移植/转换/迁移/重写为HyperFrames格式。转换为单向操作(Remotion → HyperFrames),且仅针对Remotion框架;此并非从输入创建视频的工作流。
- 输出:从Remotion源文件转换而来的HyperFrames HTML合成内容,通过SSIM评估工具+分层测试集与Remotion渲染结果比对评分
- 触发词:“将我的Remotion项目移植到HyperFrames”、“转换这个Remotion合成内容”、“从Remotion迁移”、“重写为HyperFrames HTML”
- 请勿用于:创作新合成内容(即使是A/B测试Remotion视频)、仅提及Remotion、或“制作与我的Remotion视频相同的视频”但未明确要求迁移(→ 创建类工作流 / );反向转换 — 将HyperFrames导出回Remotion或其他框架(超出范围,见§ HyperFrames无法完成的任务);非Remotion的React/网页动画源文件(无Remotion源文件可转换 → 通过
/hyperframes-core重新创建)/general-video
/motion-graphics
/motion-graphics/motion-graphics
/motion-graphics- Input: A request for a short, design-led MOTION GRAPHIC where the motion itself is the message — typically under ~10s (up to ~30s), no narration / voice-over. Nine output genres: kinetic typography, a stat / number count-up, a chart / data-viz hit, a logo sting / brand lockup, a lower-third / callout / social overlay, or a search-driven webpage / news / tweet / asset-fusion shot (it can capture a page via or pull an image / headline when useful). An OUTPUT-genre short-circuit — it spans inputs, so it precedes the input-type table when the ask is clearly motion-first and unnarrated.
hyperframes capture - Output: a short motion graphic as a HyperFrames composition — rendered to MP4 or a transparent overlay (alpha WebM / MOV) for a lower-third / callout.
- Triggers: "an 8s logo sting", "animate this stat / number", "a kinetic-type intro", "a quick stat / chart hit", "turn this headline or tweet into a motion graphic", "a motion poster", "a transparent lower-third / callout overlay"
- Do NOT use for: a longer, multi-scene, or narrated piece, a brand reel, or any custom composition past ~10-15s (→ ); a narrated video OF a website / site tour (→
/general-video— motion-graphics' webpage genre is a single quick page-highlight shot, not a narrated site video); a narrated topic explainer (→/website-to-video); a product launch / promo (→/faceless-explainer); a GitHub PR (→/product-launch-video); adding captions to existing footage (→/pr-to-video)/embedded-captions
- 输入:对简短、设计导向的动态图形的需求,动效本身即为核心内容 — 通常约10秒以内(最长约30秒),无旁白/语音解说。包含九种输出类型:动态文字、数据/数字计数、图表/数据可视化展示、Logo动画/品牌标识、下三分之一栏/标注/社交叠加层,或搜索驱动的网页/新闻/推文/资产融合镜头(可通过捕获页面或在需要时拉取图片/标题)。属于输出类型短路规则 — 覆盖所有输入类型,因此当需求明确为以动效为主且无旁白时,优先适用该规则,而非上述输入类型表格。
hyperframes capture - 输出:简短动态图形,以HyperFrames合成内容渲染为MP4或透明叠加层(带Alpha通道的WebM/MOV),用于下三分之一栏/标注。
- 触发词:“8秒Logo动画”、“动画化这个数据/数字”、“动态文字开场”、“快速数据/图表展示”、“将这个标题或推文转为动态图形”、“动态海报”、“透明下三分之一栏/标注叠加层”
- 请勿用于:较长、多场景或带旁白的内容、品牌宣传片、或超过约10-15秒的自定义合成内容(→ );带旁白的网站视频/网站导览(→
/general-video— 动态图形的网页类型为单个快速页面高亮镜头,而非带旁白的网站视频);带旁白的主题解说(→/website-to-video);产品发布/宣传(→/faceless-explainer);GitHub PR(→/product-launch-video);为现有素材添加字幕(→/pr-to-video)/embedded-captions
/general-video
/general-video/general-video
/general-video- Input: Anything not handled above — a creative brief, a single element to animate, an edit to a composition you're building. Input- and length-agnostic.
- Output: A HyperFrames HTML composition (any length / format) authored with the original flow: design system → prompt expansion → plan → layout-before-animation → build (delegating to the
hyperframesdomain skills) → validate.hyperframes-* - Triggers: "make a title card", "animate this", "a longer brand / sizzle reel", "a multi-scene composition", "a static loop / poster at length", or any "make a video" that doesn't fit the workflows above. (A short, unnarrated, single-shot motion graphic — logo sting, kinetic-type hit, stat / chart pop, lower-third / overlay — is , not this.)
/motion-graphics - Do NOT use for: a marketed product (→ ); a general website → video (→
/product-launch-video); a topic / concept explainer (→/website-to-video); a GitHub PR (→/faceless-explainer); adding captions to an existing video (→/pr-to-video); porting Remotion (→/embedded-captions); a short, unnarrated, design-led motion graphic — a logo sting, kinetic-type hit, stat / chart pop, lower-third / overlay, or animated tweet / headline / page-highlight (→/remotion-to-hyperframes); NLE-style editing of a finished video (out of scope)./motion-graphics
- 输入:上述未覆盖的所有内容 — 创意brief、单个待动画化元素、正在构建的合成内容的编辑需求。与输入类型和时长无关。
- 输出:通过原始流程创作的HyperFrames HTML合成内容(任意时长/格式):设计系统 → 提示扩展 → 规划 → 动画前布局 → 构建(委托给
hyperframes领域技能) → 验证。hyperframes-* - 触发词:“制作标题卡”、“动画化这个元素”、“较长的品牌/宣传视频”、“多场景合成内容”、“静态循环/海报视频”,或任何“制作视频”但不符合上述工作流的需求。(简短、无旁白、单镜头动态图形 — Logo动画、动态文字展示、数据/图表弹出、下三分之一栏/叠加层 — 属于,而非本工作流。)
/motion-graphics - 请勿用于:营销产品(→ );通用网站转视频(→
/product-launch-video);主题/概念讲解(→/website-to-video);GitHub PR(→/faceless-explainer);为现有视频添加字幕(→/pr-to-video);移植Remotion(→/embedded-captions);简短、无旁白、设计导向的动态图形 — Logo动画、动态文字展示、数据/图表弹出、下三分之一栏/叠加层,或动画化的推文/标题/页面高亮(→/remotion-to-hyperframes);对成品视频进行非线性编辑(超出范围)。/motion-graphics
Out of scope for video routing
视频路由的超出范围内容
- Domain skills (,
/hyperframes-core,/hyperframes-animation,/hyperframes-cli,/hyperframes-creative,/hyperframes-media) — these are NOT routed here, but they ARE in the capability map at the top of this skill; a workflow's build phase loads them as technical references./hyperframes-registry - Workflow-internal phases — phases live inside each workflow's folder and are dispatched by that workflow's orchestrator, not by this router.
- 领域技能(、
/hyperframes-core、/hyperframes-animation、/hyperframes-cli、/hyperframes-creative、/hyperframes-media) — 这些不在本路由范围内,但属于本文顶部的能力映射表;工作流的构建阶段会将其作为技术参考加载。/hyperframes-registry - 工作流内部阶段 — 阶段位于每个工作流的文件夹内,由该工作流的编排器调度,而非本路由。