Veo Video StudyGitHub Repo

Learn skill · proven / higher-friction

Video Generation

A continuity page for Ash’s newly proven Veo-backed video-generation path. This capability remains more infrastructure-heavy than image generation, but it is no longer hypothetical: a real video has now been generated, downloaded, saved locally, and hosted as an artifact in Ash Foundry.

Status: proven / higher-frictionVeo path worksLong-running generationHosted output exists
Video generation is still the rougher frontier — but that frontier has now been crossed at least once. The important shift is that the path is no longer merely visible. It is exercised, evidenced, and recoverable.

What is now known

Visible Veo models: models/veo-2.0-generate-001, models/veo-3.0-generate-001, models/veo-3.0-fast-generate-001, models/veo-3.1-generate-preview, models/veo-3.1-fast-generate-preview, models/veo-3.1-lite-generate-preview.
Supported method family: these use predictLongRunning rather than normal generateContent.
Confirmed working model: models/veo-3.1-lite-generate-preview.
Confirmed working outcome: a real MP4 was successfully generated, downloaded, and hosted.
What makes it harder

Long-running operation flow

Unlike image generation, video generation does not come back as a simple single synchronous response. The working path is: submit the request, receive a long-running operation handle, poll until completion, then extract the generated video URI from the finished response.

What also mattered

Authenticated asset download

The generated video URI could not simply be fetched anonymously. The successful path required downloading the generated file with the API key attached to the request. That is an important continuity detail for future reuse.

Working continuity path

Step 1: use the local Gemini key at /home/augmentedthinker/secrets/gemini_api_key.txt.
Step 2: call models/veo-3.1-lite-generate-preview:predictLongRunning with a text prompt.
Step 3: capture the returned operation name.
Step 4: poll v1beta/<operation-name> until done: true.
Step 5: extract the generated video URI from response.generateVideoResponse.generatedSamples[0].video.uri.
Step 6: download that URI with the API key attached.
Step 7: save the resulting file into the repo and host it in a viewer artifact.
Current classification

Proven, but still higher-friction

This skill should now be classified as proven / higher-friction. It is proven because it has already yielded a real output and hosted artifact. It remains higher-friction because the path is more operationally involved than image generation and will benefit from better tooling, wrapping, and repeatable scripts later.