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).

スクリプトをインストールするには、Tampermonkey, GreasemonkeyViolentmonkey のような拡張機能のインストールが必要です。

You will need to install an extension such as Tampermonkey to install this script.

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyUserscripts のような拡張機能のインストールが必要です。

このスクリプトをインストールするには、Tampermonkeyなどの拡張機能をインストールする必要があります。

このスクリプトをインストールするには、ユーザースクリプト管理ツールの拡張機能をインストールする必要があります。

(ユーザースクリプト管理ツールは設定済みなのでインストール!)

このスタイルをインストールするには、Stylusなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus などの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus tなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

(ユーザースタイル管理ツールは設定済みなのでインストール!)

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください
作者
Blati
1日のインストール数
0
累計インストール数
1
評価
0 0 0
バージョン
0.1.0
作成日
2026/05/18
更新日
2026/05/18
大きさ
16.4KB
ライセンス
MIT
対象サイト

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}.