Skip to content

bujue3709/GPT-Conversation-Toolkit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ChatGPT Conversation Toolkit 🧰✨

简体中文 | English

适用于 ChatGPT Web 的浏览器插件,主要解决导出、搜索、Prompt 管理、时间线定位、对话文件夹管理和多语言界面切换问题 🚀

当前活跃维护者:bujue3709(主要 / 唯一活跃维护者)

ChatGPT 虚拟化列表影响说明(重要)

从近期版本开始,ChatGPT Web 在会话主区采用“虚拟化列表”渲染:

  • 浏览器中只保留当前视口附近的一部分消息 DOM。
  • 早期消息会在你滚动时按需加载,离开视口后可能再次被卸载。

这会对依赖完整 DOM 的插件功能产生直接影响:

  • 搜索和时间线的数据源会优先使用 API 会话数据,因此可以覆盖更完整的会话内容。
  • 搜索和时间线跳转会使用统一的虚拟化跳转逻辑:先定位目标消息,再等待 ChatGPT 挂载目标 DOM,最后用消息 ID 或文本片段确认目标节点。
  • 旧版“长会话优化 / 长会话折叠”功能已经废弃:ChatGPT Web 自身的虚拟化列表已经会按需卸载远离视口的消息,通常不再需要插件额外隐藏旧消息;额外折叠反而可能干扰搜索、时间线定位和原页面交互。

当前支持站点 🌐

  • https://chat.openai.com/* 💬
  • https://chatgpt.com/* 🤖

浏览器支持(当前) 🧭

  • Microsoft Edge(正式支持)
  • Google Chrome(正式支持)
  • ⚠️ Firefox(可临时加载,后续做正式适配)
  • ⚠️ Safari (macOS)(评估中)

功能概览 ✨

  • 🧹 长会话优化:旧版折叠能力已废弃。ChatGPT Web 的虚拟化列表已经会自动控制 DOM 规模,不再需要插件额外隐藏旧消息。
  • 📦 全量导出:将当前会话导出为 .json.txt.md,格式可在设置中选择。
  • 🔍 消息搜索:按关键词搜索当前对话内容,支持高亮和前后跳转;深层消息会通过虚拟化跳转逻辑定位。
  • 📚 Prompt 指令库:支持新增、删除、搜索、分类、排序、导入 JSON、导出 JSON、单击复制。
  • ⚙️ 常用配置:提供原生独立设置弹窗,支持可视化无缝调节各项运行参数并自动持久化。
  • ∑ LaTeX 公式复制:鼠标移入渲染公式可一键复制 LaTeX 源码。
  • 🕒 对话时间线:基于 API 会话数据生成用户消息时间节点,支持预览、节点计数、显示/隐藏、拖拽移动和远端节点跳转。
  • 📁 对话文件夹:在“你的聊天”上方提供极简文件夹管理条,支持新建、重命名、删除、折叠/展开、拖拽归类、移回未分组,并保留原生会话菜单能力。
  • 🌐 多语言支持:当前支持中文和英文,默认跟随浏览器语言自动匹配;若没有匹配项则回退到英文,并支持在工具栏中手动切换。
  • 🎨 主题同步:工具栏、时间线、Prompt 弹窗跟随 ChatGPT 明暗主题。
  • 🧲 拖拽浮层:工具栏最小化按钮和时间线组件都支持拖拽移动。

安装方式 🧩

Chrome 🌈

  1. 打开 chrome://extensions/
  2. 打开右上角“开发者模式”
  3. 点击“加载已解压的扩展程序”
  4. 选择当前项目根目录

Edge 🌐

  1. 打开 edge://extensions/
  2. 打开右上角“开发人员模式”
  3. 点击“加载已解压的扩展”
  4. 选择当前项目根目录

Firefox 🦊

  1. 打开 about:debugging#/runtime/this-firefox
  2. 点击“临时载入附加组件”
  3. 选择当前项目根目录下的 manifest.json

界面示意 🖼️

插件示意图

使用说明 ▶️

1. 工具栏 🧰

页面加载后,右下角会显示“ChatGPT 工具”浮层。

可直接执行的操作包括:

  • 优化长会话 🧹(旧版功能,已废弃,不再推荐)
  • 恢复隐藏消息 ♻️
  • 一键导出 📦
  • Prompt 指令 📚
  • 显示/隐藏时间线 🕒
  • 搜索消息 🔍
  • 常用配置 ⚙️
  • 语言切换 🌐

点击“收起”后,工具栏会变成圆形按钮。圆形按钮支持拖拽,拖拽结束后自动贴边,单击可恢复展开 🧲

工具栏底部还提供两个轻量入口:

  • 觉得好用?给项目点亮✨
  • 我有优化建议想提!

1.1 多语言 🌐

  • 插件启动时会优先读取用户浏览器语言,并自动匹配当前可用语言。
  • 当前内置语言为:
    • 简体中文
    • English
  • 若浏览器语言没有匹配项,插件会默认使用 English
  • 工具栏头部提供语言切换菜单,可手动选择:
    • 跟随浏览器
    • English
    • 简体中文
  • 手动切换后会立即刷新工具栏、时间线、Prompt 指令库、文件夹管理和状态提示文案,并自动保存你的语言选择 💾

