Motion Assets
ASecuritySource, generate, and prepare the real assets that keep a motion-graphics edit from looking generated — sampling the palette from the footage, collecting style references, pulling 3D models/Lottie/SVG/textures/SFX, generating AI stills and b-roll, and the mandatory conform pass that grades every asset into one palette. Use when a scene needs an icon, logo, 3D object, texture, background, screenshot, chart source, sound effect, or generated image/video, and whenever output "looks flat", "looks...
- 3 stars
- 0 votes
- 0 copies
- 3 views
- Added September 30, 2026
Works with
Security analysis
100/100Pro scans all 2 files and shows the line behind each finding
npx -y skills add blixvip/skills --skill motion-assets --agent claude-codeAre you the author of Motion Assets?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/blixvip-motion-assets)---
name: motion-assets
description: Source, generate, and prepare the real assets that keep a motion-graphics edit from looking generated — sampling the palette from the footage, collecting style references, pulling 3D models/Lottie/SVG/textures/SFX, generating AI stills and b-roll, and the mandatory conform pass that grades every asset into one palette. Use when a scene needs an icon, logo, 3D object, texture, background, screenshot, chart source, sound effect, or generated image/video, and whenever output "looks flat", "looks stocky", "looks AI", or assets came from different places and no longer match.
---
# motion-assets
An animation is only as good as what is in it. Three shapes and a font is a template no matter how well it is eased.
**The rule that governs this whole skill: nothing enters the edit at the color, scale, or texture it arrived in.** Every asset gets conformed. An un-conformed stock asset is the fastest way to make a frame read as assembled rather than designed.
## 1. Sample the palette before sourcing anything
Do this first. Every later decision depends on it.
1. Pull 3–5 stills from the A-roll (`ffmpeg -ss <t> -i in.mp4 -frames:v 1 out.png`).
2. Find the strongest non-skin, non-neutral hue — practical light, wall wash, jacket, product, set dressing.
3. That hue is the accent. Build ground / surface / accent from it per `motion-design`.
4. Write `04-design/tokens.css` **and** `palette.json`. Everything downstream reads these files.
If there is no footage (pure motion piece), take the palette from the brand kit, or from the single strongest reference image — still sampled, never invented.
## 2. Collect references before generating anything
References are the highest-leverage input in the entire pipeline. Two or three images beat any amount of prose.
Ask the user for them. If they have none, go and find them: search the look by name ("Apple-style product animation", "editorial data documentary", "retro terminal UI"), pull frames from videos whose look matches, screenshot competitor sites.
Save each into `03-assets/refs/` **named for what it teaches**:
```
refs/
glass-transparency.png ← how transparent the panels should be
type-pairing.png ← the display/body relationship
grain-and-vignette.png ← the texture treatment
camera-move.mp4 ← the pacing of the push
```
Naming them this way matters: at design time you attach the one that answers the current question, instead of dumping five images and hoping.
**When a generated result is wrong, attach a reference and say what specifically differs.** "Make it nicer" produces drift. "The glass in ref-1 is more transparent and has a visible edge highlight; match that" produces a fix.
## 3. Source the concrete assets
Per shot, the `assets[]` list in `plan.json` must resolve to real files. Categories and where they come from — full link catalogue in Appendix A.
| Need | Get it from |
|---|---|
| Brand logo | the client, as **SVG**. Never trace a PNG, never let a model redraw a logo. |
| Real product/company logos | official brand/press kits. Models draw outdated or wrong logos — this is a frequent, visible error. |
| Icons | one icon set only, matched to the type weight. Mixing sets is instantly visible. |
| UI screenshots | capture the real thing (Playwright MCP, or a manual screen record). A mocked-up UI that differs from the product is worse than no UI. |
| 3D models | Sketchfab, Poly Haven, NASA's model library, or generate (Meshy, Hunyuan3D, Rodin) |
| PBR textures / HDRIs | Poly Haven, Adobe Substance 3D assets |
| Vector animations | LottieFiles (`.json` / `.lottie`) |
| Maps / globes | Mapbox (needs a token), or a 3D globe in Three.js |
| Charts | real data. If the number is on screen, it must be the true number — verify it, cite the source in `NOTES.md`. |
| Photoreal stills | Midjourney / Nano Banana / GPT Image / Freepik-Magnific, always with a style reference |
| Photoreal motion b-roll | image-to-video (Seedance, Veo, Kling, Luma Ray, Runway) |
| Consistent recurring character/product | train a LoRA (see Appendix A) — reference images alone drift across angles |
| Voiceover | ElevenLabs or a cloned voice; feed it more source audio than feels necessary |
| SFX | a proper library, or generated. Sparse and mixed low. |
| Music | licensed library. Check the license before it reaches a client render. |
| Fonts | licensed and self-hosted. Confirm the license permits video embedding. |
### Generating stills that do not look generated
- Attach a **style reference** and keep the prompt short. A long prompt with no reference produces the model's average taste; a short prompt with a strong reference produces yours.
- Generate the whole set from **one anchor image** rather than prompting each independently — independent prompts are why palettes drift between shots.
- For any subject that recurs, build a **reference sheet** (multiple angles from one identity) and generate from that.
- Upscale before compositing, not after.
- **Check every generated image for text.** Garbled type is the single most recognizable artifact. Crop it out, cover it with real type, or regenerate.
### Generating b-roll that does not look generated
- Prefer **one longer continuous shot** over chaining short clips. Chained first-frame/last-frame joins produce a visible stutter at every seam.
- If you must chain, use the true last frame as the next first frame, then **delete one duplicated frame** at the seam.
- Match the camera language of your real footage — if the A-roll is locked off, do not hand back a drifting orbit.
- Keep generated clips short and cutaway-sized. The longer a generated shot holds, the more the viewer inspects it.
## 4. Conform — the pass nobody does
Every asset, without exception, before it enters a scene:
- [ ] **Re-grade into the palette.** Hue-shift, duotone, or overlay-tint stock and generated images toward `tokens.css`. A stock photo at its original color temperature is visible from across the room.
- [ ] **Match black level and contrast** to the plate.
- [ ] **Add the same grain/texture** the rest of the edit carries.
- [ ] **Normalize scale** — icons on one optical size, logos on one clear-space rule.
- [ ] **Cut out the background** where it should sit in the scene (u2net / `hyperframes remove-background` / Runway), then give it a contact shadow.
- [ ] **Clean the edges** — no white halo from a bad key, no JPEG mush on a logo.
- [ ] **3D**: render with the scene's light direction, matching the shadow direction used everywhere else.
- [ ] **Audio**: normalize, trim the head, and duck under dialogue.
Log the conform in `NOTES.md` for anything non-obvious, so a re-render reproduces it.
## 5. Store it so the next agent can find it
```
03-assets/
brand/ logo.svg, fonts/, brand.json (hexes, clear-space, don'ts)
refs/ named-for-what-they-teach.png
gen/ image.png + prompt.txt beside it (model, seed, style ref)
3d/ model.glb + renders/
lottie/ name.json
sfx/ impact-01.wav
```
`prompt.txt` beside every generated file is not optional. Without it you cannot regenerate a matching variant three weeks later, and the whole set drifts.
## 6. Licensing
Before anything reaches a client deliverable, confirm: fonts licensed for video, music licensed for the platform and territory, stock licensed for commercial use, 3D model license permits redistribution in a render, and no real person's likeness is generated without permission. Record it in `NOTES.md`. This is a client-facing risk, not a technicality.
## When assets are the actual problem
If a frame is well designed and well animated and still looks generated, it is almost always one of these:
1. Flat solid background — no gradient, no texture, no depth layer.
2. Icons from a different family than the type.
3. A stock or generated image left at its original color.
4. A logo the model drew instead of the real SVG.
5. Every asset centered at the same scale on a symmetric grid.
Fix the assets before touching the animation.
---
# Appendix A · Asset source catalogue
Verify pricing and licensing at the source — both change. Links are canonical homepages; anything marked `~` is a search target rather than a URL to trust blindly.
## 3D models and scenes
| Source | URL | Notes |
|---|---|---|
| Sketchfab | https://sketchfab.com | Huge library; filter to **Downloadable + free license**. Check the license per model. |
| Poly Haven | https://polyhaven.com | CC0 models, HDRIs, PBR textures. No attribution required. Best default. |
| NASA 3D Resources | https://science.nasa.gov/3d-resources/ | Free spacecraft, terrain, mission assets. Often split into many parts — parent them to one null before animating. |
| Adobe Substance 3D Assets | https://substance3d.adobe.com/assets | Materials; a large free tier. Drops straight into After Effects' 3D layers. |
| Meshy | https://meshy.ai | Text-to-3D and image-to-3D, plus texturing and humanoid/quadruped rigging with a stock animation library. |
| Hunyuan3D (Tencent) | https://huggingface.co/tencent | Open-weights image-to-3D. Geometry is good; texturing is the weak point. |
| Hyper3D / Rodin | https://hyper3d.ai | Text/image to 3D, available as an MCP inside the Blender integration. |
| Mesh-to-Motion | ~ search "mesh to motion rig" | Rigging for non-humanoid meshes (birds, creatures) that humanoid riggers refuse. |
**Multi-view trick:** a single front image produces a wrong back. Generate 90°/180° turns of the subject first, then feed the model 3–4 views. This is the difference between a usable asset and one you can only shoot from one angle.
## Textures, HDRIs, backgrounds
- Poly Haven — https://polyhaven.com (CC0 HDRIs + PBR)
- ambientCG — https://ambientcg.com (CC0 materials)
- Unsplash / Pexels — https://unsplash.com , https://pexels.com (free photos; still re-grade them)
## Vector animation
- LottieFiles — https://lottiefiles.com (browse), https://app.lottiefiles.com (editor)
- Remotion Lottie support: `npx remotion lottie` / `@remotion/lottie`
- HyperFrames: the `lottie` adapter skill covers deterministic seeking
Lotties are tiny, resolution-independent, and re-colorable — recolor them to `tokens.css` rather than using them as shipped.
## Icons and fonts
| Source | URL |
|---|---|
| Google Fonts | https://fonts.google.com |
| Fontshare | https://fontshare.com (free for commercial use) |
| Lucide icons | https://lucide.dev |
| Phosphor icons | https://phosphoricons.com |
| Simple Icons (brand marks) | https://simpleicons.org |
Use **one** icon family per project, matched to the type weight. For real company logos use the company's own brand kit — never a model's redraw.
## AI images
| Tool | URL | Best at |
|---|---|---|
| Midjourney | https://midjourney.com | Aesthetic quality; style references are its superpower (`--sref`) |
| Google AI Studio / Gemini image | https://aistudio.google.com | Strong prompt adherence, character/subject consistency, editing |
| Freepik + Magnific | https://freepik.com , https://magnific.ai | Many models side by side, upscaling, camera-angle change, spaces/node canvas |
| Higgsfield | https://higgsfield.ai | Multi-model image + video, MCP integration into agents |
| Replicate | https://replicate.com | API access to most open models |
| fal.ai | https://fal.ai | Fast serverless inference; also runs LoRA training |
| ComfyUI | https://comfy.org , https://github.com/comfyanonymous/ComfyUI | Local, free, node-based, full control; runs your own LoRAs |
## AI video
| Tool | URL | Notes |
|---|---|---|
| Runway | https://runwayml.com | Video-to-video restyling, object replacement, background removal, multi-shot edits |
| Luma Dream Machine | https://lumalabs.ai/dream-machine | Start-frame + end-frame interpolation |
| Kling | https://klingai.com | Image-to-video |
| Google Veo | via https://aistudio.google.com / https://labs.google | Native audio generation |
| Seedance | via Higgsfield / fal / Replicate | Long single-take shots — fewer seams than chaining |
**Always prefer one long take over stitched clips.** Every stitch is a visible hitch.
## Audio
| Need | Source |
|---|---|
| Voiceover / cloning | ElevenLabs — https://elevenlabs.io |
| Local TTS | `npx hyperframes tts` (Kokoro), or Piper |
| Music (licensed) | Epidemic Sound https://epidemicsound.com , Artlist https://artlist.io |
| SFX (free) | Freesound https://freesound.org (check per-file license) |
| Transcription | Whisper — https://github.com/openai/whisper , whisper.cpp — https://github.com/ggerganov/whisper.cpp , or `npx hyperframes transcribe` |
## Data and web capture
| Need | Tool |
|---|---|
| Real screenshots of a live site/app | Playwright MCP — https://github.com/microsoft/playwright-mcp |
| Maps, satellite, 3D city fly-throughs | Mapbox — https://mapbox.com (free token tier) |
| Charts | real source data; render with Remotion + a chart lib, or the `dataviz` skill |
## Utilities
| Need | Tool |
|---|---|
| Anything video, on the command line | FFmpeg — https://ffmpeg.org |
| Background removal | u2net / rembg — https://github.com/danielgatis/rembg , `npx hyperframes remove-background`, or Runway |
| Upscaling | Topaz — https://topazlabs.com , or Magnific |
## Consistent subjects: train a LoRA
When a face, product, or style must be identical across dozens of shots, reference images are not enough — they drift the moment the angle or lighting changes. Train a small LoRA instead.
**Shape of the job:**
1. Collect 15–35 varied, high-quality images of the subject (angles, lighting, distances). Quality and variety beat count.
2. Pick a **rare trigger word** — never a common word like `face` or `style`, or the model will fire on ordinary prompts. Use something like `mkxr_person`.
3. Train against a base model (Flux, SDXL, Qwen-Image and similar). Roughly 1000 steps for a subject is a normal starting point.
4. Train on rented GPU (fal.ai, Replicate) rather than locally unless you have the hardware — minutes and a couple of dollars versus hours.
5. Output is a `.safetensors` file. Drop it in ComfyUI's `models/loras/`, load it in the workflow, set strength ~0.8–1.0, and include the trigger word in the prompt.
**Where it pays off:** thumbnails with your own face, a client's product across a campaign, one illustration style across a series, a recurring character in a short-form series.
Files in this skill
- SKILL.md
- agents/openai.yaml
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.