如何將 Claude 對話儲存為 Markdown(Artifacts、引用、Projects)

·

Claude 對話正越來越成為嚴肅研究與程式碼工作發生的地方。包含 Artifacts、引用以及數小時來回交流的長串列,往往比你筆記中的任何文件承載著更多推理。然而 Anthropic 並未提供任何匯出功能。沒有「以 Markdown 下載」按鈕,沒有 JSON dump,也沒有歸檔端點。一旦一條串列滾出你的側邊欄,回去的唯一方法就是在 claude.ai 上搜尋,而它並不總能浮現出你記得的內容。

把 Claude 對話儲存為 Markdown 一次解決三件事:你獲得永久的本地存檔,可以在 Obsidian 或 Notion 中引用過去的推理,並且在切換模型時可以把舊的 Claude 串列作為脈絡反餵給 ChatGPT 或 Gemini。

本指南涵蓋將 Claude 對話轉為乾淨 Markdown 的所有方法——從一次快速聊天到一條包含 Artifacts 的 200K token 研究串列。

為什麼把 Claude 對話儲存為 Markdown?

Markdown 是無論對話需要去哪裡都能用的格式:

  • 餵給另一個 LLM ——把舊的 Claude 串列貼進 ChatGPT、Gemini 或本地模型,當你想要第二意見或不同推理風格時
  • 放進 Obsidian 或 Notion ——一個對話一個檔案,完全可搜尋,可從專案筆記裡連結
  • 引用某個具體回合 ——在 50 回合的串列裡找到「Claude 提議重構的那個時刻」,只需一次搜尋
  • 把 Artifacts 歸檔為真實檔案 ——Claude 構建的程式碼、文件、React 元件變成一個你可以複製到 repo 的程式碼區塊
  • 保留引用 ——Claude 為其回答做依據的網頁搜尋結果變成你日後可審計的腳註

2026 年驅動大部分 Claude-to-Markdown 流量的用例是第一個:人們用 Claude 做深度工作,然後想保留輸出與推理,而不僅僅是最終答案。

方法 1:Save(最快,一鍵)

Save 是一個 Chrome 擴充功能,一鍵就能把任何 Claude 對話變成 Markdown 檔案。它遍歷對話 DOM,依序提取每個使用者與助理回合,把 Artifacts 提取為帶正確語言識別碼的程式碼區塊,並將引用保留為腳註。

運作方式:

  1. 在 Chrome 中開啟 Claude 對話(支援 claude.ai/chat/... 和共享對話連結)
  2. 點擊工具列中的 Save 擴充功能圖示
  3. .md 檔案立即下載(若已連接 Save Vault,則落入其中)

