如何將 Notion 頁面儲存為 Markdown(toggle 展開,database 轉為表格)
Notion 原生的「Export as Markdown」看起來像一條真正的逃生通道,直到你打開那個 zip。toggle 全是收合的。內聯 database 出來是壞掉的 HTML。callout 丟了 emoji。檔名掛著 UUID 後綴。每個內部連結都指向一個不再存在的路徑。而大多數第三方「Notion to Markdown」工具只是把渲染後的 HTML 倒出來,這更糟 --- 你最後拿到的是裝作筆記的 <div> 一鍋粥。
本指南涵蓋把 Notion 頁面轉成乾淨 Markdown 的每一種方法 --- 從單一頁面到整個 workspace 的遷移。
為什麼把 Notion 頁面儲存為 Markdown?
Markdown 是能在 Notion 圍牆外活下來的格式:
- 遷移到 Obsidian、Logseq 或純檔案 --- 一個資料夾,沒有專有的 Notion blocks,所有內容的全文搜尋
- 餵給 LLM --- Claude、ChatGPT、Gemini 和本地模型都原生把 Markdown 當作上下文來讀
- 逃離 vendor lock-in --- Notion 的 block 格式是他們的,Markdown 是你的,你決定離開的那天就是它有意義的那天
- 建立 AI 知識庫 --- 把 Claude Projects 或本地 RAG pipeline 指向一個乾淨 Markdown 的資料夾,就能直接運作
- 在頁面被重組之前歸檔 --- workspace 會被重新整理,頁面會被刪除,你的筆記不該依賴同事的春季大掃除
2026 年帶動大多數 Notion-to-Markdown 流量的用例是遷移:2020 年在 Notion 裡建好第二大腦、現在想把它放到自己真正掌控的格式裡的人。
方法 1: Save(最快,一鍵)
Save 是一個 Chrome 擴充功能,一鍵就能把任何 Notion 頁面轉成一個 Markdown 檔案。它讀取渲染後的頁面,展開每一個 toggle,走完 database 的列,產出一個看起來真的像筆記的東西 --- 不是 Notion 的 block ID 倒影。
運作方式:
- 在 Chrome 裡打開 Notion 頁面(workspace 頁面或公開連結都行)
- 點工具列裡的 Save 擴充功能圖示
- 一個
.md檔案立刻下載(如果連線了就落到你的 Save Vault)
你會拿到什麼:
- toggle 完全展開 --- 每個收合的 section 都被打開並內嵌,所以什麼都不會被藏起來
- 內聯 database 變成 Markdown 表格 --- 欄變成表頭,列變成列,屬性保持可讀
- 整頁 database 變成列表格 --- 每一筆條目都被走過,屬性沿著列保留
- callout 變成有樣式的 blockquote --- emoji 圖示留在引用最前面,所以視覺提示能跨格式存活
- 帶語言識別字的程式碼區塊 ---
```python、```ts、```bash--- 你貼到別的地方那一刻語法高亮就會運作 - 連結到頁面以及反向連結的參考 --- 內部連結以 Markdown 連結形式指向對應的 slug
- 頁面標題、icon、cover --- frontmatter 抓取標題、icon 和 cover 圖片 URL,所以中繼資料能存活
會被移除的內容:
- Notion 的側欄、麵包屑和頂部導覽列
- 右側的留言面板(除非你明確啟用)
- 「Share」按鈕、「Updates」指示器和其他 UI 雜物
- 空的佔位 block 和 Notion 預設留下的「Untitled」殘渣
- 檔名上的 UUID 後綴 --- 你拿到的是
product-roadmap-q2.md,而不是Product-Roadmap-Q2-a1b2c3d4e5f6.md
最適合: 任何在遷移 Notion workspace、用既有文件搭 AI 知識庫、或者只是想抓一頁而不想啟動 Notion 匯出佇列的人。特別適合大量使用 toggle 和 database 的頁面 --- 也正是 Notion 原生匯出垮掉的地方。
輸出範例
儲存一個典型的有 toggle 和內聯 database 的 Notion 產品頁會產生:
---
title: "Product Roadmap Q2 2026"
icon: "🗺️"
cover: "https://www.notion.so/images/page-cover/woodcuts_1.jpg"
url: https://www.notion.so/Product-Roadmap-Q2-2026-a1b2c3d4e5f6
---
# Product Roadmap Q2 2026
## In Progress
### User Authentication Overhaul
- Migrate from JWT to session-based auth
- Add SSO support for enterprise customers
- Timeline: March 15 - April 30
> 💡 **Note:** This blocks the enterprise launch. Prioritize accordingly.
#### Implementation Details
The migration happens in three phases. Phase one ships the new session
store behind a feature flag. Phase two backfills existing JWTs into
sessions on next login. Phase three removes the JWT code path entirely.
```python
session = await create_session(user_id, ttl=86400)
response.set_cookie("sid", session.token, httponly=True)
Planned
API v2
| Endpoint | Status | Owner | Target |
|---|---|---|---|
| /users | Spec complete | Alice | Apr 15 |
| /billing | In review | Bob | Apr 22 |
| /analytics | Not started | — | May 06 |
Related Pages
這個檔案丟進 Obsidian 就是一個能用的筆記。貼到 Claude 裡,它給模型完整上下文,帶上原生匯出會埋掉的 toggle 內容和 database 列。
## 方法 2: Notion 原生的 Markdown 匯出
Notion 在頁面選單裡內建「Export as Markdown & CSV」選項。
**步驟:**
1. 開啟頁面,點右上角的 `...` 選單
2. 選 **Export**,然後格式選 **Markdown & CSV**
3. 等 zip,下載下來,解壓,在帶 UUID 後綴的檔案裡找到你要的頁面
**這種做法的問題:**
- **toggle 塌成空** --- `▶ Toggle` block 裡的內容在舊 code path 上從匯出裡完全消失,或者出來是一個大多數編輯器不會渲染的非標準 `<details>` block
- **database 被切成單獨的 CSV 檔** --- 頁面本身丟了內聯 table,你拿到一個 `.md` 加一個同名 `.csv`,得自己手動拼回去
- **檔名帶 UUID 後綴** --- `My-Page-a1b2c3d4e5f6.md` --- 這會破壞連結,而且在任何檔案瀏覽器裡都難看
- **內部連結指向 UUID 路徑** --- `[Other Page](Other-Page-b2c3d4e5f6a1.md)` --- 所以除非你重寫,整張連結圖都斷
- **callout 失去樣式** --- emoji 圖示被丟掉,block 變成一個普通段落
- **封面圖和 icon 不在 frontmatter 裡** --- 你真正想要的中繼資料沒了
對一個只有文字的頁面還行。一旦碰上 Notion 更豐富的 block 類型就崩 --- 也就是大多數真實頁面。
## 方法 3: Notion API + 腳本
想要完全掌控,可以用官方 Notion API 拉頁面,然後自己把 block 轉成 Markdown。
```bash
# Using notion-to-md (popular community library)
npm install notion-to-md @notionhq/client
# Set NOTION_TOKEN env var (integration token from notion.so/my-integrations)
node convert.js PAGE_ID > page.md
最適合: 跑定時匯出的工程團隊,搭從 Notion 到 docs 站台的同步 pipeline,或任何需要程式化掌控每種 block 類型如何對應到 Markdown 的人。
這種做法的問題:
- 需要建立一個 Notion integration,給它頁面存取權限,管理 token
- 轉換函式庫(像
notion-to-md)能處理常見 block,但跟不上更新的那些 --- synced blocks、AI blocks 和最近新增的常常出來是壞的 - database 屬性(formula、rollup、relation)需要自訂處理,因為 API 把它們當原始參照回傳,不是解析後的值
- 你在寫並維護一個 converter,這是一段真的軟體
- 大 workspace 上要尊重速率限制和分頁
如果你在搭 pipeline 這是對的方法。對單一頁面甚至小型遷移來說就是過度工程。
方法 4: 第三方遷移工具(Loom、super.so 等)
有一小批付費工具專門瞄準 Notion 遷移 --- 一些專注在把內容搬到特定目的地(Obsidian、Roam),另一些把 Notion 頁面發佈到 web 上(super.so、Potion)。
最適合: 做一次性大量遷移、想要一個服務處理 block 類型長尾、並且不介意按 workspace 付費的團隊。
對 Markdown 用例的問題:
- 輸出常常綁定在特定目的地(Obsidian vault、Roam graph)上,而不是乾淨可攜的 Markdown
- 大多數是按 workspace 或按頁面收費的付費服務
- 品質落差很大 --- 一些工具實際上只是在底層呼叫 Notion 的匯出,所以你連帶繼承了它所有的問題,還多了幾個步驟
- 大 workspace 處理慢,因為它們會批次處理
- 設計給一次性遷移用,不是用來 ad-hoc「現在儲存這個頁面」的
如果你在搬整個 workspace 又不想碰腳本,可以評估其中一個。如果你想五秒內拿到一頁乾淨內容,它們不是合適的工具。
你該用哪種方法?
| 情境 | 最佳方法 |
|---|---|
| 把 Notion 頁面貼到 Claude 或 ChatGPT | Save --- 一鍵,toggle 已展開 |
| 把一個頁面遷到 Obsidian | Save --- 乾淨檔名,連結可用 |
| 從 workspace 建 AI 知識庫 | Save --- 跨頁面一致的 Markdown |
| 在同事重組之前歸檔一個頁面 | Save --- 抓取你現在看到的樣子 |
| 一次性大量匯出整個 workspace | Notion 原生匯出 --- 接受清理稅 |
| 搭一個自動化 Notion → docs 站台的 pipeline | Notion API + 腳本 --- 程式化且穩定 |
| 付錢讓一個服務幫你做遷移 | 第三方工具 --- 前提是品質撐得住 |
對大多數人來說 --- 尤其是任何把 Notion 內容拿來當 AI 上下文,或者遷到 Markdown 原生工具的人 --- Save 就是答案。它零設定就能產出最乾淨的 Markdown,處理 toggle 多和 database 多的頁面也沒有原生匯出強加的任何結構性損失。
Save 能處理的邊界情況
- 頁面裡巢狀的 database。 一個帶 database 的頁面,其中一列連結到另一個頁面,而那個頁面本身又包含一個 database --- Save 展開最上層的表格,連結到巢狀的頁面,不會試圖把整個世界內嵌進來。遞迴是 opt-in 的,留給少數想要整棵樹的情況。
- 子頁面和被連結頁面。 內部連結以 Markdown 連結保留。如果父頁面和子頁面分別儲存,連結就能 resolve。如果只儲存父頁面,連結保留為參照,你可以以後再 resolve。
- synced blocks。 解析為實際內容。Markdown 裡包含的是解析後的文字,不是指向來源 block 的佔位符。
- 留言。 預設關閉。如果你想把討論串跟頁面內容一起抓下來,在擴充功能設定裡開啟(對歸檔有用,對 AI 上下文太吵)。
- template 和 template button。 template 內容依照渲染出來的樣子抓取。template button 本身被丟掉,因為它們是互動元素,沒有靜態表示。
- wiki 頁面和 gallery view。 wiki 首頁保留子頁面清單。gallery view 變成一個條目表格,可見的屬性當作欄。
- database 屬性(formula、rollup、relation)。 formula 和 rollup 的值以渲染後的文字抓取。relation 以 Markdown 連結形式保留指向相關頁面。
- 公開 vs 私密頁面。 Save 看到的是你登入的瀏覽器看到的。如果你能讀這個頁面,Save 就能轉換它 --- 在 workspace 頁面、共享頁面和公開連結上表現相同。
- 數百個 block 的長頁面。 擴充功能會把轉換切塊處理,讓瀏覽器不卡死。無論頁面多長,輸出都是一個連續的 Markdown 檔案。
把它接進你的工作流
Markdown 輸出在你需要的任何地方都能用:
- Obsidian --- 把檔案丟進你的 vault,隨著你儲存更多頁面,連結圖會自動重建
- Logseq --- 同樣的故事,頁面屬性變成 Logseq 屬性
- Claude / ChatGPT / Gemini --- 把檔案貼進去,問跟進問題,把它當作 Project 的上下文
- Apple Notes --- 透過 Markdown 分享擴充功能乾淨地匯入
- 純資料夾 + ripgrep --- 如果你走極簡路線,Markdown 資料夾加上
rg的搜尋比 Notion 任何時候都快 - Save Vault --- 如果你連了一個,每次 Notion 儲存都會自動落到那裡,帶反向連結和標籤,所以整個 workspace 一邊遷移一邊變得可搜尋
FAQ
Save 在私密 workspace 頁面上能用嗎? 能。Save 跑在你登入的瀏覽器裡,所以任何你能讀的東西 --- workspace 頁面、共享頁面、公開連結 --- Save 都能轉換。
Save 會破壞我的 Notion 資料嗎? 不會。Save 是唯讀的。它讀瀏覽器分頁裡渲染後的頁面,把一個 Markdown 檔案寫到你的電腦上。它從不修改 Notion,從不呼叫 Notion API,從不碰你的 workspace。
圖片和檔案附件呢? 圖片以 Markdown 圖片連結形式參照,指向 Notion 的 S3 URL。這些 URL 是簽名的而且會過期,所以做長期歸檔的話,把 Save 和「embed images locally」一起用 --- 讓擴充功能把圖片連同 Markdown 一起下下來。
它有保留 toggle 嗎? 有,而且這是相對於 Notion 原生匯出的主要差異化點。頁面上的每個 toggle 都會被打開,內容被內嵌進來。你能看到頁面上真正存在的所有東西,不只是標題。
我能大量匯出整個 workspace 嗎? 今天擴充功能是一次一頁。完整 workspace 遷移,大多數人用的工作流是:儲存 workspace 的最上層 wiki 頁面(它會抓取頁面樹),然後一個一個地儲存你真正想要的頁面。比聽起來快,因為每次儲存都是一次點擊。
它在 Notion mobile 上能用嗎? 僅 Chrome 桌面版。手機上,把 URL 複製到桌面打開,或者在 Mac 上用 Save Vault 的 URL handler。
和 notion-to-md 以及其他腳本比怎麼樣?
簡單頁面上輸出品質相當。在帶 toggle、callout 和內聯 database 的頁面上,Save 的輸出更乾淨,因為它讀的是渲染後的 DOM 而不是走原始 block 樹 --- 這意味著新的 block 類型直接就能運作,不用等函式庫更新。
多少錢? Save 有免費層,你可以在幾個頁面上試試。超過之後,一個小訂閱涵蓋轉換成本。
相關 Save 指南
- 把 Google Docs 儲存為 Markdown --- 留言、建議和格式都保留
- 把 Confluence 匯出為 Markdown --- 企業 wiki 對應物,同樣的遷移痛
- 把 ChatGPT 對話儲存為 Markdown --- 每一輪,程式碼區塊原樣保留
- 把 YouTube 影片儲存為 Markdown --- 逐字稿、摘要、時間戳,準備好給 Claude
## Continue reading
如何將 Claude 對話儲存為 Markdown(Artifacts、引用、Projects)
將 Claude 對話轉換為乾淨的 Markdown:每個回合、Artifacts 作為程式碼區塊、保留引用。給研究者與 AI 使用者的完整指南。
如何將 ChatGPT 對話儲存為 Markdown(每輪對話、程式碼區塊完整保留)
將任何 ChatGPT 對話轉換為乾淨的 Markdown:每輪對話、程式碼區塊、表格、引用。給研究者和 AI 使用者的 2026 完整指南。
如何用 Save 建構 LLM 知識庫
將任何網路內容轉化為個人知識庫,讓 Claude、ChatGPT 或任何 LLM 變得更加智慧。靈感來自 Andrej Karpathy 的方法。
Claude Code + Obsidian:建構終極 AI 知識庫(2026)
將 Claude Code 連接到 Obsidian 知識庫,在所有筆記、網頁剪藏和儲存文章上進行 AI 驅動的研究。分步設置指南。
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.