用途:从用户已登录的 Chrome 会话中下载 Google Gemini 对话/聊天页面里的图片,包括用户上传的图片和可见的生成图片预览,并可将结果打包为 ZIP。
主要能力:优先抓取灯箱(lightbox)中的大图,而非缩略图或页面预览资源,因为 Gemini 通常只在用户打开预览后才暴露更大的 blob 图片。下载后按顺序命名(image_01.jpg、image_02.jpg 等),并可用打包脚本生成 ZIP、执行 zip -T 校验,并核对压缩包与目录中图片文件顺序一致。
使用方式:需使用 Chrome 插件而非全新未登录浏览器,因为 Gemini 对话通常依赖用户已有的 Google 会话。按 Chrome 技能初始化 Chrome,认领已打开的 Gemini 标签页,或在 Chrome 中打开用户提供的 Gemini URL。在浏览器可用后,通过 node_repl 的 JS 调用导入并运行 scripts/download_gemini_images.mjs,例如:var { downloadGeminiImagesFromChrome } = await import("/absolute/path/to/download-gemini-images/scripts/download_gemini_images.mjs"); 然后调用 downloadGeminiImagesFromChrome({ browser, tabUrlIncludes: "gemini.google.com/app", expectedCount: 20, outputDir: ... })。仅在用户给出具体数量时设置 expectedCount,省略则下载所有可见的“Show the uploaded image in a lightbox”按钮对应图片。之后运行 scripts/package_images.sh "$outputDir" "$HOME/Downloads/gemini_conversation_images.zip" 打包。完成后报告 ZIP 路径、图片数量及是否使用了低分辨率回退,并结束 Chrome 控制,适当保留用户原 Gemini 标签页。
回退方案:若灯箱自动化失败但页面已加载,可用 tab 的 pageAssets 能力列出资源,筛选 kind 为 image 且 URL 含 lh3.googleusercontent.com/gg/ 的资源并打包;此方式通常只能得到 512px 预览 JPEG,而非更大的灯箱文件,使用时应告知用户。
限制与注意:不要检查浏览器 cookie、本地存储、密码或会话存储。下载文件属于入站传输,本身无需确认。若 Gemini 要求登录,应暂停并请用户在 Chrome 中完成登录。若用户希望图片与对话顺序一致,使用脚本的有序命名。