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 YOUR_API_TOKEN" \
http://localhost:5055/api/notebooks
你可以在 Settings → API Keys 中生成 API Token。
常用 API 示例
1. 列出所有 Notebook
curl -H "Authorization: Bearer $TOKEN" \
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 $TOKEN" \
-H "Content-Type: application/json" \
-d '{"title": "新产品调研", "description": "竞品分析资料库"}' \
http://localhost:5055/api/notebooks
3. 上传源文件
curl -X POST -H "Authorization: Bearer $TOKEN" \
-F "file=@research-paper.pdf" \
-F "notebook_id=nb_abc123" \
http://localhost:5055/api/sources/upload
4. 发起聊天请求
curl -X POST -H "Authorization: Bearer $TOKEN" \
-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 版本编写,项目持续迭代中,具体功能以最新版本为准。