Tool · Conversations & archives
ChatGPT Export Archive and Migration Toolkit
Keep exported conversations, identify duplicate copies and prepare bounded migration batches.
Repository: CinvanaAI/chatgpt-export-to-conversation-engine
Recorded synthetic example. Source with a complete offline example.
See the idea in action.
Two retained variants, one skipped duplicate, four tracked messages, a two-message prepared batch, and a blocked second batch.
Three invented export objects: an original, an exact duplicate, and a changed answer with the same conversation ID.
Indexed conversations-2.json: objects=1 new_unique=1 exact_duplicates=0
Indexed conversations.json: objects=2 new_unique=1 exact_duplicates=1
{
"source_objects": 3,
"canonical_variants": 2,
"exact_duplicates_skipped": 1,
"tracked_messages": 4,
"preview_status": "dry_run",
"batch_status": "prepared",
"batch_messages": 2,
"speakers": [
"Assistant",
"User"
],
"next_batch_status": "blocked_by_open_batch",
"deposit_executed": false,
"synthetic_variants": [
{
"id": "synthetic-conversation",
"question": "A synthetic question?",
"answer": "A synthetic answer."
},
{
"id": "synthetic-conversation",
"question": "A synthetic question?",
"answer": "A different synthetic answer."
}
],
"prepared_message_bodies": [
{
"speaker": "User",
"timestamp": "2023-11-14T22:13:21+00:00",
"text": "A synthetic question?"
},
{
"speaker": "Assistant",
"timestamp": "2023-11-14T22:13:22+00:00",
"text": "A synthetic answer."
}
]
}Try the example.
From the repository root, follow the dependency requirements in the README. This example uses supplied synthetic material.
python -m pip install -e . python -m examples.walkthrough
Two retained variants, one skipped duplicate, four tracked messages, a two-message prepared batch, and a blocked second batch.
Complete setup and instructions ↗The interesting part.
Same-ID variants are preserved as evidence instead of being silently overwritten or merged into one claimed truth.
Where it came from.
Archive Mutation migration workflow for ChatGPT exports and Conversation Engine envelopes.
Keeps inspection, variants, deduplication and batch state; replaces machine paths and personal role labels.
It stands alone; optional deposit and reconciliation require the separate Conversation Engine.
Follow the family: Conversation source, migration and Discord archives
- Optional integration withConversation Engine
Continue from reviewed exports into the documented Conversation Engine deposit/reconciliation path. Interoperation is explicit; it is not code ancestry or a mandatory dependency for inspection/extraction.
Source ↗