Instead of manually writing a system prompt, this tool mines your actual conversation history — your word patterns, recurring topics, and habits of thought — and distils them into a ~3k character profile that meaningfully changes how an AI responds to you. The pipeline runs entirely locally. It never sends your conversation data anywhere. 1. Stream conversations-.json using ijson — never loads the
Add this skill
npx mdskills install tencircles/chatgpt-to-claude-mcpMines ChatGPT history to generate personal context profiles with clear workflow and privacy-first design
1# chatgpt-to-claude-mcp23> Turn your ChatGPT export into a personal context profile for Claude and GitHub Copilot.45Instead of manually writing a system prompt, this tool mines your actual conversation history — your word patterns, recurring topics, and habits of thought — and distils them into a ~3k character profile that meaningfully changes how an AI responds to you.67## How it works89The pipeline runs entirely locally. It never sends your conversation data anywhere.10111. **Stream** `conversations-*.json` using `ijson` — never loads the full file into memory122. **Extract** user-only messages (assistant responses are just mirrors of your input)133. **Score** lines by a weighted blend of word frequency relevance (60%) and Shannon entropy (40%), with context window expansion (±0–3 surrounding lines)144. **Surface** top proper nouns and bigrams from your history — review and flag noise (old employers, irrelevant contacts, etc.)155. **Optionally add** domain-specific signal phrases (e.g. `"my game"`, `"my startup"`) to boost relevant context166. **Re-run** with updated config until the signal looks clean177. **Read** the dense signal text, then synthesise a profile via the LLM188. **Install** globally at `~/.config/profile.md`1920Banned phrases persist to `{export_dir}/banned_phrases.json` and signal phrases to `{export_dir}/signal_phrases.json` so they survive reruns.2122## Requirements2324- Python 3.11+25- [uv](https://github.com/astral-sh/uv) (recommended) or pip2627## Add to Claude Desktop2829`~/Library/Application Support/Claude/claude_desktop_config.json`:3031```json32{33 "mcpServers": {34 "chatgpt-to-claude": {35 "command": "uvx",36 "args": ["chatgpt-to-claude-mcp"]37 }38 }39}40```4142Then restart Claude Desktop and say:4344> "Build my profile from my ChatGPT export at ~/Downloads/chatgpt-export"4546## Add to GitHub Copilot (VS Code)4748`.vscode/mcp.json`:4950```json51{52 "servers": {53 "chatgpt-to-claude": {54 "type": "stdio",55 "command": "uvx",56 "args": ["chatgpt-to-claude-mcp"]57 }58 }59}60```6162## Install via pip6364```bash65pip install chatgpt-to-claude-mcp66chatgpt-to-claude-mcp67```6869## Tools7071### `process_export(export_dir, banned_phrases?, extra_signal_phrases?)`7273Runs the full pipeline. Returns:74- `top_proper_nouns` — flag irrelevant ones to ban75- `top_phrases` — top bigrams, also available for banning76- `default_signal_phrases` — built-in signal markers77- `extra_signal_phrases` — your persisted domain-specific additions78- `signal_lines` / `signal_chars` — size of the dense signal for review79- `synthesis_prompt` — prompt to use when synthesising8081### `read_signal(export_dir, max_lines?)`8283Read the dense signal file after approving the config. Signal is scored highest-first — truncating from the bottom loses the least. Returns the text and a frequency summary.8485### `save_profile(profile_content, export_dir)`8687Writes the synthesised profile to `~/.config/profile.md` (with timestamped backup if content has changed) and saves a local copy in `{export_dir}/extracted/profile.md`.8889## Getting your ChatGPT export9091Settings → Data Controls → Export Data. You'll get a zip with `conversations-*.json` files.9293## License9495MIT96
Full transparency — inspect the skill content before installing.