通过 CDP 操控 Gemini 网页版,实现 AI 生图、对话、图片提取等自动化操作。
Gemini Skill
快速开始
·
报告 Bug
·
提出新特性
English | 中文
「剥开了尖刺 却正如你曾经说
赖以生存的温柔只是白纸
盛着破碎的梦和我们的故事」
目录
▲ 通过 AI 对话自动生成表情包
🆕 最新更新
v1.1.1(2026-05)— 适配新版模型菜单 UI:
- ✅ 模型枚举更新:
pro / flash / flash-lite(替换旧的 pro / quick / think)
- ✅ 当前模型读取改为
.picker-primary-text innerText
- ✅ 模型切换改为遍历菜单项 + label 文本匹配(i18n 安全)
- 🆕 新增思考深度切换:
getThinkingDepth() / setThinkingDepth('standard'|'extended')
- 🆕 新增 MCP 工具
gemini_set_thinking_depth
v1.1.0(2026-05)— 已适配 Gemini 2026 年 5 月最新版 UI:
- ✅ 加号面板按钮(
gem-icon-button[arialabel="上传和工具"])
- ✅ 发送按钮(
gem-icon-button.send-button)
- ✅ 下载完整尺寸按钮(
download-generated-image-button 自定义元素)
- ✅ 图片上传完成检测(
.gem-attachment-content.loading)
- ✅ 状态判断兼容新 UI 的
gem-icon-button 包装层
- ♻️ 全部选择器保留旧 UI 兜底,新旧版本均可工作
☁️ Atlas Cloud Provider
Atlas Cloud 是一个 full-modal AI inference platform,为开发者提供统一 AI API,可一站式访问视频生成、图像生成和 LLM API。接入一次,即可统一访问跨模态的 300+ 精选模型。
官方链接:https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=gemini-skill
Atlas Cloud 现提供新的 coding plan 优惠入口,便于更低成本接入 API:
https://www.atlascloud.ai/console/coding-plan
本仓库现在内置了一个最小侵入的 Atlas Cloud provider 方案:
- 不改动原有 Gemini 浏览器自动化主链路
- 新增 OpenAI 兼容的 Atlas Cloud API provider
- 支持模型枚举、普通对话、Streaming 对话验证
- 适合把本项目同时作为 Gemini 自动化 skill + MaaS provider 接入样例
☁️ 懒得配环境?让 gemini-skill 跑在云上
不用装 Node、不用搭环境——在 Bloome 上点一下,gemini-skill 就能在云端跑起来,浏览器和手机都行。
Bloome 是一个 AI Agent IM 平台:把多个 AI agent(Claude、ChatGPT、Gemini、DeepSeek 等)放进同一个对话,像团队成员一样协作——自动分工、互相交接、交叉校验,把结果打磨到靠谱为止,还能直接在对话里出图、生成文档和可视化看板。喜欢用 gemini-skill 画图的话,正好让这支 agent 团队帮你把「想法 → 提示词 → 成图」整条链路跑顺。
配好的 agent 还能一键分享给朋友、或拉进群一起用,每个人都无需各自部署——零配置、开箱即用,云端随时可跑。👉 立即体验 Bloome
✨ 功能特性
| 功能 | 说明 |
|---|
| 🎨 | AI 生图 | 发送 prompt 自动生成图片,支持高清原图下载 |
| 💬 | 文本对话 | 与 Gemini 进行多轮对话 |
| 🖼️ | 图片上传 | 上传参考图片,基于参考图生成新图 |
| 📥 | 图片提取 | 提取会话中的图片,支持 base64 和 CDP 完整尺寸下载 |
| 🔄 | 会话管理 | 新建会话、临时会话、切换模型、导航到历史会话 |
| 🧹 | 自动去水印 | 下载的图片自动移除 Gemini 水印 |
| 🤖 | MCP Server | 标准 MCP 协议接口,可被任何 MCP 客户端调用 |
| ☁️ | Atlas Cloud Provider | 新增 OpenAI 兼容 Provider,支持模型枚举、文本生成和流式响应验证 |
🏗️ 架构
┌─────────────────────────────────────────────────────┐
│ MCP Client (AI) │
│ Claude / CodeBuddy / ... │
└──────────────────────┬──────────────────────────────┘
│ stdio (JSON-RPC)
▼
┌─────────────────────────────────────────────────────┐
│ mcp-server.js (MCP 协议层) │
│ 注册所有 MCP 工具,编排调用流程 │
└──────────────────────┬──────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────┐
│ index.js → browser.js (连接层) │
│ ensureBrowser() → 自动拉起 Daemon → CDP 直连 │
└──────────┬──────────────────────────────┬───────────┘
│ HTTP (acquire/status) │ WebSocket (CDP)
▼ ▼
┌──────────────────────┐ ┌─────────────────────────┐
│ Browser Daemon │ │ Chrome / Edge │
│ (独立后台进程) │───▶│ gemini.google.com │
│ daemon/server.js │ │ │
│ ├─ engine.js │ │ Stealth + 反爬检测 │
│ ├─ handlers.js │ └─────────────────────────┘
│ └─ lifecycle.js │
│ 30 分钟惰性销毁 │
└──────────────────────┘
核心设计理念:
- Daemon 模式 — 浏览器进程由独立 Daemon 管理,MCP 调用结束后浏览器不关闭,30 分钟无活动才自动释放
- 按需自启 — Daemon 未运行时 MCP 工具会自动拉起,无需手动启动
- Stealth 反爬 — 使用
puppeteer-extra-plugin-stealth 绕过网站检测
- 职责分离 —
mcp-server.js(协议层)→ gemini-ops.js(操作层)→ browser.js(连接层)→ daemon/(进程管理)
📦 安装
前置条件
- Node.js ≥ 18
- Chrome / Edge / Chromium — 系统上需安装任一浏览器(或通过
BROWSER_PATH 指定路径)
- 浏览器需提前 登录 Google 账号(Gemini 需要登录才能使用)
安装依赖
git clone https://github.com/WJZ-P/gemini-skill.git
cd gemini-skill
npm install
⚙️ 配置
所有配置通过环境变量或 .env 文件设置。项目根目录已提供 .env 模板,可直接修改。
配置优先级: process.env > .env.development > .env > 代码默认值
.env.development 不会被 git 追踪,适合存放本地私有配置(如浏览器路径)。
浏览器配置
| 变量 | 默认值 | 说明 |
|---|
BROWSER_PATH | 自动检测 | 浏览器可执行文件路径,支持 Chrome / Edge / Chromium。不设则自动按优先级检测系统已安装的浏览器 |
BROWSER_DEBUG_PORT | 40821 | CDP 远程调试端口。多个 skill(如 douyin-upload-mcp-skill)共享同一端口即共享同一浏览器实例 |
BROWSER_HEADLESS | false | 是否无头模式。首次使用建议关闭(false),方便登录 Google 账号 |
BROWSER_USER_DATA_DIR | 自动解析 | 浏览器用户数据目录,保存登录态、cookies 等。不设则自动解析:~/.wjz_browser_data → 浏览器默认目录 |
BROWSER_PROTOCOL_TIMEOUT | 60000 | CDP 协议超时时间(毫秒)。生图等长操作可适当增大 |
Daemon 配置
| 变量 | 默认值 | 说明 |
|---|
DAEMON_PORT | 40225 | Daemon HTTP 服务端口 |
DAEMON_TTL_MS | 1800000 | 闲置超时时间(毫秒),默认 30 分钟。超时后自动关闭浏览器并退出 Daemon,下次调用时自动重新拉起 |
其他配置
| 变量 | 默认值 | 说明 |
|---|
OUTPUT_DIR | ./gemini-image | 图片输出目录 |
ATLAS_BASE_URL | https://api.atlascloud.ai/v1 | Atlas Cloud OpenAI 兼容接口基础地址 |
ATLAS_API_KEY | 空 | Atlas Cloud API Key,建议写入 .env.development |
ATLAS_MODEL | openai/gpt-4o-mini | Atlas Cloud 默认模型 |
ATLAS_REQUEST_TIMEOUT_MS | 60000 | Atlas Cloud 请求超时(毫秒) |
关于 OpenClaw 浏览器复用
OpenClaw 的默认 CDP 端口是 18800。如果你希望复用 OpenClaw 已启动的浏览器会话,可以将 BROWSER_DEBUG_PORT 改为 18800:
但请注意:OpenClaw 自带的浏览器会话没有集成 Stealth 反爬插件,在反检测能力上不如本项目自行维护的浏览器实例。本项目使用 puppeteer-extra-plugin-stealth 提供了完整的反爬保护(隐藏 webdriver 标记、模拟真实浏览器指纹等),能更好地规避网站的自动化检测。
建议:除非有特殊需求,推荐使用默认端口 40821,让项目自行管理浏览器实例以获得最佳的反爬效果。
☁️ Atlas Cloud Provider
配置
推荐将本地私有 Key 写入 .env.development:
ATLAS_API_KEY=your_atlas_api_key
ATLAS_BASE_URL=https://api.atlascloud.ai/v1
ATLAS_MODEL=openai/gpt-4o-mini
ATLAS_REQUEST_TIMEOUT_MS=60000
能力说明
atlas_list_models:列出当前 API Key 可见模型
atlas_send_message:调用非流式文本对话
atlas_stream_message:消费 Atlas 流式输出并聚合返回,便于做集成验证
设计原则
- 走纯 API,不依赖浏览器和 Gemini 登录态
- 保持对 Atlas Cloud OpenAI 兼容格式的直接透传
- 不破坏现有
gemini_* MCP 工具和调用方式
🚀 使用
方式一:作为 MCP Server(推荐)
在 MCP 客户端配置文件中添加:
{
"mcpServers": {
"gemini": {
"command": "node",
"args": ["<项目绝对路径>/src/mcp-server.js"]
}
}
}
启动后 AI 即可通过 MCP 协议调用所有工具。
方式二:命令行启动
# 启动 MCP Server(stdio 模式,供 AI 客户端调用)
npm run mcp
# 单独启动 Browser Daemon(通常不需要,MCP 会自动拉起)
npm run daemon
# 运行 Demo 示例
npm run demo
方式三:作为库调用
import { createGeminiSession, disconnect } from './src/index.js';
const { ops } = await createGeminiSession();
// 生图
const result = await ops.generateImage('画一只可爱的猫咪', { fullSize: true });
console.log('图片保存至:', result.filePath);
// 用完断开(不关浏览器,由 Daemon 继续守护)
disconnect();
方式四:调用 Atlas Cloud Provider
import { createAtlasProvider } from './src/index.js';
const atlas = createAtlasProvider();