Google Gemini media generation: Nano Banana images, Imagen 4 images, Veo video, TTS, model listing. Trigger phrases: gemini image, nano banana, imagen, veo video, google veo, gemini tts.
npx skills add https://github.com/Anil-matcha/awesome-muse-connectors --skill gemini
Generate images (Nano Banana, Imagen 4), video (Veo 3.1), and speech (TTS) through Google's Gemini API with one key and one bill. Use when Michael asks for AI-generated images, video clips, thumbnails, or voiceovers via Google.
All commands go through bin/gemini.py:
bin/gemini.py auth # verify the API key (free)
bin/gemini.py models --limit 50 # list available models
bin/gemini.py image --prompt "a ceramic fox" --out /tmp/fox # Nano Banana text-to-image (or edit with --image)
bin/gemini.py image --prompt "make it night" --image ./fox.png --out /tmp/fox-night
bin/gemini.py imagen --prompt "studio product shot" --count 2 --out /tmp/prod # Imagen 4
bin/gemini.py video --prompt "a drone shot over a harbor" # Veo 3.1, prints an operation id
bin/gemini.py op-status --op operations/abc123 # poll the Veo operation
bin/gemini.py tts --text "Hello there" --voice Kore --out /tmp/line # text-to-speech
image and imagen save files to the --out prefix and are synchronous. video is async: it returns an operation id, poll op-status until done is true, then download the video file (files.download). --json merges extra fields into any request.
gemini (credential is collected as custom.gemini)credentials.request_api_access); created in Google AI Studio (aistudio.google.com/apikey)generativelanguage.googleapis.combin/gemini.py auth (must return "ok": true). The key is sent verbatim as the x-goog-api-key header.op-status with backoff; do not hammer it.bin/gemini.py). Do not print, log, or transmit the key value.🧪 Draft: written from Google's public Gemini API docs via the research dossier; not yet live-tested end-to-end.
Take anil-matcha/gemini from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.