ChatGPT Markdown Export

Adds "Copy as Markdown" and "Export as Markdown" to the ChatGPT chat options menu (the 3-dots button in the top-right of a chat).

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

Auteur
Blati
Installations quotidiennes
0
Installations (total)
1
Notes
0 0 0
Version
0.1.0
Créé
18/05/2026
Mis à jour
18/05/2026
Taille
16,4 ko
Licence
MIT
S'applique à

Adds two items to ChatGPT's chat options menu (the three-dots button in the top-right of an open conversation):

  • Copy as Markdown — copies the full conversation to the clipboard.
  • Export as Markdown — saves the conversation as a .md file named after the chat title and today's date.

Both options live inside the native menu, with matching styling, divider, and hover behavior — they look like part of ChatGPT.

Output format

The exported Markdown is the model's own emission, taken verbatim from ChatGPT's backend conversation API — not scraped from rendered HTML. That means code fences, tables, nested lists, LaTeX math (\(...\) and \[...\]), and blockquotes all survive intact, exactly as the model produced them.

Each file starts with a small YAML frontmatter block:


 ────────────────────────────────────────────────────────────────────────────────

 title: "..."
 conversation_id: ...
 created: ...
 exported: ...
 model: ...
 url: https://chatgpt.com/c/...

Each turn is preceded by an H2 heading (## User / ## ChatGPT (model-slug)), and assistant turns include a "Sources" section underneath when web citations were used in the answer.

When a chat has branches (from edited prompts or regenerated replies), the export follows the currently visible thread — i.e. what you see on screen — by walking the conversation tree from current_node back to the root.

Privacy

The script makes two requests, both to chatgpt.com, both using your already-active session:

  1. GET /api/auth/session — to obtain the access token the ChatGPT UI itself uses.
  2. GET /backend-api/conversation/{id} — to fetch the conversation JSON.

Nothing is sent anywhere else. There is no telemetry, no third-party server, no analytics. The whole script runs locally in your browser.

Compatibility

  • Site: https://chatgpt.com/* (and the legacy chat.openai.com/*)
  • Userscript managers: Tampermonkey, Violentmonkey. The @grants are required — ChatGPT's strict Content-Security-Policy blocks @grant none injections, so the script declares GM_setClipboard, GM_download, and GM_info to opt into the sandboxed injection mode.

Known limitations

  • Image attachments in user messages are rendered as *[image: …]* placeholders rather than downloaded.
  • Non-final assistant channels (tool calls, hidden reasoning) are skipped — only the visible answer text is exported.
  • Shared chat URLs (/share/{id}) are not yet supported; only your own conversations under /c/{id}.