Open Notebook 是什麼?

Google NotebookLM 是 Google 推出的 AI 研究助手,允許使用者上傳 PDF、文件和網頁,然後與這些材料進行對話、生成摘要甚至播客。但它有一個致命缺陷:你的所有資料都在 Google 雲上,而且只能使用 Google 自家的 Gemini 模型。

Open Notebook 是一個完全開源、可自託管的 NotebookLM 替代方案,由開發者 lfnovo 主導開發。它的核心理念是:知識管理不應該被大廠壟斷,也不應該以犧牲隱私為代價。

截至 2026 年 6 月,Open Notebook 在 GitHub 上已獲得 超過 26,000 個 Star,並且每日新增數百星,是當下最熱門的開源 AI 工具之一。

Open Notebook vs Google NotebookLM 核心對比

特性 Open Notebook Google NotebookLM
部署方式 Docker 自託管 / 本機執行 Google 雲端(不可自託管)
資料隱私 資料完全掌握在自己手中 資料儲存在 Google 伺服器
AI 模型選擇 18+ 提供商(OpenAI、Anthropic、Ollama、DeepSeek 等) 僅限 Google Gemini
播客生成 1-4 人自訂角色,腳本可控 固定 2 人 Deep Dive 格式
API 存取 完整 REST API(localhost:5055/docs) 無公開 API
內容轉換 自訂 + 內建多種轉換動作 有限的內建選項
成本 僅支付 AI 呼叫費用(可選本機 Ollama 免費) 免費層 + 月度訂閱
擴充性 開源程式碼,可任意修改和整合 封閉系統,無法客製
授權 Apache 2.0 專有軟體

從對比可以看出,Open Notebook 的核心優勢在於資料主權和靈活性。對於注重隱私的研究者、企業開發者或需要客製化工作流的使用者來說,這是比 NotebookLM 更合適的選擇。

為什麼選擇 Open Notebook?

1. 隱私優先:你的資料你做主

在使用 NotebookLM 時,你上傳的所有 PDF、筆記和對話記錄都會儲存在 Google 的伺服器上。對於涉及商業機密、學術研究或個人敏感資訊的內容,這可能是一個安全隱患。

Open Notebook 採用自託管架構,所有資料都儲存在你自己的機器或伺服器上。配合 SurrealDB 作為後端資料庫,你可以完全控制資料的儲存位置和存取權限。

2. 18+ AI 模型提供商支援

Open Notebook 透過 Esperanto 函式庫實現了對主流 AI 提供商的統一接入:

提供商 LLM Embedding STT TTS
OpenAI ✅ ✅ ✅ ✅
Anthropic (Claude) ✅ ❌ ❌ ❌
Google (Gemini) ✅ ✅ ✅ ✅
Ollama(本機) ✅ ✅ ❌ ❌
DeepSeek ✅ ❌ ❌ ❌
Groq ✅ ❌ ✅ ❌
Mistral ✅ ✅ ✅ ✅
Azure OpenAI ✅ ✅ ✅ ✅
OpenRouter ✅ ✅ ❌ ❌
xAI ✅ ❌ ❌ ✅
LM Studio(相容端點) ✅ ✅ ✅ ✅

這意味著你可以: - 用 Ollama 本機執行 Llama 3 或 Qwen 模型,實現零 API 成本的完全離線使用 - 用 Groq 獲得超高速推理(適合快速問答) - 用 DeepSeek 獲得高性價比的中文理解能力 - 隨時切換提供商,避免供應商鎖定

3. 專業級播客生成

Open Notebook 的播客生成功能比 NotebookLM 更加靈活:

  • 1-4 名演講者:可以自訂每個角色的聲音、語氣和專業知識
  • Episode Profiles:為每期播客定義主題、風格和受眾
  • 腳本預覽和編輯:在生成音訊前可以審查和修改腳本
  • 多語言支援:支援英語、中文、日語、葡萄牙語等多種語言

相比之下,NotebookLM 的 Podcast 功能固定為兩人對話(一男一女),風格單一,無法自訂。

4. 完整的 REST API

