If you have ever tried to export a ChatGPT conversation to Markdown, or save a Claude chat as a .md file, you already know the options are bad. Copy-paste destroys the formatting. Screenshots are not text. And most "exporter" browser extensions want your login cookies, which is a hard no from me.
So I built Convolvger. It is a Python CLI that takes a public AI chat share link and turns it into a clean Markdown file, plus a full-fidelity JSON archive for safekeeping. No browser automation, no cookies, no API keys. It talks to each provider's own JSON endpoint directly.
Version 0.6.0 is out now, and it adds DeepSeek, Kimi, and Qwen. That brings the total to seven providers: ChatGPT, Claude, Gemini, Grok, DeepSeek, Kimi, and Qwen.
How to export a ChatGPT chat to Markdown
This is the simplest case. Paste the share link, run one command:
pip install convolvger
convolvger export
You get a readable .md file and a JSON archive with everything the share carried. That is the whole flow for ChatGPT, Gemini, and Grok.
How to save a Claude conversation as Markdown?
Claude is the stubborn one. Its share page refuses non-browser clients no matter what headers you send. A lot of tools get around this by impersonating a browser. I did not want to do that.
Instead, convolvger export --capture waits for your own browser. You open the share link yourself, a small bookmarklet hands the snapshot to a listener running on loopback, and the listener accepts it only when the browser's origin matches. Nothing is impersonated and nothing leaves your machine. The output is the same: clean Markdown plus the JSON archive.
What is new in 0.6.0?
Three new providers, each with their own quirks:
DeepSeek, Its share page blocks non-browser clients with a 403 from the CDN. But the JSON endpoint behind the share page serves fine. I verified this against a real browser's network traffic and checked robots.txt before shipping it. I am mentioning this explicitly because "working around a block" is the kind of thing that should be done in the open.
Kimi, Accepts kimi.ai, kimi.com, and the older kimi.moonshot.cn. Same share, three domains.
Qwen, Accepts chat.qwen.ai and chat.qwenlm.ai, and ignores the ?fev= query string some share links carry.
A few details that apply across the new providers. DeepSeek and Qwen use inline citation markers in their Markdown. Convolvger only strips those markers out when they resolve to a search result the share actually carries, and never inside code blocks. The JSON archive keeps the served text exactly as-is either way. Reasoning traces (Kimi, Qwen) and sharer identity stay in the JSON archive and never reach the Markdown. And the weekly contract check now covers all three new providers, each tested against a throwaway share, so upstream format changes get caught early.
Why not just copy-paste?
Because copy-paste silently loses content and you never find out. Every gap Convolvger hits during extraction gets recorded as a structured finding instead of being dropped quietly, and convolvger verify checks an archive's integrity afterward. If something is missing from your export, you will know about it. That is the entire point of the tool: an archive you cannot verify is not an archive.
The boring fixes in 0.6.0 that matter for real archives
A conversation titled in Arabic, Chinese, Hindi, or Russian now gets a filename in that script, instead of every non-Latin title from one provider colliding on a single file.
A default filename is never silently replaced. The next export gets -2, -3, and so on, in any language.
export -o - and inspect write UTF-8 regardless of the system's encoding, so they no longer crash on a legacy Windows terminal.
A half-truncated emoji (cut off by a truncated reply) becomes U+FFFD and gets reported, instead of crashing the export and leaving an empty file behind.
A 141-phrase, 138-language, 62-script corpus now runs through every provider on every release. Multilingual bugs are real and this catches them.
Try it
pip install convolvger
GitHub: https://github.com/bilalmughal1/convolvger
PyPI: https://pypi.org/project/convolvger/
One honest note: share links rot. Providers change formats and delete old shares. If there is a conversation you care about, archive it now rather than later.
Which provider or export format should I add next? I read every comment.
Top comments (0)