Extry

把 ChatGPT 对话变成 JSON。

对话本来就有结构——角色、顺序、时间、模型。当成散文来读,这些全都丢了。Extry 把它重新写成 JSON,每条消息一条记录。

获取上线通知上线时发一封邮件,仅此而已。
extry · export示例输出
  • retry-backoff-design.json31.7 KB结构化
1 个文件,在 .zip 里每条消息一条记录

给脚本看,不是给人读

当打开文件的不是人时,就该用 JSON。每条消息都保留自己的角色、位置、生成它的模型和创建时刻,脚本因此可以筛选、计数和排序,而不必从正文里猜。

要阅读,它是错的选择。若这段对话要重新摆到人面前,Markdown 或 Word 会待你更好。

先一个对象,然后按顺序排列的消息

文件开头描述这段对话:标题、来源链接、创建时间、导出时间,以及消息条数。之后是消息本身,按顺序排列,每条一个对象。

消息正文仍是 Markdown,因此围栏代码块能完整通过。引用另以来源数组重复一遍,脚本可以直接沿链接走,不必再从正文里解析出来。

retry-backoff-design.jsonjson
{
  "title": "Retry backoff design",
  "source": "https://chatgpt.com/c/…",
  "created_at": "2026-03-11T09:14:22Z",
  "exported_at": "2026-03-12T18:02:41Z",
  "message_count": 2,
  "messages": [
    {
      "index": 1,
      "role": "user",
      "author": "user",
      "model": null,
      "created_at": "2026-03-11T09:14:22Z",
      "text": "Why is the retry loop",
      "sources": []
    }
  ]
}

散文做不到的那些事

结构是固定的,所以这些多半是几行代码,而不是写一个解析器。

筛选与计数

只取助手的消息、只取某个日期之后的、只取某个模型写的。

喂进流水线

直接载入笔记本、嵌入任务或评测集,不用先清洗。

比较两次导出

同一段对话的两个时刻:比对记录,而不是把两个版本都读一遍。

三步,一个文件

  1. 在 ChatGPT 里打开对话,点击页面上的 Extry 按钮。
  2. 在面板里选择 JSON。
  3. 点击「下载这段对话」,从压缩包里取出 .json。

不需要账号,没有上传步骤。文件在页面里直接生成,对话不会被送到别处去转换。

每一部分在哪里运行

Extry 是一个 Chrome 扩展。导出不需要把你的对话发送到任何地方。
内容在哪里进行
导出为各种格式在你的浏览器中
附件与图片在你的浏览器中
对话内容不发送到任何地方
使用统计不收集
排版级 PDF (稍后推出,需自行开启)在服务器上,文件随后立即删除

关于 JSON 导出

每条消息里有什么?

序号、消息 id、角色、作者、生成它的模型或 null、以 ISO 时间戳表示的创建时间、正文,以及引用到的来源。

正文是纯文本还是 Markdown?

Markdown。代码保留在带语言标记的围栏块里,你可以照常渲染,也可以剥掉。

可以一次把所有对话都导成 JSON 吗?

可以。批量导出为每段对话写出同样的文件,各自放在一个压缩包内的独立文件夹里。

这个结构稳定到可以写脚本吗?

键名是固定的,由扩展自己写出,而不是从页面上读取,所以界面变了结构也不会跟着动。至于取值,仍以 ChatGPT 报告的为准。

同一段对话的其他形态

同一段对话,换一种写法: CSV, Markdown, 批量导出, 首页.