AgentStack
SKILL verified MIT Self-run

Image To Veo

skill-curtishowie12-claude-skill-image-to-veo-claude-skill-image-to-veo · by CurtisHowie12

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…

No reviews yet
0 installs
12 views
0.0% view→install

Install

$ agentstack add skill-curtishowie12-claude-skill-image-to-veo-claude-skill-image-to-veo

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Image To Veo? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

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:

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.

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

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.