refine: SKILL.md 精简到底 — 111行,去除占位符/重复/冗余

This commit is contained in:
2026-05-14 23:09:14 +08:00
parent d7f0653b04
commit 761f2aeb94
+79 -132
View File
@@ -1,187 +1,134 @@
--- ---
name: gemini-web-generate name: gemini-web-generate
description: "通过 Gemini 网页版生图。支持文生图、图生图(单张/多张参考图)、多轮对话生图、会话管理。底层使用 Puppeteer 驱动的 CLI 脚本自动化全流程。使用场景:(1) 用户要求用 Gemini 生成图片,(2) 用户说「Gemini 生图」,(3) 图生图 / 风格转换,(4) 继续已有 Gemini 生图对话。" 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 网页版生图 # Gemini 网页版生图
通过 Puppeteer 驱动的 CLI 脚本自动化 Gemini 网页生图全流程:打开标签页 → 导航 → 粘贴参考图 → 输入提示词 → 发送 → 等待生成 → 下载原图。 通过 Puppeteer CLI (`scripts/cli.js`) 驱动 Gemini 网页完成生图全流程:打开标签页 → 导航 → 粘贴参考图 → 输入提示词 → 发送 → 等待生成 → 下载原图。
## 环境 ## 环境
| 组件 | 说明 | 浏览器由 `browser` 工具管理(CDP: `http://127.0.0.1:9223`)。
|:---|:---|
| CLI 入口 | `scripts/cli.js` |
| Node 路径 | `/home/dazhi/.nvm/versions/node/v22.22.0/bin/node` |
| 浏览器 CDP | `http://127.0.0.1:9223`(由 `browser` 工具管理) |
## 安装部署 首次使用需安装依赖:
```bash ```bash
cd ~/.openclaw/skills/gemini-web-generate/scripts && npm install cd ~/.openclaw/skills/gemini-web-generate/scripts && npm install
``` ```
安装后 `output/originals/``output/screenshots/` 会自动创建。 定义命令行别名(所有命令沿用此设定):
## 命令参数
以下 `<skill>` 指本 skill 的安装根目录(`~/.openclaw/skills/gemini-web-generate`)。
所有命令的 Node 和 CLI 路径使用绝对路径:
```bash ```bash
NODE="/home/dazhi/.nvm/versions/node/v22.22.0/bin/node" NODE="/home/dazhi/.nvm/versions/node/v22.22.0/bin/node"
CLI="<skill>/scripts/cli.js" CLI="scripts/cli.js"
``` ```
### generate — 生图 ## 标准流程
```bash ### 1. 启动浏览器
# 文生图
$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 browser action=start
``` ```
### 2. 执行生图 ### 2. 生图
默认使`--mode single`CLI 自动完成全流程并下载图片到 `<skill>/scripts/output/originals/` 默认用 `--mode single`(生成后自动关闭标签页)CLI 自动下载图片到 `scripts/output/originals/`
```bash ```bash
$NODE $CLI generate --prompt "提示词" --mode single $NODE $CLI generate --prompt "提示词" --mode single
``` ```
### 3. 处理结果 **带参考图**
**成功** — 移动图片到最终目录并清理:
```bash ```bash
LATEST=$(ls -t <skill>/scripts/output/originals/ | head -1) $NODE $CLI generate --prompt "提示词" --image /path/to/ref.png --mode single
mv "<skill>/scripts/output/originals/$LATEST" ~/.openclaw/workspace/media/generated/ $NODE $CLI generate --prompt "提示词" --images "/path/a.png,/path/b.png" --mode single
# 清理已移动的文件
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 检查: 参考图路径含空格时,先 `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 ```bash
$NODE $CLI status --session <id> --wait $NODE $CLI status --session <id> --wait
``` ```
- 返回 `done` → 执行 `$NODE $CLI download --session <id>` 手动下载 | 状态 | 处理 |
- 返回 `generating` → 继续等待 |:---|:---|
- 返回 `error` → 报告错误,建议修改提示词重试 | `done` | `$NODE $CLI download --session <id>` 手动下载 |
| `generating` | 继续等待 |
| `error` | 报告错误,调整提示词重试 |
**确认下载成功**:检查 `output/originals/` 目录,确认文件名和大小。 ## 其他生图方式
### 4. 发送图片 ### 多轮对话
`message` 工具的 `media` 参数发送最终图片。
## 多轮对话
```bash ```bash
# 首轮(不加 --mode # 首轮(不加 --mode,保持标签页打开
$NODE $CLI generate --prompt "画一幅日落风景" $NODE $CLI generate --prompt "画一幅日落风景"
# 续次(不加 --mode # 续次(不加 --mode
$NODE $CLI generate --session <id> --prompt "在画面中加入一艘小船" $NODE $CLI generate --session <id> --prompt "加入一艘小船"
# 末轮(--mode single 自动关闭) # 末轮(--mode single 自动关闭)
$NODE $CLI generate --session <id> --prompt "最终调整" --mode single $NODE $CLI generate --session <id> --prompt "最终调整" --mode single
``` ```
⚠️ 续次不加 `--mode`。关闭:末轮加 `--mode single`,或 `close --session <id>` ### 通过对话链接继续
## 注意事项 ```bash
$NODE $CLI generate --chatUrl "https://gemini.google.com/app/xxxx" --prompt "换成水彩风格"
```
- 参考图路径不要包含空格 — shell 会把空格当参数分隔符。先 `cd` 到参考图目录再用相对路径 ### 仅下载已有图片
- `browser` 工具负责浏览器生命周期;CLI 只管 Gemini 交互
对话中已有生成图片时,不加 `--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 "<url>" --open # 找回丢失的 session
$NODE $CLI close --session <id> # 关闭会话
```
## generate 参数参考
| 参数 | 说明 | 默认值 |
|:---|:---|:---|
| `--prompt` | 提示词。`"stdin"` 从标准输入读取 | 必填(与 `--chatUrl` 共用时可省略) |
| `--prompt-file` | 从文件读取提示词 | - |
| `--image` | 单张参考图 | - |
| `--images` | 多张参考图,逗号分隔,最多 10 张 | - |
| `--session` | 复用已有会话 ID | - |
| `--chatUrl` | Gemini 对话链接 | - |
| `--mode` | `single` 生成后关闭标签页 / `multi` 保持打开 | `multi` |
| `--timeout` | 生成超时(毫秒) | 300000 |
| `--download-timeout` | 下载超时(毫秒) | 120000 |
| `--screenshot` | 出错/超时时自动截图 | 关闭 |