AI Chat Clipper 帮助

导出为结构化 JSON

除了七种文档格式之外,文件网格——以及每条消息的内联导出文件菜单——还提供JSON导出。与其他格式不同,JSON 不是一份可供阅读的成品文档:它是对话的机器可读数据,专为希望将聊天内容输入脚本、数据库或其他工具而无需自行抓取页面的开发人员设计。

该文件是一个经过美化打印的 JSON 对象——一个关于对话的元数据块,后跟一个扁平的消息列表。

  • 对话元数据schema(一个带版本标识符,当前为 ai-chat-extractor/conversation@2,以便消费者可以识别格式及其版本)、sitetitleurlexported_at(一个 ISO 时间戳)、content_format(始终为 markdown)和 message_count
  • messages — 一个有序数组,每条消息一个条目,每个条目包含其 indexrole(发言者——userassistant),以及文本的两种视图:content,作为 Markdown 的完整消息,以及 contents,将同一消息拆分为带类型的部分。

这两种视图服务于两种消费者。content 是整个消息作为一个 Markdown 字符串——简单脚本所需的一切。contents 将其分解为带类型段落的有序列表,因此管道可以根据类型选择或删除部分,而无需重新解析 Markdown:text 用于散文,thinking 用于模型的推理块,code 用于带围栏的代码块(带可选的 language),image 用于图片(带其 urlalt 文本——无论是写成 Markdown 还是 HTML 标签),以及 table 用于 Markdown 表格,拆分为其 headersrows,以便消费者获得真实的列而不是一堆管道字符。AI Chat Clipper 只会发出它可以从对话中诚实识别的段落类型——它不会凭空创造不存在的结构。例如,引文以普通的内联链接形式出现,没有自己的块,因此故意没有单独的 sources 类型。

一个包含代码块的简短助手回复导出如下:

{
  "schema": "ai-chat-extractor/conversation@2",
  "site": "claude",
  "title": "Reversing a string",
  "url": "https://claude.ai/chat/…",
  "exported_at": "2026-07-18T10:32:00.000Z",
  "content_format": "markdown",
  "message_count": 2,
  "messages": [
    { "index": 0, "role": "user", "content": "How do I reverse a string in Python?",
      "contents": [ { "type": "text", "text": "How do I reverse a string in Python?" } ] },
    { "index": 1, "role": "assistant", "content": "Use a slice:\n\n```python\ns[::-1]\n```",
      "contents": [
        { "type": "text", "text": "Use a slice:" },
        { "type": "code", "language": "python", "text": "s[::-1]" }
      ] }
  ]
}