2. 长会话优化(已废弃)🧹

  • 旧版“优化长会话”会通过隐藏较早消息来减少页面 DOM 数量。
  • 现在 ChatGPT Web 已经使用虚拟化列表,远离视口的消息会由原页面按需挂载和卸载,因此不再需要插件额外折叠长会话。
  • 该功能已废弃,不再作为推荐工作流维护;长会话浏览、搜索和时间线定位应优先使用当前的 API 会话数据与虚拟化跳转逻辑。
  • 如果历史会话曾经被旧版功能隐藏过消息,可使用“恢复隐藏消息”清理旧折叠状态。

3. 导出 📦

  • 点击“一键导出”会按设置中选择的格式生成当前会话文件并自动下载。
  • 可在“常用配置 / 设置”中选择导出格式:.json.txt.md,默认 .json
  • 导出优先使用 API 会话数据,即使页面当前只挂载了部分虚拟化 DOM,也会尽量导出完整会话 ✅

4. 搜索 🔍

  • 在工具栏搜索框输入关键词后按回车,或点击搜索按钮开始搜索。
  • 搜索结果会高亮显示 ✨
  • 可以通过“上一条 / 下一条”在匹配结果间跳转。
  • 搜索可命中 API 会话数据中的深层消息;跳转时会等待 ChatGPT 挂载目标 DOM,并用消息 ID 或文本片段确认目标节点。
  • 如果历史会话曾经被旧版长会话折叠隐藏过消息,建议先恢复隐藏消息再搜索。

5. 时间线 🕒

  • 时间线位于对话区域左侧。
  • 时间线优先使用 API 会话数据生成用户消息节点,不再只依赖当前 DOM 中已加载的消息。
  • 节点计数格式为:当前节点/总用户节点数
  • 鼠标移入节点可预览消息内容 👁️
  • 点击节点会跳转到对应消息;深层节点、首尾节点会通过虚拟化跳转逻辑等待目标 DOM 挂载后再高亮。
  • 页面滚动时,会同步激活当前视口附近的时间节点。
  • 鼠标滚轮可以滚动时间线。
  • 时间线头部支持拖拽移动 🧲
  • 滚动到顶部但没有更多可见消息时:
    • 若消息已经全部可见,提示 已经没有消息了
    • 若旧版折叠状态仍存在,提示 请恢复隐藏消息

6. Prompt 指令库 📚

  • 点击“Prompt 指令”打开弹窗。
  • 支持:
    • 搜索标题 / 分类 / 内容 🔎
    • 按分类筛选 🗂️
    • 按更新时间、标题、分类排序 ↕️
    • 新增 Prompt ➕
    • 删除 Prompt 🗑️
    • 导入 JSON 📥
    • 导出 JSON 📤
    • 单击复制内容 📋
  • 复制成功后会显示提示 ✅

7. LaTeX 公式复制 ∑

  • 鼠标移入“渲染后的公式”时,会在公式附近出现 复制 LaTeX 按钮。
  • 点击按钮可复制该公式的 LaTeX 源码(不是渲染后的普通文本)。
  • 复制后会在工具栏状态区显示成功/失败提示。
  • 对于 LaTeX 代码块,建议优先使用 ChatGPT 原生代码块右侧复制按钮。

8. 对话文件夹 📁

  • 文件夹管理条会显示在侧边栏“你的聊天”标题上方。
  • 支持点击 新建 创建文件夹。
  • 点击文件夹头可折叠 / 展开当前文件夹下的会话。
  • 点击文件夹右侧菜单可进行:
    • 重命名 ✏️
    • 删除 🗑️
  • 支持把未分组会话拖到某个文件夹中。
  • 支持把文件夹内会话拖回 未分组
  • 拖拽命中范围包括:
    • 文件夹头
    • 文件夹内会话区域
    • 文件夹管理的可见会话段空白区域
  • 原生的重命名、归档、更多菜单仍然可用 ✅
  • 文件夹、归类关系和折叠状态会自动持久化,刷新页面后恢复 💾

9. 常用配置 ⚙️

  • 工具栏提供“常用配置”入口,点击可唤出原生风格独立设置弹窗。
  • 支持设置聊天记录导出格式:
    • .json
    • .txt
    • .md
  • 修改并点击“保存”后无需刷新页面,配置会即刻生效并自动写入本地存储进行持久化 💾
  • 弹窗原生支持随 ChatGPT 明暗主题动态无缝切换 🎨

请作者喝杯奶茶 🧋

如果这个插件对你有用,欢迎顺手点个 Star ⭐,真的非常感谢!

项目结构 🏗️

当前项目已经完成基础模块拆分,manifest.json 会按顺序注入以下脚本:

core/
  state.js
  i18n.js

features/
  collapse.js
  export.js
  folders.js
  search.js
  latex-copy.js
  timeline.js
  prompt-library.js

ui/
  theme.js
  toolbar.js

