auto-free-banana

Generates images in Google Flow (labs.google/fx) through browser UI automation. Supports Nano Banana 2 and Nano Banana Pro with landscape/portrait aspect ratios. Use when the user requests Flow-based image generation.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "auto-free-banana" with this command: npx skills add liujuntao123/auto-free-banana

Google Flow UI Client

Generate images in Google Flow through Chrome CDP + browser UI automation.

Important constraints:

  • Project creation is UI-only
  • Prompt submission is UI-only
  • Do not use or describe any API-based project creation path
  • Images are considered complete once the base images are visible in the browser

Script Directory

Resolve:

  1. {baseDir} = directory containing this SKILL.md
  2. Script path = {baseDir}/scripts/main.ts
  3. ${BUN_X} = bun if installed, else npx -y bun

Consent Check (REQUIRED)

Before first use, verify user consent for reverse-engineered API usage.

Consent file locations:

  • macOS: ~/Library/Application Support/baoyu-skills/flow-web/consent.json
  • Linux: ~/.local/share/baoyu-skills/flow-web/consent.json
  • Windows: %APPDATA%\baoyu-skills\flow-web\consent.json

Flow:

  1. Check if consent file exists with accepted: true and disclaimerVersion: "1.0"
  2. If valid consent exists → print warning with acceptedAt date, proceed
  3. If no consent → show disclaimer, ask user via AskUserQuestion:
    • "Yes, I accept" → create consent file with ISO timestamp, proceed
    • "No, I decline" → output decline message, stop
  4. Consent file format: {"version":1,"accepted":true,"acceptedAt":"<ISO>","disclaimerVersion":"1.0"}

Preferences (EXTEND.md)

Check EXTEND.md existence (priority order):

test -f .baoyu-skills/auto-free-banana/EXTEND.md && echo "project"
test -f "${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/auto-free-banana/EXTEND.md" && echo "xdg"
test -f "$HOME/.baoyu-skills/auto-free-banana/EXTEND.md" && echo "user"

EXTEND.md Supports: Default model | Default aspect ratio | Custom data directory

Execution Envelope (REQUIRED)

Before any pre-flight check or main.ts invocation, decide one shell environment and reuse it for every command in the run.

  • Use the same PATH
  • Use the same proxy variables
  • Use the same CDP / Chrome profile variables

If you set any of these once, keep them identical for all later commands in the turn:

  • PATH
  • FLOW_WEB_PROXY
  • HTTPS_PROXY / HTTP_PROXY
  • AGENT_BROWSER_CHROME_PROXY_SERVER
  • FLOW_WEB_DEBUG_PORT / AGENT_BROWSER_CDP_PORT
  • FLOW_WEB_COOKIE_PATH
  • FLOW_WEB_CHROME_PROFILE_DIR
  • AGENT_BROWSER_USER_DATA_DIR_WIN
  • AGENT_BROWSER_CMD_EXE_WSL

Never run pre-flight checks in one environment and main.ts in another.

Preferred proxy setup:

export FLOW_WEB_PROXY=http://host:port
export HTTPS_PROXY="$FLOW_WEB_PROXY"
export HTTP_PROXY="$FLOW_WEB_PROXY"
export AGENT_BROWSER_CHROME_PROXY_SERVER="$FLOW_WEB_PROXY"

Usage

Before running any generation command, complete the Pre-flight Checks below.

# Default generation: creates a NEW Flow project through the UI
${BUN_X} {baseDir}/scripts/main.ts --prompt "A cute cat"

# Specify model + portrait + 2 images
${BUN_X} {baseDir}/scripts/main.ts --prompt "A sunset" --model NANO_BANANA_PRO --aspect 9:16 --count 2

# Reuse an EXISTING Flow project only when you already have the project id
${BUN_X} {baseDir}/scripts/main.ts --project-id <project-id> --prompt "A sunset"

# Authentication only
${BUN_X} {baseDir}/scripts/main.ts --login

# Batch mode: multiple prompts in one project (5s interval)
${BUN_X} {baseDir}/scripts/main.ts --prompt "A cute cat" --prompt "A sunset" --prompt "A mountain landscape"

Batch mode rules:

  • Use one command with repeated --prompt
  • The first prompt creates a new project through the UI unless --project-id is supplied
  • Later prompts reuse that same project
  • Do not run multiple separate main.ts commands for a multi-prompt batch

Pre-flight Checks

Run these checks in order. Each step must pass before moving to the next.

Step 1: Runtime Prerequisites (BLOCKING)

Check the Bun runtime and Python:

command -v bun >/dev/null && echo "BUN" || command -v npx >/dev/null && echo "NPX_BUN" || echo "MISSING"
command -v python3 >/dev/null && echo "OK" || echo "MISSING"

If any required command is missing, stop.

If running under WSL, also verify the Windows bridge and Chrome path assumptions:

test -x /mnt/c/Windows/System32/cmd.exe && echo "OK" || echo "MISSING"
test -f "/mnt/c/Program Files/Google/Chrome/Application/chrome.exe" && echo "OK" || echo "MISSING"

If not running under WSL, ensure FLOW_WEB_CHROME_PATH is set before continuing.

Step 2: Browser Profile Check (AUTO-RESOLVE)

Check if the Chrome debug user data directory exists. Default WSL-visible path:

  • /mnt/c/chrome-debug-openclaw
  • env override: AGENT_BROWSER_USER_DATA_DIR_WIN
test -d /mnt/c/chrome-debug-openclaw && echo "EXISTS" || echo "NEW"
  • EXISTS → proceed
  • NEW → proceed, but tell the user a fresh browser profile will be created