Open Notebook 提供了完整的 REST API(預設在 http://localhost:5055/docs),支援:

  • 建立和管理 Notebook
  • 上傳和處理各種類型的來源檔案(PDF、影片、網頁等)
  • 執行 AI 驅動的筆記生成和內容轉換
  • 查詢聊天歷史和上下文

這使得 Open Notebook 可以輕鬆整合到現有的工作流中,例如: - 自動將 Slack/Discord 討論歸檔到 Notebook - 定時擷取特定網站並生成摘要 - 與 CI/CD 管線整合,自動生成技術文件總結

快速開始:5 分鐘部署 Open Notebook

Open Notebook 的官方推薦部署方式是使用 Docker Compose,整個過程只需要兩條指令。

前置需求

  • Docker Desktop 已安裝並執行
  • 至少 4GB 可用磁碟空間(用於 SurrealDB 資料和本機快取)
  • 一個 AI 提供商的 API Key(或使用 Ollama 本機模型則不需要)

Step 1: 下載 docker-compose.yml

BASH
curl -o docker-compose.yml https://raw.githubusercontent.com/lfnovo/open-notebook/main/docker-compose.yml

或者手動建立 docker-compose.yml 檔案:

YAML
services:
  surrealdb:
    image: surrealdb/surrealdb:v2
    command: start --log info --user root --pass root rocksdb:/mydata/mydatabase.db
    user: root
    ports:
      - "8000:8000"
    volumes:
      - ./surreal_data:/mydata
    restart: always

  open_notebook:
    image: lfnovo/open_notebook:v1-latest
    ports:
      - "8502:8502"   # Web UI
      - "5055:5055"   # REST API
    environment:
      - OPEN_NOTEBOOK_ENCRYPTION_KEY=change-me-to-a-secret-string
      - SURREAL_URL=ws://surrealdb:8000/rpc
      - SURREAL_USER=root
      - SURREAL_PASSWORD=root
      - SURREAL_NAMESPACE=open_notebook
      - SURREAL_DATABASE=open_notebook
    volumes:
      - ./notebook_data:/app/data
    depends_on:
      - surrealdb
    restart: always

重要: 將 OPEN_NOTEBOOK_ENCRYPTION_KEY 改為一個你自己的秘密字串,例如 my-super-secret-key-2026。這個金鑰用於加密儲存在資料庫中的敏感資訊(如 API Key)。

Step 2: 啟動服務

BASH
docker compose up -d

等待 15-20 秒讓 SurrealDB 初始化,然後開啟瀏覽器存取:

TEXT
http://localhost:8502

你應該能看到 Open Notebook 的登入/註冊介面。

Step 3: 設定 API Key

  1. 首次存取時,系統會提示你建立管理員帳戶
  2. 登入後,進入 Settings → API Keys
  3. 點擊 Add Credential
  4. 選擇你的 AI 提供商(例如 OpenAI、Anthropic、Google 等)
  5. 貼上 API Key 並點擊 Save
  6. 點擊 Test Connection 驗證連線是否正常
  7. 點擊 Discover Models 自動取得可用模型列表
  8. 點擊 Register Models 完成註冊

如果你沒有 API Key,可以從以下平台取得: - OpenAI - Anthropic - Google AI Studio - Groq(有免費層)

使用 Ollama 實現零成本本機執行

如果你想完全免費且離線使用,可以搭配 Ollama:

BASH
# 安裝 Ollama(macOS/Linux)
curl -fsSL https://ollama.ai/install.sh | sh

# 拉取一個輕量級模型
ollama pull llama3.2:3b

# 啟動 Ollama 服務
ollama serve

然後在 Open Notebook 的 API Keys 設定中: 1. 新增憑證,提供商選擇 Ollama 2. URL 填寫 http://host.docker.internal:11434(Docker 內存取宿主機) 3. 測試連線並註冊模型

這樣你就可以在不支付任何 API 費用的情況下使用 Open Notebook 的全部功能(除了 TTS 播客生成需要外部服務)。

核心功能實戰

建立第一個 Notebook

登入 Open Notebook 後,點擊左上角的 + New Notebook 按鈕:

  1. Notebook 名稱:例如「2026 AI 技術趨勢研究」
  2. 描述(可選):簡要說明這個 Notebook 的用途
  3. 選擇預設模型:從已註冊的模型中選擇一個作為預設聊天模型
  4. 點擊 Create

每個 Notebook 都是獨立的知識庫,你可以為不同的專案建立不同的 Notebook,例如: - 「Python 學習筆記」 - 「競品分析報告」 - 「產品需求文件庫」

新增內容源(Sources)

Open Notebook 支援多種類型的內容源,這是它最強大的功能之一。

支援的源類型

類型 格式 說明
PDF 文件 .pdf 學術論文、電子書、報告
文字檔案 .txt, .md 筆記、程式碼片段、日誌
Office 文件 .docx, .pptx Word 文件、PowerPoint 簡報
網頁連結 URL 自動擷取並提取正文內容
YouTube 影片 YouTube URL 自動轉錄字幕(需要設定 STT)
音訊檔案 .mp3, .wav 會議錄音、播客(需要設定 STT)

新增 PDF 範例

  1. 在 Notebook 頁面,點擊 Add Source
  2. 選擇 Upload File
  3. 拖曳或選擇一個 PDF 檔案(例如一篇 arXiv 論文)
  4. 等待處理完成(系統會自動提取文字並生成向量嵌入)
  5. 你可以在 Sources 列表中看到處理狀態和字數統計

新增網頁連結範例

  1. 點擊 Add Source → Web Page
  2. 貼上 URL,例如 https://arxiv.org/abs/2401.12345
  3. Open Notebook 會自動擷取頁面並提取正文
  4. 如果頁面有付費牆或反爬機制,可能需要手動複製貼上內容

與你的知識庫對話(Chat)

新增完來源檔案後,就可以開始與 AI 對話了。

在 Notebook 頁面的右側是 Chat 面板:

  1. 選擇上下文範圍: - 「All Sources」:基於所有來源檔案回答 - 「Selected Sources」:只基於選中的幾個檔案回答 - 「Notes Only」:只基於你手寫寫的筆記回答

  2. 輸入問題,例如: 這篇論文的核心貢獻是什麼?用中文總結三個關鍵點。

  3. 檢視引用:AI 的回答會附帶來源引用,點擊引用可以跳轉到原文對應位置

  4. 儲存為筆記:如果 AI 的回答很有價值,點擊 Save as Note 將其儲存為永久筆記

生成 AI 輔助筆記

除了即時對話,Open Notebook 還支援批次生成筆記:

  1. 在 Notebook 頁面,點擊 Generate Notes
  2. 選擇要處理的來源檔案(可以多選)
  3. 選擇筆記範本: - Summary:生成全文摘要 - Key Points:提取關鍵要點 - Q&A:生成常見問題及解答 - Custom:自訂提示詞
  4. 點擊 Generate,等待 AI 處理完成
  5. 生成的筆記會出現在左側 Notes 面板,可以進一步編輯

內容轉換(Transformations)

Content Transformations 是 Open Notebook 的高階功能,允許你對來源檔案執行自訂的 AI 處理動作。

例如,你可以建立一個 Transformation 來: - 將所有技術文件翻譯成中文 - 從會議記錄中提取行動項目(Action Items) - 將長篇部落格文章壓縮為 500 字摘要

設定步驟: 1. 進入 Settings → Transformations 2. 點擊 New Transformation 3. 定義名稱和提示詞範本,例如: 請將以下技術文件翻譯成簡體中文,保持專業術語準確: {{content}} 4. 儲存後,在任何來源檔案上右鍵選擇該 Transformation 即可執行

播客生成:把筆記變成音訊節目

Open Notebook 的播客生成功能是其最具特色的功能之一。你可以將任何 Notebook 的內容轉化為專業的多人對話播客。

設定播客角色

  1. 進入 Settings → Podcast Profiles
  2. 點擊 New Profile
  3. 定義角色: - 主持人:負責引導話題、提問 - 專家 A:負責深入講解技術細節 - 專家 B:負責提供不同視角或反駁觀點 - (可選)旁白:負責開場介紹和結尾總結

每個角色可以設定: - 聲音類型:男聲/女聲/中性 - 語速:慢/正常/快 - 語氣風格:正式/輕鬆/幽默/嚴肅 - TTS 提供商:OpenAI、ElevenLabs、Google 等

生成播客

  1. 在 Notebook 頁面,點擊 Generate Podcast
  2. 選擇要包含的來源檔案和筆記(系統會自動提取關鍵內容)
  3. 選擇播客設定檔
  4. 設定時長目標(例如 10 分鐘、20 分鐘)
  5. 點擊 Generate Script 預覽腳本
  6. 審查並編輯腳本(可選)
  7. 點擊 Generate Audio 開始合成音訊
  8. 完成後可以下載 MP3 檔案或線上播放

實際應用場景

  • 學習回顧:將一週的學習筆記轉化為通勤時聽的播客
  • 知識分享:為團隊建立內部培訓音訊材料
  • 內容複用:將部落格文章轉化為播客發布到 Spotify/Apple Podcasts
  • 語言學習:用目標語言生成播客,練習聽力

REST API 實戰:自動化你的工作流

Open Notebook 提供了完整的 REST API,預設執行在 http://localhost:5055。API 文件可透過 Swagger UI 存取:http://localhost:5055/docs

認證

所有 API 請求需要在 Header 中攜帶 API Token:

BASH
curl -H "Authorization: Bearer ***" \
  http://localhost:5055/api/notebooks

你可以在 Settings → API Keys 中生成 API Token。

常用 API 範例

1. 列出所有 Notebook

BASH
curl -H "Authorization: Bearer ***" \
  http://localhost:5055/api/notebooks

回應:

JSON
{
  "notebooks": [
    {
      "id": "nb_abc123",
      "title": "2026 AI 技術趨勢研究",
      "created_at": "2026-06-07T10:00:00Z",
      "source_count": 5,
      "note_count": 12
    }
  ]
}

2. 建立新 Notebook

BASH
curl -X POST -H "Authorization: Bearer ***" \
  -H "Content-Type: application/json" \
  -d '{"title": "新產品調研", "description": "競品分析資料庫"}' \
  http://localhost:5055/api/notebooks

3. 上傳來源檔案

BASH
curl -X POST -H "Authorization: Bearer ***" \
  -F "file=@research-paper.pdf" \
  -F "notebook_id=nb_abc123" \
  http://localhost:5055/api/sources/upload

4. 發起聊天請求

BASH
curl -X POST -H "Authorization: Bearer ***" \
  -H "Content-Type: application/json" \
  -d '{
    "notebook_id": "nb_abc123",
    "message": "總結這篇論文的核心觀點",
    "model": "gpt-4o",
    "temperature": 0.7
  }' \
  http://localhost:5055/api/chat

