关于 download-gemini-images
用于从用户已登录的 Chrome 会话下载 Gemini 对话图片的技能,适合整理对话中的上传图像。它优先获取灯箱中的大图,也可在自动化失败时收集页面预览图并打包为 ZIP。
主要功能
- 01复用已登录的 Chrome 会话
- 02下载对话中的灯箱图片
- 03按顺序命名图像文件
- 04预览资源回退下载
- 05打包并验证 ZIP 文件
适用场景
- 01保存 Gemini 对话中的上传图片
- 02按对话顺序整理图像
- 03灯箱下载失败时提取页面预览
- 04打包图像并核对归档内容
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ daymade/ claude-code-skills --skill download-gemini-images安装后在 Claude Code 中输入/download-gemini-images确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlscripts/download_gemini_images.mjspackage_images.sh详细介绍
下载 Gemini 图片
概述
从用户已登录的 Chrome 会话中下载 Gemini 对话图片。优先使用灯箱图片,而不是缩略图或页面预览素材,因为 Gemini 通常只有在用户打开预览后才会显示较大的 blob: 图片。
工作流
- 使用 Chrome 插件,而不是新建未认证的浏览器,因为 Gemini 对话通常需要用户现有的 Google 会话。
- 按照 Chrome 技能的说明启动 Chrome;如果已存在打开的 Gemini 标签页,则接管该标签页;否则在 Chrome 中打开用户提供的 Gemini URL。
- 在
browser可用后,通过node_replJS 调用导入并运行scripts/download_gemini_images.mjs。 - 使用
scripts/package_images.sh打包输出目录。 - 报告 ZIP 路径、图片数量,以及是否使用了较低分辨率的备用方案。
- 下载完成后结束 Chrome 控制;适当情况下,让用户原先打开的 Gemini 标签页保持打开。
主脚本
相对于此技能目录解析脚本路径,然后在用于自动化 Chrome 的同一 Node REPL 会话中导入该脚本:
var { downloadGeminiImagesFromChrome } = await import("/absolute/path/to/download-gemini-images/scripts/download_gemini_images.mjs");
var result = await downloadGeminiImagesFromChrome({
browser,
tabUrlIncludes: "gemini.google.com/app",
expectedCount: 20,
outputDir: `${nodeRepl.homeDir}/Downloads/gemini_conversation_images_${new Date().toISOString().slice(0, 10).replaceAll("-", "")}`
});
nodeRepl.write(JSON.stringify(result, null, 2));
仅当用户指定了确切数量时才设置 expectedCount。省略该参数即可下载所有可见的 Show the uploaded image in a lightbox 按钮对应的图片。
打包
主脚本返回 outputDir 后,运行:
/absolute/path/to/download-gemini-images/scripts/package_images.sh "$outputDir" "$HOME/Downloads/gemini_conversation_images.zip"
打包脚本会创建 ZIP、运行 zip -T,并验证压缩包中包含的图片文件与目录中的文件顺序一致。
备用方案
如果灯箱自动化失败,但页面已明确加载,则使用标签页的 pageAssets 功能:
var pageAssets = await tab.capabilities.get("pageAssets");
var inventory = await pageAssets.list();
var uploaded = inventory.assets.filter(a => a.kind === "image" && a.url.includes("lh3.googleusercontent.com/gg/"));
var bundle = await pageAssets.bundle({ inventoryId: inventory.id, assetIds: uploaded.map(a => a.id) });
nodeRepl.write(JSON.stringify(bundle, null, 2));
此方案通常会获取 512px 的预览 JPEG,而不是较大的灯箱图片。如果使用了此备用方案,请告知用户。
注意事项
- 不要检查浏览器 Cookie、本地存储、密码或会话存储。
- 下载文件属于入站传输,本身无需确认。
- 如果 Gemini 要求用户登录,请暂停并让用户在 Chrome 中完成登录。
- 如果用户希望图片顺序与对话串中的顺序一致,请使用脚本的有序命名:
image_01.jpg、image_02.jpg等。
评论
支持 Markdown