Files
liaoxin-skills/skills/gemini-web-generate/SKILL.md
T

188 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: gemini-web-generate
description: "通过 Gemini 网页版生图。支持文生图、图生图(单张/多张参考图)、多轮对话生图、会话管理。底层使用 Puppeteer 驱动的 CLI 脚本自动化全流程。使用场景:(1) 用户要求用 Gemini 生成图片,(2) 用户说「Gemini 生图」,(3) 图生图 / 风格转换,(4) 继续已有 Gemini 生图对话。"
---
# Gemini 网页版生图
通过 Puppeteer 驱动的 CLI 脚本自动化 Gemini 网页生图全流程:打开标签页 → 导航 → 粘贴参考图 → 输入提示词 → 发送 → 等待生成 → 下载原图。
## 环境
| 组件 | 说明 |
|:---|:---|
| CLI 入口 | `scripts/cli.js` |
| Node 路径 | `/home/dazhi/.nvm/versions/node/v22.22.0/bin/node` |
| 浏览器 CDP | `http://127.0.0.1:9223`(由 `browser` 工具管理) |
## 安装部署
```bash
cd ~/.openclaw/skills/gemini-web-generate/scripts && npm install
```
安装后 `output/originals/``output/screenshots/` 会自动创建。
## 命令参数
以下 `<skill>` 指本 skill 的安装根目录(`~/.openclaw/skills/gemini-web-generate`)。
所有命令的 Node 和 CLI 路径使用绝对路径:
```bash
NODE="/home/dazhi/.nvm/versions/node/v22.22.0/bin/node"
CLI="<skill>/scripts/cli.js"
```
### generate — 生图
```bash
# 文生图
$NODE $CLI generate --prompt "一只可爱的猫" --mode single
# 图生图 — 单张参考图
$NODE $CLI generate --prompt "换成水墨风格" --image /path/to/ref.png --mode single
# 图生图 — 多张参考图(最多 10 张,逗号分隔)
$NODE $CLI generate --prompt "融合这些图片" --images "/path/a.png,/path/b.png" --mode single
# 从文件读取提示词(支持换行)
$NODE $CLI generate --prompt-file /path/to/prompt.txt --mode single
# 从管道读取提示词
echo "提示词" | $NODE $CLI generate --prompt stdin --mode single
# 通过对话链接继续生图
$NODE $CLI generate --chatUrl "https://gemini.google.com/app/xxxx" --prompt "换成晚上场景"
# 仅下载已有图片(chatUrl 不加 --prompt
$NODE $CLI generate --chatUrl "https://gemini.google.com/app/xxxx" --mode single
# 指定超时(毫秒)
$NODE $CLI generate --prompt "复杂提示词" --timeout 600000 --download-timeout 180000 --mode single
# 出错时自动截图诊断
$NODE $CLI generate --prompt "..." --screenshot --mode single
```
**参数说明**
| 参数 | 说明 | 默认值 |
|:---|:---|:---|
| `--prompt` | 提示词。设为 `"stdin"` 或管道传值可从标准输入读取 | 必填(含 `--chatUrl` 时可省略进入下载模式) |
| `--prompt-file` | 从文件读取提示词 | - |
| `--image` | 单张参考图路径 | - |
| `--images` | 多张参考图路径,逗号分隔,最多 10 张 | - |
| `--session` | 复用已有会话 | - |
| `--chatUrl` | 打开指定 Gemini 对话链接 | - |
| `--mode` | `single` 生成后关闭标签页,`multi` 保持打开 | `multi` |
| `--tool` | 发送前选择的工具名 | 制作图片 |
| `--timeout` | 生成超时(毫秒) | 300000 |
| `--download-timeout` | 下载超时(毫秒) | 120000 |
| `--screenshot` | 出错/超时时自动截图 | 关闭 |
| `--json` | NDJSON 模式输出 | 关闭 |
### status — 状态检查
```bash
# 立即返回当前状态
$NODE $CLI status --session <id>
# 持续轮询直到完成
$NODE $CLI status --session <id> --wait
# 带截图诊断
$NODE $CLI status --session <id> --wait --screenshot
```
状态值:`idle`(空闲)、`generating`(生成中)、`done`(完成)、`error`(异常)、`page_error`(页面崩溃)、`not_logged_in`(未登录)。
### download — 下载图片
```bash
# 下载全部新生成图片
$NODE $CLI download --session <id>
# 下载指定索引(从 0 开始)
$NODE $CLI download --session <id> --index 2
```
### 会话管理
```bash
# 列出所有活跃会话
$NODE $CLI sessions
# 通过对话链接找回丢失的 session
$NODE $CLI find_session --chatUrl "https://gemini.google.com/app/xxxx" --open
# 关闭指定会话
$NODE $CLI close --session <id>
```
## 标准生图流程
### 1. 确保浏览器已启动
```
browser action=start
```
### 2. 执行生图
默认使用 `--mode single`CLI 自动完成全流程并下载图片到 `<skill>/scripts/output/originals/`
```bash
$NODE $CLI generate --prompt "提示词" --mode single
```
### 3. 处理结果
**成功** — 移动图片到最终目录并清理:
```bash
LATEST=$(ls -t <skill>/scripts/output/originals/ | head -1)
mv "<skill>/scripts/output/originals/$LATEST" ~/.openclaw/workspace/media/generated/
# 清理已移动的文件
for f in Gemini_Generated_Image_*.png generated-*.png; do
[ -f "~/.openclaw/workspace/media/generated/$f" ] && rm "<skill>/scripts/output/originals/$f" 2>/dev/null
done
```
**超时或失败** — 用 status 检查:
```bash
$NODE $CLI status --session <id> --wait
```
- 返回 `done` → 执行 `$NODE $CLI download --session <id>` 手动下载
- 返回 `generating` → 继续等待
- 返回 `error` → 报告错误,建议修改提示词重试
**确认下载成功**:检查 `output/originals/` 目录,确认文件名和大小。
### 4. 发送图片
`message` 工具的 `media` 参数发送最终图片。
## 多轮对话
```bash
# 首轮(不加 --mode
$NODE $CLI generate --prompt "画一幅日落风景"
# 续次(不加 --mode
$NODE $CLI generate --session <id> --prompt "在画面中加入一艘小船"
# 末轮(--mode single 自动关闭)
$NODE $CLI generate --session <id> --prompt "最终调整" --mode single
```
⚠️ 续次不加 `--mode`。关闭:末轮加 `--mode single`,或 `close --session <id>`
## 注意事项
- 参考图路径不要包含空格 — shell 会把空格当参数分隔符。先 `cd` 到参考图目录再用相对路径
- `browser` 工具负责浏览器生命周期;CLI 只管 Gemini 交互