Marketplace baoyu-danger-gemini-web
Image generation skill using Gemini Web. Generates images from text prompts via Google Gemini. Also supports text generation. Use as the image generation backend for other skills like cover-image, xhs-images, article-illustrator.
git clone https://github.com/aiskillstore/marketplace
T=$(mktemp -d) && git clone --depth=1 https://github.com/aiskillstore/marketplace "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/jimliu/baoyu-danger-gemini-web" ~/.claude/skills/aiskillstore-marketplace-baoyu-danger-gemini-web && rm -rf "$T"
skills/jimliu/baoyu-danger-gemini-web/SKILL.mdGemini Web Client
Supports:
- Text generation
- Image generation (download + save)
- Reference images for vision input (attach local images)
- Multi-turn conversations via persisted
--sessionId
Script Directory
Important: All scripts are located in the
scripts/ subdirectory of this skill.
Agent Execution Instructions:
- Determine this SKILL.md file's directory path as
SKILL_DIR - Script path =
${SKILL_DIR}/scripts/<script-name>.ts - Replace all
in this document with the actual path${SKILL_DIR}
Script Reference:
| Script | Purpose |
|---|---|
| CLI entry point for text/image generation |
| TypeScript port of (GeminiClient, types, utils) |
⚠️ Disclaimer (REQUIRED)
Before using this skill, the consent check MUST be performed.
Consent Check Flow
Step 1: Check consent file
# macOS cat ~/Library/Application\ Support/baoyu-skills/gemini-web/consent.json 2>/dev/null # Linux cat ~/.local/share/baoyu-skills/gemini-web/consent.json 2>/dev/null # Windows (PowerShell) Get-Content "$env:APPDATA\baoyu-skills\gemini-web\consent.json" 2>$null
Step 2: If consent exists and
accepted: true with matching disclaimerVersion: "1.0":
Print warning and proceed:
⚠️ Warning: Using reverse-engineered Gemini Web API (not official). Accepted on: <acceptedAt date>
Step 3: If consent file doesn't exist or
disclaimerVersion mismatch:
Display disclaimer and ask user:
⚠️ DISCLAIMER This tool uses a reverse-engineered Gemini Web API, NOT an official Google API. Risks: - May break without notice if Google changes their API - No official support or guarantees - Use at your own risk Do you accept these terms and wish to continue?
Use
AskUserQuestion tool with options:
- Yes, I accept - Continue and save consent
- No, I decline - Exit immediately
Step 4: On acceptance, create consent file:
# macOS mkdir -p ~/Library/Application\ Support/baoyu-skills/gemini-web cat > ~/Library/Application\ Support/baoyu-skills/gemini-web/consent.json << 'EOF' { "version": 1, "accepted": true, "acceptedAt": "<ISO timestamp>", "disclaimerVersion": "1.0" } EOF # Linux mkdir -p ~/.local/share/baoyu-skills/gemini-web cat > ~/.local/share/baoyu-skills/gemini-web/consent.json << 'EOF' { "version": 1, "accepted": true, "acceptedAt": "<ISO timestamp>", "disclaimerVersion": "1.0" } EOF
Step 5: On decline, output message and stop:
User declined the disclaimer. Exiting.
Quick start
npx -y bun ${SKILL_DIR}/scripts/main.ts "Hello, Gemini" npx -y bun ${SKILL_DIR}/scripts/main.ts --prompt "Explain quantum computing" npx -y bun ${SKILL_DIR}/scripts/main.ts --prompt "A cute cat" --image cat.png npx -y bun ${SKILL_DIR}/scripts/main.ts --promptfiles system.md content.md --image out.png # Multi-turn conversation (agent generates unique sessionId) npx -y bun ${SKILL_DIR}/scripts/main.ts "Remember this: 42" --sessionId my-unique-id-123 npx -y bun ${SKILL_DIR}/scripts/main.ts "What number?" --sessionId my-unique-id-123
Commands
Text generation
# Simple prompt (positional) npx -y bun ${SKILL_DIR}/scripts/main.ts "Your prompt here" # Explicit prompt flag npx -y bun ${SKILL_DIR}/scripts/main.ts --prompt "Your prompt here" npx -y bun ${SKILL_DIR}/scripts/main.ts -p "Your prompt here" # With model selection npx -y bun ${SKILL_DIR}/scripts/main.ts -p "Hello" -m gemini-2.5-pro # Pipe from stdin echo "Summarize this" | npx -y bun ${SKILL_DIR}/scripts/main.ts
Image generation
# Generate image with default path (./generated.png) npx -y bun ${SKILL_DIR}/scripts/main.ts --prompt "A sunset over mountains" --image # Generate image with custom path npx -y bun ${SKILL_DIR}/scripts/main.ts --prompt "A cute robot" --image robot.png # Shorthand npx -y bun ${SKILL_DIR}/scripts/main.ts "A dragon" --image=dragon.png
Vision input (reference images)
# Text + image -> text npx -y bun ${SKILL_DIR}/scripts/main.ts --prompt "Describe this image" --reference a.png # Text + image -> image npx -y bun ${SKILL_DIR}/scripts/main.ts --prompt "Generate a variation" --reference a.png --image out.png
Output formats
# Plain text (default) npx -y bun ${SKILL_DIR}/scripts/main.ts "Hello" # JSON output npx -y bun ${SKILL_DIR}/scripts/main.ts "Hello" --json
Options
| Option | Description |
|---|---|
, | Prompt text |
| Read prompt from files (concatenated in order) |
, | Model: gemini-3-pro (default), gemini-2.5-pro, gemini-2.5-flash |
| Generate image, save to path (default: generated.png) |
, | Reference images for vision input |
| Session ID for multi-turn conversation (agent generates unique ID) |
| List saved sessions (max 100, sorted by update time) |
| Output as JSON |
| Refresh cookies only, then exit |
| Custom cookie file path |
| Chrome profile directory |
, | Show help |
CLI note:
scripts/main.ts supports text generation, image generation, reference images (--reference/--ref), and multi-turn conversations via --sessionId.
Models
- Default, latest modelgemini-3-pro
- Previous generation progemini-2.5-pro
- Fast, lightweightgemini-2.5-flash
Authentication
First run opens a browser to authenticate with Google. Cookies are cached for subsequent runs.
Supported browsers (auto-detected in order):
- Google Chrome
- Google Chrome Canary / Beta
- Chromium
- Microsoft Edge
Override with
GEMINI_WEB_CHROME_PATH environment variable if needed.
# Force cookie refresh npx -y bun ${SKILL_DIR}/scripts/main.ts --login
Environment variables
| Variable | Description |
|---|---|
| Data directory |
| Cookie file path |
| Chrome profile directory |
| Chrome executable path |
Proxy Configuration
If you need a proxy to access Google services (e.g., in China), set
HTTP_PROXY and HTTPS_PROXY environment variables before running:
# Example with local proxy HTTP_PROXY=http://127.0.0.1:7890 HTTPS_PROXY=http://127.0.0.1:7890 npx -y bun ${SKILL_DIR}/scripts/main.ts "Hello" # Image generation with proxy HTTP_PROXY=http://127.0.0.1:7890 HTTPS_PROXY=http://127.0.0.1:7890 npx -y bun ${SKILL_DIR}/scripts/main.ts --prompt "A cat" --image cat.png # Cookie refresh with proxy HTTP_PROXY=http://127.0.0.1:7890 HTTPS_PROXY=http://127.0.0.1:7890 npx -y bun ${SKILL_DIR}/scripts/main.ts --login
Note: Environment variables must be set inline with the command. Shell profile settings (e.g.,
.bashrc) may not be inherited by subprocesses.
Examples
Generate text response
npx -y bun ${SKILL_DIR}/scripts/main.ts "What is the capital of France?"
Generate image
npx -y bun ${SKILL_DIR}/scripts/main.ts "A photorealistic image of a golden retriever puppy" --image puppy.png
Get JSON output for parsing
npx -y bun ${SKILL_DIR}/scripts/main.ts "Hello" --json | jq '.text'
Generate image from prompt files
# Concatenate system.md + content.md as prompt npx -y bun ${SKILL_DIR}/scripts/main.ts --promptfiles system.md content.md --image output.png
Multi-turn conversation
# Start a session with unique ID (agent generates this) npx -y bun ${SKILL_DIR}/scripts/main.ts "You are a helpful math tutor." --sessionId task-abc123 # Continue the conversation (remembers context) npx -y bun ${SKILL_DIR}/scripts/main.ts "What is 2+2?" --sessionId task-abc123 npx -y bun ${SKILL_DIR}/scripts/main.ts "Now multiply that by 10" --sessionId task-abc123 # List recent sessions (max 100, sorted by update time) npx -y bun ${SKILL_DIR}/scripts/main.ts --list-sessions
Session files are stored in
~/Library/Application Support/baoyu-skills/gemini-web/sessions/<id>.json and contain:
: Session IDid
: Gemini chat metadata for continuationmetadata
: Array ofmessages{role, content, timestamp, error?}
,createdAt
: TimestampsupdatedAt
Extension Support
Custom configurations via EXTEND.md.
Check paths (priority order):
(project).baoyu-skills/baoyu-danger-gemini-web/EXTEND.md
(user)~/.baoyu-skills/baoyu-danger-gemini-web/EXTEND.md
If found, load before workflow. Extension content overrides defaults.