你能得到什麼:

  • 對話標題與日期作為 frontmatter
  • 每個使用者與助理回合,依序,帶角色標籤(## You / ## Claude)
  • Claude Artifacts(程式碼、文件、HTML、React 元件)被提取為帶正確語言識別碼的程式碼區塊
  • 回覆內的程式碼區塊帶語言提示
  • Claude 的網頁搜尋結果中的引用作為 Markdown 腳註
  • 當 Claude 呼叫工具時的 tool-use 回合(呼叫與結果都會出現)
  • 當對話在 Claude Project 內且系統提示或知識檔案可見時,保留 Project 脈絡

被移除的內容:

  • Claude.ai 的導覽 chrome、側邊欄、模型選擇器
  • 你未選中的空再生分支
  • 內聯 UI 元素(「Edit」、「Copy」、「Retry」按鈕)
  • 載入骨架與部分串流

最適合: 研究者、工程師、AI 使用者,任何在 Claude 中跑長串列並想保留工作的人。如果你需要一份乾淨的對話紀錄貼到另一個模型、歸檔到 Obsidian 或交給隊友,這是最乾淨的路徑。

輸出範例

儲存一段帶 Artifact 的簡短 Claude 對話會產生:

---
title: "Refactor my Express middleware into Hono"
url: https://claude.ai/chat/a1b2c3d4-...
model: Claude Opus 4.7
date: 2026-05-22
turns: 6
---

## You

Here's my Express middleware. Can you port it to Hono? I want to keep
the same auth behavior but drop the body-parser dependency.

```js
app.use((req, res, next) => {
  if (!req.headers.authorization) return res.sendStatus(401)
  // ...
})

Claude

Hono ships JSON parsing in core, so the body-parser dependency goes away on its own. The middleware shape is almost identical --- c.req instead of req, and you return instead of calling next().

Here’s the port 1:

import { Hono } from 'hono'

const app = new Hono()

app.use('*', async (c, next) => {
  const auth = c.req.header('Authorization')
  if (!auth) return c.text('Unauthorized', 401)
  await next()
})

這個檔案再貼一下就是可用的 ChatGPT 脈絡,再按一下鍵就是一份永久的 Obsidian 筆記,裡面的 Artifact 再複製一下就能被 commit 到 repo。

## 方法 2:手動複製貼上

Claude.ai 允許你在對話區中選擇文字,像任何網頁一樣複製。

**步驟:**

1. 捲動到對話頂端
2. 單擊拖動選擇每個回合
3. 複製,貼到 Markdown 編輯器
4. 手動加入角色標籤、修復程式碼區塊圍欄、重新加入未傳過來的 Artifact 內容、重建引用連結

**這種方法的問題:**

- 在長串列中選擇整段對話很脆弱——Claude 虛擬化了 DOM,所以捲動會讓更早的回合從文件中掉出
- Artifacts 不會作為文字複製;你只能得到佔位符或什麼都沒有
- 程式碼區塊失去其語言提示
- 網頁搜尋引用會以 `[1]` `[2]` 的形式出現,沒有目標 URL
- 角色邊界崩塌——使用者與 Claude 的回合糊成一面文字牆
- 分支對話(你重新生成了某個回應)會一次性把所有分支帶來

對 2 回合的交流可行。超過一螢幕的就崩潰。

## 方法 3:瀏覽器主控台 + 指令碼

對開發者來說,對話資料存在 DOM 裡。你可以在 Chrome DevTools 主控台寫一個小指令碼來遍歷它。

```js
const turns = document.querySelectorAll('[data-testid="conversation-turn"]')
const md = Array.from(turns).map(t => {
  const role = t.querySelector('[data-role]')?.dataset.role
  const body = t.querySelector('.prose')?.innerText
  return `## ${role === 'user' ? 'You' : 'Claude'}\n\n${body}`
}).join('\n\n---\n\n')
console.log(md)

最適合: 想對輸出做一次性控制的工程師,或需要在多條串列上腳本化批次提取的人。

這種方法的問題:

  • 這些選擇器不是任何公開 API 的一部分;Anthropic 經常發布 UI 變更,指令碼會無預警地壞掉
  • Artifacts 渲染在 iframe 或樹外的 React portal 裡;innerText 抓不到
  • 引用存在於初始 DOM 中沒有的 tooltip 裡
  • tool-use 回合的巢狀結構與文字回合不同
  • 你必須登入並在對話分頁上;不能作為批次任務執行

控制環境時的合理逃生通道。不是可以依賴的方法。

方法 4:Anthropic 的 Workbench API(重建對話)

Anthropic API 透過 Messages 端點曝露對話原語,但沒有任何端點會傳回你過去在 claude.ai 上的對話。API 只看到你透過它傳送的對話。要以程式設計方式重建一條 claude.ai 串列,你得自己重播它。

curl https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "claude-opus-4-5",
    "messages": [{ "role": "user", "content": "..." }]
  }'

最適合: 在自己的資料庫中儲存對話、構建自己的 Claude 包裝器的團隊。如果你掌控呼叫,你就掌控匯出。

對於「已有對話」用例的問題:

  • 過去的 claude.ai 對話透過 API 無法觸及
  • 需要 API 額度與你自己的儲存層
  • 對歸檔你已經在 Web UI 上擁有的串列幫不上忙
  • Artifacts 也是 API 的一個特性,但渲染流水線是 Web 應用的,不是 API 的

如果你在做產品,這是正確的方法。如果你在嘗試歸檔昨天的研究串列,這就是錯誤的方法。

你應該使用哪種方法?

情境最佳方法
歸檔一條你已有的 Claude 研究串列Save ——一鍵、結構化輸出
把舊的 Claude 對話貼進 ChatGPT 或 GeminiSave ——每個回合,Artifacts 完整
保留 Claude 為你構建的 Artifact(程式碼、文件、React)Save ——以程式碼區塊形式提取
把一條串列放進 Obsidian 與專案筆記並列Save ——乾淨的 frontmatter 與標題
從零搭建自己的對話記錄器Anthropic API ——如果你掌控呼叫
快速粗略複製 2 回合的交流手動複製貼上 ——免費、快、亂
帶自訂變換的一次性提取主控台指令碼 ——如果你熟悉選擇器

對大多數人來說——特別是任何把 Claude 用於研究、工程或寫作的人——Save 就是答案。它無需任何設定就能產出最乾淨的 Markdown,並以與單回合聊天相同的速度處理 200K token 的串列。

