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.

The conversation leaves the tab as readable Markdown

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.

Install

  1. Install Tampermonkey.
  2. Open haulout.user.js and accept the install.
  3. Reload the chat tab.
  4. Open the conversation you want.
  5. Click Haul out at the bottom right, or press Alt+Shift+E.
  6. 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: You and ChatGPT (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_at so two hauls of the same URL can be compared
  • source: api (conversation endpoint) or dom (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.

SiteLast checked workingVersion
ChatGPT2026-09-211.1.4
Grok (grok.com)2026-09-211.1.4
Claude2026-09-091.1.3
Gemini2026-09-091.1.3
Grok on XNot 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 blocks javascript:.
  • 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.

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.

MIT · GitHub · Spec