Python 客戶端範例

PYTHON
import requests

BASE_URL = "http://localhost:5055/api"
TOKEN = "your_api_token_here"
headers = {"Authorization": f"Bearer {TOKEN}"}

# 取得所有 Notebook
response = requests.get(f"{BASE_URL}/notebooks", headers=headers)
notebooks = response.json()["notebooks"]

for nb in notebooks:
    print(f"Notebook: {nb['title']} ({nb['source_count']} sources)")

# 建立新 Notebook
new_nb = requests.post(
    f"{BASE_URL}/notebooks",
    headers=headers,
    json={"title": "測試 Notebook", "description": "API 測試"}
)
print(f"Created: {new_nb.json()['id']}")

透過 REST API,你可以將 Open Notebook 整合到現有的自動化工作流中,例如: - 定時從 RSS 訂閱擷取最新文章並生成摘要 - 將 Slack 頻道的討論自動歸檔到 Notebook - 與 CI/CD 管線整合,自動生成程式碼變更的技術影響分析

進階設定

密碼保護公開部署

如果你將 Open Notebook 部署在公網伺服器上,建議啟用密碼保護:

在 docker-compose.yml 中新增環境變數:

YAML
open_notebook:
  environment:
    - OPEN_NOTEBOOK_PASSWORD=my-secure-password

