I use Obsidian daily and count on it for a lot. I also use ChatGPT quite a lot.
I found myself referring back to and continuing previous conversations with ChatGPT, and I wanted a convenient way to access them and refer to them from within Obsidian. I searched for a way to tie them together but couldn’t find anything that met my needs.
To solve this, I wrote ChatKeeper to convert ChatGPT export files into local Markdown files. Since Obsidian handles these perfectly, it allows for seamless integration between the two.
ChatKeeper lets you:
Search your conversation history within Obsidian without even switching windows
Link conversations from other Obsidian notes, connecting them directly with your projects or ideas
Organize your conversations however you want within Obsidian - move them around, rename them, etc. and ChatKeeper will find and update them when you export new data.
Maintain a dated conversation index within Obsidian to help you find your conversations chronologically
It’s not an Obsidian plugin — it’s a command-line tool that processes a ChatGPT export file directly into your vault. And there’s nothing Obsidian-specific about it, it just happens that the two work great together. Which was my goal.
You can point it to your vault and optionally specify a path within the vault where you want conversations to go. Doing it this way, rather than just giving it the full path to where you want them written within the vault, lets it find and update any conversations you might move out of that directory to organize them.
Here’s an example of how I use it with my vault:
chatkeeper keep my-export-file.zip "path/to/my/vault" -p "My ChatGPT Conversations"
There’s a more complete guide on the website that shows all of ChatKeeper’s options.
Please feel free to download it and give it a try! I’d love to hear your thoughts, feedback, suggestions, etc.
I really hope you find this useful. Thanks for checking out ChatKeeper!
I’m very happy to announce that a beta version of ChatKeeper is now available for Mac with the same features and functionality as the current release for Windows and Linux.
If you saw the above post earlier but were disappointed not to see Mac support, it’s now available for you to check out. I hope you find it useful!
I’m excited to announce that the release candidate for ChatKeeper version 1.1.0 is now available. I’ve been working on some new features and improvements that I’d love for you to get your hands on and try out.
This is a release candidate for the curious (and perhaps slightly adventurous). I’m not aware of any current issues with this version, but I’m still finalizing testing for the official 1.1.0 release… so it might have issues I haven’t found yet. If you’re interested, please download the release candidate and let me know how it works for you - your feedback has been invaluable!
Here’s What’s New in ChatKeeper 1.1.0-rc.1
Support for ChatGPT’s new Canvas feature: You can now save and manage your Canvas sessions with ChatKeeper. Please note that there are some known issues with ChatGPT’s export format for Canvas chats. I’ve reported these to OpenAI and implemented workarounds where possible.
Support for ChatGPT’s new Search feature: ChatKeeper now formats ChatGPT’s search summaries and sources in Markdown.
Native Apple Silicon Support: ChatKeeper now runs natively on Apple Silicon (m1/m2/m3/m4). No more need for Rosetta complications.
Official Homebrew Installer: Mac users now have an easy way to install and update on their systems. The correct binary will be automatically installed for your platform.
Conversation Index by Start Date: A new index document organizes your conversations by their start dates for another navigation option (in addition to the previously existing index by last activity).
Numbered Conversation Turns: Conversation “turns” now have numbered Markdown headings in order to enable linking to specific messages within conversations.
Version Information Display: The ChatKeeper version is now included in both YAML front matter and in more user messages in both Markdown and the CLI.
Wow, I’m so excited about this — this was literally my use case for switching to Obsidian last summer, but I never really got the process working smoothly. Can’t wait to try this out!
Quick update on ChatKeeper: I know that command line tools are intimidating for a lot of people, so work is underway on a GUI version. But in the meantime, I’ve built this Command Line Helper to take some of the command line pain away.
It’s a simple web form you can fill out in order to get your own personalized ChatKeeper command with all of your options properly filled in, ready to copy and paste into your terminal. Of course it doesn’t send me, or anyone else, any of your data.
Handling Unzipped Exports (since Safari seems to unzip them by default…)
Lots of little things, like supporting Tasks, handling citations in Deep Research results, and other miscellaneous enhancements and smoothed rough edges.
If you use both ChatKeeper and Obsidian, you might find the blog post helpful. I walk through a simple Dataview script you can drop into your Daily Notes template to automatically list any ChatGPT conversations you had that day and link to them within your vault.
I personally find it super handy - and I hope you do, too!
This version adds “Chain of Thought” to the markdown output. This is the text that you might see flashing by while it’s “Reasoning”, followed by something like “Thought for 15 seconds.”
It ends up looking something like this in Obsidian:
Handling this chain of thought also eliminates any warning messages about “unhandled message types” for the types “thoughts” and “reasoning_recap”. (Note to self: I really need to make those warning messages friendlier!)
There are some minor bug fixes in this version as well, plus a change for better handling of conversations that use ChatGPT’s Canvas.
I read and respond to all feedback, so if you give it a try, please don’t hesitate to reach out and share your thoughts!