--- name: gemini-web-generate description: "Generate images through Gemini web interface via a Puppeteer CLI. Supports text-to-image, image-to-image (single/multi reference), multi-turn conversations, session management, and download-only mode. Use when: (1) User asks to generate images with Gemini, (2) User says 'Gemini 生图', (3) Image-to-image or style transfer, (4) Continuing an existing Gemini image conversation." --- # Gemini 网页版生图 通过 Puppeteer CLI (`scripts/cli.js`) 驱动 Gemini 网页完成生图全流程:打开标签页 → 导航 → 粘贴参考图 → 输入提示词 → 发送 → 等待生成 → 下载原图。 ## 环境 浏览器由 `browser` 工具管理(CDP: `http://127.0.0.1:9223`)。 首次使用需安装依赖: ```bash cd ~/.openclaw/skills/gemini-web-generate/scripts && npm install ``` 定义命令行别名(所有命令沿用此设定): ```bash NODE="/home/dazhi/.nvm/versions/node/v22.22.0/bin/node" CLI="scripts/cli.js" ``` ## 标准流程 ### 1. 启动浏览器 ``` browser action=start ``` ### 2. 生图 默认用 `--mode single`(生成后自动关闭标签页),CLI 自动下载图片到 `scripts/output/originals/`。 ```bash $NODE $CLI generate --prompt "提示词" --mode single ``` **带参考图**: ```bash $NODE $CLI generate --prompt "提示词" --image /path/to/ref.png --mode single $NODE $CLI generate --prompt "提示词" --images "/path/a.png,/path/b.png" --mode single ``` 参考图路径含空格时,先 `cd` 到目录再用相对路径。 ### 3. 收集结果 CLI 成功后将图片移动到工作区媒体目录: ```bash LATEST=$(ls -t scripts/output/originals/ | head -1) mv "scripts/output/originals/$LATEST" ~/.openclaw/workspace/media/generated/ ``` 然后用 `message` 工具发送。 ### 4. 失败处理 CLI 超时或报错时,检查会话状态: ```bash $NODE $CLI status --session --wait ``` | 状态 | 处理 | |:---|:---| | `done` | `$NODE $CLI download --session ` 手动下载 | | `generating` | 继续等待 | | `error` | 报告错误,调整提示词重试 | ## 其他生图方式 ### 多轮对话 ```bash # 首轮(不加 --mode,保持标签页打开) $NODE $CLI generate --prompt "画一幅日落风景" # 续次(不加 --mode) $NODE $CLI generate --session --prompt "加入一艘小船" # 末轮(--mode single 自动关闭) $NODE $CLI generate --session --prompt "最终调整" --mode single ``` ### 通过对话链接继续 ```bash $NODE $CLI generate --chatUrl "https://gemini.google.com/app/xxxx" --prompt "换成水彩风格" ``` ### 仅下载已有图片 对话中已有生成图片时,不加 `--prompt` 直接下载: ```bash $NODE $CLI generate --chatUrl "https://gemini.google.com/app/xxxx" --mode single ``` ### 从文件或管道读取提示词 ```bash $NODE $CLI generate --prompt-file /path/to/prompt.txt --mode single echo "提示词" | $NODE $CLI generate --prompt stdin --mode single ``` ## 会话管理 ```bash $NODE $CLI sessions # 列出活跃会话 $NODE $CLI find_session --chatUrl "" --open # 找回丢失的 session $NODE $CLI close --session # 关闭会话 ``` ## generate 参数参考 | 参数 | 说明 | 默认值 | |:---|:---|:---| | `--prompt` | 提示词。`"stdin"` 从标准输入读取 | 必填(与 `--chatUrl` 共用时可省略) | | `--prompt-file` | 从文件读取提示词 | - | | `--image` | 单张参考图 | - | | `--images` | 多张参考图,逗号分隔,最多 10 张 | - | | `--session` | 复用已有会话 ID | - | | `--chatUrl` | Gemini 对话链接 | - | | `--mode` | `single` 生成后关闭标签页 / `multi` 保持打开 | `multi` | | `--timeout` | 生成超时(毫秒) | 300000 | | `--download-timeout` | 下载超时(毫秒) | 120000 | | `--screenshot` | 出错/超时时自动截图 | 关闭 |