構造化JSONとしてエクスポート
7つのドキュメント形式に加えて、ファイルグリッドと各メッセージのインラインのファイルのエクスポートメニューには、JSONエクスポートが用意されています。他の形式とは異なり、JSONは読むための完成されたドキュメントではありません。これは、チャットをスクリプト、データベース、または別のツールに、ページを自分でスクレイピングすることなく取り込みたい開発者向けの、機械可読データとしての会話です。
ファイルは、単一の整形されたJSONオブジェクトです。会話に関するメタデータのブロックに続いて、メッセージのフラットなリストが続きます。
- 会話メタデータ —
schema(バージョン管理された識別子、現在はai-chat-extractor/conversation@2であり、コンシューマーが形式とそのバージョンを認識できるようにします)、site、title、url、exported_at(ISOタイムスタンプ)、content_format(常にmarkdown)、およびmessage_count。 messages— メッセージごとに1つのエントリを持つ順序付けられた配列で、それぞれがindex、role(誰が話したか —userまたはassistant)、およびテキストの2つのビューを保持します。contentはMarkdownとしての完全なメッセージであり、contentsは同じメッセージが型付けされた部分に分割されたものです。
2つのビューは、2種類のコンシューマーに対応します。content は、単純なスクリプトが必要とするすべてのものとして、Markdown文字列全体です。contents は、それを型付けされたセグメントの順序付けられたリストに分割するため、パイプラインはMarkdownを再解析することなく、種類によって部分を選択または削除できます。text は散文用、thinking はモデルの推論ブロック用、code はフェンスで囲まれたコードブロック用 (オプションの language 付き)、image は画像用 (その url と alt テキスト付き — Markdownとして書かれたかHTMLタグとして書かれたかにかかわらず)、table はMarkdownテーブル用で、headers と rows に分割されているため、コンシューマーはパイプ文字のブロックではなく実際の列を取得できます。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]" }
] }
]
}