目录

Open Notebook:可自托管的 NotebookLM 替代品,2 分钟本地跑起来

Open Notebook:可自托管的 NotebookLM 替代品,2 分钟本地跑起来

目标读者:把 PDF / 网页 / 视频 / 音频丢进一个笔记本就让 AI 整理、提问、生成播客的研究者和团队;尤其在意数据不出本机、不想被单一模型绑定的人。

核心问题:Google 的 NotebookLM 体验惊艳,但资料只能放在 Google 云、只能用 Google 模型、没有 API、播客被锁死在 2 说话人——如果想自己托管、能换模型、能编程调用,2026 年有什么能直接 docker compose up 的选择?

事实边界:本文基于 lfnovo/open-notebook 仓库 README、Provider Support Matrix 与 Quick Start 整理;未在仓库中明确列出的内部实现细节、未验证的性能数字、未出现的功能不写成事实。

阅读导航

  • 快速跑起来:§3 快速开始
  • 与 NotebookLM 差异对照:§4 vs NotebookLM 对照表
  • AI 提供商支持情况:§5 Provider 支持矩阵
  • 6 个核心能力拆解:§6 核心能力拆解
  • 适用与不适用场景:§8 谁该用它,谁该跳过

§1 核心判断

lfnovo/open-notebook 是一个完全自托管、模型无关、API 完整的研究型 Notebook 工具,它做的事和 Google NotebookLM 几乎一样:把多模态资料收进一个 Notebook,让 AI 摘要、问答、生成播客——但它把"在哪里跑、用什么模型、怎么集成"这三件事全部交回给你。

如果你满足下面任一条件,Open Notebook 是当前最直接的开源选项:

  • 研究资料不能上云(合规、内部文档、客户合同)
  • 想在 OpenAI / Anthropic / Ollama / DeepSeek / Gemini 之间随时换模型
  • 需要 REST API 把 Notebook 接入自己的工作流(Agent、知识库、播客流水线)
  • 希望播客不只是 2 个 AI 主持人,想要 1-4 个说话人并能调人设
  • 愿意为"可控"多付一点部署和调参的精力

仓库当前已经 29.4k stars、739 commits,Next.js 前端、FastAPI 后端、SurrealDB 存储,是 2026 年这份赛道里事实上的主流选择。

§2 项目基本信息

项目信息
仓库lfnovo/open-notebook
作者lfnovo
Stars29.4k
Commits739(截至 README 抓取)
LicenseMIT
主语言Python(后端) + TypeScript / Next.js(前端)
存储SurrealDB v2(本地 RocksDB)
官方镜像lfnovo/open_notebook:v1-latest
官网<�PROTECTED_62�>

技术栈亮点:后端用 Python + FastAPI + LangChain,前端是 Next.js 14 + React,数据库选 SurrealDB(多模型数据库,原生支持文档+图+向量检索,恰好契合 Notebook 的"素材 + 笔记 + 关系"模型)。docs/ 目录下还有独立的安装、用户指南、Core Concepts、AI Provider、API Reference、Troubleshooting、Development 文档体系,是少有的"文档比代码更新还勤"的中型开源项目。

§3 快速开始

官方声称 2 分钟跑起来,对应 curl 一份 docker-compose.yml、改一个加密密钥、docker compose up -d 三步。下面以官方 docker-compose.yml 为准。

3.1 前置条件

  • 安装了 Docker Desktop
  • 端口 8000(SurrealDB)、8502(Streamlit 风格的旧版 Web UI)、5055(REST API + 新版 Next.js UI)不被占用
  • 准备好至少一个 AI Provider 的 API Key(OpenAI / Anthropic / Google / Groq / Ollama 等)

3.2 拉起 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"
      - "5055:5055"
    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

3.3 改加密密钥

OPEN_NOTEBOOK_ENCRYPTION_KEY 是用于加密 API Key、Provider 配置等敏感字段的密钥。必须改成自己的强随机字符串,否则你重启容器后会读不回旧 Key。建议一次性写好并备份:

