A Chrome extension for extracting full Gemini, Claude, and ChatGPT conversations to structured JSON with images.
Clio - Named after the Greek Muse of History.
- Extracts all user inputs and assistant responses in DOM order
- Supports Gemini (
gemini.google.com), Claude (claude.ai), and ChatGPT (chatgpt.com) - Preserves code blocks with language labels
- Captures images (screenshots, generated images)
- Includes thinking / reasoning sections when present
- Handles large conversations (100+ turns) with batched processing
- Fail Open for images: logs errors but continues extraction
- Clone this repository
- Run
npm install - Open
chrome://extensions(oredge://extensions) - Enable "Developer mode"
- Click "Load unpacked"
- Select the
extensions/folder
Coming soon
- Navigate to a supported conversation:
- Gemini:
https://gemini.google.com/app/... - Claude:
https://claude.ai/chat/... - ChatGPT:
https://chatgpt.com/c/...
- Gemini:
- Wait for any streaming response to complete
- Click the Clio extension icon in the toolbar
- Click "Extract Conversation"
- Save the downloaded zip file
See the User Guide for detailed instructions and troubleshooting.
The extension creates a zip file containing:
conversation.json- Full transcript with metadataimages/folder - All extracted images
{
"metadata": {
"conversationId": "abc123",
"title": "My Conversation",
"extractedAt": "2026-01-19T12:34:56.789Z",
"url": "https://gemini.google.com/app/abc123",
"turnCount": 24,
"imageCount": 3,
"extractionErrors": [],
"partialSuccess": false
},
"turns": [
{
"index": 0,
"role": "user",
"content": "Hello, can you help me with...",
"thinking": null,
"attachments": []
},
{
"index": 1,
"role": "assistant",
"content": "Of course! Here's how...\n\n```python\nprint('hello')\n```",
"thinking": "Let me analyze this request...",
"attachments": [
{ "type": "image", "filename": "images/001.png", "originalSrc": "..." }
]
}
]
}- Node.js 18+
- Python 3.10+ with Poetry (for icon generation)
npm install
npm test # Unit tests
npm run test:coverage # Unit tests with coverage
npm run test:e2e # E2E tests (Playwright)
npm run test:all # All testsSee the development runbook for detailed development instructions, including how to reload the extension after code changes.
All data processing happens locally in your browser. No data is sent to any external servers.
MIT