Demo: on a ChatGPT conversation, click the Lucian button under an answer, choose “Extract handoff Markdown”, and the chat is collected, analyzed and saved as a handoff file

Introducing · Chrome extension

Lucian AI Chat Exporter

Hand off a ChatGPT, Claude, Gemini or Grok chat to another AI in one click, or keep it as a PDF, Word or Hangul document.

  • Free
  • MIT license
  • No servers
  • v1.3.10

The longer you work with an AI, the longer the chat gets, and the decisions that matter get buried somewhere inside. Open a new chat and you start explaining from scratch. Lucian lifts that context out, hands it to the next AI, and keeps the whole conversation as a document.

01Getting started

One button,
under every answer

When an answer finishes, a Lucian button with a soft violet–cyan ring appears next to copy and retry. The Lucian icon in your browser toolbar opens the same thing.

  • Exactly two features: handoff and export
  • No sign-up, no settings
  • Jobs keep running after you close the popup
  • Progress (n% done) and results show in both places

Try the button on the right. That's the real panel.

Lucian toolbar popup: hand off to another AI, export full conversation, saved handoff result
Toolbar popup

AI answer

Switching to Tauri. The frontend stays as it is; the backend will be written in Rust.

// src/main.rs
fn main() {
    tauri::Builder::default()
        .run(tauri::generate_context!())
        .expect("error");
}

02Hand off to another AI

