Featured image of post 把 ChatGPT 对话导出为 Markdown:保留代码、公式,放进 Typora 整理

把 ChatGPT 对话导出为 Markdown:保留代码、公式,放进 Typora 整理

介绍浏览器用户脚本如何导出已加载对话、处理公式与代码,并说明 Typora 检查方法和网页结构变化造成的兼容限制。

作者: 小景

文章来源: https://jingyuan-zheng.github.io/zh/p/chatgpt-to-markdown-userscript/

ChatGPT to Markdown Exporter 是一个浏览器用户脚本,用来把已加载的对话转换成 Markdown,方便放进 Typora 等编辑器继续整理和归档。

一段回答直接复制进笔记,代码块、公式和链接有时会变形。这个仓库 从早期的 Chrome 插件项目 改写出用户脚本,通过页面中已经渲染的内容生成 Markdown。

它不是账户级的完整历史导出工具,也不应假定能获取页面中尚未加载的对话。

安装的是用户脚本版本

README 提供 Greasy Fork 安装入口。也可以先阅读仓库中的 ChatGPT-To-Markdown-UserScript.js,再通过自己的用户脚本管理器安装。

仓库还保留了早期 Chrome 插件的文件和截图。“加载已解压的扩展程序”属于另一种安装方法,不是安装这份用户脚本必须执行的步骤。

脚本元数据匹配 ChatGPT/OpenAI 对话域名和 Grok。但域名匹配只表示允许运行,并不能证明页面选择器仍适配当前所有界面。

导出当前已经加载的对话

打开需要保存的对话,等待相关消息加载,找到 Export Chat。脚本会生成 Markdown 预览,提供 Copy、Download 和 Close。

下载文件名为 chat-export.md。用 Typora 或其他 Markdown 编辑器打开,再改成容易识别的名称,例如带主题和日期的文件名。先数一数问答轮次,再检查代码块是否闭合、公式是否显示正常;这些比预览看起来整齐更重要。

代码按照选中的页面元素顺序配对消息。布局变化、缺失消息或 DOM 结构调整,可能影响实际导出范围,而不只是字体样式。

公式和代码如何转换

脚本会把页面中的标题、列表、链接、代码块和公式改写成 Markdown。对公式,它尝试保留原本的 LaTeX 表达,而不是把屏幕上看到的符号拍成一张图片。

第一次可以用包含一个代码块、一个行内公式、一个独立公式和短列表的小对话检查。Markdown 源码和渲染结果都看一遍,更容易发现问题。

独立公式应保留类似结构:

1
2
3
$$
E = mc^2
$$

复杂公式、嵌套列表和表格要对照原对话检查,尤其留意符号、缩进和单元格顺序。

网页变化会影响兼容性

脚本需要辨认网页中的消息区域。ChatGPT 或 Grok 改版后,按钮可能仍显示,导出的内容却不完整;这时先用一段短对话检查,不要把刚下载的文件直接当作完整备份。

看到 No conversation content found 时,先确认对话已加载、脚本运行在目标页面,再检查选择器或向项目反馈。如果是选择器失效,重新安装同一份未修改的脚本不会自动修复。

如果按钮还在、导出的文件却是空的,先在脚本页面查看近期更新和反馈;网页结构变动后,脚本可能需要更新。

脚本装好以后,先检查它有没有在当前页面启用

用户脚本要由浏览器里的脚本管理器运行,不能像普通网页链接一样点开就自动生效。通过 Greasy Fork 安装时,应看到管理器给出的脚本名称、匹配地址和安装确认;如果只是显示一页 JavaScript 文字,先检查管理器是否已安装并启用,而不是把代码当作浏览器扩展文件夹导入。

安装后重新加载对话页面,再打开管理器菜单,确认这份脚本在当前站点处于启用状态。同一功能如果已经装过另一份用户脚本或 Chrome 扩展,可以先只保留一个入口做检查,避免出现两个同名按钮,却不知道实际运行的是哪一版。

一段长对话里,先滚动到需要的部分,让消息真正显示出来,再导出。尤其是回到很久以前的对话时,不要只看到最后一条回答就认为此前内容已经全部加载。导出完成后,用最早和最后两轮问答对照首尾,再抽查中间一段,比只看文件大小更容易发现遗漏。

用一个小样本检查代码、公式和链接

第一次可以选一段同时含有标题、列表、网页链接和代码的对话。代码块要检查开头、结尾的三反引号有没有成对出现,缩进是否保留,代码中的 <、> 等符号有没有变成别的内容。不要直接执行刚导出的代码,先确认它和网页里的原文一致。

公式则既看源码,也看预览。$...$ 通常用于行内表达式,$$...$$ 用于独立公式,但能否显示还受编辑器设置影响。如果文件里保留了公式标记,而 Typora 没有按预期渲染,先检查编辑器的数学支持设置,再判断是不是脚本丢了内容。

表格中一列少了分隔符,可能让后面整行都错位。链接也需要实际点开核对:显示文字对,不代表目标地址没有变化。对于复杂内容,先把格式和信息完整性确认,再继续整理措辞;否则越早改写,越难判断错误发生在导出还是自己编辑的阶段。

给每次导出留一个不会混淆的位置

默认文件名总是 chat-export.md,连续下载容易积累一串带编号的文件。可以为一个主题建一个文件夹,把文件名改成日期加主题;原始导出和修改后的笔记分开存,尤其适合需要保留完整问答、又想提炼结论的情况。

1
2
3
4
5
研究笔记/
└── 回归分析/
    ├── 2025-09-16-对话原始导出.md
    ├── 回归分析整理笔记.md
    └── images/

这里的 images 只是你整理素材的位置,脚本不会自动替你下载所有远程图片。需要离线保存时,逐个确认图片可否下载、是否仍依赖登录,再在 Markdown 里改成对应本地路径。可以暂时断网打开笔记检查;图片缺失就说明归档还没有完整独立于网页。

最后,给整理笔记加上原对话链接或简短来源说明,方便以后回查。准备分享时,从原始问答里删去无关私人信息,再确认改写没有改变代码和公式含义。导出完成只是拿到可编辑文件,主题分类和内容核对才让它变成真正能继续使用的笔记。

让归档文件真正可用

导出代码在浏览器中组织 Markdown 并创建本地下载;图片仍可能引用远程 URL,所以只有一个 Markdown 文件,不一定构成完整的离线存档。分享或长期保存前,检查图片是否仍可访问,以及是否依赖原账户权限。

公开之前移除敏感内容,并核对代码、公式与原对话的含义是否一致。保存以后想改善文件命名,可以看 Auto Filename Helper。具体转换规则以 脚本源码 为准。

隐私政策 网站地图 仪表盘
由 Hugo & Stack v4.0.3
本站已运行 0 天