一键将 Gemini 对话导出到 Notion Database。支持 markdown、代码块高亮、表格、图片上传到 PicList(解决 Notion 图片链接失效问题),并能精准将用户上传的图片还原到对话位置。
🚀 Gemini to Notion Exporter
这是目前功能最完善的 Google Gemini 对话导出脚本。它不仅能将对话文本导出到 Notion,还完美解决了图片转存和图片位置错乱的两大痛点。(但用户上传的文件无法像图片一样转存)
✨ 核心功能
- 📸 PicList/PicGo 无缝集成
- 脚本会自动拦截 Gemini 中的图片(包括 AI 生成图和用户上传图)。
- 自动调用本地开启的 PicList/PicGo 服务将图片上传到你配置的图床。
- 解决痛点:直接复制到 Notion 的图片链接通常是临时的(Google 链接),过段时间会失效。本脚本通过转存图床,确保 Notion 里的图片永久有效。
- 🧩 用户图片智能归位
- 独家功能:很多脚本在导出时,会将用户上传的图片一股脑堆在文末或丢失。
- 本脚本通过 DOM 分析,能精准地将用户上传的参考图放回对应的
User Query(提问)气泡中,还原真实的对话上下文。
- 📝 完美排版支持
- 支持 Markdown 格式(粗体、斜体、链接)。
- 支持 代码块(自动检测编程语言,映射到 Notion 支持的语言格式)。
- 支持 表格(Table)导出。
- 支持 多级标题 和 列表。
- ⚡ 批量写入优化
- 自动处理 Notion API 的 Block 数量限制(每批 100 个),即使是超长对话也能完整导出,不会报错。
🛠️ 准备工作 (必读)
在安装脚本前,请确保你已经准备好以下环境:
1. 配置 Notion
- 创建一个新的 Notion Database(数据库),并确保它包含以下 3 个属性(列名必须一致):
Name (类型: Title/标题) —— 用于存放对话标题
Date (类型: Date/日期) —— 用于记录导出时间 (必须有,否则会报错)
URL (类型: URL) —— 用于存放原始对话链接
- 去 Notion Integrations 创建一个 Integration,获取
Internal Integration Secret (以 ntn_ 开头)。
- 在你的 Database 页面右上角点击
... -> Connect to -> 选择你刚才创建的 Integration。
- 获取
Database ID(在浏览器地址栏 URL 中,?v= 之前的那串 32 位字符)。
2. 配置 PicList (或 PicGo)
为了实现图片转存,你需要安装 PicList (推荐) 或 PicGo。
- 打开 PicList 设置 -> 设置 Server。
- 开启 Server,并确保端口设置为 36677 (脚本默认连接此端口)。
- 确保 PicList 已经配置好了你喜欢的图床(如 Github, S3, Imgur, 阿里云 OSS 等)。
- 注意:脚本会以
127.0.0.1:36677 进行通信,请确保没有被防火墙拦截。
📖 使用指南
- 安装脚本:点击安装本脚本。
- 刷新页面:打开 Google Gemini 页面。
- 初次配置:
- 脚本启动时会检测 PicList 心跳。如果连接成功,控制台会显示
✅ PicList 心跳正常。
- 页面右下角会出现 "📥 Save to Notion" 按钮。
- 点击按钮,首次运行会提示输入 Notion Secret 和 Database ID。输入后会自动保存到本地。
- 开始导出:
- 点击按钮后,脚本会变为
🕵️ Analyzing...,开始解析页面并上传图片。
- 图片上传完成后,状态变为
💾 Creating Page...,开始写入 Notion。
- 最后显示
✅ Saved! 即表示完成。
❓ 常见问题 (FAQ)
Q: 点击按钮后提示 "Notion Database 缺少 'Date' 列"?
A: 请回到你的 Notion 数据库,添加一个名为 Date 的列,类型选择 Date。这是脚本记录导出时间的依据。
Q: 图片上传失败,提示连接不上 PicList?
A: 请检查:
- PicList 软件是否已打开?
- PicList 设置中 Server 是否已开启?
- 端口是否是
36677?
- 如果是 macOS,可能需要检查网络权限。
Q: 我不想用 PicList,只想导出纯文本行吗?
A: 目前版本强依赖 PicList 处理图片。如果未检测到 PicList,图片部分可能会显示为红色错误提示,但文本部分仍会尝试导出。
📝 更新日志
v11.6
- 新增:PicList 本地服务对接,实现图片永久化存储。
- 新增:DOM 智能解析,修复用户上传图片位置错乱的问题。
- 优化:改进了代码块语言检测逻辑。
- 优化:增加了 Notion 分批写入逻辑,支持超长对话导出。
v11.9 🚨 核心修复 (Critical Fixes)
- 修复 CSP 拦截导致的图片上传失败
- 问题:由于 Google 更新了安全策略(CSP),原脚本使用
fetch('blob:...') 获取图片数据会被浏览器拦截(报错 Refused to connect)。
- 修复:改为使用 HTML5 Canvas 绘图提取 方案。脚本现在将页面上已显示的图片绘制到内存画布中,再导出为二进制数据。这种方式完全绕过了网络请求层面的 CSP 限制,完美复活图片导出功能。
- 修复 PDF/二进制文件上传损坏
- 问题:原脚本使用手动拼接字符串的方式构造
multipart/form-data 请求体,导致 PDF 等非文本文件的二进制数据在传输中损坏,PicList 报错 Error processing formData。
- 修复:重构上传模块,改用浏览器原生的标准
FormData API。确保所有文件类型(PDF、Zip、图片)的二进制流都能被正确封装和发送。
- PDF Blob 优雅降级
- 问题:对于本地预览状态的 PDF(
blob: 链接),既无法用 Canvas 提取(不是图片),也无法用 Fetch 下载(CSP 限制)。
- 修复:增加了智能判断逻辑。如果遇到无法提取的本地文件 Blob,脚本不再尝试强制下载导致报错,而是自动转换为一条灰色文本提示(如
📄 [本地文件未上传] ...),保证脚本不会卡死,能继续处理后续内容。
v11.10
自动补全后缀:针对无后缀的文件链接,根据 MIME 类型自动补全扩展名(支持 PDF, Office, HTML, 代码文件等)。
v12.0
- 新增隐私标记功能:
- 支持对单条对话进行“隐私标记”(点击 👁️/🚫 切换)。
- 被标记的消息(包括其中的文字、图片、PDF 等附件)将直接跳过,不上传至 PicList/Notion,保护敏感数据。
- 交互优化:
- 隐私开关移至消息气泡的右下角,悬停显示,不再遮挡右上角的原有操作按钮。
- 同时支持标记 用户提问 (User) 和 Gemini 回复 (Model)。
v13.0
✨ 单条导出 (Single Export):每条对话旁新增
📤 按钮。点击 User 消息即可自动将其与 AI 的回复组合(除非该回复已被隐私标记)导出,无需保存整页。点击 Gemini 回复 (Model)仅导出回复,不包含用户信息。