A file the next AI
can pick up at once

  1. 01

    It opens with a note for the next AI

    How to read the file, what to follow first, the source service and its size, all at the top.

  2. 02

    Verbatim, with a pointer

    Rule-based code picks sentences straight from the chat. No LLM, embeddings or external API. Every line points back to its source, like [#m1].

  3. 03

    The latest decision wins

    Earlier decisions stay, marked with the message where they changed.

  4. 04

    Constraints and past failures, too

    Repeated instructions keep their count, failed attempts keep their cause.

  5. 05

    Pick up right where it stopped

    The last request and the next steps are laid out, so the next AI simply continues.

Notes app171 messages

  1. You#m1

    I want to build an internal notes desktop app. The goal is a light, fast cross-platform app.

  2. ChatGPT#m2

    Great. Electron, Tauri and Flutter are all options.

  3. You#m3

    Then let's build it with Electron. And never use jQuery.

  4. … 161 more messages …
  5. You#m165

    Memory use is too high. Let's switch from Electron to Tauri. Again: never use jQuery.

  6. ChatGPT#m166

    Switching to Tauri. The frontend stays as it is; the backend will be written in Rust.

  7. You#m167

    Good. Tauri is final.

  8. ChatGPT#m168

    Project setup is done, and the note list and saving work too. Next steps: implement auto-update, set up code signing.

  9. You#m169

    The build failed with error: linker cc not found. The cause was missing Xcode command line tools.

  10. ChatGPT#m170

    Good. Installing the Xcode command line tools fixed the linker problem.

  11. You#m171

    Now please implement auto-update.

Notes-app-lucian-handoff-2026-10-18.mdSaved

# AI work handoff — Notes app

> To the AI reading this — verbatim excerpts selected from the original chat by a rule-based algorithm. No new facts were generated.

> 1. Read “Confirmed decisions” and “User instructions & constraints” first and follow them.

## 0. Source

ServiceChatGPT

Messages171

Source size~19,864 tokens

Modekey excerpts + recent transcript

## 1. Core goal

I want to build an internal notes desktop app. [#m1]

The goal is a light, fast cross-platform app. [#m1]

## 2. Confirmed decisions (latest first priority)

Let's switch from Electron to Tauri. [#m165]

Tauri is final. [#m167]

### Earlier decisions that were changed or dropped

Then let's build it with Electron. [#m3] → changed in [#m165] (the latest decision above wins)

## 3. User instructions · constraints · prohibitions

### Constraints & prohibitions

Again: never use jQuery. [#m3] [#m165] (emphasized 2 times)

## 8. Causes of earlier failed attempts

The build failed with error: linker cc not found. [#m169]

## 5. Current state (last point of work)

Last user request [#m171]

> Now please implement auto-update.

## 7. Next steps

Implement auto-update [#m168]

Set up code signing [#m168]

More in the same space, without the noise

From any AI to any AI

Move work from ChatGPT to Claude, or from Gemini to a fresh chat. Just attach one file: it tells the next AI to sum up where things stand first and propose the next step.

0

LLMs · embeddings · external APIs

Extractive, so it never makes up facts.

⚠️ may have been changed in [#m170] — confirm

Unsure? It says so

It never assumes a change from a keyword alone; the next AI is told to check with you.

docs.tauri.app/start?utm_source=chatgpt.com

No noise

Uncited search results, tracking parameters, citation chips and UI markup are dropped; each sentence appears once.

_(… 18 lines omitted — the same or nearly the same text is in [#m24] below)_

A revised draft appears once

Ask for rewrites as often as you like: the last version stays in full, earlier ones keep only what changed.

Attachments · spec.txt

Attachments come along

Pasted text and text files go in verbatim. PDFs and images are listed so the next AI can ask for them.

Notes-app-lucian-handoff-2026-10-18.md

Named after the chat

Even in a crowded Downloads folder, you know which chat it came from.

03By the numbers

Lucian by the numbers

1.16s — to build the handoff of a 1M-token chat

4,514 messages · from data to finished Markdown · Chrome 155, M2 Pro. 0.85 s on a rebuild with the analysis cache.

~ 12% — of the original, for long chats

Each section gets a token share and fills it by importance, between 8k and 32k tokens. A handoff is always smaller than the full export; short chats keep only their key sentences.

97.6% — answered correctly from the file alone

Measured on synthetic chats: can an AI that reads only the handoff answer questions correctly? 78.8% → 97.6% at the default budget.

0 — LLMs, embeddings or external APIs

Rule-based TypeScript picks the sentences. The method was chosen by comparing 19 algorithms on 27 real conversations.

04Export the full conversation

Any format,
nothing left out

Markdown, PDF and TXT right away; open “More formats” for Word, Hangul (HWPX), HTML, JSON and a full ZIP backup. Code, tables, math, images and attachment info are kept.

Markdown

.md

01

For chats with images, choose each time: one ZIP, an image folder next to the file, or no images.

PDF

.pdf

02

Made on your computer with Chrome's print engine. Korean fonts, tables, code, math and images as they are. No PDF server.

TXT

.txt

03

Plain text that opens anywhere. Math stays as LaTeX source.

Word

.docx

04

A Word document with headings, tables, code blocks and images. Heavy modules load only when needed.

Hangul (HWPX)

.hwpx

05

Not a renamed file. A real OWPML package that passes the official XSD schema validation.

HTML

.html

06

A single page that opens in any browser, with math already rendered.

JSON

.json

07

Keeps thinking, alternate branches and uncited search results in their original structure.

ZIP backup

.zip

08

Three documents, images, attachments and a verification report in one file. Anything missing is listed.

Every export is verified

Message counts against the source, images and attachments, math rendering and file integrity (ZIP/XML structure, download size) are checked. Gaps are shown as warnings or failures, never hidden.

A document's source list holds only what the answer actually cited; uncited search results are kept in the JSON and ZIP backups.

VerificationExample
  • Messages: 171 / 171 extracted
  • Images: 3 / 3 included
  • Attachments: 2 / 2 saved
  • Math: 12 rendered
  • ZIP and XML structure checked
  • Download size matches
  • 41 uncited search results kept in JSON/ZIP only
Lucian toolbar popup: Markdown, PDF and TXT, with More formats open (Word, Hangul, HTML, JSON, ZIP)
Real popup

05Privacy

Your chats never
leave this browser

  • No servers, AI APIs or analyticsEverything happens inside your browser.
  • Credentials are never storedCookies and auth tokens never touch the disk. A service's auth header is used only in that tab's memory.
  • Deleted after 7 daysCollected chats and images stay in this computer's IndexedDB; the image cache keeps at most 500.
  • No remote codeAll code ships in the package, with no eval or new Function. It reads only chats you can already see.

Works the same on four services

  • ChatGPTchatgpt.comCanvas · uploaded & generated images · attachment files
  • Claudeclaude.aiArtifacts · web search sources
  • Geminigemini.google.comLong chats collected page by page
  • Grokgrok.comGenerated & attached images · sources
See the full support matrix
ItemChatGPTClaudeGeminiGrok
CollectionInternal API + DOM fallbackInternal API + DOM fallbackbatchexecute + DOM fallbackREST + DOM fallback
Text, code, tables, lists✅✅✅✅
Math✅✅✅✅
Images✅ uploaded & generated✅ upload previews✅✅ generated & attached
Attachment files (ZIP)✅ file API△ when a URL exists❌ names only△ when a URL exists
Canvas & artifacts✅ Canvas✅ Artifacts——
Sources & citations✅✅ web search❌ not parsed✅
Thinkingkept in JSON/ZIPkept in JSON/ZIP❌ not parsedkept in JSON/ZIP
Long chats✅✅✅ paged collection✅
Button under answers✅✅ on hover for older answers✅✅

If Lucian can't read an internal API's answer, it reads the page (DOM) instead and records a warning in the verification. Share links (/share/…) and chat list pages are not supported.

06Install

Installed in a minute

Requires Chrome 116 or later. Free and open source under the MIT license.

Recommended

Chrome Web Store

Install in one click and get new versions automatically. The simplest way.

Manual install

Install from the release ZIP

For installing without the store or pinning a version. Updates are not automatic.

  1. 1

    Unzip the file you downloaded.

    lucian-ai-chat-exporter-v1.3.10.zip
  2. 2

    Type this into Chrome's address bar.

    chrome://extensions
  3. 3

    Turn on “Developer mode” in the top-right corner.

  4. 4

    Click “Load unpacked” and pick the unzipped folder (the one with manifest.json).

  5. 5

    Reload your ChatGPT, Claude, Gemini or Grok chat. Done.

To update, press Lucian's reload (↻) button in chrome://extensions, then reload any open chat tabs.

Build from source

Node.js 20+. Pick the built dist/ folder in step 4 above.

Terminal

$ git clone https://github.com/Seokwoooo/lucian-ai-chat-exporter.git
$ cd lucian-ai-chat-exporter
$ npm ci
$ npm run build   # → dist/

Questions

Is it really free?

Yes. It's open source under the MIT license. No sign-up, no payment, no settings.

Is the handoff an AI summary?

No. Rule-based code quotes sentences straight from the chat, without any LLM, embeddings or external API. It can't invent facts, and every line points back to its source as [#mN]. Long chats shrink to about 12% of the full export (8k–32k tokens), and no handoff is ever more than 2/3 of it. Short chats keep only their key sentences, in order.

Is my chat sent anywhere?

No. Collection and file building both happen inside your browser. There are no servers, AI APIs or analytics.

Why does PDF open a print dialog?

Because it's made on your computer by Chrome's print engine. Choose “Save as PDF” as the destination. There's no reliable local way for an extension to save a PDF directly, and this avoids any PDF server.

What happens to images in a Markdown export?

A Markdown file can't hold images, and service image links only open while you're logged in. So you choose each time: one ZIP, an image folder next to the file, or no images.

What if a service changes its page?

Internal APIs and page structures can change without notice. If Lucian can't read the API's answer, it reads the page instead and flags it in the verification. When a service briefly refuses requests (429), it doesn't scroll the page: it waits the time the service asks for, or builds the file from the copy it saved earlier and says so. Each site has its own adapter file, so a fix is a one-file change.

Any known limitations?
  • Math in Word, HWPX and TXT is LaTeX source (PDF and HTML render it).
  • HWPX was checked with the official XSD and an open-source renderer, not opened in Hancom Office. DOCX was not opened in Microsoft Word.
  • The full flow from button to saved file was checked on real ChatGPT and Claude accounts (39 conversations). For Gemini and Grok, only the real services' response structure was checked.
  • Gemini thinking and citations are not parsed.
  • Long tool output is clipped to 2,000 characters in documents; the full text stays in the JSON and ZIP backups.

Read the test report ↗

Even a long chat,
to the next AI in one go.

Small, fast and accurate. Just two features.