把 ChatGPT 对话变成 JSON。
对话本来就有结构——角色、顺序、时间、模型。当成散文来读,这些全都丢了。Extry 把它重新写成 JSON,每条消息一条记录。
- retry-backoff-design.json31.7 KB结构化
为什么要 JSON
给脚本看,不是给人读
当打开文件的不是人时,就该用 JSON。每条消息都保留自己的角色、位置、生成它的模型和创建时刻,脚本因此可以筛选、计数和排序,而不必从正文里猜。
要阅读,它是错的选择。若这段对话要重新摆到人面前,Markdown 或 Word 会待你更好。
文件长什么样
先一个对象,然后按顺序排列的消息
文件开头描述这段对话:标题、来源链接、创建时间、导出时间,以及消息条数。之后是消息本身,按顺序排列,每条一个对象。
消息正文仍是 Markdown,因此围栏代码块能完整通过。引用另以来源数组重复一遍,脚本可以直接沿链接走,不必再从正文里解析出来。
{
"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": []
}
]
}能拿它做什么
散文做不到的那些事
结构是固定的,所以这些多半是几行代码,而不是写一个解析器。
筛选与计数
只取助手的消息、只取某个日期之后的、只取某个模型写的。
喂进流水线
直接载入笔记本、嵌入任务或评测集,不用先清洗。
比较两次导出
同一段对话的两个时刻:比对记录,而不是把两个版本都读一遍。
如何操作
三步,一个文件
- 在 ChatGPT 里打开对话,点击页面上的 Extry 按钮。
- 在面板里选择 JSON。
- 点击「下载这段对话」,从压缩包里取出 .json。
不需要账号,没有上传步骤。文件在页面里直接生成,对话不会被送到别处去转换。
处理位置
每一部分在哪里运行
| 内容 | 在哪里进行 |
|---|---|
| 导出为各种格式 | 在你的浏览器中 |
| 附件与图片 | 在你的浏览器中 |
| 对话内容 | 不发送到任何地方 |
| 使用统计 | 不收集 |
| 排版级 PDF (稍后推出,需自行开启) | 在服务器上,文件随后立即删除 |
问题
关于 JSON 导出
每条消息里有什么?
序号、消息 id、角色、作者、生成它的模型或 null、以 ISO 时间戳表示的创建时间、正文,以及引用到的来源。
正文是纯文本还是 Markdown?
Markdown。代码保留在带语言标记的围栏块里,你可以照常渲染,也可以剥掉。
可以一次把所有对话都导成 JSON 吗?
可以。批量导出为每段对话写出同样的文件,各自放在一个压缩包内的独立文件夹里。
这个结构稳定到可以写脚本吗?
键名是固定的,由扩展自己写出,而不是从页面上读取,所以界面变了结构也不会跟着动。至于取值,仍以 ChatGPT 报告的为准。