Browser userscript for exporting AI conversations
Keep the chat as a file of your own.
Browser userscript for exporting AI conversations
Keep the chat as a file of your own.
Save the AI conversation you have open as Markdown or JSON, with speaker labels and available metadata. HaulOut downloads a copy you can read, search, or keep with the project.
Requires Tampermonkey. Long threads can be incomplete. The export does not upload your transcript to a HaulOut service.
Excerpt from the existing sanitized ChatGPT API fixture, “Kitchen reno punch list.” It is a sample artifact, not an export from your account.
1 · Conversation in the browser Keep the question with its context
Can we keep the existing range hood?
This is turn 1 of the sample conversation, in the House project.
Click Haul out, choose Markdown, and save the downloaded file with your project.
2 · Markdown export excerpt Speaker, time, and source travel with the words
title: Kitchen reno punch list
project: House
exported_at: 2026-09-02T17:43:00.000Z
source: api
turns: 4
### You · turn 1 — 2026-08-30T14:11:02.000Z
Can we keep the existing range hood?
3 · Your saved file Find the exchange after the tab is closed
Open the Markdown in an editor or search the project for range hood. The complete export retains the replies and speaker labels, so the question is not separated from the discussion.
You can keep the conversation in the same folder and history as the work it informed.
Selected metadata and one turn are shown here. Collection counts do not prove completeness. Attachments are referenced, not bundled.
Open the complete Markdown export · Inspect the JSON version
Install
- Install Tampermonkey.
- Open haulout.user.js and accept the install.
- Reload the chat tab.
- Open the conversation you want.
- Click Haul out at the bottom right, or press Alt+Shift+E.
- Pick Markdown or JSON. The file lands in Downloads.
That is the path this project supports. Claude often blocks javascript: bookmarklets. The userscript is the one that works there.
What a haul contains
The sample Markdown is a sanitized ChatGPT API fixture, not an account archive.
- Speakers:
YouandChatGPT(or the host label) - Title and project when the page has them
- Per-turn timestamps when the site stores them. Missing timestamps are left out, not invented
exported_atso two hauls of the same URL can be comparedsource:api(conversation endpoint) ordom(rendered turns after scroll)
JSON is the same fields plus a turns array. Sample JSON. Images and uploads are referenced, not zipped.
How you know it finished
The HaulOut panel shows {n} turns · API|DOM · MD|JSON. n is what HaulOut collected. It is not proof that the provider stored exactly that many turns. An empty extract fails with an error. Chat sites keep only part of a long thread on the page, so HaulOut scrolls the thread first to load older turns. That scroll has a step cap, so a very long thread can come out short.
Compatibility
Supported sites. HaulOut 1.1.4 has an adapter for ChatGPT (chatgpt.com, chat.openai.com), Claude (claude.ai), Gemini (gemini.google.com), Grok (grok.com), and Grok on X (x.com/i/grok). ChatGPT, Claude, and Grok read the site's conversation API first. Gemini and Grok on X read the page after scrolling, so they break first when a site changes its layout.
Last checked working. Each date is the most recent successful haul on record, taken from the file's exported_at timestamp (UTC). There are no automated tests against the live sites.
| Site | Last checked working | Version |
|---|---|---|
| ChatGPT | 2026-09-21 | 1.1.4 |
| Grok (grok.com) | 2026-09-21 | 1.1.4 |
| Claude | 2026-09-09 | 1.1.3 |
| Gemini | 2026-09-09 | 1.1.3 |
| Grok on X | Not recently verified |
Claude and Gemini were last hauled on 1.1.3. Version 1.1.4 only changed how Grok on X is detected, and that path does not have a completed haul on record yet.
Details and notes per site: docs/COMPATIBILITY.md.
Advanced fallbacks
These are not as reliable as Tampermonkey.
- Violentmonkey / Greasemonkey: may work, not verified.
- Bookmarklet: drag from
fallback/. Claude often blocksjavascript:. - Console: paste
haulout.js.
Privacy
No HaulOut backend. The script talks only to the chat site you have open. Its one userscript permission is GM_info, which reads its own version. You can read the script.
Limits
Not a full-account archive. Official bulk exports still exist and are better for everything you ever said. A site layout change can break hauls from that site until HaulOut is updated. Images and uploads are not bundled.
Family
Haul out the thread. Then detangle it.
Detangler is the next tool, not a HaulOut mode.
Legal
HaulOut is an unofficial local tool. It is not affiliated with OpenAI, Anthropic, Google, xAI, or X. Private web APIs and page structure change. Hauls can be incomplete. You are responsible for how you keep and share your own transcripts.