From a piece of text/script/video, produce awatchable as a video, not like a PPT motion B-roll (default 30 seconds or more, finished in one pass).
Core creed: start from motion, not from pages
Don't start from "card after card, page after page." First find avisual metaphor that can move:
river / network / branching tree / orbit / pipeline / swarm / collapse / compression / scan / handoff / growth loop / map path / stack / waveform / clock / lens / machine
Text is an anchor, not the protagonist. If a beat only works by reading a long passage of text, change it into motion, structure, symbols, or graphics.
Input: text or video
- Text/script: extract beats directly.
- Video/transcript: first read the content (
space-video-topictranscript), extract which things were said → beats. - Don't ask follow-up questions for missing parameters, unless the answer would change the output route. Default vertical 720×896 or according to
space-video-editconfig, default 30–40 seconds.
Workflow
1. Motion thesis (one sentence)
Nail down this sentence before going further:
这条视频靠「<视觉隐喻>」从<起始状态>变成<结束状态>,来证明<核心主张>。
If you can't find a visual metaphor that can move, stop and invent one first; don't start laying out scenes.
2. Beat map (continuous timeline, not pages)
Lay out a continuous timeline; for each beat write clearly:
| Field | Description |
|---|---|
time |
Start/end seconds |
job |
hook / reveal / contrast / mechanism / result / proof / closing |
mover |
The main object carrying the motion in this beat |
change |
On screenphysicallywhat change happened |
camera |
push/pull/pan/parallax/orbit/crop/stabilize |
text |
title/label/count/subtitle/none |
asset |
code SVG/generated image/screenshot/icon/none |
3. Anti-PPT quality gate (hard requirement)
- ≥80% of beats must have a visible state change other than "fade in/slide in"(growth, aggregation, collapse, path drawing, replacement, morphing, lighting up).
- If not satisfied, go back and rearrange—better to have a few fewer beats than a bunch of cards fading in in turn.
- The main object, in its most prominent frame, must belarge enough, not like a tiny prop in the distance.
4. Choose a style (see references/design-styles.md)
Built-in styles; choose one based on content/platform, or as specified by the user:
| Style | Suitable for | Keywords |
|---|---|---|
dark-saas |
AI/product/SaaS demos | black starfield, purple glow at the bottom, large dynamic typography, cyan→magenta CTA |
bw-typewriter |
opinion/opening/suspense | pure black and white, large text appearing character by character, typewriter rhythm |
warm-editorial |
Xiaohongshu/lifestyle/self-media | warm pink background, rounded corners, red accents |
minimal-light |
tutorials/practical content/minimalist | White background, thin lines, a single accent color |
blueprint-grid |
Tech/architecture/process | Dark grid, node connections, scanning feel |
5. The No-Emoji Iron Rule
Never use emoji in output. When icons are needed, use: geometric shapes, numbers, SVG line icons (draw the path yourself), plain text chips. In rendering, emoji have uncontrollable font weight/alignment, and look cheap.
6. Rendering (produce a 30-second+ single video in one pass)
Use the built-in renderer to rendera multi-scene HTML into one complete MP4:
node scripts/render.mjs <composition.html> <out.mp4> [fps=30]
- In the HTML use
scripts/timeline.jsto organize multiple scenes: each scene declaresstart/durandupdate(lt, p),seek(t)auto-dispatches. - The HTML exposes
window.DURATION(seconds) andwindow.seek(t)(pure function, does not depend on the clock, ensuring determinism). - 30 seconds = 900 frames; run rendering in the background. See examples in
scripts/example-composition.html。
Duration presets (refer to the rn series)
| Preset | Duration | Number of beats |
|---|---|---|
sting |
8–12s | 3–4 |
standard |
30–40s | 6–8 |
extended |
50–70s | 9–12 |
Default standard。
Handoff
- Upstream:
space-video-script's beats/shot requirements, or a piece of text/a video from the user - Downstream:
04_broll/<名字>.mp4→space-video-editcompositing, or send directly as a single output
Orchestration (reuse existing capabilities)
- If there's a hyperframes CLI → use
hyperframes/hyperframes-cli/hyperframes-media - Existing Remotion project → use
remotion-video/remotion-to-hyperframes - Complex animation approach → use
gsap/animejs/css-animations/waapi/three/lottie - Reference footage replication + QC → see
references/replica-and-qc.md
Core principles
- Motion first: find the moving metaphor first, then arrange the scenes
- Anti-PPT: ≥80% of beats have real state changes, otherwise rearrange
- No emoji: SVG line icons / geometry / numbers / text
- Produce in one pass: by default 30 seconds+ of continuous multi-scene, not scattered small clips
- Determinism: seek-driven, same input gives same output