Esporta come JSON strutturato
Oltre ai sette formati di documento, la griglia dei file — e il menu Esporta file in linea di ogni messaggio — offre un'esportazione JSON. A differenza degli altri, JSON non è un documento finito da leggere: è la conversazione come dati leggibili dalla macchina, destinati agli sviluppatori che desiderano alimentare una chat in uno script, un database o un altro strumento senza dover raschiare la pagina da soli.
Il file è un singolo oggetto JSON formattato — un blocco di metadati sulla conversazione, seguito da un elenco piatto dei suoi messaggi.
- Metadati della conversazione —
schema(un identificatore con versione, attualmenteai-chat-extractor/conversation@2, in modo che un consumatore possa riconoscere il formato e la sua versione),site,title,url,exported_at(un timestamp ISO),content_format(sempremarkdown) emessage_count. messages— un array ordinato, una voce per messaggio, ognuna contenente il suoindex, il suorole(chi ha parlato —useroassistant) e due viste del testo:content, il messaggio completo come Markdown, econtents, lo stesso messaggio diviso in parti tipizzate.
Le due viste servono due tipi di consumatori. content è l'intero messaggio come una singola stringa Markdown — tutto ciò di cui uno script semplice ha bisogno. contents lo divide in un elenco ordinato di segmenti tipizzati, in modo che una pipeline possa selezionare o eliminare parti per tipo senza dover rianalizzare il Markdown: text per la prosa, thinking per un blocco di ragionamento di un modello, code per un blocco di codice recintato (con un language opzionale), image per un'immagine (con il suo url e il testo alt — sia che sia stata scritta come Markdown o come tag HTML), e table per una tabella Markdown, divisa nelle sue headers e rows in modo che un consumatore ottenga colonne reali invece di un blocco di caratteri pipe. AI Chat Clipper emette solo un tipo di segmento che può identificare onestamente dalla conversazione — non inventerà una struttura che non esiste. Le citazioni, ad esempio, arrivano come normali collegamenti in linea senza un blocco proprio, quindi non esiste deliberatamente un tipo sources separato.
Una breve risposta dell'assistente che contiene un blocco di codice viene esportata in questo modo:
{
"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]" }
] }
]
}