简体中文 | English
适用于 ChatGPT Web 的浏览器插件,主要解决导出、搜索、Prompt 管理、时间线定位、对话文件夹管理和多语言界面切换问题 🚀
当前活跃维护者:bujue3709(主要 / 唯一活跃维护者)
从近期版本开始,ChatGPT Web 在会话主区采用“虚拟化列表”渲染: - 浏览器中只保留当前视口附近的一部分消息 DOM。 - 早期消息会在你滚动时按需加载,离开视口后可能再次被卸载。
这会对依赖完整 DOM 的插件功能产生直接影响: - 搜索和时间线的数据源会优先使用 API 会话数据,因此可以覆盖更完整的会话内容。 - 搜索和时间线跳转会使用统一的虚拟化跳转逻辑:先定位目标消息,再等待 ChatGPT 挂载目标 DOM,最后用消息 ID 或文本片段确认目标节点。 - 旧版“长会话优化 / 长会话折叠”功能已经废弃:ChatGPT Web 自身的虚拟化列表已经会按需卸载远离视口的消息,通常不再需要插件额外隐藏旧消息;额外折叠反而可能干扰搜索、时间线定位和原页面交互。
当前支持站点 🌐
https://chat.openai.com/* 💬https://chatgpt.com/* 🤖浏览器支持(当前) 🧭
Microsoft Edge(正式支持)Google Chrome(正式支持)Firefox(可临时加载,后续做正式适配)Safari (macOS)(评估中).json、.txt 或 .md,格式可在设置中选择。chrome://extensions/edge://extensions/about:debugging#/runtime/this-firefox
页面加载后,右下角会显示“ChatGPT 工具”浮层。
可直接执行的操作包括:
优化长会话 🧹(旧版功能,已废弃,不再推荐)恢复隐藏消息 ♻️一键导出 📦Prompt 指令 📚显示/隐藏时间线 🕒搜索消息 🔍常用配置 ⚙️语言切换 🌐点击“收起”后,工具栏会变成圆形按钮。圆形按钮支持拖拽,拖拽结束后自动贴边,单击可恢复展开 🧲
工具栏底部还提供两个轻量入口:
觉得好用?给项目点亮✨我有优化建议想提!简体中文EnglishEnglish。跟随浏览器English简体中文.json、.txt、.md,默认 .json。当前节点/总用户节点数已经没有消息了请恢复隐藏消息复制 LaTeX 按钮。LaTeX 代码块,建议优先使用 ChatGPT 原生代码块右侧复制按钮。新建 创建文件夹。未分组。.json.txt.md如果这个插件对你有用,欢迎顺手点个 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:时间线最大采样节点数{
"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:消息角色,通常为 user 或 assistantmessages[].text:消息文本内容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:格式版本,当前为 1updatedAt:整个 Prompt 库的更新时间prompts:Prompt 数组prompts[].id:唯一 IDprompts[].title:标题prompts[].category:分类prompts[].content:正文prompts[].createdAt:创建时间戳prompts[].updatedAt:更新时间戳支持两种格式:
{
"prompts": [
{
"title": "代码评审",
"category": "开发",
"content": "请按严重级别列出问题并给修复建议。"
}
]
}
[
{
"title": "需求拆解",
"category": "产品",
"content": "请拆解为任务并给出优先级和验收标准。"
}
]
导入规则 📥
content 为空的记录会被忽略title 为空时会自动根据正文生成标题category 为空时自动归类为 未分类title + category + content 去重,比较时不区分大小写content_scripts.js 数组控制。LaTeX 代码块复制建议使用 ChatGPT 原生复制按钮。本项目采用 MIT License。
这意味着你可以在遵守 MIT 许可证文本保留要求的前提下,自由使用、复制、修改、发布、分发,且允许商业使用与再分发。
为避免误导,请不要错误表示原项目名称、作者身份或品牌归属;如果你分发的是修改版或非官方版本,建议明确标注。此说明仅用于避免误导,不构成额外的许可证限制。
$ claude mcp add GPT-Conversation-Toolkit \
-- python -m otcore.mcp_server <graph>