Step 3: Network Connectivity Check (WARN + WAIT)

Test Google reachability using the same environment you will use for main.ts:

curl -sS --connect-timeout 5 -o /dev/null -w '%{http_code}' https://labs.google/fx/ 2>/dev/null || echo "FAIL"
  • 200/301/302 → proceed
  • FAIL / timeout → stop and fix proxy settings first

Do not continue into main.ts while shell networking and browser proxy settings disagree.

Step 4: Login State Check (WARN + GUIDE)

Check if cached credentials exist:

Linux default cookie file:

  • ~/.local/share/baoyu-skills/flow-web/cookies.json
test -f ~/.local/share/baoyu-skills/flow-web/cookies.json && echo "EXISTS" || echo "NONE"
  • EXISTS → proceed
  • NONE → run:
    ${BUN_X} {baseDir}/scripts/main.ts --login --verbose
    
    Then wait for the user to finish Google login in the browser.

Generation Rules

The skill supports exactly two generation entry modes:

  • New project: omit --project-id; the script creates a project through the Flow UI
  • Existing project: provide --project-id

Do not invent any third path.

Explicitly forbidden:

  • API-based project creation
  • Describing API project creation as a fallback
  • Mixing one failed path with a different project-creation mechanism mid-run

If automatic UI project creation fails:

  1. Inspect the Flow listing page in the browser
  2. Fix the UI state only
  3. Retry the same UI path
  4. If needed, manually click 新建项目 in the browser, capture the resulting project id from the URL, then rerun main.ts with --project-id <id>

The fallback is still UI-only.


Task Completion (IMPORTANT)

main.ts only automates the UI. It fills the prompt, clicks Create, then exits immediately. Actual image generation continues asynchronously in the browser.

After main.ts exits with code 0:

  1. The script has successfully submitted all prompts. Images are now generating in the browser.
  2. You MUST verify generation completion by taking a browser screenshot (via CDP or screenshot tool) and visually checking whether images have appeared on the page.
  3. If the screenshot shows images are still loading (spinner, progress indicator, blank placeholders), wait 10-15 seconds and take another screenshot.
  4. Repeat until all images are visible, or until 2 minutes have passed (then report a timeout).
  5. Once the base images are confirmed visible, stop and report completion.
  6. Do NOT download, fetch, curl, or render any URLs. Images are visible in the browser.

Important completion rule:

  • If the images are visible and Flow still shows optional HD-enhancement / download / post-processing toasts, treat the task as complete anyway.

If the script exits with a non-zero code, report the error and stop.


Options

OptionDescription
--prompt, -pPrompt text (repeat for batch mode)
--model, -mModel ID (see Models table)
--aspect, -aAspect ratio: 16:9 (default), 9:16
--countNumber of images: 1-4 (default: 2)
--project-idReuse existing project
--verboseEnable debug logging
--loginAuthenticate and save cookies, then exit
--cookie-pathCustom cookie file path
--profile-dirChrome profile directory

Models

ModelDescription
NARWHALNano Banana 2 (default, fast)
NANO_BANANA_PRONano Banana Pro

Optional Verification Helper

If /home/admin1/.openclaw/workspace/scripts/agent-browser-cdp.sh exists, it is a convenient helper for screenshots and browser inspection after generation:

bash /home/admin1/.openclaw/workspace/scripts/agent-browser-cdp.sh --full screenshot /tmp/flow.png
bash /home/admin1/.openclaw/workspace/scripts/agent-browser-cdp.sh snapshot -c

This helper is optional. Generation must not depend on agent-browser being installed.

Environment Variables

VariableDescription
FLOW_WEB_PROXYPreferred proxy for shell/API requests
HTTPS_PROXY / HTTP_PROXYStandard proxy env vars
FLOW_WEB_DATA_DIRData directory
FLOW_WEB_COOKIE_PATHCookie file path
FLOW_WEB_CHROME_PROFILE_DIRLocal Chrome user data dir when not on WSL
FLOW_WEB_CHROME_PATHChrome executable path for non-WSL environments
FLOW_WEB_DEBUG_PORTFixed Chrome debug port
FLOW_WEB_CHROME_EXE_WINWindows Chrome path override when running from WSL
FLOW_WEB_CHROME_USER_DATA_DIR_WINWindows Chrome user data dir override when running from WSL
FLOW_WEB_CHROME_EXTRA_ARGSExtra Chrome args
AGENT_BROWSER_CHROME_PROXY_SERVERBrowser proxy used by host Chrome
AGENT_BROWSER_USER_DATA_DIR_WINWindows-side Chrome debug profile override
AGENT_BROWSER_CMD_EXE_WSLWSL path to cmd.exe
BAOYU_CHROME_PROFILE_DIRShared Chrome profile override

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

Autohotkey

AutoHotkey - macro-creation and automation-oriented scripting utility for Windows. autohotkey, c++, autohotkey, automation, c-plus-plus, hotkeys, scripting....

Registry SourceRecently Updated
1320ckchzh
Automation

Agent Reader

Document beautifier for AI Agents. Converts Markdown to styled webpages, Word, PDF, and image slideshows — the 'last mile' rendering engine for AI output. 专为...

Registry SourceRecently Updated
Automation

Clever Compact

Your OpenClaw agent forgets everything between sessions — after /new, after compaction, after overnight. Clever Compact fixes all three: injects your last st...

Registry SourceRecently Updated
3110Profile unavailable
Automation

Scheduler

Scheduler - command-line tool for everyday use

Registry SourceRecently Updated
660Profile unavailable