重新啟動服務後,存取 Web UI 時需要輸入密碼。

自訂網域和 HTTPS

使用 Nginx 反向代理可以實現自訂網域和 HTTPS:

NGINX
server {
    listen 443 ssl;
    server_name notebook.example.com;

    ssl_certificate /etc/letsencrypt/live/notebook.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/notebook.example.com/privkey.pem;

    location / {
        proxy_pass http://localhost:8502;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location /api/ {
        proxy_pass http://localhost:5055/api/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

資料備份

Open Notebook 的資料儲存在兩個目錄中: - ./surreal_data/:SurrealDB 資料庫檔案 - ./notebook_data/:上傳的來源檔案和快取

定期備份這兩個目錄即可:

BASH
# 建立備份
tar czf open-notebook-backup-$(date +%Y%m%d).tar.gz \
  surreal_data/ notebook_data/

# 復原備份
tar xzf open-notebook-backup-20260607.tar.gz

常見問題排查

1. Docker 容器啟動後無法存取 Web UI

症狀: docker compose up -d 成功,但 http://localhost:8502 無法存取

解決方案:

BASH
# 檢查容器狀態
docker compose ps

# 檢視日誌
docker compose logs open_notebook
docker compose logs surrealdb

# 如果 SurrealDB 未就緒,等待 30 秒後重試
docker compose restart

2. API Key 測試連線失敗

症狀: 在 Settings 中測試 OpenAI/Anthropic 連線時顯示錯誤

解決方案: - 確認 API Key 正確且未過期 - 檢查網路連線(某些地區可能需要代理) - 檢視 Docker 日誌確認是否有 SSL 或逾時錯誤 - 嘗試在宿主機上直接呼叫 API 驗證 Key 有效性

3. Ollama 模型無法被發現

症狀: 新增 Ollama 憑證後,Discover Models 回傳空列表

解決方案:

BASH
# 確認 Ollama 正在執行
ollama list

# 從 Docker 內測試連線
docker exec -it <open_notebook_container_id> curl http://host.docker.internal:11434/api/tags

# 如果連線失敗,檢查 Docker 網路設定
# macOS/Docker Desktop 預設支援 host.docker.internal
# Linux 可能需要額外設定

4. PDF 處理失敗或內容為空

症狀: 上傳 PDF 後,Source 顯示處理完成但字數為 0

解決方案: - 確認 PDF 不是掃描件(掃描件需要 OCR,Open Notebook 暫不支援) - 嘗試用其他 PDF 閱讀器開啟確認文字可複製 - 檢查 Docker 日誌是否有記憶體不足錯誤 - 大檔案(>50MB)可能需要增加 Docker 記憶體限制

5. 播客生成音訊品質差

症狀: 生成的播客人聲機械感強或不自然

解決方案: - 切換到更高品質的 TTS 提供商(如 ElevenLabs) - 調整角色設定檔中的語速和語氣參數 - 確保選擇的 TTS 模型支援目標語言 - 檢查 API 配額是否充足

總結

Open Notebook 是目前最成熟的開源 NotebookLM 替代方案,它在以下方面超越了 Google 的原生產品:

  1. 資料主權:自託管架構確保你的研究資料完全私有
  2. 模型自由:支援 18+ AI 提供商,避免供應商鎖定
  3. 功能豐富:專業級播客生成、REST API、自訂轉換動作
  4. 成本可控:可選本機 Ollama 實現零 API 成本
  5. 開源透明:Apache 2.0 授權,社群驅動開發

對於注重隱私的研究者、需要客製化工作流的開發者,或者只是想擺脫大廠壟斷的知識工作者來說,Open Notebook 是一個值得投入時間學習的工具。

下一步行動: - 存取 GitHub 儲存庫 了解最新進展 - 加入 Discord 社群 與其他使用者交流 - 閱讀官方文件取得更詳細的教學 - 在本機部署並建立你的第一個 Notebook


本文基於 Open Notebook v1 版本編寫,專案持續迭代中,具體功能以最新版本為準。