From d7f0653b049cb10095676653e915afae1fa6836d Mon Sep 17 00:00:00 2001 From: liaoxin Date: Thu, 14 May 2026 23:05:34 +0800 Subject: [PATCH] =?UTF-8?q?refine:=20SKILL.md=20=E7=B2=BE=E7=AE=80?= =?UTF-8?q?=E9=87=8D=E6=9E=84=EF=BC=8C=E5=89=A5=E7=A6=BB=E6=99=BA=E8=83=BD?= =?UTF-8?q?=E4=BD=93=E4=B9=A0=E6=83=AF=E7=B1=BB=E8=A7=84=E5=88=99=EF=BC=8C?= =?UTF-8?q?=E4=BF=9D=E7=95=99=E6=8A=80=E8=83=BD=E6=A0=B8=E5=BF=83=E6=8C=87?= =?UTF-8?q?=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- skills/gemini-web-generate/SKILL.md | 172 ++++++++++++---------------- 1 file changed, 75 insertions(+), 97 deletions(-) diff --git a/skills/gemini-web-generate/SKILL.md b/skills/gemini-web-generate/SKILL.md index 48a884c..e5b9ff7 100644 --- a/skills/gemini-web-generate/SKILL.md +++ b/skills/gemini-web-generate/SKILL.md @@ -5,9 +5,9 @@ description: "通过 Gemini 网页版生图。支持文生图、图生图(单 # Gemini 网页版生图 -通过 Puppeteer 驱动的 CLI 脚本自动化 Gemini 网页生图全流程:打开标签页 → 导航 → 粘贴参考图 → 输入提示词 → 发送 → 等待生成 → 下载原图 → 清理。 +通过 Puppeteer 驱动的 CLI 脚本自动化 Gemini 网页生图全流程:打开标签页 → 导航 → 粘贴参考图 → 输入提示词 → 发送 → 等待生成 → 下载原图。 -## 组件 +## 环境 | 组件 | 说明 | |:---|:---| @@ -15,100 +15,92 @@ description: "通过 Gemini 网页版生图。支持文生图、图生图(单 | Node 路径 | `/home/dazhi/.nvm/versions/node/v22.22.0/bin/node` | | 浏览器 CDP | `http://127.0.0.1:9223`(由 `browser` 工具管理) | -## 部署 - -首次使用前需安装依赖: +## 安装部署 ```bash -cd /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 NODE="/home/dazhi/.nvm/versions/node/v22.22.0/bin/node" CLI="/scripts/cli.js" ``` -### 文生图 +### generate — 生图 ```bash -$NODE $CLI generate --prompt "一只可爱的猫,水彩风格" --mode single -``` +# 文生图 +$NODE $CLI generate --prompt "一只可爱的猫" --mode single -### 图生图 - -```bash -# 单张参考图 +# 图生图 — 单张参考图 $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 -``` +# 图生图 — 多张参考图(最多 10 张,逗号分隔) +$NODE $CLI generate --prompt "融合这些图片" --images "/path/a.png,/path/b.png" --mode single -### 从文件或管道读取提示词 - -```bash -# 从文件读取(支持换行) +# 从文件读取提示词(支持换行) $NODE $CLI generate --prompt-file /path/to/prompt.txt --mode single -# 从管道读取 -echo "复杂的多行提示词..." | $NODE $CLI generate --prompt stdin --mode single -``` +# 从管道读取提示词 +echo "提示词" | $NODE $CLI generate --prompt stdin --mode single -### 多轮对话生图 +# 通过对话链接继续生图 +$NODE $CLI generate --chatUrl "https://gemini.google.com/app/xxxx" --prompt "换成晚上场景" -```bash -# 首轮(不加 --mode,标签页保持打开) -$NODE $CLI generate --prompt "画一幅日落风景" - -# 续次(不加 --mode,可传入新的参考图) -$NODE $CLI generate --session --prompt "在画面中加入一艘小船" -$NODE $CLI generate --session --prompt "换成夜晚风格" --image /path/to/ref.png - -# 末轮(加 --mode single,自动关闭标签页) -$NODE $CLI generate --session --prompt "最终调整" --mode single -``` - -⚠️ 续次不要加 `--mode`,保持标签页打开。关闭方式二选一:末轮加 `--mode single` 自动关,或用 `close` 命令手动关。 - -### 通过对话链接继续 - -```bash -$NODE $CLI generate --chatUrl "https://gemini.google.com/app/xxxx" --prompt "换成水彩风格" -``` - -### 仅下载已有图片(不生成新图) - -打开已有生图对话,直接下载所有已生成的图片,不发送新提示词: - -```bash +# 仅下载已有图片(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` 即进入纯下载模式,自动下载对话中所有已生成图片后关闭标签页。 +**参数说明**: -### 状态与诊断 +| 参数 | 说明 | 默认值 | +|:---|:---|:---| +| `--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 -# 持续轮询直到完成(适用于 CLI 超时后确认是否后台还在生成) +# 持续轮询直到完成 $NODE $CLI status --session --wait # 带截图诊断 $NODE $CLI status --session --wait --screenshot ``` -状态返回值:`idle`(空闲)、`generating`(生成中)、`done`(完成)、`error`(异常)、`page_error`(页面崩溃)、`not_logged_in`(未登录)。 +状态值:`idle`(空闲)、`generating`(生成中)、`done`(完成)、`error`(异常)、`page_error`(页面崩溃)、`not_logged_in`(未登录)。 -### 下载 +### download — 下载图片 ```bash -# 下载新生成的所有图片 +# 下载全部新生成图片 $NODE $CLI download --session # 下载指定索引(从 0 开始) @@ -138,72 +130,58 @@ browser action=start ### 2. 执行生图 -默认使用 `--mode single`(生成后自动关闭标签页)。仅多轮对话时不加 `--mode`。 +默认使用 `--mode single`,CLI 自动完成全流程并下载图片到 `/scripts/output/originals/`。 ```bash -NODE="/home/dazhi/.nvm/versions/node/v22.22.0/bin/node" -CLI="/scripts/cli.js" - $NODE $CLI generate --prompt "提示词" --mode single ``` -CLI 自动完成:创建标签页 → 导航 Gemini → 粘贴参考图 → 输入提示词 → 发送 → 等待生成 → 下载到 `output/originals/` → 关闭标签页(single 模式)。 - -超时默认值:生成 300 秒(5 分钟),下载 120 秒。 - -推荐加 `--screenshot`:出错或超时时自动截图保存,便于诊断。 - ### 3. 处理结果 -**成功时**:移动图片到最终目录并清理: +**成功** — 移动图片到最终目录并清理: ```bash -# 移动最新生成的图片 LATEST=$(ls -t /scripts/output/originals/ | head -1) mv "/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 "/scripts/output/originals/$f" 2>/dev/null done ``` -**超时或失败时**:用 status 命令检查: +**超时或失败** — 用 status 检查: ```bash $NODE $CLI status --session --wait ``` - 返回 `done` → 执行 `$NODE $CLI download --session ` 手动下载 -- 返回 `generating` → 继续等待(`--wait` 会自动轮询) +- 返回 `generating` → 继续等待 - 返回 `error` → 报告错误,建议修改提示词重试 -**确认下载成功**:下载后必须检查 `output/originals/` 目录,确认文件名和文件大小。 +**确认下载成功**:检查 `output/originals/` 目录,确认文件名和大小。 ### 4. 发送图片 -用 `message` 工具的 `media` 参数发送最终图片。不要用截图预览——CLI 下载的是原图。 +用 `message` 工具的 `media` 参数发送最终图片。 -## 关键规则 +## 多轮对话 -1. **浏览器管理**用 `browser` 工具,CLI 只负责 Gemini 交互 -2. **所有路径用绝对路径**:node 路径、CLI 路径都用明确的值 -3. **默认单次生图**:所有生图请求默认加 `--mode single`,生成后自动关闭标签页 -4. **多轮续次不加 mode**:续次不加 `--mode`。关闭:末轮加 `--mode single` 自动关,或 `close --session ` 手动关 -5. **不需要 `--json`**:直接读 CLI 文本输出即可 -6. **参考图路径处理**(⚠️ 重要教训): - - ❌ 不要直接用带空格的绝对路径 — shell 会把空格当参数分隔符 - - ✅ 先 `cd` 到参考图目录,用相对路径 - - ✅ 用 `ls | grep` 动态获取文件名,避免手动写带空格的路径 - ```bash - cd /home/dazhi/.openclaw/workspace/media/参考图/ - FILE1=$(ls | grep -v "^[0-9]" | head -1) - FILE2=$(ls | grep -v "^[0-9]" | head -2 | tail -1) - $NODE $CLI generate --prompt "..." --images "$FILE1,$FILE2" --mode single - ``` -7. **不要用带序号的参考图**(如 `01-xxx.jpg`)— Gemini 会因重复使用而限流 -8. **失败 3 次后停下来检查** — 不要盲目重试,先排查路径/Gemini 状态/限流原因 -9. **下载后立即移动**到 `media/generated/`,并清理 originals 中的副本 -10. **生成完成后初步检查图片内容**:确认内容符合预期再发送给用户 -11. **参考图限流**:同一批参考图重复使用多次后 Gemini 可能只回文字,换新参考图或间隔一段时间再试 -12. **善用 `--screenshot`**:出错或超时自动截图,快速定位问题 +```bash +# 首轮(不加 --mode) +$NODE $CLI generate --prompt "画一幅日落风景" + +# 续次(不加 --mode) +$NODE $CLI generate --session --prompt "在画面中加入一艘小船" + +# 末轮(--mode single 自动关闭) +$NODE $CLI generate --session --prompt "最终调整" --mode single +``` + +⚠️ 续次不加 `--mode`。关闭:末轮加 `--mode single`,或 `close --session `。 + +## 注意事项 + +- 参考图路径不要包含空格 — shell 会把空格当参数分隔符。先 `cd` 到参考图目录再用相对路径 +- `browser` 工具负责浏览器生命周期;CLI 只管 Gemini 交互