Files
open-design/docs/motion-template-sources.md
open-design-crew[bot]GitHubbone3deep1962-collabWilliamopen-design-crew[bot] <4197780+open-design-crew[bot]@users.noreply.github.com>NJUHuaAmy
14fee234e6 feat: add motion design workflow and curated motion skills (#8619)
* feat: add Motion Design skill and OD Next task route

* fix(web): rename motion design entry and place it second

* fix(web): reconcile motion design catalog consumers

* feat(web): add motion design templates to Home and Community

Five motion design example templates (3D procedural island, explainer,
product launch, showreel, data story), chosen by community reach, under the
Home motion-design chip and a new Community "Motion design" type.

Each template follows the bundled example layout: an OD-generated
example.html with its runtime libraries under assets/, an HTML preview baked
by the existing preview pipeline, and a SKILL.md that carries example.html
as the reference when the card is picked on the OD Next motion-design route.
Home cards ship curated copy for every UI locale. Motion templates stay off
the Video and HyperFrames chips.

* fix(skills): keep motion-design procedural layers visible in video export

The MP4 exporter seeks timelines with callbacks suppressed
(renderSeek(t, { suppressEvents: true })), so content drawn only from a GSAP
onUpdate callback is missing from exported video. Recommend a per-frame draw
loop that reads the timeline clock, and state that visible content must not
depend on timeline callbacks. The OD Next task asset is re-synced with
scripts/sync-motion-design-skill.ts.

* fix(motion): preserve reference assets and exported animation frames

* feat(skills): integrate curated motion helpers with complete runtime files

* feat(skills): add Huashu, Oil Motion and Motion.Lab adapters

* test: classify animate design guidance in narration guard

* feat(motion): refine five community templates and portable previews

* fix(motion): refine launch transitions and center gallery previews

* fix: allow free-form briefs on automatic motion task route

* feat(motion): add template soundtracks and audio export

* fix(motion): require rendered MP4 alongside editable video source

* test(motion): align strategy activation expectation with package version

* fix: scope motion delivery and make editable sources playable

* fix(motion): bundle source dependencies and valid closing protocol

* feat(motion): rebuild the five templates on the most-viewed community posts

Re-select topics by single-post views in the latest awesome-opus-5.5-video
snapshot and anchor each template to the top eligible post of its genre:
camera-focus explainer, showreel, product launch, procedural island and a
new wordless animated short that replaces the data story.

All five example.html files are hand-authored canvas/Three.js films drawn by
one render(t) from the GSAP master timeline, so preview, scrubbing and MP4
export produce identical frames. Each ships an original procedural
soundtrack, updated SKILL.md and 19-locale copy; Home order follows reach.

* fix(plugins): load bundled fonts in plugin previews

Plugin previews blocked every bundled font: the preview CSP had no font-src,
and relative url() references inside inline <style> blocks kept pointing at
the preview URL instead of the plugin folder. Allow same-origin fonts, map
inline-style url() references through the existing asset route (escapes,
absolute and data: URLs stay untouched), and serve font files with font
MIME types.

* feat(community): make motion template Use match the Home example pick

Community 「做同款」 on a motion design template now binds it as that type's
own example card, carrying the type's project metadata, so the run takes the
same OD Next motion-design route as a pick from Home's motion design list and
delivers the MP4 together with the editable source. Other task types keep
the existing plugin-pinning hand-off.

Community use clicks now record use_source (card | detail_modal) and
use_action (use | use_with_query); the details modal Use is tracked for the
first time. The Home hand-off no longer records a second community_gallery
click for uses Community already tracked.

* fix(plugins): count the five motion templates in the official registry metadata

* fix(media): keep HyperFrames audio filters compatible with FFmpeg 4.1

CI's bundled Linux FFmpeg 4.1 rejects adelay all=1 and amix normalize=0.
Make each track stereo and delay both channels explicitly, skip amix for a
single track, and undo amix averaging with a gain for several tracks.

* fix(motion): keep template previews bakeable on slow CI renderers

CI's software-GL baker skipped the 3D island (preview readiness timeout):
under slow frames GSAP lag smoothing slowed the timeline, so the 8 s
poster frame never arrived within the baker's 15 s wait. Play every
template on the wall clock and move the island poster to 6 s. With
simulated 300 ms frames all five now report ready within 10 s.

* feat(motion): add the kinetic typography template

Template selection now follows the motion design spec's four content types
(brand and product films, kinetic typography, explainer animation, procedural
art). Kinetic typography takes the fifth slot, replacing the animated short.
The new template is a 15-second, 120 BPM type film with an original
soundtrack and 19-locale copy.

* fix(motion): let the project motion player fit template stages

Inside a project the motion source player wraps the composition, fits it and
adds its own controls. The templates also scaled their stage, so editable
sources from Remix and Community use rendered at a fraction of the preview.
Templates now keep their own fit and controls only outside that player.

* feat(motion): restage the 3D island as a midday lagoon

The island moves from golden hour to a bright tropical midday closer to its
anchor post: a shader lagoon coloured by a baked depth map with ripples,
shallow-water shimmer and shore foam, a wide white-sand beach, palms and
instanced bushes, a village with a pier, soft sun shadows and a lower
camera path. The CPU wave mesh is gone, so frames cost no more than before.
Copy is updated in all 19 locales.

* fix(motion): keep each soundtrack inside the composition root

A Community use regenerated the island source tail and dropped the root
<audio> element, so its MP4 had no sound. Templates now place the element
inside the composition root next to the stage.

* docs(motion): state the template selection rule as complete works

* fix(motion): enforce video clocks and bound content verification

* feat(motion): replace the motion templates with remakes of viral posts

The five Motion design templates are now frame-faithful remakes of viral
motion posts, so each preview shows the look users came for: the 15-second
motion designer showreel, a high-energy motion reel (copy set in English), a
one-shape UI motion piece, a pixel-art wizard and a 20-second electric-blue
tech reel. Each ships open-licensed fonts, an original soundtrack, the
creator's published prompt where one exists, and credits its source post.

The explainer, product launch, 3D island and kinetic type templates are
removed. Tests follow the new set; a backward-seek check now covers hidden
WebGL layers.

* feat(motion): feature The Future Is Already Here first and start preview sound with the film

* chore: ensure PR CI

* fix(motion): match The Future Is Already Here controls and reorder the motion templates

* fix(motion): make the one-shape UI preview controls legible

* fix(motion): hide The Future Is Already Here controls inside the project player

* fix(motion): plan suitable sound and synchronize source audio playback

* feat(motion): keep remake soundtracks by default and fade exported audio where it stops

* test(motion): cover audible source controls in Chromium

* fix(test): use explicit ESM imports in audio player regression

* fix(motion): align preview track discovery with video export

* feat(motion): autoplay looping HTML without a player bar

* fix(test): consume the built motion playback contract

* docs(motion): state explicit soundtrack rules for make-same and the music line in replies

* chore(motion): version the audible looping delivery profile

* docs(motion): let template sound rules lead the general policy and freeze the audio contract

* fix(motion): scope autoplay to declared video motion sources

* fix(motion): reject audible MP4s under an explicit silent contract

* docs(motion): drop the routine music note from make-same replies

* test(motion): align delivery regressions with looping source playback

* fix(motion): isolate preview and audio export from legacy HyperFrames

* test(motion): retain the existing desktop legacy audio limitation

* fix(motion): suspend audio when previews leave the active workspace

* feat(motion): replace two motion templates with a product promo and a visual lesson; sign the showreel as Open Design

* feat(motion): give the showreel the Open Design palette and a full-size stacked wordmark

* feat(motion): give the product promo a livelier mascot girl

* refactor(motion): rebuild The Future Is Already Here as readable, editable scene code

* fix(motion): pick gallery cover frames that survive the baker's capture delay

* feat(motion): sharpen the showreel opener, depth, truchet and end card

* feat(motion): make the product promo mascot talk, add a speaking score and the flow pop

* feat(motion): give the visual lesson the original's paper-collage texture

* fix(motion): bundle gallery covers for fresh branch checkouts

* feat(motion): feature and refine Bring Ideas to Life

Adapt the paper story around OpenDesign capabilities, with short rounded hands, clearer timing, continuous paper actions, and a larger audience invitation. Feature it first in Motion and synchronize localized names, metadata, cover, guidance, and regressions.

Keep product promo audio music-only with sparse percussion.

* fix(motion): stabilize artifact cards and capture declared covers

* fix(web): share creation type order with community

* test(motion): exercise audio controls through project UI lifecycle

* fix(motion): scope live cover behavior to actual video sources

* test(motion): use real HEAD responses in cover regressions

---------

Co-authored-by: bone3deep1962-collab <bone3deep1962@gmail.com>
Co-authored-by: William <zhouhaoran@refly.ai>
Co-authored-by: open-design-crew[bot] <4197780+open-design-crew[bot]@users.noreply.github.com>
Co-authored-by: NJUHua <113895241+NJUHua@users.noreply.github.com>
Co-authored-by: Amy <1184569493@qq.com>
2026-10-14 15:55:52 +00:00

10 KiB
Raw Permalink Blame History

Motion templates: sources and maintenance

Five official HTML examples populate the Motion design Home entry and Community category. Each one is a remake of a viral motion post, rebuilt in code so the template preview shows that post's look. They use the existing plugin preview, example binding, frozen reference package, Remix, and HyperFrames MP4 export paths.

Selection

The templates come from awesome-opus-5.5-video (1,483 cases, updated_at 2026-10-11T05:17:47.827Z; view counts checked 2026-10-05) and one Douyin post, confirmed with the product lead: two of the most-viewed motion posts with like and save rates above 1%, one product promo, one illustrated explainer, and the Douyin tech reel. The library's top-10% view threshold is 255,312.

Template Original post Views Likes Saves Rank (all / category)
Motion Designer Showreel @stephanlivera 2,246,353 17,030 13,027 9 / 1 Motion
One-Shape UI Motion @twoclipping 1,034,374 12,100 20,060 28 / 7 Motion
Product Promo @achxvi 1,124,063 9,015 8,065 22 / 5 Motion
Bring Ideas to Life @kevin_t_ngo 651,184 6,104 2,944 51 / 7 Stories
The Future Is Already Here Douyin — 6,439 2,164 —

Douyin does not publish play counts; its figures were read on 2026-10-12. Home and Community lead with Bring Ideas to Life (让灵感成真), followed by The Future Is Already Here, Motion Designer Showreel, One-Shape UI Motion, and Product Promo. The plugin ID stays example-motion-visual-lesson so existing projects and links keep working.

Template content

Each example.html uses its original as the reference for layout, palette, type and motion. Story adaptations have their own timing; visual fidelity still requires playback review. On-screen copy is English. Claude branding in the originals is replaced by Open Design: the showreel signs as OPEN DESIGN with the Open Design mark, and the Bring Ideas to Life character is the Open Design buddy built from the logo mark. The product promo's real brand is replaced by the fictional Pennyflow. Every soundtrack is original.

Template Length Differences from the original
Motion Designer Showreel 15 s Signs as OPEN DESIGN with its mark in the Open Design palette; fonts are the closest open equivalents
One-Shape UI Motion 14 s 1440×1440 square kept at scale on a 1920×1080 stage
Product Promo 15 s Fictional brand Pennyflow; the mascot is a girl instead of the original's boy; product art is simplified isometric halftone
Bring Ideas to Life 20 s Rewrites the 28 s square paper story for Open Design in 16:9: “what can you design?” → interactive prototypes, websites, PPT, posters and motion → a book of possibilities → “It starts with your idea.” The girl hugs the book, waves thanks and pins “What will you design?” beside the window, inviting the viewer. Keeps the reference's reaction and pinned-note gestures, painted paper edges, articulated cutout limbs, folds and page turns
The Future Is Already Here 20 s 20 s highlight cut of the 62 s original, in English

The "Use" prompt is the creator's published prompt where one exists (showreel and UI motion; the UI motion prompt is condensed to its visual brief). The other three originals publish no prompt, so their prompts describe the template film, including the Open Design capability story used by Bring Ideas to Life.

让灵感成真 / Bring Ideas to Life: design requirements

The flagship revision keeps the 20-second paper story, its five demonstrated capabilities, the bundled score without speech, and the hug, wave and pinned-note ending. The following timing and action requirements guide the revision; they are not playback acceptance. Verify the exported MP4 and the client preview against them before accepting the result.

The OpenDesign buddy must have short, rounded paper mittens. Move or tilt the body closer to tap a prototype or press poster tape, and hold the book against its body. Keep the hand in contact with the prop; do not stretch thin arms across the scene. Capability labels must remain clear of the character during entrances as well as during their final holds.

The collecting book starts with empty page slots. Each work travels into its own slot in sequence; show that slot's thumbnail only once the work has landed, then close the cover after all five arrive. Preserve a visible fold into the reply and a continuous return flight. The girl catches the book at her chest with both hands, keeping her face and reaction visible, then opens it.

The final audience invitation uses a larger lined note that remains legible in the gallery preview. The girl's hand stays on it while she raises and pins it, then releases it before she brings her hands together. Hold the full question “What will you design?” with “you” circled; retain the physical note beside the window.

Time Required action
0–1 s Establish the night town and the girl at her window
1–1.5 s The girl gets an idea and raises her pencil
1.5–3.5 s Write “OpenDesign, what can you design?” and hold the complete question
3.5–4.25 s Fold the corners and wings of the paper plane
4.25–4.75 s Throw the plane from the window
4.75–5.5 s Fly across the night sky and reach the buddy
5.5–7 s The buddy reads, thinks and responds with a spark
7–8.5 s Tap the interactive prototype, change its page and hold the result
8.5–9.5 s Unfold the website's hero and content blocks
9.5–11 s Turn the PPT cover, raise the chart bars in sequence and let them settle
11–12 s Overlap illustrated posters and tape one into place
12–13 s Animate the plane across a filmstrip while its timeline advances
13–14.1 s Land the five works in their own empty page slots one by one, then close the book
14.1–14.8 s Fold the closed book into the reply and send it back through the sky
14.8–15.6 s Catch the book at the girl's chest with both hands, keep her face visible, then open it
15.6–17 s Show all five works with “It starts with your idea.” and the hand-drawn circle
17–17.75 s The girl hugs the book with a closed-eye smile
17.75–18.5 s She holds the book and waves to the buddy across the town
18.5–20 s Raise and pin the larger invitation note, bring her hands together and hold “What will you design?”

Fonts

All fonts are SIL Open Font License families from the Google Fonts repository, subset to the glyphs the template draws and bundled with their license files: Archivo, Instrument Serif, JetBrains Mono, Geist, Unbounded, Inter, Fraunces and Short Stack. Plugin previews allow same-origin fonts and map relative url() references in inline styles to the plugin asset route, so the gallery, covers and Remix render the bundled fonts.

open-design.json points to example.html; source and referenced assets ship with the official plugin. Each template also bundles assets/cover.jpg, declared as od.preview.poster, so a fresh branch checkout has a Home and Community cover before CDN previews are published. Cards prefer published baked previews when present, then this bundled still; detail previews retain the live HTML. Refresh the bundled cover from the baker's poster when changing the film's look. The existing pre-merge preview workflow validates rendering. After merge, bake-plugin-previews.yml uploads content-addressed posters and clips to R2 and opens the rolling preview-manifest PR. Each template signals preview-ready within the baker's 15-second budget. Verify the release's five preview entries and remote resources before release acceptance.

Local dependencies and export

GSAP 3.12.5 and Three.js 0.160.0 are vendored; no runtime script CDN is used. Every SKILL names each asset so the frozen-package scanner carries it. Three.js exceeds the 256 KiB side-file limit: the gallery and Remix use assets/three.min.js, and the frozen reference carries an identical gzip copy with decompression instructions in the SKILL. When changing the vendored file:

gzip -n -9 -c plugins/_official/examples/motion-future/assets/three.min.js > plugins/_official/examples/motion-future/assets/three.min.js.gz

motion-future keeps its scenes inline in example.html, with the copy in one CFG block. assets/three-addons.js carries the readable three.js examples it needs (RoomEnvironment, FontLoader, TextGeometry; MIT), and assets/unbounded-black-glyphs.js holds Unbounded Black outlines for the 3D type, so the hero word can be any Latin text.

The package regression checks that referenced scripts, fonts, licenses and the soundtrack restore byte-for-byte. The browser regression seeks each film with callbacks suppressed, forward and backward, and requires identical canvas output at each timestamp, including hidden layers.

Audio

Every template carries an original procedural soundtrack in assets/soundtrack.mp3, timed to its beats. No audio from the original posts is used and no audio-generation model was involved. HTML preview sound starts with the film; when the browser blocks autoplay, the first click or key press turns it on, and Sound off mutes it. Sound follows the master timeline. The desktop export path mixes the timed local audio into the MP4 with FFmpeg and fades each track out where it stops, so a remake made shorter than its music ends cleanly. Make-same keeps the template's soundtrack by default, because the music is part of the look being remade. A brief that asks for no music removes it, and an audio file the user supplies replaces it. Any other music request keeps the score, because Open Design cannot generate music yet. A film longer than its music is silent after the music ends. When a music request cannot be met, the reply says so in one short sentence.

The product promo uses music only: the girl's synthetic speech effect is removed, and the percussion is reduced to a sparse pulse without hi-hats, claps or off-beat fills. The Bring Ideas to Life story adaptation keeps its existing music and adds no voice track.