veo-video
Skill1 starsChanged 24 days agoMITView on GitHub
Generate short footage with Google Veo 3.1 via the Gemini API — defaults to the cheapest model (veo-3.1-lite-generate-preview, 720p, 4 s ≈ $0.20) — with the exact predictLongRunning contract, polling and download, image-to-video from a Gemini still for style consistency, constraints, pricing, and prompt recipes for calm establishing plates. Use rarely: only for an establishing shot code can't fake, ≤ 20% of runtime, never to carry information.
5 other projects use a version of this.
Adopted by
Most recently taken up by
- AceDataCloud/Skillstheir own version, first seen Oct 6, 2026
- SC32br/hermes-skill-veo-vertextheir own version, first seen May 8, 2026
- G-HunterAi/openclaw-skillstheir own version, first seen Apr 5, 2026
- Dimks777/aiclubtheir own version, first seen Apr 3, 2026
- kevinbadi/ai-os-skillstheir own version, first seen Mar 28, 2026
Other versions5 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 5
- kevinbadi/ai-os-skills★ 69same name
- AceDataCloud/Skills★ 17same name
- SC32br/hermes-skill-veo-vertex★ 2same name
- Dimks777/aiclub★ 0same name
- G-HunterAi/openclaw-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository22 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- clearframe-blocksSkill
- clearframe-canvasSkill
- clearframe-datavizSkill
- clearframe-directionSkill
- clearframe-engineSkill
- clearframe-explainSkill
- clearframe-inspirationSkill
- clearframe-integritySkill
- clearframe-librarySkill
- clearframe-motionSkill
- clearframe-reviewSkill
- clearframe-sceneSkill
- clearframe-scriptSkill
- clearframeSkill
- clearframe-workplaceSkill
- gemini-imageSkill
- gemini-omniSkill
- gemini-ttsSkill
- lyria-musicSkill
- runway-videoSkill
The file
We split this skill into the rules it gives an agent
4 rules. 0 are common, 2 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 39
Read the URI at response.generateVideoResponse.generatedSamples[0].video.uri, then download it with the x-goog-api-key header, following …
- Distinctive: line 72
Don't rely on it for text, numbers, charts, UI, logos, faces or recognisable people.
- Very specific: line 73
No fast motion, handheld shake, whip pans or "epic" drone swoops.
- Distinctive: line 74
Don't generate footage to fill time.
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
ClearFrame defaults generated clips to Gemini Omni Flash 1.1. Select a Veo model explicitly to use this alternate provider.
Veo footage
Last resort, by design. A ClearFrame film is typography, numbers and diagrams. Footage earns its place only as an establishing plate: a place, a physical process, a texture in motion that code can't fake. It never carries information, since text and numbers in generated video are unreliable. Put the words and numbers over the plate in code.
Budget rule: ≤ 20% of runtime, clips of 4 s, and one or two per film. clearframe plan warns above 20%.
Use it
"assets": [
{ "id": "atrium", "kind": "image", "prompt": "Architectural photograph of an empty modern atrium at dawn … No people, no text." },
{ "id": "atrium-move", "kind": "clip", "from": "atrium", "seconds": 4,
"prompt": "Very slow forward dolly through the atrium, soft dawn light shifting across the floor, calm, no people, no text, no camera shake." }
]clearframe images <dir> && clearframe clips <dir> # still first, then animate it (style consistency)
node packages/engine/dist/skills/veo-video/scripts/veo.mjs --prompt "…" --image still.jpg --seconds 4 --out clip.mp4 [--dry-run]In a scene: <video src="assets/clips/atrium-move.mp4" data-start="hook" muted playsinline></video>. The runtime seeks it frame-accurately, and its audio is ignored because ClearFrame mixes sound separately.
Contract (verified 2026-09-27 against ai.google.dev/gemini-api/docs/veo)
POST https://generativelanguage.googleapis.com/v1beta/models/veo-3.1-lite-generate-preview:predictLongRunning with header x-goog-api-key
{ "instances": [{ "prompt": "…",
"image": { "inlineData": { "mimeType": "image/jpeg", "data": "<base64>" } } }],
"parameters": { "aspectRatio": "16:9", "resolution": "720p", "durationSeconds": 4 } }- The call returns
{ "name": "<operation>" }. - Poll
GET https://generativelanguage.googleapis.com/v1beta/<operation>every ~10 s until"done": true. Latency runs from 11 s to 6 min. - Read the URI at
response.generateVideoResponse.generatedSamples[0].video.uri, then download it with thex-goog-api-keyheader, following redirects. Files stay on the server for 2 days.
Constraints:
aspectRatio:16:9or9:16.durationSeconds:4,6or8, sent as an integer (live calls on 2026-10-04 accepted integers; the string form in older docs is unverified). 1080p and 4k require 8 s, and Lite has no 4k.personGeneration:allow_allis the only value for text-to-video andallow_adultthe only value for image-to-video. ClearFrame omits it, and the prompts avoid people.lastFrame(interpolation) requiresimage.referenceImagesand extension are available on 3.1 and 3.1 Fast only.negativePromptis not documented on the Gemini API, so put exclusions in the prompt.- Output is MP4 at 24 fps with native audio (always on) and a SynthID watermark.
| Model | 720p | 1080p | 4k |
veo-3.1-lite-generate-preview (default, cheapest) | $0.05/s | $0.08/s | — |
veo-3.1-fast-generate-preview | $0.10/s | $0.12/s | $0.30/s |
veo-3.1-generate-preview | $0.40/s | $0.40/s | $0.60/s |
A 4 s Lite clip at 720p costs $0.20. In a 2026-10-04 sizzle production, Standard at 1080p was 80% of the spend and only about 3 s of each 8 s clip was used: explore on Lite or Fast, and keep Standard for close-ups (see docs/google-generation-field-notes.md). Upscaling a 720p plate under grain and a vignette at 1080p is usually invisible; use 1080p (8 s, $0.64) only for full-bleed hero plates.
Prompt recipes (calm plates)
Structure: camera move → subject → light → palette → pace → exclusions.
- "Very slow forward dolly across a sunlit wooden desk with neatly stacked paper, shallow depth of field, warm morning light, muted palette, calm, no people, no text, no logos, no camera shake."
- "Locked-off wide shot of clouds drifting over a quiet city skyline at dusk, soft haze, slate-blue palette, slow and steady, no text, no people in frame."
- "Macro slow pan across flowing ink dispersing in water, cobalt on off-white, soft light, graceful and slow, no text."
- For vertical, use
--aspect 9:16and compose with the top 11% and bottom 20% kept clear.
Image-to-video from a Gemini still is the house technique. Generate the look with gemini-image, then animate it, so every plate matches the theme's palette.
Continuing a shot: pass the previous clip's last frame as image and describe the camera move away from it. That produced a seamless pull-out in one production. Also add "consistent lighting, no lens flares" to counter late-clip drift, and expect actions prompted for "the end" to land mid-clip. Field notes: docs/google-generation-field-notes.md.
Don't
- Don't rely on it for text, numbers, charts, UI, logos, faces or recognisable people.
- No fast motion, handheld shake, whip pans or "epic" drone swoops. They fight the calm grammar. A footage-led brief (a sizzle reel or brand spot:
docs/hero-footage.md) may ask for that energy; then follow the field notes above. - Don't generate footage to fill time. If a beat feels empty, the script or the visual idea is the problem.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

