
generative-illustration
This skill should be used when the user asks to "make an animated illustration", "animate an illustration", "make a generative motion piece" / "动态平面", "turn AI-generated art into something that moves", "make a poetic or ambient motion piece / motion poem", "make a visual metaphor", or "combine AI-generated visuals with code-driven motion". Covers generating isolated illustration assets with AI, compositing them as sprites, frame-accurate deterministic rendering, and the craft of expressive, concept-driven motion. NOT for data charts (use chart-animation), pure text (use kinetic-typography), or 3D/particles (use webgl-animation).
- Installs
- 576
- Last 24h
- +12
- Trending rank
- #7870
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/iart-ai/generative-illustration-skills --skill generative-illustration- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads generative-illustration automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Generative Illustration
Make expressive, concept-driven pieces by combining AI-generated illustration assets with code-driven motion. This is the lane designers call 动态平面 / motion graphic design — built the agent-native way: an AI makes the visuals, code gives them life and meaning.
When to use
- An animated illustration, a poetic / ambient "motion poem", a visual metaphor.
- A short brand or art piece where a beautiful illustrated scene moves with intent.
- Any "AI-made visuals + code motion" hybrid.
- Not for: data viz → use
chart-animation; pure headline text → usekinetic-typography; 3D / GLSL / heavy particle systems → usewebgl-animation.
Setup / prerequisites
- Rendering needs no API key — Node +
playwright-core(auto-fetches Chromium) +ffmpeg, all local and free. This covers the compose + animate + export core. - AI generation (assets + music) needs one API key. The simplest path is a single OpenRouter key — set
OPENROUTER_API_KEY— because one key covers all three generators this skill uses:- vectors →
recraft/recraft-v4.1-vector - painterly textures →
google/gemini-2.5-flash-image - music →
google/lyria-3-clip-preview(audio needsstream: true)
- vectors →
- Optional alternatives:
REPLICATE_API_KEYfor cheaper Recraft (recraft-ai/recraft-v4.1-svg, ~$0.04 vs $0.08/image); a Google AI StudioGEMINI_KEYfor Lyria direct. - Or bring your own assets/music (hand-drawn, any AI tool) and skip generation entirely — the motion + craft core requires no key at all.
The one rule that prevents 90% of failures
Never try to animate one big AI-generated illustration. Generate many small independent elements and let code animate each as a whole unit.
AI image/vector models output a flat pile of ungrouped paths — no <g>, no ids, no "this is the arm / these are the petals." You cannot rig a part inside it. Two failure modes follow:
- Treat the whole image as static and crossfade → looks like a PowerPoint.
- Auto-cluster the paths by proximity and wiggle each → uncanny (motion with no intent, everything wobbles).
The structure lives between assets, not inside one image. Each element is its own clean file; code moves it whole. (This is how working motion-illustrators do it — design the pieces separately, then code organizes and presents them.)
Pipeline
- Concept — one metaphor, ruthless restraint.
- Generate each element separately with AI, isolated on a plain background.
- Strip the background → transparent sprite.
- Code the motion — a deterministic seek-harness on a
<canvas>; place + animate sprites + text + grain. - Render — frame-grab every frame → ffmpeg → MP4.
- Music — generate a custom track (Lyria), mix it in.
1 · Generating assets
- Crisp vector elements (a flower, an icon, a creature) → Recraft v4.1 SVG.
- Painterly textures (a watercolor wash, paper grain) → an image model (Gemini "nano-banana").
- Specificity wins. Name a real, characterful subject — generic prompts give generic art:
| Prompt | Result |
|---|---|
a single delicate wildflower, soft petals… | flat, generic, cartoonish |
a single **elegant poppy** on a **tall slender curved stem**, soft coral-red petals with a **delicate dark center**, one leaf, refined minimal flat vector, single isolated element, plain solid white background | a graceful, recognizable poppy — instantly "designed" |
- Always add
no text— AI mangles lettering. Add every word in code (where it is exact and editable). - Ask for "single isolated element, plain solid white background" so it is trivial to cut out.
- Strip the background path. Recraft draws a full-canvas white rectangle as path #0. Detect the path whose bounding box covers ~the whole viewBox and delete it → transparent sprite:
# keep every path EXCEPT the one whose bbox spans the whole canvas
def is_bg(path, VBW):
nums = [float(n) for n in re.findall(r'-?\d+\.?\d*', d_of(path))]
xs, ys = nums[0::2], nums[1::2]
return xs and (max(xs)-min(xs)) > VBW*0.92 and (max(ys)-min(ys)) > VBW*0.92
- Recraft v4.1 SVG format:
<path …></path>(not self-closing),viewBox="0 0 2048 2048",transform="translate(x,y)", absolute coordinates.
2 · The deterministic seek harness (the key to clean rendering)
Every visible value is a pure function of time t — never a requestAnimationFrame loop or a CSS transition (those desync from the frame-grabber and flicker).
window.__T = totalSeconds; // total duration
window.__seek = (t) => render(t); // bar width, x/y, opacity, scale — all derived from t
// on load: render the frame named in the URL
window.__seek(parseFloat(new URLSearchParams(location.search).get('t')) || 0);
A one-browser Playwright loop seeks t = 0, 1/30, 2/30 …, screenshots each, then ffmpeg assembles them (use even dimensions + yuv420p). For stateful sims (particles), step the sim forward deterministically with a seeded RNG so every render is identical.
3 · Animating sprites
- Load each asset as an
Image(inline base64 data-URI so the HTML is self-contained);drawImageper instance insidesave/translate/rotate/scale/restore. - Anchor each sprite at its motion pivot (base / center / a corner — whatever the motion needs). E.g. to rise from a line:
translate(x, baseY)then draw at(-w/2, -h). - Match the entrance to the idea, don't reflex to "grow": a count-up, a split/double, a slide-in, a flood, a snap, a scale-from-0 — each says something different. Idle life: gentle
sin(t)drift. - Add a grain overlay (seeded noise) for a hand-made, Softcore texture.
- In capture, gate on an
window.__ready()flag once all images have decoded.
4 · Craft — what makes it good, not just moving
- Let the concept choose the visual — never default to one device. The motion vocabulary must be derived from this idea, not reused: compounding → a dot doubling until it floods the screen (not a plant); a blank page → the first word breaking a dam of text (not a sprout); overload → tabs/windows multiplying into noise. Reusing one device — "a thing grows up from the ground" — across unrelated concepts is the #1 reason these go stale and generic. If you reach for "something grows" a second time, stop and ask what the concept actually looks like. (The growing-plant in the original garden piece worked only because the concept was literally botanical.)
- Causality. Tie cause → effect literally (an input lands → something happens at that spot). Loosely-related parallel events read as random noise.
- Restraint. Motion needs fewer elements than static design — too many and it gets noisy in motion. Keep only the core; don't overdo it.
- Spotlight the hero. When one element matters (the one that "made it"), dim the rest and lift it — a halo, a scale, a color shift.
- Rhythm: resolve → a beat of stillness → reflect. A closing line is a looking-back statement; it only lands after the action has stopped. Let the motion finish, hold a beat, then reveal the slogan — never overlap the conclusion with things still moving.
- Easing. Never linear on anything a viewer reads. Ease the value, not just opacity. Overshoot for small pops; slow ease-out for growth.
- Semantics — don't self-sabotage. If the piece depicts failure/withering, do not label it with your own product's features (it reads as "our product fails at its core jobs"). Use neutral or process language instead.
5 · Music
Generate a custom track with Lyria 3 (OpenRouter google/lyria-3-clip-preview). It is AI-generated, so it is royalty-free. Audio output requires stream: true — chunks arrive as base64 in delta.audio.data; concatenate and decode to MP3. Mix with ffmpeg: trim to length, fade in/out, duck the volume (~0.5) under any narration.
6 · Verify loop (do not skip)
Render the piece, build a full-duration contact sheet (sample frames across the whole timeline, not just the first seconds), and read it yourself: blank frames? overlapping rows? does the concept actually read? Fix and re-render. This deliver-and-verify loop is what separates "it ran" from "it's good."
references/
asset-pipeline.md— asset prompting, background-strip code, Recraft/Gemini format notesrender-harness.md— full seek-harness HTML + Playwright capture + ffmpeg recipecraft.md— causality, rhythm, restraint, spotlight, with worked examples
The craft behind iart.ai. Cost reference: a Recraft SVG ≈ $0.04, a Lyria track ≈ cents — a whole finished piece comes in under $1.
FAQ
What does the generative-illustration skill do?
This skill should be used when the user asks to "make an animated illustration", "animate an illustration", "make a generative motion piece" / "动态平面", "turn AI-generated art into something that moves", "make a poetic or ambient motion piece / motion poem", "make a visual metaphor", or "combine AI-generated visuals with code-driven motion". Covers generating isolated illustration assets with AI, compositing them as sprites, frame-accurate deterministic rendering, and the craft of expressive, concept-driven motion. NOT for data charts (use chart-animation), pure text (use kinetic-typography), or 3D/particles (use webgl-animation).
How do I install generative-illustration?
Run npx skills add https://github.com/iart-ai/generative-illustration-skills --skill generative-illustration in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/generative-illustration/ (personal) or .claude/skills/generative-illustration/ (project).
Which AI agents can use generative-illustration?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is generative-illustration safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains generative-illustration?
It is published by iart-ai in iart-ai/generative-illustration-skills. It has 576 recorded installs.
Popular media & creative skills
hyperframes
heygen-com/hyperframes
Read first to make, edit, animate or render any video with HyperFrames (HTML rendered to video), including launch films, explainers, music videos, charts, maps, vertical clips, title cards, captions and overlays. Holds the render contract, the work loop and what each kind of video needs.
media-use
heygen-com/hyperframes
Get or make any media for a HyperFrames video - music, sound effects, images, icons, logos, voiceover, avatar and generated video, transcripts, cutouts, colour grades and looks - with HeyGen or free local tools, and mix placed audio. Also for footage that looks dark, flat or dull, or should be stylized or hidden.
hyperframes-registry
heygen-com/hyperframes
About 450 ready-made HyperFrames blocks and components installed as editable source - transitions, overlays, titles, kinetic type, captions, charts, map overlays, 3D, camera moves. Use it before hand-building any named visual (CRT scanlines, glitch, film grain, a chart); also for hyperframes add and catalog.
hyperframes-creative
heygen-com/hyperframes
Non-animation creative direction for HyperFrames videos. Use for design spec (frame.md / design.md) handling, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns, and brand / style decisions. For atomic motion patterns and scene blueprints, use hyperframes-animation.
ai-video-generation
101-skills/superpowers
Generate AI videos with Google Veo, Seedance 2.0, HappyHorse, Wan, Grok and 40+ models via inference.sh CLI. Models: Veo 3.1, Veo 3, Seedance 2.0, HappyHorse 1.0, Wan 2.5, Grok Imagine Video, OmniHuman, Fabric, HunyuanVideo. Capabilities: text-to-video, image-to-video, reference-to-video, video editing, lipsync, avatar animation, video upscaling, foley sound. Use for: social media videos, marketing content, explainer videos, product demos, AI avatars. Triggers: video generation, ai video, text to video, image to video, veo, animate image, video from image, ai animation, video generator, generate video, t2v, i2v, ai video maker, create video with ai, runway alternative, pika alternative, sora alternative, kling alternative, seedance, happyhorse
ai-image-generation
101-skills/superpowers
Generate AI images with GPT-Image-2, FLUX, Gemini, Grok, Seedream, Reve and 50+ models via inference.sh CLI. Models: GPT-Image-2, FLUX Dev LoRA, FLUX.2 Klein LoRA, Gemini 3 Pro Image, Grok Imagine, Seedream 4.5, Reve, ImagineArt. Capabilities: text-to-image, image-to-image, inpainting, LoRA, image editing, upscaling, text rendering. Use for: AI art, product mockups, concept art, social media graphics, marketing visuals, illustrations. Triggers: flux, image generation, ai image, text to image, stable diffusion, generate image, ai art, midjourney alternative, dall-e alternative, text2img, t2i, image generator, ai picture, create image with ai, generative ai, ai illustration, grok image, gemini image, gpt image, openai image, chatgpt image