← all repositories
jatechan/ai-data-extractor

Your AI pair-programmer has been keeping a diary. Now you can read it.

A stdlib-only Python tool that pulls years of chat history out of Claude Code, Cursor, Aider, and seven other AI coding assistants into one normalized JSONL format.

★526 stars Python Coding AssistantsData Tooling
Collecting fresh signals — velocity needs a few days of history.
collecting data…
star history

What it does

It auto-discovers the local storage of ten AI coding assistants — Claude Code, Codex CLI, Cursor, Windsurf, Trae, Continue, Gemini CLI, OpenCode, Cline/Roo Code, and Aider — and dumps every conversation into a single normalized JSONL schema: messages, code context, tool calls, timestamps, session IDs. The pitch is fine-tuning datasets, personal analytics, or just backing up conversations before an app wipes its local database. It handles macOS, Linux, and Windows storage conventions without asking which OS you’re on.

The interesting bit

Every tool stores chats differently — JSONL per session, SQLite, JSON trees, or (Aider) a markdown transcript sitting in each project directory. The extractors are honest about the undocumented ones: Cursor’s three known schema shapes are handled explicitly, while Windsurf and Trae fall back to a heuristic that hunts for role-plus-text objects. The README is refreshingly upfront that the heuristic is best-effort and will break when schemas change again.

Key highlights

  • Standard library only, Python 3.9+ — zero dependencies
  • Read-only SQLite connections, so a running editor never blocks extraction
  • One corrupt or locked file can’t kill the run; you get partial results, not a stack trace
  • Two-function interface per extractor, with continue_ext.py as a template for adding new tools
  • --list flag previews what’s installed without extracting anything

Caveats

  • Only messages, source, and session_id are guaranteed fields — everything else varies by tool
  • Windsurf/Trae extraction is heuristic and expected to break on future schema changes
  • Aider has no central store, so it guesses at common project directory names; nonstandard setups need explicit --search-path arguments

Verdict

If you’ve got months of AI-assisted coding history scattered across tools and want it in one place for training or analytics, this is exactly the tool. If you only use one assistant with a documented export feature, it’s less essential — though the per-tool parsers are still nice reference code.

Frequently asked

What is jatechan/ai-data-extractor?
A stdlib-only Python tool that pulls years of chat history out of Claude Code, Cursor, Aider, and seven other AI coding assistants into one normalized JSONL format.
Is ai-data-extractor open source?
Yes — jatechan/ai-data-extractor is open source, released under the MIT license.
What language is ai-data-extractor written in?
jatechan/ai-data-extractor is primarily written in Python.
How popular is ai-data-extractor?
jatechan/ai-data-extractor has 526 stars on GitHub.
Where can I find ai-data-extractor?
jatechan/ai-data-extractor is on GitHub at https://github.com/jatechan/ai-data-extractor.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.