GEMINI LABJP
CLI — While the Gemini API release notes have sat still since September 3, the CLI moved: v0.59.0 is now stable, and the changes are mostly about securitySSRF — Server-side request forgery in MCP OAuth metadata discovery has been closed off. If you connect third-party MCP servers, this one is for youRESTRICTED — Restricted mode now enforces fail-closed workspace trust and filters MCP servers. Expect different behaviour if you run unattended with MCP attachedPINNING — Explicitly versioned Flash model IDs were not being preserved. If you pin versions for reproducibility, this quietly affected youSEP 30 — Seventeen days until gemini-omni-flash-preview is retired, and gemini-2.5-flash-image follows on October 2MIGRATION — The official table still points to gemini-3.1-flash-image-preview, which was retired on June 25. The real destination is the GA gemini-3.1-flash-imageCLI — While the Gemini API release notes have sat still since September 3, the CLI moved: v0.59.0 is now stable, and the changes are mostly about securitySSRF — Server-side request forgery in MCP OAuth metadata discovery has been closed off. If you connect third-party MCP servers, this one is for youRESTRICTED — Restricted mode now enforces fail-closed workspace trust and filters MCP servers. Expect different behaviour if you run unattended with MCP attachedPINNING — Explicitly versioned Flash model IDs were not being preserved. If you pin versions for reproducibility, this quietly affected youSEP 30 — Seventeen days until gemini-omni-flash-preview is retired, and gemini-2.5-flash-image follows on October 2MIGRATION — The official table still points to gemini-3.1-flash-image-preview, which was retired on June 25. The real destination is the GA gemini-3.1-flash-image
Articles/Gemini Basics
Gemini Basics/2026-06-22Intermediate

Putting Gemini image generation to work: from prompt design to thumbnails generated from video

A practical playbook for running Gemini image generation as a repeatable workflow instead of a lucky dip. From decomposing prompts into reproducible parts to the video-to-image automation unlocked by the Nano Banana 2 GA, with working code, a pre-publish quality gate, and a design that survives preview shutdowns.

Gemini86image generation5Nano Banana2gemini-3.1-flash-imagevideo to imageworkflow11indie dev5

Premium Article

Putting Gemini image generation to work: from prompt design to thumbnails generated from video

The biggest reason image generation eats your time is that you can't reproduce a good result after the fact — you can't tell whether the one frame that came out was good or bad, or why. Generating OGP images for the four Dolice Labs blogs (Gemini Lab among them) and promo assets for the wallpaper apps I've run as an indie developer, I kept hitting exactly that: I'd land a great image and never be able to produce the same quality again.

This article is a practical note on running image generation as a recorded, reproducible workflow rather than a one-shot gamble. The first half breaks a prompt into reproducible units; the second half moves into the "generate a single image from a video" capability that became generally available in June 2026 with Nano Banana 2 (gemini-3.1-flash-image), wiring it into indie automation. For context: my contemporary art is hand-made and uses no generative AI. I use generative AI only on the "delivery" side — asset generation for the app business and the blogs. Holding that line up front makes the judgment calls below easier to read.

A prompt is a four-part design, not a dice roll

Prompts that produce good images reliably are built from structure, not feel. Keeping records, I found the parts that actually move the result collapse to four.

Subject (what to draw), scene/environment (where and when), style (photographic, watercolor, 3D, and so on), and detail (palette, lighting, angle, emotion). Filling these four deliberately turns a vague instruction like "a person sitting" into something reproducible: "a woman in her 30s seated on a sofa by a window in the evening, lit by warm interior light, professional photographic style."

The practical payoff of separating the parts is that when you land a winner, you can isolate which part did the work. Swap only the scene and regenerate, and you compare atmosphere while holding subject and style fixed. Rewrite the whole prompt every time and you lose that comparison.

Keep a "shape" for each use case

Rather than starting from scratch each time, keep a minimal shape per use case. The skeletons I reuse across blogs and apps look like this.

For a blog hero image: "[subject that symbolizes the article] doing [task/situation]. [approachable palette]. Slightly soft photographic or flat-illustration style. 16:9 landscape." For social posts, state square (1:1) or vertical (9:16) explicitly and add one note of magazine-cover polish. For presentation assets, raise the abstraction — "3D CGI symbolizing [concept], blue and purple neon, forward-looking mood" — making the concept, not a person, the lead.

Having shapes makes the automation in the second half easier, because you can templatize the brief and just slot in the article title or the video's content to produce assets.

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
Decompose prompts into four reproducible parts (subject, scene, style, detail) so you can reproduce a winning result from a log instead of luck
Implement the video-to-thumbnail automation unlocked by the Nano Banana 2 (gemini-3.1-flash-image) GA, with working Python you can run today
Take home a lightweight gate that rejects broken images before publishing, plus a model-ID design that won't break when preview models shut down on 6/25
Secure payment via Stripe · Cancel anytime

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Gemini Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $15 for lifetime access
View Membership →

Related Articles

Gemini Basics2026-06-13
Deep Think, Deep Research, Live, or Omni? How I Reassigned a Week of Work Across Gemini's Growing Set of Modes
Gemini now spans thinking, researching, talking, and creating. Three practical questions that decide which mode gets which task, based on a week of reassigning my indie-dev workflow.
Gemini Basics2026-09-13
I edited the Drive doc, asked Gemini again, and it quoted the old sentence back
When Gemini answers from an outdated version of a Drive file, the file usually isn't the problem — the conversation is. Here's how sources stay attached for the whole conversation, why you can't remove one mid-thread, and what to do about partial reads.
Gemini Basics2026-09-04
Deleting the Chat Wasn't Enough. There Was a Second Place the Memory Was Coming From
How Gemini's memory of past chats actually works, why deleting a conversation often isn't enough, and how the fact that Gems and Gemini Live ignore that memory can be turned into a simple way to keep separate projects from bleeding into each other.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links