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

5.8 KiB
Raw Blame History

name, description
name description
gemini-web-generate 通过 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 工具管理)

安装部署

cd ~/.openclaw/skills/gemini-web-generate/scripts && npm install

安装后 output/originals/output/screenshots/ 会自动创建。

命令参数

以下 <skill> 指本 skill 的安装根目录(~/.openclaw/skills/gemini-web-generate)。

所有命令的 Node 和 CLI 路径使用绝对路径:

NODE="/home/dazhi/.nvm/versions/node/v22.22.0/bin/node"
CLI="<skill>/scripts/cli.js"

generate — 生图

# 文生图
$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 — 状态检查

# 立即返回当前状态
$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 — 下载图片

# 下载全部新生成图片
$NODE $CLI download --session <id>

# 下载指定索引(从 0 开始)
$NODE $CLI download --session <id> --index 2

会话管理

# 列出所有活跃会话
$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 singleCLI 自动完成全流程并下载图片到 <skill>/scripts/output/originals/

$NODE $CLI generate --prompt "提示词" --mode single

3. 处理结果

成功 — 移动图片到最终目录并清理:

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 检查:

$NODE $CLI status --session <id> --wait
  • 返回 done → 执行 $NODE $CLI download --session <id> 手动下载
  • 返回 generating → 继续等待
  • 返回 error → 报告错误,建议修改提示词重试

确认下载成功:检查 output/originals/ 目录,确认文件名和大小。

4. 发送图片

message 工具的 media 参数发送最终图片。

多轮对话

# 首轮(不加 --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 交互