🛑 摘要

Google NotebookLM 的“播客生成”功能最近火出了圈,但作为国内开发者,**“数据隐私”“网络连接”**始终是两道过不去的坎。想拥有一个能读懂海量 PDF、还能生成中文播客脚本的“数字第二大脑”,却不想把私密文档上传给 Google?

本文将带你深度玩转 GitHub 高分开源项目 Open Notebook (lfnovo)。不同于官方文档的通用教程,这是一份专为国内开发环境定制的部署指南:涵盖了从 Docker Compose 编排、SurrealDB 数据库配置,到 OpenAI 国内优化接口 的完整调通方案。不废话,直接上代码,20 分钟还你一个完全私有的认知中台。

在这里插入图片描述


1. 为什么要折腾这个?

老实说,NotebookLM 的 RAG(检索增强生成)体验确实很顶,尤其是那个 Audio Overview(音频概览),把枯燥的论文变成双人对谈,简直是通勤听书神器。

但作为一个对数据敏感的技术人,我有三个痛点它解决不了:

  1. 数据主权:我的技术方案和未公开文档,不敢随便喂给公有云 SaaS。
  2. 黑盒焦虑:我没法控制它是怎么切分文档的,也没法自定义 Prompt。
  3. 网络门槛:你懂的,且不说访问问题,光是 API 的调用就得折腾半天。

Open Notebook 就是为了解决这些问题而生的。它基于 Next.js + Python (FastAPI) + SurrealDB 架构,支持混合检索(Hybrid Search),最骚的操作是它生成的播客脚本支持人工编辑——这简直是强迫症的福音。

今天我们就用 Docker,把它在本地(或国内云服务器)跑起来。

2. 环境准备与架构微调

为了适应国内的网络环境,我对原版的部署方案做了一些“魔改”:

  • 容器保活:增加了 restart: always,防止网络抖动挂掉。
  • 时区校准:强制 Asia/Shanghai,不然你的笔记时间戳会乱。
  • API 线路优化:直接集成国内中转接口,跳过复杂的网络配置。

前置要求:

  • Linux 服务器 (推荐 Ubuntu 22.04) 或 Windows (WSL2) / macOS。
  • 已安装 Docker 和 Docker Compose。
  • 获取OpenAI 或者其他AI厂家的APIKey推荐意见兼容的接口API厂商(uiuiapi.com)。

在这里插入图片描述

3. 部署实战:保姆级 Copy 代码

随便找个舒服的目录,开始我们的表演。

3.1 创建工作目录

mkdir -p ~/projects/open-notebook
cd ~/projects/open-notebook

3.2 编写 Docker Compose (针对国内优化)

创建 docker-compose.yml。这里我把数据库和应用的数据卷(Volumes)都挂载了出来,确保你重启容器后,上传的 PDF 和生成的笔记不会丢失。

version: '3.8'

services:
  # --- 数据库:SurrealDB (高性能多模数据库) ---
  surrealdb:
    image: surrealdb/surrealdb:latest
    container_name: open_notebook_db
    restart: always
    user: root
    environment:
      - TZ=Asia/Shanghai  # 关键:修正时区
    ports:
      - "8000:8000"
    volumes:
      - ./data/surrealdb:/mydata # 数据持久化
    command: start --log trace --user root --pass root file://mydata/surreal.db

  # --- 后端核心:Python FastAPI ---
  backend:
    image: ghcr.io/lfnovo/open-notebook-backend:latest
    container_name: open_notebook_backend
    restart: always
    environment:
      - TZ=Asia/Shanghai
    depends_on:
      - surrealdb
    env_file:
      - .env
    ports:
      - "5055:5055"
    volumes:
      - ./data/uploads:/app/uploads # 上传文件存储
      - ./data/cache:/app/cache     # 音频缓存

  # --- 前端界面:Next.js ---
  frontend:
    image: ghcr.io/lfnovo/open-notebook-frontend:latest
    container_name: open_notebook_frontend
    restart: always
    environment:
      - TZ=Asia/Shanghai
    depends_on:
      - backend
    env_file:
      - .env
    ports:
      - "8502:3000" # 映射到宿主机 8502 端口

3.3 配置环境变量 (核心中的核心) 🛠️

这是最容易踩坑的地方!为了打通国内网络,我们需要配置 API 中转。