utils/
  dom.js
  storage.js

contentScript.js
styles.css
manifest.json

模块职责 🧭

可调整配置 ⚙️

常用配置位于 core/state.js

例如:

const TIMELINE_VISIBLE_NODE_CAPACITY = 10;
const TIMELINE_MAX_NODES = 20;
const COLLAPSE_AUTO_REOPTIMIZE_BUFFER = 10;

const state = {
  isCollapsed: false,
  isMinimized: false,
  keepLatest: 20,
  collapsedNodes: [],
  cachedNodes: [],
};

字段说明 📝

  • keepLatest:旧版长会话折叠保留的最新消息数量;该折叠功能已废弃
  • COLLAPSE_AUTO_REOPTIMIZE_BUFFER:旧版自动再优化缓冲数量;该折叠功能已废弃
  • TIMELINE_VISIBLE_NODE_CAPACITY:时间线单屏大致可容纳的节点数
  • TIMELINE_MAX_NODES:时间线最大采样节点数

导出的会话 JSON 格式 📦

{
  "exportedAt": "2026-03-13T08:30:00.000Z",
  "url": "https://chatgpt.com/c/xxxxxxxx",
  "messageCount": 2,
  "messages": [
    {
      "index": 1,
      "role": "user",
      "text": "你的消息"
    },
    {
      "index": 2,
      "role": "assistant",
      "text": "ChatGPT 的消息"
    }
  ]
}

字段说明 🧾

  • exportedAt:导出时间,ISO 8601 格式
  • url:当前会话页面地址
  • messageCount:导出的消息数量
  • messages:消息数组
  • messages[].index:消息顺序
  • messages[].role:消息角色,通常为 userassistant
  • messages[].text:消息文本内容

Prompt 指令库 JSON 格式 📚

Prompt 指令库导出为对象格式:

{
  "version": 1,
  "updatedAt": "2026-03-13T08:30:00.000Z",
  "prompts": [
    {
      "id": "c94f7299-40f3-4f95-a9f7-0ff93029a3f8",
      "title": "日报总结",
      "category": "办公",
      "content": "请将今天工作整理为日报,按完成项、风险、计划输出。",
      "createdAt": 1741576200000,
      "updatedAt": 1741576200000
    }
  ]
}

字段说明 🧾

  • version:格式版本,当前为 1
  • updatedAt:整个 Prompt 库的更新时间
  • prompts:Prompt 数组
  • prompts[].id:唯一 ID
  • prompts[].title:标题
  • prompts[].category:分类
  • prompts[].content:正文
  • prompts[].createdAt:创建时间戳
  • prompts[].updatedAt:更新时间戳

导入兼容格式 🔄

支持两种格式:

1. 对象格式 ✅

{
  "prompts": [
    {
      "title": "代码评审",
      "category": "开发",
      "content": "请按严重级别列出问题并给修复建议。"
    }
  ]
}

2. 数组格式 ✅

[
  {
    "title": "需求拆解",
    "category": "产品",
    "content": "请拆解为任务并给出优先级和验收标准。"
  }
]

导入规则 📥

  • content 为空的记录会被忽略
  • title 为空时会自动根据正文生成标题
  • category 为空时自动归类为 未分类
  • 重复项按 title + category + content 去重,比较时不区分大小写

开发说明 🛠️

  • 当前项目不依赖打包器。
  • 修改脚本后,浏览器扩展页重新加载插件即可生效。
  • 内容脚本的执行顺序由 manifest.jsoncontent_scripts.js 数组控制。

已知限制 ⚠️

  • 时间线和搜索优先使用 API 会话数据,因此可以覆盖更完整的会话内容。
  • 跳转仍依赖 ChatGPT Web 虚拟化列表最终挂载目标 DOM;插件会自动重试定位,但如果 ChatGPT 页面结构大幅变更,可能需要重新适配。
  • 旧版长会话折叠已废弃;若历史折叠状态仍存在,需要先恢复隐藏消息再执行页面内定位。
  • LaTeX 复制功能主要针对渲染后的公式节点;LaTeX 代码块复制建议使用 ChatGPT 原生复制按钮。
  • 文件夹管理基于当前 ChatGPT 侧边栏 DOM 结构实现,本地保存分类关系,不会同步到 ChatGPT 服务端。
  • 不同 ChatGPT 页面版本可能调整 DOM 结构,少数选择器可能需要跟进适配。

License 📄

本项目采用 MIT License

这意味着你可以在遵守 MIT 许可证文本保留要求的前提下,自由使用、复制、修改、发布、分发,且允许商业使用与再分发。

非许可说明 🏷️

为避免误导,请不要错误表示原项目名称、作者身份或品牌归属;如果你分发的是修改版或非官方版本,建议明确标注。此说明仅用于避免误导,不构成额外的许可证限制。

About

A useful plugin for the ChatGPT web platform, focusing on long conversation browsing, exporting, searching, prompt management, and timeline navigation. 🚀||优化ChatGPT长会话卡顿,聊天记录一键导出,消息搜索跳转,会话管理,prompt管理和时间线导航

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors