Browser

ChatGPT Exporter

Try it

Export your ChatGPT conversations to local files — titles, timestamps and, if you ask for it, full message text. Built for the TinkerClaw fork — github.com/globalcaos/tinkerclaw. Invoke it BY NAME — "chatgpt-exporter-ultimate: export my conversations" — so ordinary talk about ChatGPT cannot trigger it. Rides the ChatGPT session your browser already holds — browser relay or a bookmarklet you paste yourself. It reads NO access token, no cookie jar and no credential file. The relay enumerates your conversation list and writes JSON and Markdown copies to a private directory; it defaults to index-only (titles and timestamps, no message text) and refuses to run without an explicit confirmation of destination and scope. The bookmarklet can also find conversations inside Projects, by running searches against your history, and downloads one JSON file after three dialogs. Relay destinations are resolved through symlinks before anything is written, so a relay export cannot land in a synced folder

What it does

One of dozens of skills and plugins in **TinkerClaw** — a self-improving OpenClaw fork that's been running 24/7 for months.

The skill document

ChatGPT Exporter Ultimate

One of dozens of skills and plugins in TinkerClaw — a self-improving OpenClaw fork that's been running 24/7 for months.

Your entire ChatGPT history, exported in seconds — not tomorrow.

Deleting your exports — --purge

An export is a plaintext copy of every conversation you have had. Leaving it on disk is usually a bigger risk than the API call that created it, so there is a cleanup command:

./scripts/export.sh --purge

This is destructive. It permanently deletes the export directory tree. It prints the target path and its size first, requires you to type PURGE to confirm, and refuses to run non-interactively. It removes local copies only — your ChatGPT account is untouched.

What You Get

  • Every conversation. Projects, chats, timestamps, roles, metadata. Nothing left behind.
  • Instant. No 24-hour wait. No email with a ZIP of cryptic JSON. Just your data, now.
  • Context preserved. Conversations stay readable. Who said what, when, and why — all intact.

How It Works

Install the skill. Run it. Get your full export. That's it.

ChatGPT's built-in export makes you wait a day and hands you raw JSON. This skill respects your time.

Won't: email you a ZIP file 24 hours later like you requested declassified government documents.

👉 Explore the full project: github.com/globalcaos/clawdbot-moltbot-openclaw

Clone it. Fork it. Break it. Make it yours.


⚠️ Read This Before Your First Export

An export is a plaintext copy of everything you have ever said to ChatGPT, sitting on your disk. Whatever you pasted into a chat is in there: API keys, passwords, medical questions, legal problems, salary numbers, your employer's confidential material, other people's personal data.

Once written, those files are ordinary files. Anything running as your user can read them, your backup tool will pick them up, and a sync client will happily push them to a cloud you did not think about. So:

  • Export to a local, non-synced directory. Not Dropbox, not Drive, not iCloud, not a repo.
  • The scripts create the directory mode 0700 and files 0600. Don't loosen that.
  • Delete the export when you are done with itrm -rf .
  • If you only need to know what you talked about, use index-only mode: titles, ids and timestamps, with no message content fetched at all.
  • Never hand a raw export to anyone, including another AI, without reading it first.

This skill will not export anything until you say yes, and it tells you what it is about to do before it asks.

Short version: your conversations travel from chatgpt.com to your disk, and nowhere else. There is no server of ours in this picture. Longer version, because you should not take that on trust:

Where the data goes. Each path fetches from chatgpt.com/backend-api and writes files locally. There is no upload, no telemetry, no analytics, no third-party endpoint of any kind. The only network destination in the entire package is chatgpt.com.

What gets written, and where.

PathDefault outputFiles
scripts/export-conversations.ts (relay)~/chatgpt-export/index.json, summary.md, per-conversation .json + .md
scripts/export.sh (token)~/chatgpt-export/index.json, per-conversation .json + .md
scripts/bookmarklet.js (browser)your browser's Downloads folderone chatgpt-export-.json

Directories are created 0700, files 0600. You can override the destination on both scripts.

How it authenticates — and the honest part. ChatGPT has no public API for reading your own conversation history. The only way to do this is to talk to the same private endpoints the web app uses, as you. That is the skill's core mechanism, and there is no version of it that avoids touching your session. What we can do is minimise it, and we do:

  • Relay path — runs inside the page with credentials: 'include'. Reads no token at all.
  • Bookmarklet — cookie-first. It only reads /api/auth/session if the cookie call comes back 401/403, and that token stays in the function scope: never printed, never stored, never sent anywhere except back to chatgpt.com in an Authorization header.
  • Shell path — takes a token from CHATGPT_ACCESS_TOKEN or a hidden prompt. Passing it as a command-line argument is rejected, because argv is visible to every process via ps and gets saved to your shell history.

If handling a session token is not acceptable to you — a reasonable position — use the relay path or the bookmarklet, which never read one, or use ChatGPT's own 24-hour export instead.

Capabilities, and why each one is needed.

CapabilityWhyScope
NetworkList and fetch your conversationschatgpt.com/backend-api only. No other host, ever
Browser session (cookie)Authenticate as you — there is no other way inSame-origin, inside the page; not copied out
Session tokenFallback when cookie auth is rejected; the only option headlessIn memory / env var for the run. Never logged, never written to disk
File writeThe export itselfThe output directory you choose. 0700 dir, 0600 files
Shell execexport.sh runs curl and jqTwo fixed binaries, fixed arguments
Search endpointFind conversations inside Projects, which the list endpoint omits~65 short queries against your own history. Opt-in, skippable
Credentials on diskNone. Reads no keyring, no .env, no config, no cookie jar
Third-party servicesNone. No telemetry, no upload, no analytics
Privilege escalationNone. No sudo, no writes outside the output directory

The consent step — every path has one, in code.

  • export.sh prints the destination, what will be written and the sensitivity warning, then requires you to type export. Anything else aborts before a single byte is fetched.
  • bookmarklet.js opens a dialog stating that the file may contain credentials and other sensitive material. Cancel and nothing happens. Two further dialogs let you skip the Projects search and drop message bodies.
  • exportChatGPTConversations() throws unless the caller passes confirmed: true. An agent has to ask you first — installing this skill cannot turn into an unattended dump of your chat history.

The off switch. Both scripted paths check this before any network call or file write:

CHATGPT_EXPORT_DISABLE=1                       # disable for one command or one shell
touch ~/.openclaw/chatgpt-export.disabled      # disable permanently, machine-wide
rm ~/.openclaw/chatgpt-export.disabled         # allow again

With either in place, export.sh prints a notice and exits 0, and the TypeScript path throws. Neither fetches anything. In the browser, the off switch is cancelling the first dialog.

Scope controls. Full export is a choice, not the default behaviour you get by accident:

Controlexport.shrelay (.ts)bookmarklet
Preview without writing--dry-run
Cap how many--limit Nlimit: N
No message bodies--index-onlyindexOnly: trueCancel the third dialog
Skip Projects searchn/a (never searches)n/a (never searches)Cancel the second dialog
Choose destination-o DIRoutputDirbrowser Downloads

Usage

Prerequisites: Node with tsx, an OpenClaw browser relay attached to a Chrome/Chromium where you are logged into chatgpt.com.

Ask your agent: "Export my ChatGPT conversations." The agent must confirm the destination and the sensitivity warning with you, then call:

await exportChatGPTConversations({
  browserEvaluate,           // supplied by the agent's browser tool
  confirmed: true,           // only after the user has actually agreed
  outputDir: "~/chatgpt-export/2026-01-31",
  format: "both",            // "json" | "md" | "both"
  limit: 50,                 // optional cap
  indexOnly: false,          // true = titles/timestamps only, no message text
});

Without confirmed: true it throws and exports nothing.

2. Bookmarklet (browser only, includes Projects)

Prerequisites: Chrome DevTools, logged into chatgpt.com.

Open the console on chatgpt.com, paste scripts/bookmarklet.js, press Enter, and answer the three dialogs: export or not, search Projects or not, include message text or not. The result lands in your Downloads folder as a single JSON file. This is the only path that finds conversations inside Projects, and it does so by running ~65 short searches against your own history — that is the trade, and the dialog says so before it starts.

3. Shell script (headless / advanced — you supply the token)

Prerequisites: bash, curl, jq, and an access token you already have.

export CHATGPT_ACCESS_TOKEN='...'        # or let the script prompt you (input hidden)
./scripts/export.sh --dry-run            # count what would be exported, write nothing
./scripts/export.sh --index-only         # titles and timestamps only
./scripts/export.sh -o ~/private/chatgpt --limit 100

The token is never accepted as an argument. Use this path only if the two above do not fit your setup; they need no token at all.

Included Files

FilePurpose
scripts/export-conversations.tsBrowser-relay exporter. Consent-gated, off-switchable, no token read
scripts/bookmarklet.jsConsole/bookmarklet exporter. Three consent dialogs, cookie-first auth, finds Projects
scripts/export.shHeadless exporter using a token you supply. Consent prompt, off switch, 0700 output

That is the whole package — three scripts, no binaries, no installers, nothing that runs on its own. Everything the documentation above describes is in these files, and everything in these files is described above. If you find a claim here that the code does not do, that is a bug — open an issue on the repo.

Related skills

Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.

by johnpatternai21 installs8 stars

Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.

by Iván555 installs18 stars

Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.

by nssa.io1.0k installs47 stars

Post videos, photos, text, and documents to 10 social platforms through a single REST API call.

by victorcavero14375 installs50 stars

Trade crypto, manage a multi-chain wallet, and query an AI analyst from one CLI.

by lowesyang162 installs109 stars

Query and manage Linear issues, projects, teams, cycles, labels, and comments through a managed OAuth GraphQL endpoint.

by byungkyu518 installs18 stars

More from globalcaos

Browse all skills

Give your OpenClaw agent a JARVIS-style British voice with matching dry humor, audio plus a purple chat bubble in one call.

by globalcaos190 installs4 stars

Native WhatsApp channel for OpenClaw with 22 messaging/group actions plus Protocol v2 multi-agent coordination.

by globalcaos116 installs3 stars

One dashboard tracking Anthropic, Gemini, OpenAI, and Manus token usage with budget alerts and a local REST API.

by globalcaos59 installs

Stop sending 'format this JSON' to Opus. Stop sending 'cron job' to GPT. Billing-aware routing guide for choosing among the models already configured in your OpenClaw setup when assigning an agent, sub-agent or cron task — flat-rate first, metered only when justified, budget pressure respected. Not for picking models outside your configuration, and not a runtime proxy.

by globalcaos16 installs

Your agent says 'done' — but did it check? Superpowers turns any OpenClaw agent into a disciplined engineer. Verification iron law (evidence before claims), three-agent code review (build → verify spec → verify quality), systematic debugging (4-phase root cause, three-strike rule), brainstorming gates (design before code), and anti-over-engineering rules. Use when: (1) coding tasks of any complexity, (2) debugging failures, (3) about to claim work is complete, (4) spawning sub-agents, (5) planning features, (6) reviewing code. Inspired by top coding agent methodologies, adapted for OpenClaw multi-agent architecture.

by globalcaos14 installs

Read and search Outlook, inspect attachments, and create or edit drafts without any send endpoint. Uses one short-lived Microsoft Graph access token supplied on stdin for one run; it never stores credentials. Bulk mailbox export is opt-in.

by globalcaos23 installs