如何將 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 倒影。

運作方式:

  1. 在 Chrome 裡打開 Notion 頁面(workspace 頁面或公開連結都行)
  2. 點工具列裡的 Save 擴充功能圖示
  3. 一個 .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

EndpointStatusOwnerTarget
/usersSpec completeAliceApr 15
/billingIn reviewBobApr 22
/analyticsNot startedMay 06

這個檔案丟進 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 或 ChatGPTSave --- 一鍵,toggle 已展開
把一個頁面遷到 ObsidianSave --- 乾淨檔名,連結可用
從 workspace 建 AI 知識庫Save --- 跨頁面一致的 Markdown
在同事重組之前歸檔一個頁面Save --- 抓取你現在看到的樣子
一次性大量匯出整個 workspaceNotion 原生匯出 --- 接受清理稅
搭一個自動化 Notion → docs 站台的 pipelineNotion 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 指南

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