motion-graphics
A short, design-led motion graphic where motion is the message — kinetic typography, stat count-up, chart/data-viz hit, logo sting / brand lockup, lower-third / callout / social overlay, animated map (highlight regions, connect places, zoom to a location), animated tweet / news-article / headline, webpage / UI animation (scroll, cursor, callouts), or fusing a real image's geometry into a chart. Usually under 10s (up to ~30s), no narration or live-action subject; renders to MP4 or transparent overlay. Longer / narrated / multi-scene → /general-video. Unclear → /hyperframes. Skill: motion-graphics Owner: heygen-com Summary: A short, design-led motion graphic where motion is the message — kinetic typography, stat count-up, chart/data-viz hit, logo sting / brand lockup, lower-third / callout / social overlay, animated map (highlight regions, connect places, zoom to a location), animated tweet / news-article / headline, webpage / UI animation (scroll, cursor, callouts), or fusing a real ima
Rank
62
Safety
84
Downloads
2.6k
Updated
Oct 9, 2026
Version
1.0.24
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 2.6K downloads reported by the source. Last updated 10/9/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 9, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 9, 2026
- Adoption signal
- 2.6K downloadsadoption · observed Oct 9, 2026
- Latest release
- 1.0.24release · observed Oct 4, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s17fpgb0p797dzkbtbrxw5x1hh89qs64:motion-graphics- Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
- Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-heygen-com-motion-graphics/snapshot"
Documentation
CLAWHUB
152,817 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
--- name: motion-graphics description: > A short, design-led motion graphic where motion is the message — kinetic typography, stat count-up, chart/data-viz hit, logo sting / brand lockup, lower-third / callout / social overlay, animated map (highlight regions, connect places, zoom to a location), animated tweet / news-article / headline, webpage / UI animation (scroll, cursor, callouts), or fusing a real image's geometry into a chart. Usually under 10s (up to ~30s), no narration or live-action subject; renders to MP4 or transparent overlay. Longer / narrated / multi-scene → /general-video. Unclear → /hyperframes. --- **Plugin installs:** Before setup or freshness commands, follow [plugin execution rules](../hyperframes/references/plugin-installation.md) when this skill is inside a HyperFrames plugin. Standalone installs keep the update instructions below. > **First, keep this skill fresh — confirm with the user before running:** `npx hyperframes skills update motion-graphics`. A fast no-op when everything is current; otherwise it refreshes this skill plus the core domain skills it depends on before you rely on them. > **figma source**: If the logo/asset/animation to build from comes from a figma.com URL, run `/figma` first — asset export, brand tokens, and Motion→GSAP translation if the graphic is a Figma Motion import — then build from its output. Don't drive Figma via raw MCP tools directly: that skips SVG sanitization, `.media/manifest.jsonl` provenance, and brand-token `var()` binding, so a later brand change can't propagate without a full re-import. # motion-graphics — dispatch entry > **The front door is `/hyperframes`.** This skill makes a **short, design-led, unnarrated motion graphic** (motion is the message; ~under 10s, no voice-over). Anything longer, narrated, or multi-scene — or any uncertainty → read `/hyperframes` first: the intent layer owns every route decision. This workflow is **autonomous by design** — at most one clarifying question (`agents/director.md`), then build through verification without intermediate review. The intent layer (`/hyperframes` → `references/intent-interview.md`) routes here directly without run-shape questions; a storyboard and companion session add little to a piece this short. Rendering is still user-gated: after checks and proof snapshots pass, open the Studio preview and ask the canonical “render now, or what changes?” question from `../hyperframes/references/brief-contract.md`. When a `BRIEF.md` exists, read it before the director's question. A short design-led motion graphic. **Asset-first**: decide the asset strategy and source real material _before_ designing the shot, then design the shot around what you have, then compose by reusing catalog capabilities. All artifacts go to `PROJECT_DIR = videos/<project-name>/` (created in Step 0); all paths below are relative to it. | Phase | Execution | Primary artifact
_meta.json
{
"ownerId": "kn77d06grj6xqp3dqwkk4bavhn89pegt",
"slug": "motion-graphics",
"version": "1.0.24",
"publishedAt": 1791142299200
}references/builder-contract.md
# Builder contract — composition rules (detail behind agents/builder.md)
## Root must be sized
Root `#stage` (`data-composition-id`) needs `position: relative; width: <W>px; height: <H>px`. Without a resolved height, flex children collapse to ~0 and content piles into the top-left. Automated gates may miss it, so inspect proof snapshots.
## Layout before animation
1. Identify the **hero frame** (the moment most elements are visible) → build THAT in static CSS first, no GSAP.
2. `.scene-content` fills the scene with padding, not offsets:
```css
display: flex;
flex-direction: column;
justify-content: center;
width: 100%;
height: 100%;
padding: 120px 160px;
gap: 24px;
box-sizing: border-box;
```
Never `position:absolute; top:Npx` on a content container (it overflows). Reserve absolute for decoratives. Keep ≥80px padding (title-safe margin).
3. **Entrances**: use `gsap.from()` only for a non-clip element active from `t=0`. Inside `.clip`, in sub-compositions, and for later entrances, use explicit `fromTo()`. The CSS position is ground truth; the tween is the journey to it.
4. **Exits**: only the final scene animates elements out; between scenes the transition IS the exit.
## Timeline / clip contract
- ONE `gsap.timeline({paused:true})` on `window.__timelines["<id>"]`; `tl.seek(0)`; never `tl.play()`.
- Timed elements: `class="clip"` + `data-start`/`data-duration`/`data-track-index` + a stable `id`. Timeline-driven groups inside one full-duration clip don't each need timing attrs.
- Deterministic only — no `Date.now()` / `Math.random()` / network. Count-ups tween a proxy object via `onUpdate` (seek-safe), never a wall-clock counter.
## Correctness
- **Seek-safe reveal of delayed elements**: on a non-clip element or wrapper inside a clip, use one registered timeline `fromTo()` with an explicit `{ autoAlpha: 0 }` start and `{ autoAlpha: 1, ... }` end. Do not page-load `gsap.set()` a later `.clip`, and never target `.clip` visibility; the framework owns its lifecycle. _(Eval finding.)_
- **Count-ups** tween a proxy via `onUpdate`; they only render when the host advances the timeline **with events enabled** (`tl.time()` / non-suppressed seek). A bare `seek(t, true)` freezes them at 0 — the HF render host must seek with events on. _(Eval finding.)_
- Clamp at tween bounds; don't let a spring overshoot past a held value.
- Allowed eases: `power1–4`, `back`, `bounce`, `circ`, `elastic`, `expo`, `sine` (`.in/.out/.inOut`).
- One motif per scene. Run `hyperframes check`; mark intentional overflow `data-layout-allow-overflow="true"`.
- **Palette discipline**: define all colors in one `palette` object / CSS custom properties — no inline hex scattered through the markup (for `asset-fusion`, eyedropper the palette from the asset).references/motion-vocabulary.md
# text module · motion vocabulary (primitive → GSAP)
<!-- registry-items: allow= -->
**The live search is the source of truth for what the registry has.** The table(s) below are a hand-maintained sample and under-cover by design: run `npx hyperframes catalog --query "<what you want>" --json` — it needs nothing installed — before concluding the registry lacks something. Item names here are checked against `registry/registry.json` by `bun run lint:skills`.
Named primitives the Director references in `motion` strings and the Builder implements. `code_hint`s are framework-neutral physics; the GSAP recipe is the HF implementation. Prefer an HF **registry component** (bottom) when one fits — don't reinvent.
## Entry
| primitive | GSAP recipe (into CSS end-state) | suits |
| ----------------------------- | -------------------------------------------------------------- | ------------------------- |
| `slide_bottom/top/left/right` | `from({ y:±150 / x:±200, opacity:0, ease:"power4.out" })` | calm, build, professional |
| `scale_grow` | `from({ scale:0, opacity:0, duration:.6, ease:"power2.out" })` | calm, gentle |
| `scale_punch` | `from({ scale:.6, opacity:0, ease:"back.out(2.2)" })` | impact, energetic |
| `fade_in` | `from({ opacity:0, duration:.4 })` | subtle |
| `fade_blur` | `from({ opacity:0, filter:"blur(14px)" })` | cinematic, dreamy |
| `typewriter` | reveal via clip/`SplitText` width step | technical, narrative |
| `word_reveal` | per-word `from({opacity:0,y:..}, stagger:.1)` | storytelling |
| `wave` | per-letter `from({y:..}, stagger:{each:.04})` | flowing, musical |
| `bounce_in` | `from({y:-120}, ease:"bounce.out")` | playful |
| `slam` | `from({ y:-300, ease:"power4.out" })` + shake on land | impact, heavy |
## Emphasis (in place, often on a beat)
| primitive | GSAP recipe | suits |
| ------------- | -------------------------------------------------------------------- | ------------------ |
| `scale_pulse` | `to({ scale:1.12, yoyo:true, repeat:1, ease:"sine.inOut" })` at beat | rhythmic, peak |
| `shake` | `to({ keyframes:[{x:-9},{x:9},{x:0}], ease:"none" })` | urgent, intense |
| `glow` | `to({ textShadow:"0 0 46px <ink/accent>", yoyo:true, repeat:1 })` | important, magical |
| `color_shift` | `to({ color:"<accent>" })` (or accent on the word in CSS) | dynamic |
## Exit
| primitive | GSAP recipe references/shot-plan-ir.md
# shot-plan IR
The single contract between Director and Builder. One file: `PROJECT_DIR/shot-plan.json`.
```jsonc
{
// ── envelope (every category) ──
"category": "kinetic-type | stat | charts | logo-reveal | lower-thirds | webpage | news | tweet | asset-fusion",
"duration_s": 6,
"fps": 30,
"canvas": { "w": 1080, "h": 1920, "aspect": "9:16" },
"style": "free-form visual direction (mood / energy / reference)",
"palette": ["#…"], // or "derive-from-asset"
"font": "<HF embed-list font>",
"beats": [12, 37], // optional accent frames/seconds
"export": "mp4", // or "alpha-overlay" (transparent webm/mov)
// ── sourcing seam (Director Part 1) — [] means skip the source phase ──
"asset_needs": [
{
"role": "hero",
"kind": "image|icon|logo|svg|news|web|tweet",
"query": "…",
"source": "…",
"treatment": "cutout|recolor|vectorize|none",
},
],
// ── build directive (Director Part 2, reuse-first) ──
"block": "<catalog block id, e.g. data-chart | caption-kinetic-slam>", // optional
"customize": {
/* what to change on the block: data, text, palette, positions */
},
// ── category-specific content ──
"content": {
/* shape varies by category, below */
},
}
```
**Per-category `content` shapes:**
- `kinetic-type` → `scenes[]` `{ id, start, end, text, emphasis_words[], emotion, motion, beats[] }`
- `stat` → `{ value, prefix, suffix, label, ring: bool }`
- `charts` → `{ type: bar|line|pie|race|pct, data[], labels[], headline, axes: bool }`
- `logo-reveal` → `{ logo: <asset path>, tagline, url }`
- `lower-thirds` → `{ name, role, position, brand_colors[] }`
- `webpage` → `{ url, capture, highlights: [ { selector|region, label } ] }` (step-highlight a real captured page)
- `news` → `{ outlet, headline, body, keyword, layout: A|B, logo?, date?, subject? }` (article-highlight: lay text out readable — **no zoom** — then sweep a marker band over the keyword in place. Layout **A** = centered-emphasis 9:16 text-only; **B** = full article 16:9 with `logo` + `date` + `subject` (a person photo → `remove-background` cutout))
- `tweet` → `{ author, handle, avatar, text, metrics }`
- `asset-fusion` → `{ data_type, asset: <path>, affordance, element_positions: {center, extent, safe[], avoid[]}, derived_palette[], connectors[] }`
**Invariants:** `scenes` (if present) partition `[0, duration_s]` with no gaps/overlaps · empty `asset_needs` ⇒ Step 2 (source) is skipped · a named `block` ⇒ the Builder reuses + customizes it rather than hand-authoring.AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/heygen-com/skills/motion-graphics",
"sourceUrl": "https://clawhub.ai/heygen-com/skills/motion-graphics",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T13:21:17.706Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-heygen-com-motion-graphics/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-heygen-com-motion-graphics/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-09T13:21:17.706Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "2.6K downloads",
"href": "https://clawhub.ai/heygen-com/motion-graphics",
"sourceUrl": "https://clawhub.ai/heygen-com/motion-graphics",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T13:21:17.706Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "1.0.24",
"href": "https://clawhub.ai/heygen-com/motion-graphics",
"sourceUrl": "https://clawhub.ai/heygen-com/motion-graphics",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-10-04T19:31:39.200Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-heygen-com-motion-graphics/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-heygen-com-motion-graphics/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 1.0.24",
"description": "Synced from 0c3e244 (main)",
"href": "https://clawhub.ai/heygen-com/motion-graphics",
"sourceUrl": "https://clawhub.ai/heygen-com/motion-graphics",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-10-04T19:31:39.200Z",
"isPublic": true
}
]
}Record generated Oct 9, 2026.
