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, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

작성자
Blati
일일 설치 수
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}.