# 改 docker-compose.yml 里这一行
- OPEN_NOTEBOOK_ENCRYPTION_KEY=change-me-to-a-secret-string
# 替换成例如
- OPEN_NOTEBOOK_ENCRYPTION_KEY=my-super-secret-key-123

3.4 启动

docker compose up -d

等 15-20 秒后访问:

  • Web UI(新版 Next.js):<�PROTECTED_63�>
  • Web UI(Streamlit 风格):<�PROTECTED_64�>
  • REST API 文档:<�PROTECTED_65�>

3.5 配置第一个 AI Provider

UI 里 Settings → API Keys → Add Credential,选一个 Provider(OpenAI / Anthropic / Google / Groq / Ollama / DeepSeek / Mistral / OpenRouter 等)粘进 Key,SaveTest ConnectionDiscover ModelsRegister Models。完成这一步之后,才可以开始新建 Notebook 并上传素材。

3.6 用 Ollama 跑完全本地(可选)

不想付 API 费用,可以参考 examples/docker-compose-ollama.yml,在 services 里加一个 ollama 服务,让 open_notebook 通过本地 http://ollama:11434 调用。这样所有数据、所有模型推理都在你自己的机器上完成。

§4 vs NotebookLM 对照表

下面这张表直接来自 README,所有"Open Notebook 优势"列都是仓库自身的宣称,不是中立基准,引用时建议交叉验证。

能力Open NotebookGoogle Notebook LMOpen Notebook 自宣优势
隐私与控制自托管,数据本地仅 Google 云数据完全自主
AI Provider 选择18+ 提供商仅 Google 模型灵活、按成本优化
Podcast 说话人1-4 个,自定义人设仅 2 个极大灵活性
Content Transformations自定义 + 内置选项有限处理能力无上限
API完整 REST API无 API可全自动化
部署Docker / 云 / 本地仅 Google 托管任意地方部署
Citations基础引用(官方承认会改进)完整来源研究可信度(Google 占优)
定制开源,可深度改造闭源可扩展性无上限
成本只付 AI 用量免费层 + 月费透明可控

怎么读这张表:Open Notebook 的强项在"控制、灵活、API";NotebookLM 的强项在"开箱即用、引用质量、Google 模型集成"。这两者并不直接竞争——NotebookLM 更像"开箱即用的产品",Open Notebook 更像"你可以拿来自托管的底座"。

§5 Provider 支持矩阵

这张表是 Open Notebook 的"多模型"主张的硬证据。同一份 Provider 在不同能力上的支持情况不同——选择 Provider 时先看你要用它做哪件事。

ProviderLLMEmbeddingSTTTTS
OpenAI
Anthropic
Groq
Google (GenAI)
Vertex AI
Ollama
Perplexity
ElevenLabs
Deepgram
Azure OpenAI
Mistral
DeepSeek
Voyage
xAI
OpenRouter
DashScope(Qwen)
MiniMax
OpenAI 兼容*

*含 LM Studio 和任意 OpenAI 兼容端点。所有这些 Provider 由作者开源的 esperanto 库统一接入,Open Notebook 自己只做调用层和上层工作流。

选型提示

  • 一套 Provider 全包:Google(GenAI)、Azure OpenAI、Mistral、OpenAI 兼容端点是唯一同时支持 LLM + Embedding + STT + TTS 的选项
  • 完全本地、零 API 费用:Ollama(LLM + Embedding)+ Deepgram / ElevenLabs(TTS,可选)
  • 中文模型便宜:DashScope(Qwen)已支持 LLM;Embedding 暂时需要 OpenAI / Google / Ollama
  • Anthropic 只支持 LLM,不支持 Embedding/STT/TTS——做 RAG 时还要再配一个 Embedding Provider

§6 核心能力拆解

Open Notebook 把 NotebookLM 的能力拆成了 6 个可独立使用的功能模块,每个模块背后都是一条独立的"素材 → 处理 → 存储"链路。

6.1 Sources(多模态素材库)

