# Image To Veo

> Animate a single static image into a vertical (9:16) MP4 ad clip using Google Veo 3.1. Triggers when the user says "animate this image", "image to veo", "bring this image to life", "make a video from this image", "make an ad from this", or pastes an image URL/path and asks for a video clip. Accepts any HTTPS image URL (Dropbox `dl=0` is auto-fixed), a local file path, or an image attached in chat…

- **Type:** Skill
- **Install:** `agentstack add skill-curtishowie12-claude-skill-image-to-veo-claude-skill-image-to-veo`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [CurtisHowie12](https://agentstack.voostack.com/s/curtishowie12)
- **Installs:** 0
- **Category:** [Content & Media](https://agentstack.voostack.com/c/content-and-media)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [CurtisHowie12](https://github.com/CurtisHowie12)
- **Source:** https://github.com/CurtisHowie12/claude-skill-image-to-veo

## Install

```sh
agentstack add skill-curtishowie12-claude-skill-image-to-veo-claude-skill-image-to-veo
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Image → Veo 3.1 video

Animate a still image into an 8-second 9:16 MP4 using Google Veo 3.1. You (Claude) are the creative director: you look at the image yourself and write the cinematic prompt directly, instead of routing through a separate vision model.

## When to invoke

The user gives an image (URL, local path, or attached) and asks to animate it, "bring it to life", make a paid-ad clip, or make a short video from it. Default vibe: paid-ad-grade — slow cinematic camera, premium feel, no voiceover, ambient sound only.

## Setup the user must do once

- Set `GEMINI_API_KEY` in their shell — a Google AI Studio key with Veo 3.1 access enabled.
- Veo 3.1 generations cost roughly **$0.75/second** (~$6 per 8-second clip). Confirm spend with the user on the first run of a session unless they've authorized blanket spend.

## Recipe

### 0. Check the key is set BEFORE downloading anything
Run `echo "${GEMINI_API_KEY:-MISSING}"`. If it returns `MISSING`, stop and tell the user:
> "I need a `GEMINI_API_KEY` with Veo 3.1 access. Grab one at https://aistudio.google.com/apikey, then add `export GEMINI_API_KEY="your-key"` to your `~/.zshrc` (or `~/.bashrc`), restart your terminal, and re-run."

Don't proceed past this check until the key resolves.

### 1. Get the image into a temp dir
- Make `/tmp/veo-skill/` and clear any prior `input.*`.
- If the URL is `dropbox.com` and contains `dl=0`, replace with `dl=1` before downloading.
- HTTPS URL: `curl -sL -o /tmp/veo-skill/input. ""`
- Local path: copy to `/tmp/veo-skill/input.`.
- Verify with `file` that it's a real image. Note the file stem for output naming.

### 2. Look at the image (Read tool)
You write the Veo prompt yourself. Rules:
- **Camera:** one slow cinematic move grounded in this exact frame — push-in, parallax pan, pedestal reveal, gentle dolly. Treat the image like a 3D window. No scene changes, no montage.
- **Text/logo legibility:** if a logo or headline is in the frame, keep it on-screen and legible for ≥3 seconds. Don't let the camera push it out fast.
- **Audio:** ambient only, matching what's actually visible (water → gentle stream, fire → crackle, product on coconut → soft rustle + airy hum, outdoor scene → wind + distant birds). **Never voiceover, never music with lyrics.**
- **Format:** one paragraph, no headers, no bullet points. This goes straight into Veo's `prompt` field.

### 3. Show the prompt to the user before spending
Print the prompt in chat and ask whether to send it. Common edits to anticipate:
- "Slower / faster camera"
- "Hold on the logo longer"
- "Less / different ambient audio"
- "More focus on [specific element]"

Iterate in chat until they approve. Don't burn Veo credits on the first draft.

### 4. Generate
Run:
```bash
python3 ~/.claude/skills/image-to-veo/scripts/run.py \
  /tmp/veo-skill/input. \
  "" \
  ~/Downloads/.mp4
```

The script base64-encodes the image, calls Veo `predictLongRunning` (9:16, hardcoded), polls every 15s up to 10 minutes, and downloads the MP4. If `~/Downloads/.mp4` already exists, it suffixes `-2`, `-3`, etc. — never overwrites.

### 5. Report the path
Tell the user where the file landed. On a Mac, `open ~/Downloads/.mp4` plays it.

If the user is in a remote sandbox (no local Downloads), upload the MP4 to https://tmpfiles.org via `curl -sS -F "file=@" https://tmpfiles.org/api/v1/upload` and share the `dl//` link, noting the 60-minute expiry.

## Aspect ratio

Locked to `9:16` (vertical, paid-ad format). If the user explicitly asks for `16:9` or `1:1`, pass `--aspect ` to `run.py`.

## Troubleshooting

- **`done: true` but `error` in response:** Veo refused the prompt (often a person/brand/safety issue). Surface the error message verbatim and ask the user how to adjust.
- **Polling hits the 10-minute cap:** Veo is occasionally backed up. Re-run; the prompt is unchanged so cost is the same.
- **`401` from Veo:** key is missing Veo access. Send the user to AI Studio to confirm the model is enabled on their key.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [CurtisHowie12](https://github.com/CurtisHowie12)
- **Source:** [CurtisHowie12/claude-skill-image-to-veo](https://github.com/CurtisHowie12/claude-skill-image-to-veo)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** yes
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-curtishowie12-claude-skill-image-to-veo-claude-skill-image-to-veo
- Seller: https://agentstack.voostack.com/s/curtishowie12
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
