Generate new images or edit existing ones using Google's Gemini 3.1 Flash Image Preview API directly (no inference.sh required).
Run the script using absolute path (do NOT cd to skill directory first):
Generate new image:
uv run ~/.openclaw/workspace/skills/nano-banana-2-direct/scripts/generate_image.py --prompt "your image description" --filename "output-name.png" [--resolution 1K|2K|4K] [--api-key KEY]
Edit existing image:
uv run ~/.openclaw/workspace/skills/nano-banana-2-direct/scripts/generate_image.py --prompt "editing instructions" --filename "output-name.png" --input-image "path/to/input.png" [--resolution 1K|2K|4K] [--api-key KEY]
Important: Always run from the user's current working directory so images are saved where the user is working, not in the skill directory.
Goal: fast iteration without burning time on 4K until the prompt is correct.
uv run ~/.openclaw/workspace/skills/nano-banana-2-direct/scripts/generate_image.py --prompt "" --filename "yyyy-mm-dd-hh-mm-ss-draft.png" --resolution 1K --input-image for every iteration until you're happy.uv run ~/.openclaw/workspace/skills/nano-banana-2-direct/scripts/generate_image.py --prompt "" --filename "yyyy-mm-dd-hh-mm-ss-final.png" --resolution 4K The Gemini 3.1 Flash Image API supports three resolutions (uppercase K required):
Map user requests to API parameters:
1K1K2K4KThe script checks for API key in this order:
--api-key argument (use if user provided key in chat)GEMINI_API_KEY environment variableIf neither is available, the script exits with an error message.
command -v uv (must exist)test -n "$GEMINI_API_KEY" (or pass --api-key)test -f "path/to/input.png"Error: No API key provided. → set GEMINI_API_KEY or pass --api-keyError loading input image: → wrong path / unreadable file; verify --input-image points to a real imageGenerate filenames with the pattern: yyyy-mm-dd-hh-mm-ss-name.png
Format: {timestamp}-{descriptive-name}.png
yyyy-mm-dd-hh-mm-ss (24-hour format)x9k2, a7b3)Examples:
2025-11-23-14-23-05-japanese-garden.png2025-11-23-15-30-12-sunset-mountains.png2025-11-23-16-45-33-robot.png2025-11-23-17-12-48-x9k2.pngWhen the user wants to modify an existing image:
--input-image parameter with the path to the imageFor generation: Pass user's image description as-is to --prompt. Only rework if clearly insufficient.
For editing: Pass editing instructions in --prompt (e.g., "add a rainbow in the sky", "make it look like a watercolor painting")
Preserve user's creative intent in both cases.
Use templates when the user is vague or when edits must be precise.