Files
gemini-skill/SKILL.md

146 lines
6.0 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-skill
description: 通过 Gemini 官网gemini.google.com执行生图、对话等操作。用户提到"生图/画图/绘图/nano banana/nanobanana/生成图片"等关键词时触发。操作方式分三级优先级:首选 MCP 工具 → 次选 Skill 脚本 → 最次连接 Skill 浏览器手动操作(需用户授权)。禁止自行启动外部浏览器访问 Gemini。
---
# Gemini Skill
## ⚠️ 操作优先级(必须遵守)
与 Gemini 的一切交互,按以下优先级选择方式:
1. **🥇 首选:调用 MCP 工具** — 直接调用本 Skill 暴露的 MCP 工具完成操作,覆盖绝大多数场景
2. **🥈 次选:运行 Skill 脚本** — 当 MCP 工具无法满足需求时,可运行本 Skill 项目中提供的脚本来完成
3. **🥉 最次:连接 Skill 管理的浏览器** — 仅当前两种方式都无法解决时,可通过 `gemini_browser_info` 获取 CDP 连接信息,主动连接到本 Skill 管理的浏览器进行操作。**此方式必须先征得用户同意**
**绝对禁止**:自行启动新的浏览器实例访问 Gemini 页面(如使用 OpenClaw 浏览器、另起 Puppeteer 等),这会导致会话冲突。
> 浏览器 Daemon 未运行时 MCP 工具会自动拉起,无需任何手动操作。
## 📡 进度同步
MCP 工具调用(尤其是生图、等待回复等)可能耗时较长。**每隔 15 秒必须主动向用户发送一条进度消息**,告知当前操作状态(如"正在等待 Gemini 生成图片…"、"图片仍在加载中,已等待 30 秒…"),避免用户长时间挂起收不到任何反馈。
## 触发关键词
- **生图任务**`生图``画``绘图``海报``nano banana``nanobanana``image generation``生成图片`
- 若请求含糊,先确认用户是否需要生图
## 使用方式
本 Skill 通过 MCP Server 暴露工具AI 直接调用即可。
浏览器启动、会话管理、图片提取、文件保存等流程已全部封装在工具内部。
### ⚠️ 强制规则
> **AI 必须始终通过 MCP 工具完成所有操作。**
>
> 禁止绕过 MCP 自行编写临时脚本(如 `node -e "..."` 或创建 `.js` 临时文件)来
> `import` / `require` 本项目导出的函数(如 `createGeminiSession`、`createOps` 等)。
>
> 如果 MCP 工具确实无法满足当前需求AI **必须先向用户说明原因并获得明确同意**
> 才能编写临时脚本调用底层 API。未经用户同意一律禁止。
### 可用工具
**核心生图(封装完整流程):**
| 工具名 | 说明 | 入参 |
|--------|------|------|
| `gemini_generate_image` | 完整生图流程新建会话→发prompt→等待→提取图片→保存本地 | `prompt``newSession`默认false`referenceImages`(参考图路径数组,默认空) |
**会话管理:**
| 工具名 | 说明 | 入参 |
|--------|------|------|
| `gemini_new_chat` | 新建一个空白对话 | 无 |
| `gemini_temp_chat` | 进入临时对话模式(不保留历史记录) | 无 |
**模型切换:**
| 工具名 | 说明 | 入参 |
|--------|------|------|
| `gemini_switch_model` | 切换 Gemini 模型 | `model``pro` / `quick` / `think` |
**文本对话:**
| 工具名 | 说明 | 入参 |
|--------|------|------|
| `gemini_send_message` | 发送文本消息并等待回答完成 | `message``timeout`默认120000ms |
**图片操作:**
| 工具名 | 说明 | 入参 |
|--------|------|------|
| `gemini_upload_images` | 上传图片到输入框(仅上传不发送,可配合 send_message | `images`(路径数组) |
| `gemini_get_images` | 获取会话中所有已加载图片的元信息 | 无 |
| `gemini_extract_image` | 提取指定图片的 base64 并保存到本地 | `imageUrl`(从 get_images 获取) |
| `gemini_download_full_size_image` | 下载完整尺寸的高清图片,默认最新一张,可指定索引 | `index`可选从0开始从旧到新 |
**文字回复提取:**
| 工具名 | 说明 | 入参 |
|--------|------|------|
| `gemini_get_all_text_responses` | 获取会话中所有文字回复(仅文字,不含图片) | 无 |
| `gemini_get_latest_text_response` | 获取最新一条文字回复 | 无 |
**登录状态:**
| 工具名 | 说明 | 入参 |
|--------|------|------|
| `gemini_check_login` | 检查是否已登录 Google 账号 | 无 |
**诊断 & 恢复:**
| 工具名 | 说明 | 入参 |
|--------|------|------|
| `gemini_probe` | 探测页面各元素状态(输入框、按钮、模型等) | 无 |
| `gemini_reload_page` | 刷新页面(卡住或异常时使用) | `timeout`默认30000ms |
| `gemini_browser_info` | 获取浏览器连接信息CDP 端口、wsEndpoint 等) | 无 |
### 典型用法
**快速生图(一步到位):**
1. 调用 `gemini_generate_image`,传入 prompt → 返回本地图片路径
**灵活组合(细粒度控制):**
1. `gemini_new_chat` — 新建会话
2. `gemini_switch_model``pro` — 切换到高质量模型
3. `gemini_upload_images` — 上传参考图
4. `gemini_send_message` — 发送描述词
5. `gemini_get_images``gemini_extract_image` — 获取并保存图片
**排障:**
1. `gemini_probe` — 看看页面元素有没有就位
2. `gemini_reload_page` — 页面卡了就刷新
3. `gemini_browser_info` — 获取 CDP 信息自行连接调试
## MCP 客户端配置
```json
{
"mcpServers": {
"gemini": {
"command": "node",
"args": ["<项目绝对路径>/src/mcp-server.js"]
}
}
}
```
也可通过 `npm run mcp` 手动启动。
## 失败处理
工具内部已包含重试逻辑。若仍然失败,返回值的 `isError: true` 和错误信息会告知原因:
- **生成超时** — 建议用户简化描述词后重试
- **Daemon 未启动** — 工具会自动拉起,若仍失败可手动 `npm run daemon`
- **页面异常** — 可调用 `gemini_browser_info` 查看浏览器状态排查
## 参考
- 详细执行与回退:`references/gemini-flow.md`
- 关键词与路由:`references/intent-routing.md`