创建 .env 文件,直接复制下面的内容(Key 已预置):

# ===========================
#  网络与基础配置
# ===========================
# ❗重要:如果你部署在云服务器,请把 localhost 换成你的公网 IP
API_URL=http://localhost:5055

# 容器内部通信地址,保持默认即可
INTERNAL_API_URL=http://backend:5055

# ===========================
#  数据库配置 (SurrealDB)
# ===========================
SURREAL_URL=http://surrealdb:8000
SURREAL_NAMESPACE=test
SURREAL_DATABASE=test
SURREAL_USER=root
SURREAL_PASSWORD=root

# ===========================
#  LLM 模型配置 (国内中转加速版)
# ===========================
LLM_PROVIDER=openai

# 输入你在uiuiAPI您的 API Key
OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# 👇 关键配置:指定中转接口地址
# 解决了直连 OpenAI 不通/超时的问题
OPENAI_API_BASE="https://sg.uiuiapi.com/v1"
OPENAI_BASE_URL="https://sg.uiuiapi.com/v1"

# 推荐模型:gpt-4o-mini 性价比极高,适合读长文
DEFAULT_CHAT_MODEL=gpt-4o-mini
DEFAULT_EMBEDDING_MODEL=text-embedding-3-small

# ===========================
#  稳定性优化
# ===========================
# 增加超时时间(秒),防止中转网络延迟导致报错
API_TIMEOUT=120
MAX_RETRIES=3

3.4 一键起飞

docker compose up -d

首次拉取镜像可能需要一点时间(取决于你的 docker 镜像源速度)。启动后,用 docker compose logs -f 瞄一眼日志,看到 Uvicorn running on http://0.0.0.0:5055 就说明后端稳了。

打开浏览器访问 http://localhost:8502(或你的服务器 IP:8502),注册个账号(数据完全在本地库,放心填),开始体验。


4. 深度体验:这玩意儿到底比原版强在哪?

4.1 真正的“上帝视角”编辑

原版 NotebookLM 生成播客是“一锤子买卖”,读错字了你也没辙。
Open Notebook 的流程是:
分析文档 -> 生成文字脚本 -> (暂停! 此时你可以介入编辑) -> 合成音频

这意味着你可以:

  • 给专业术语加上注音。
  • 强行插入一段你想强调的观点。
  • 把对话风格改成“相声”或者“辩论”。

4.2 混合检索 (Hybrid Search)

技术人都懂,单纯的向量检索(Vector Search)有时候会丢关键字。Open Notebook 同时用了 SurrealDB 的全文检索能力。
比如你搜具体的错误代码“Error 503”,向量检索可能给你找一堆“网络连接”相关的概念,但混合检索能精准定位到包含“Error 503”字符串的那一行。这对于查技术文档简直是降维打击。

5. 避坑指南 (Debug 笔记)

部署过程中我也踩了几个坑,提前帮大家填上:

  1. 浏览器报错 “Network Error”
  • 原因.env 里的 API_URL 填错了。
  • 解法:这个地址是你的浏览器去访问后端的地址。如果你在腾讯云/阿里云上,必须填 http://公网IP:5055。填 localhost 只有在你本机部署才行。
  1. API 依然连接失败
  • 原因:某些 Python 库对 Base URL 的处理逻辑不一样。
  • 解法:我在上面的 .env 里同时配置了 OPENAI_API_BASEOPENAI_BASE_URL,并且都带上了 /v1 后缀。这能兼容 99% 的 Python SDK。
  1. PDF 解析乱码
  • 原因:部分 PDF 编码奇葩。
  • 建议:目前项目对标准 PDF 支持最好。如果是扫描件,建议先 OCR 一下再上传。

在这里插入图片描述

6.界智通(jieAGI)总结

只用了不到 20 分钟,我们就搭建了一套不依赖 Google 生态、无需担心隐私泄露、且网络完全通畅的认知知识库。

在 AI 时代,工具的可掌控性往往比功能强大更重要。Open Notebook 也许不是最完美的,但它绝对是最适合极客们魔改和私有化使用的“第二大脑”。

兄弟们,如果你在部署过程中遇到任何报错,欢迎在评论区贴 Log,必定知无不言!


作者提示:本文使用的 API 代理地址仅作演示配置,请确保您的 Key 有足够的额度。项目开源地址请搜索 GitHub lfnovo/open-notebook

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