# Video Generation

> Generate videos and GIFs using the media-mcp server's generate_video tool. Use when the user asks to create videos, animations, GIFs, motion graphics, product demos, explainer clips, or video content. Supports text-to-video, image-to-video (animate a still image), and video extension modes with native audio generation.

- Skill: `lukaskellerstein/video-generation` (Agent Skill)
- Install (CLI): `npx skillmds@latest add lukaskellerstein/video-generation`
- Raw SKILL.md: https://api.skillmd.com/api/skills/lukaskellerstein/video-generation/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: lukaskellerstein (https://skillmd.com/u/lukaskellerstein)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/lukaskellerstein/video-generation

---


# Video Generation

> **Step 0 — plan first.** Before generating, run the **visual-planning** skill: clarify the ask (incl. duration & loop), lock the style, pin the message, decide what's IN/OUT, then draft and review the prompt.

Use the `mcp__media-mcp__generate_video` tool to create videos via Google Gemini Veo models.

## When to Use

- User asks to "create a video", "make a GIF", "animate this", "generate a clip"
- User wants to animate a static image
- User needs a product demo, explainer animation, or motion graphic
- User wants to extend an existing video clip
- User describes a scene or sequence they want as video

## Tool Reference

### generate_video

**Key parameters:**

| Parameter | Type | Description |
|---|---|---|
| `prompt` | string (required) | Description of the video content and motion |
| `model` | string | Veo model variant |
| `aspect_ratio` | string | `"16:9"` (landscape) or `"9:16"` (portrait/vertical) |
| `resolution` | string | Output resolution |
| `reference_images` | array | Up to 3 images — first frame, style reference, or scene context |

## Video Modes

### Text-to-Video
Generate video purely from a text description:
```
A drone shot flying over a coastal city at golden hour,
camera slowly tilting down to reveal the harbor,
cinematic, smooth motion, 4K quality
```

### Image-to-Video
Animate a still image by providing it as a reference:
```
Animate this product photo — the camera slowly orbits around
the product with a subtle zoom, soft studio lighting,
smooth continuous motion
```
Pass the image path in `reference_images`.

### Video Extension
Extend an existing clip by describing what happens next.

## Prompt Writing Guidelines

### Describe motion explicitly

Bad: "a city at night"
Good: "Camera slowly pans across a city skyline at night, neon lights flickering, cars moving on streets below, gentle zoom toward the tallest building"

### Specify camera movement

- "Static shot" — no camera movement
- "Slow pan left/right" — horizontal camera sweep
- "Tilt up/down" — vertical camera movement
- "Dolly in/out" — camera moves toward/away from subject
- "Orbit" — camera circles around subject
- "Drone shot" — aerial perspective with movement
- "Tracking shot" — camera follows a moving subject
- "Zoom in/out" — focal length change

### Specify pacing and mood

- "Slow, contemplative" — gentle transitions, long takes
- "Dynamic, energetic" — quick movements, high energy
- "Cinematic" — film-quality look, dramatic lighting
- "Timelapse" — sped-up passage of time

## Common Patterns

### Product showcase
```
A sleek smartphone rotating slowly on a reflective black surface,
studio lighting with soft highlights on the edges,
camera orbits 180 degrees, smooth continuous motion, premium feel
```

### Explainer animation
```
An animated diagram showing data flowing from a user's device
through an API gateway to microservices and back,
clean flat design style, arrows animate along the path,
smooth transitions between stages
```

### App demo
```
A screen recording style video showing a mobile app in use:
a finger taps the login button, the dashboard loads with
animated charts, then scrolls down to show a list view,
clean UI, modern design
```

### Nature/ambient
```
A serene forest stream with sunlight filtering through trees,
leaves gently swaying in the breeze, water flowing over smooth rocks,
cinematic slow motion, natural ambient sounds
```

### GIF-style loop
```
A simple looping animation of a loading spinner transforming
into a checkmark, flat design, green accent color on white background,
smooth 2-second loop
```

## Aspect Ratio Guide

| Ratio | Best for |
|---|---|
| `16:9` | YouTube, presentations, demos, landscape content |
| `9:16` | TikTok, Instagram Reels, YouTube Shorts, mobile-first |

## Output Handling — MEDIA_OUTPUT_DIR

**When `MEDIA_OUTPUT_DIR` is set** (recommended): The MCP server saves the generated video to a file and returns only the file path. Always use just this path — do NOT request or embed the raw video data. This is critical because all MCP request/response messages are stored in the conversation history, and large base64 payloads pollute the context window, degrading performance.

**When `MEDIA_OUTPUT_DIR` is not set**: The MCP server has no choice but to return the video as base64 data in the response. This works but is suboptimal for conversation history size.

After generation you can:

- **Convert to GIF**: `ffmpeg -i video.mp4 -vf "fps=15,scale=480:-1" output.gif`
- **Extract frames**: `ffmpeg -i video.mp4 -vf "fps=1" frame_%04d.png`
- **Trim**: `ffmpeg -i video.mp4 -ss 00:00:01 -to 00:00:03 -c copy trimmed.mp4`

## Tips

- Videos include native audio when appropriate — describe sounds in the prompt if you want specific audio
- For best results, describe both visual content AND motion/camera work
- Use reference images for image-to-video to maintain visual consistency
- Keep prompts focused — one clear scene per generation works better than complex multi-scene descriptions
- Generate at lower resolution for previews, then re-generate at higher resolution for final output