支持 PDF、视频、音频、网页、Office 文档等多种内容类型。添加 Source 后系统会自动:

  1. 解析内容(PDF 抽文本、视频抽转写、网页抽正文)
  2. Embedding + 分块进向量库
  3. 生成摘要和关键洞察
  4. 进入搜索和 Chat 的可引用范围

这是后面所有功能(Chat、Podcast、Search、Transformations)的内容池。

6.2 Notes(笔记)

两种用法并存:

  • 手动笔记:自己写的 Markdown 笔记,可以挂到任意 Notebook
  • AI 辅助笔记:对一份或一组 Source 用 Transformation 生成笔记

笔记在 Chat 和 Podcast 中可以像 Source 一样被引用,等价于"用户整理好的上下文"。

6.3 Chat(多会话问答)

Chat 不是单条对话,而是"在一个 Notebook 内开多个独立会话"。会话可以指定:

  • 上下文范围(哪些 Source、哪些 Note)
  • 引用的粒度(按段、按页、按整篇)
  • LLM 模型(包括 Reasoning Model:DeepSeek-R1、Qwen3 等已验证可用)
  • 是否返回引用(citations)

把 Notebook 理解成"主题包"、Chat 理解成"主题包内的多次独立研究",这套模型比 NotebookLM 单一对话流更接近真实研究工作。

6.4 Search(全文 + 向量混合)

同时支持全文搜索和向量搜索,跨所有 Notebook 跨所有 Source。Open Notebook 没有做 RAG-as-a-service,Search 仍然把"命中段"喂给 LLM 重新生成答案——这一点和 NotebookLM 的"只基于来源"原则一致。

6.5 Transformations(自定义处理)

这是 Open Notebook 比 NotebookLM 多出来的一个能力。Transformation 是一段"对素材做什么"的定义,可以是:

  • 内置模板:摘要、提纲、要点、问答对
  • 自定义 Prompt:自由定义输入/输出

典型用途:把 5 篇 PDF 一次性转成结构化笔记、按客户模板生成提案草稿、把英文素材翻译并改写为中文播客脚本。

6.6 Podcast(多说话人播客生成)

这是 Open Notebook 最有差异化的能力,对照 NotebookLM 唯一的 2 说话人:

  • 支持 1-4 个说话人
  • 每个说话人有独立的 Episode Profile(角色、性格、语速、表达风格)
  • 选 18+ Provider 中支持 TTS 的那些合成语音
  • 生成结果存为音频文件,可下载可嵌入

官方提供了一段 4 说话人的 Podcast Demo on YouTube,可以先听后决定要不要为这个能力迁移过来。

§7 常见坑点

把仓库里反复出现、容易卡住人的点集中到这里。

7.1 加密密钥忘了改 / 换了机器

OPEN_NOTEBOOK_ENCRYPTION_KEY 是加密 Provider 凭证的密钥。换一台机器或重装时如果用了不同密钥,旧的 API Key 全读不出来。 一定要把密钥记在密码管理器里。

7.2 Anthropic 没有 Embedding

Anthropic 不提供 Embedding API。选 Anthropic 作为 LLM 之后,必须再选一个 Embedding Provider(OpenAI / Google / Voyage / Ollama)。来源已经在 Provider 矩阵里标出,部署时按表选。

7.3 Ollama 跑 LLM 还行,跑 Embedding 看模型

本地 Ollama 跑 LLM 没问题,但 Embedding 效果高度依赖选的具体模型。仓库推荐用 nomic-embed-textmxbai-embed-large,默认 all-minilm 偏弱。

7.4 端口冲突

8000(SurrealDB)、8502(Streamlit 风格 UI)、5055(API + 新版 UI)三个端口都要空。如果已经部署了别的服务(比如 SurrealDB 自己的实例、MosaicML Model Server 等),改 docker-compose.yml 里的 ports 映射。

7.5 Dockerfile.single

仓库里除了 docker-compose.yml 还提供一个 Dockerfile.single,把 SurrealDB 和 Open Notebook 装到同一个容器里,部署更省事但失去隔离——生产环境一般不推荐,开发试用可以。