Save 處理的邊界情況

  • Claude Projects。 Project 內的每段對話都被提取為獨立檔案。當 Project 的系統提示或知識檔案在對話標頭可見時,Save 會把它們捕捉到 frontmatter,這樣脈絡就不會遺失。
  • 多 Artifact 對話。 Claude 構建了三個 Artifacts(例如一個 HTML 頁面、一個 React 元件和一個 SQL schema)的串列,會以每個 Artifact 自己的程式碼區塊出現,按出現順序,帶正確的語言識別碼。
  • 非常長的對話。 Claude 的 200K 脈絡視窗可以產生數百回合、數萬字的串列。Save 邊捲邊串流處理 DOM,因此完整的串列能不遺失早期回合地通過。
  • 分支與重新生成的回應。 當你重新生成了一個 Claude 回覆時,只有你保留的那個分支(目前顯示的)會被匯出。被丟棄的分支會被跳過。
  • tool-use 回合。 當 Claude 呼叫工具時——網頁搜尋、程式碼執行、computer use——呼叫與結果都會被捕捉為帶 tool_usetool_result 標記的程式碼區塊,使推理鏈保持完整。
  • 共享對話連結。 claude.ai/share/... 的 URL 與你自己的對話運作方式相同。便於歸檔別人分享給你的串列。
  • Computer Use 工作階段。 僅限於 DOM 中可見的——截圖與模型的推理會通過,底層 VM 狀態不會。
  • Claude Code 對話。 Claude Code 在你的終端機而非 claude.ai 中執行。對於終端機工作階段,參見 Claude Code + Obsidian 工作流指南,單獨捕捉它們。

與你的工作流搭配

Markdown 輸出在你需要的任何地方都能用:

  • ChatGPT / Gemini / 本地模型 ——貼上檔案,對不同模型問後續問題
  • Obsidian ——丟進你的 vault,從專案筆記連結它,搜尋你曾儲存過的每一條 Claude 串列
  • Notion ——直接貼上,標題與 Artifact 程式碼區塊正確渲染
  • Apple Notes ——透過 Markdown 分享擴充功能乾淨匯入
  • git repo ——直接從程式碼區塊把 Artifacts commit 到正確檔案
  • Save Vault ——如果你連接了一個,每次 Claude save 都會自動落入其中,帶反向連結與標籤

常見問題

Save 能在共享對話連結上運作嗎? 能。claude.ai/share/... 下的任何東西都以與你自己對話相同的方式匯出。便於歸檔同事傳給你的串列。

Claude Projects 呢? Project 內的每段對話單獨儲存。當 Project 的系統提示或知識檔案在頁面(標頭或側邊欄)可見時,Save 會把它們捕捉到 frontmatter,這樣你不會失去對話所依賴的脈絡。

它會捕捉 Artifacts 嗎? 會——這是核心差異點。Artifacts(程式碼、文件、HTML、React 元件、Mermaid 圖)會按 Claude 構建它們的順序,以帶正確語言識別碼的程式碼區塊形式通過。你可以直接把它們複製到 repo 或文件。

Claude 網頁搜尋的引用呢? 引用以 Markdown 腳註形式保留。腳註文字是來源 URL,所以你日後可以審計 Claude 的依據,而不必回到原始串列。

它會在 Claude Code(CLI)中運作嗎? Claude Code 在你的終端機而非瀏覽器中執行。擴充功能針對 claude.ai。對於 CLI 工作階段,對話紀錄存在 ~/.claude/ 的磁碟上,可以單獨捕捉——Claude Code + Obsidian 工作流指南涵蓋這部分。

它能處理非常長的串列嗎? 能。Claude 的 200K 脈絡可以產出數百回合的對話。Save 捲動對話面板並隨每個回合重新虛擬化回 DOM 時讀取它,因此即使最長的串列也能完整通過。

會包含分支回應嗎? 只包含 UI 中目前顯示的分支(你保留的那個)。你未選擇的重新生成分支會被跳過,使檔案與 Claude 向你展示的對話一致。

它要多少錢? Save 有免費等級,讓你可以在幾段對話上試用。之後,小額訂閱涵蓋持續使用。

相關 Save 指南

Footnotes

  1. https://hono.dev/docs/guides/middleware

## Continue reading

Jean-Sébastien Wallez

Written by

Jean-Sébastien Wallez

I've been making internet products for 10+ years. Built Save on weekends because I wanted my own reading library in clean markdown for Claude and Obsidian. Write here about web clipping, AI workflows, and the small things that make a personal knowledge base actually useful.