التصدير كـ JSON منظم
إلى جانب تنسيقات المستندات السبعة، توفر شبكة الملفات — وقائمة تصدير الملف المضمنة لكل رسالة — خيار تصدير JSON. على عكس التنسيقات الأخرى، JSON ليس مستندًا جاهزًا للقراءة: إنه المحادثة كـ بيانات قابلة للقراءة آليًا، مخصصة للمطورين الذين يرغبون في تغذية محادثة إلى نص برمجي أو قاعدة بيانات أو أداة أخرى دون الحاجة إلى استخراج الصفحة بأنفسهم.
الملف عبارة عن كائن JSON واحد مطبوع بشكل جميل — كتلة من البيانات الوصفية حول المحادثة، متبوعة بقائمة مسطحة من رسائلها.
- البيانات الوصفية للمحادثة —
schema(معرف إصدار، حاليًاai-chat-extractor/conversation@2، بحيث يمكن للمستهلك التعرف على التنسيق وإصداره)،site،title،url،exported_at(طابع زمني ISO)،content_format(دائمًاmarkdown)، وmessage_count. messages— مصفوفة مرتبة، إدخال واحد لكل رسالة، يحمل كل منهاindex، وrole(من تحدث —userأوassistant)، وعرضين للنص:content، الرسالة الكاملة بتنسيق Markdown، وcontents، نفس الرسالة مقسمة إلى أجزاء مُصنفة.
يخدم العرضان نوعين من المستهلكين. 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]" }
] }
]
}