7.6 MCP 集成边界

docs/5-CONFIGURATION/mcp-integration.md 描述了怎么把 Open Notebook 作为 MCP Server 接入 Claude Desktop / VS Code。但 MCP 暴露的是有限动作集(主要是查 Source / 写 Note),不要把它当成完整 RAG 后端来用

§8 谁该用它,谁该跳过

8.1 适合先用 Open Notebook 试一把的场景

  • 内部研究、合规要求文档不能出本机的团队
  • 想把 NotebookLM 的工作流接到自己 Agent / 工作流里、但 NotebookLM 没有 API
  • 想自己掌控"用哪个模型"和"模型能访问哪些上下文"
  • 喜欢自定义 Transformation 的工作流(生成固定模板的客户提案、周报等)
  • 需要 1-4 个说话人的播客来覆盖多视角讨论

8.2 不建议立刻迁移的场景

  • 团队已经在用 NotebookLM 协作,且对"引用质量"非常敏感——Open Notebook 官方承认它的 Citations 还在改进
  • 想要完全 SaaS、不愿意维护 Docker / 数据库 / 备份的——NotebookLM 是更省心的选择
  • 只用 NotebookLM 最基础的"上传 PDF → 听播客"——Open Notebook 第一次配置需要 30 分钟左右
  • 生产级多用户 / 多租户——Open Notebook 的权限模型还在 Roadmap 里(“Live Front-End Updates”、“Async Processing”、“Cross-Notebook Sources” 等是 Recently Completed 之外仍在 Upcoming 的项)

§9 稳妥的采用顺序

  1. 先在单机 docker compose up 跑起来,确认 UI 能访问、Provider 联通、第一个 Notebook 跑通
  2. 把 Ollama 接入,做一份"完全本地"的备份方案,避免 API 厂商出问题时整个工作流瘫痪
  3. 整理 1-2 个真实工作的 Source 集合(比如本季度的研究主题、本周客户资料),走一遍"上传 → Chat 问答 → Podcast 生成"完整闭环,验证它真的能替代你现在的 NotebookLM 工作流
  4. 再考虑接入 MCP / REST API,把 Open Notebook 嵌入更大的 Agent / 工作流
  5. 最后再做数据备份和恢复演练——./notebook_data./surreal_data 是核心,把它们加入你的常规备份流程

这个顺序把"先验证个人体验 → 再自动化 → 最后才考虑生产化"拆开,每一步都能独立 rollback。

§10 风险与未覆盖项

Open Notebook 当前的边界:

  • API 兼容性:仓库还未承诺 OpenAI 兼容端点之外的兼容矩阵,自定义 LLM 接入前先在 UI 里 Test Connection
  • Citation 质量:官方承认 Citations 是"基础引用(will improve)",如果你的工作流对引用质量非常敏感,先做小规模测试
  • 多用户/权限:仓库 Upcoming Features 里有"Live Front-End Updates"“Async Processing"“Cross-Notebook Sources"“Bookmark Integration”——这些都没说多用户模型怎么设计,团队用之前先在 UI 里看权限设置
  • MCP 边界:MCP 暴露的动作是只读为主的笔记查询,不是完整 CRUD,做"在 Agent 里写笔记到 Open Notebook"前先看 API Reference
  • MCP 之外的自动化:自动化走 REST API(http://localhost:5055/docs),但官方不保证所有 UI 操作都对应一个公开 API endpoint

§11 一句话总结

Open Notebook 不是 NotebookLM 的"功能复制版”,而是"把 NotebookLM 的能力放回你自己机器上、换上你自己的模型、接上你自己的工作流"的底座。愿意为可控多花 30 分钟部署和调参的人,2026 年很难再找到比它更完整的选择。


本文基于 lfnovo/open-notebook 仓库 README 与 Provider Support Matrix 整理。 抓取时间:2026-06-12,版本对应 lfnovo/open_notebook:v1-latest 镜像与 surrealdb/surrealdb:v2。 详细安装、Provider 配置、API Reference、Troubleshooting 见仓库 docs/ 目录。