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
curl -o docker-compose.yml https://raw.githubusercontent.com/lfnovo/open-notebook/main/docker-compose.yml
或者手動建立 docker-compose.yml 檔案:
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: 啟動服務
docker compose up -d
等待 15-20 秒讓 SurrealDB 初始化,然後開啟瀏覽器存取:
http://localhost:8502
你應該能看到 Open Notebook 的登入/註冊介面。
Step 3: 設定 API Key
- 首次存取時,系統會提示你建立管理員帳戶
- 登入後,進入 Settings → API Keys
- 點擊 Add Credential
- 選擇你的 AI 提供商(例如 OpenAI、Anthropic、Google 等)
- 貼上 API Key 並點擊 Save
- 點擊 Test Connection 驗證連線是否正常
- 點擊 Discover Models 自動取得可用模型列表
- 點擊 Register Models 完成註冊
如果你沒有 API Key,可以從以下平台取得: - OpenAI - Anthropic - Google AI Studio - Groq(有免費層)
使用 Ollama 實現零成本本機執行
如果你想完全免費且離線使用,可以搭配 Ollama:
# 安裝 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 按鈕:
- Notebook 名稱:例如「2026 AI 技術趨勢研究」
- 描述(可選):簡要說明這個 Notebook 的用途
- 選擇預設模型:從已註冊的模型中選擇一個作為預設聊天模型
- 點擊 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 範例
- 在 Notebook 頁面,點擊 Add Source
- 選擇 Upload File
- 拖曳或選擇一個 PDF 檔案(例如一篇 arXiv 論文)
- 等待處理完成(系統會自動提取文字並生成向量嵌入)
- 你可以在 Sources 列表中看到處理狀態和字數統計
新增網頁連結範例
- 點擊 Add Source → Web Page
- 貼上 URL,例如
https://arxiv.org/abs/2401.12345 - Open Notebook 會自動擷取頁面並提取正文
- 如果頁面有付費牆或反爬機制,可能需要手動複製貼上內容
與你的知識庫對話(Chat)
新增完來源檔案後,就可以開始與 AI 對話了。
在 Notebook 頁面的右側是 Chat 面板:
-
選擇上下文範圍: - 「All Sources」:基於所有來源檔案回答 - 「Selected Sources」:只基於選中的幾個檔案回答 - 「Notes Only」:只基於你手寫寫的筆記回答
-
輸入問題,例如:
這篇論文的核心貢獻是什麼?用中文總結三個關鍵點。 -
檢視引用:AI 的回答會附帶來源引用,點擊引用可以跳轉到原文對應位置
-
儲存為筆記:如果 AI 的回答很有價值,點擊 Save as Note 將其儲存為永久筆記
生成 AI 輔助筆記
除了即時對話,Open Notebook 還支援批次生成筆記:
- 在 Notebook 頁面,點擊 Generate Notes
- 選擇要處理的來源檔案(可以多選)
- 選擇筆記範本: - Summary:生成全文摘要 - Key Points:提取關鍵要點 - Q&A:生成常見問題及解答 - Custom:自訂提示詞
- 點擊 Generate,等待 AI 處理完成
- 生成的筆記會出現在左側 Notes 面板,可以進一步編輯
內容轉換(Transformations)
Content Transformations 是 Open Notebook 的高階功能,允許你對來源檔案執行自訂的 AI 處理動作。
例如,你可以建立一個 Transformation 來: - 將所有技術文件翻譯成中文 - 從會議記錄中提取行動項目(Action Items) - 將長篇部落格文章壓縮為 500 字摘要
設定步驟:
1. 進入 Settings → Transformations
2. 點擊 New Transformation
3. 定義名稱和提示詞範本,例如:
請將以下技術文件翻譯成簡體中文,保持專業術語準確:
{{content}}
4. 儲存後,在任何來源檔案上右鍵選擇該 Transformation 即可執行
播客生成:把筆記變成音訊節目
Open Notebook 的播客生成功能是其最具特色的功能之一。你可以將任何 Notebook 的內容轉化為專業的多人對話播客。
設定播客角色
- 進入 Settings → Podcast Profiles
- 點擊 New Profile
- 定義角色: - 主持人:負責引導話題、提問 - 專家 A:負責深入講解技術細節 - 專家 B:負責提供不同視角或反駁觀點 - (可選)旁白:負責開場介紹和結尾總結
每個角色可以設定: - 聲音類型:男聲/女聲/中性 - 語速:慢/正常/快 - 語氣風格:正式/輕鬆/幽默/嚴肅 - TTS 提供商:OpenAI、ElevenLabs、Google 等
生成播客
- 在 Notebook 頁面,點擊 Generate Podcast
- 選擇要包含的來源檔案和筆記(系統會自動提取關鍵內容)
- 選擇播客設定檔
- 設定時長目標(例如 10 分鐘、20 分鐘)
- 點擊 Generate Script 預覽腳本
- 審查並編輯腳本(可選)
- 點擊 Generate Audio 開始合成音訊
- 完成後可以下載 MP3 檔案或線上播放
實際應用場景
- 學習回顧:將一週的學習筆記轉化為通勤時聽的播客
- 知識分享:為團隊建立內部培訓音訊材料
- 內容複用:將部落格文章轉化為播客發布到 Spotify/Apple Podcasts
- 語言學習:用目標語言生成播客,練習聽力
REST API 實戰:自動化你的工作流
Open Notebook 提供了完整的 REST API,預設執行在 http://localhost:5055。API 文件可透過 Swagger UI 存取:http://localhost:5055/docs
認證
所有 API 請求需要在 Header 中攜帶 API Token:
curl -H "Authorization: Bearer ***" \
http://localhost:5055/api/notebooks
你可以在 Settings → API Keys 中生成 API Token。
常用 API 範例
1. 列出所有 Notebook
curl -H "Authorization: Bearer ***" \
http://localhost:5055/api/notebooks
回應:
{
"notebooks": [
{
"id": "nb_abc123",
"title": "2026 AI 技術趨勢研究",
"created_at": "2026-06-07T10:00:00Z",
"source_count": 5,
"note_count": 12
}
]
}
2. 建立新 Notebook
curl -X POST -H "Authorization: Bearer ***" \
-H "Content-Type: application/json" \
-d '{"title": "新產品調研", "description": "競品分析資料庫"}' \
http://localhost:5055/api/notebooks
3. 上傳來源檔案
curl -X POST -H "Authorization: Bearer ***" \
-F "file=@research-paper.pdf" \
-F "notebook_id=nb_abc123" \
http://localhost:5055/api/sources/upload
4. 發起聊天請求
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 客戶端範例
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 中新增環境變數:
open_notebook:
environment:
- OPEN_NOTEBOOK_PASSWORD=my-secure-password
重新啟動服務後,存取 Web UI 時需要輸入密碼。
自訂網域和 HTTPS
使用 Nginx 反向代理可以實現自訂網域和 HTTPS:
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/:上傳的來源檔案和快取
定期備份這兩個目錄即可:
# 建立備份
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 無法存取
解決方案:
# 檢查容器狀態
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 回傳空列表
解決方案:
# 確認 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 的原生產品:
- 資料主權:自託管架構確保你的研究資料完全私有
- 模型自由:支援 18+ AI 提供商,避免供應商鎖定
- 功能豐富:專業級播客生成、REST API、自訂轉換動作
- 成本可控:可選本機 Ollama 實現零 API 成本
- 開源透明:Apache 2.0 授權,社群驅動開發
對於注重隱私的研究者、需要客製化工作流的開發者,或者只是想擺脫大廠壟斷的知識工作者來說,Open Notebook 是一個值得投入時間學習的工具。
下一步行動: - 存取 GitHub 儲存庫 了解最新進展 - 加入 Discord 社群 與其他使用者交流 - 閱讀官方文件取得更詳細的教學 - 在本機部署並建立你的第一個 Notebook
本文基於 Open Notebook v1 版本編寫,專案持續迭代中,具體功能以最新版本為準。