by martylamb on 12/17/24, 12:18 PM with 0 comments
I wrote a tool to scratch my own itch and decided to make it available to others.
It's called ChatKeeper[0], and it syncs your ChatGPT export files to local Markdown files. This allows for easy and permanent local storage, searchability, and integration with note-taking applications like Obsidian (which I use). If you sync again after continuing conversations, ChatKeeper will find your conversation files — even if you've moved or renamed them — and update them in place, so you can reorganize them to your heart's content.
Many of my conversations have some lasting value, e.g. for reference or as part of a larger project. I've been around long enough to be distrustful of the long-term availability of anything online, so I want backups, and the best backups are useful ones (e.g. rather than the blob of json in a zip file that ChatGPT exports). And I often found myself wanting to access and reference them within Obsidian where I track lots of projects and thoughts. ChatKeeper has been incredibly helpful for my own workflow.
ChatKeeper is free to try with no registration needed (free version limited to 30 conversations to give you a sense of its results and its usefulness for you). The full version follows a shareware-like model at a modest one-time price, which includes all updates for a year and will continue to run without limitations forever. The world needs fewer subscriptions.
As for technical background, ChatKeeper is written in pure Java and compiled to native code using GraalVM's native-image tool. I build it for Linux, Windows, and macOS x86_64 on my Fedora 40 Linux desktop, and for macOS arm64 using an on-demand M1 instance from Scaleway. Downloads are stored in Cloudflare R2, purchases are handled through Paddle, and license generation happens on a webhook callback from Paddle to a service I built using Javalin running on fly.io. It's an unusual enough setup that I'm thinking about writing a blog post about it if I can make it interesting.
Ongoing updates will be needed as long as ChatGPT keeps adding new features - and they've been on a tear this month with their "12 days of OpenAI"[1]. Their export format is not documented (as far as I have been able to find), so every new feature results in a mostly fun reverse engineering puzzle. Canvas and search are two new features that I just added support for.
I hope ChatKeeper is useful to you, too, and I'd love to hear your thoughts on it, including how you might use it or any suggestions for improvement. I've been writing Java code since the late 90s including some open source tools that have had some impact, but this is my first "indie" product.
Please check it out at <https://martiansoftware.com/chatkeeper>!
Thanks!
\- Marty
[0]: https://martiansoftware.com/chatkeeper [1]: https://help.openai.com/en/articles/10271060-12-days-of-open...