一天一个开源项目(第113篇):notebooklm-py - 把 Google NotebookLM 变成可编程 API,还能接入 Claude Code

引言

"AI needs to know where it learned something from."

这是"一天一个开源项目"系列的第113篇文章。今天带你了解的项目是 notebooklm-py

Google NotebookLM 是目前最好的"个人知识库 + AI 问答"工具之一------你上传文档,它帮你提炼、总结、生成播客、制作幻灯片,并且每个回答都有来源引用。但它有一个巨大的局限:没有官方 API,一切只能在网页上手动操作。

notebooklm-py 解决了这个问题。它逆向工程了 NotebookLM 的全部未公开 API,让你用 Python 代码或 CLI 完整控制 NotebookLM 的每一个功能------包括网页界面没有暴露的功能。更进一步,它还提供了一个 Claude Code Skill,让 Claude 能在对话中实时查询你的 NotebookLM 知识库,把 Gemini 的知识基础能力和 Claude 的推理能力结合起来。

9,500+ Stars,MIT 开源。

你将学到什么

  • notebooklm-py 的三种使用方式(Python API / CLI / Agent Skill)
  • 它能做哪些 NotebookLM 网页界面做不到的事
  • Claude Code Skill 集成如何实现"Claude + NotebookLM"的跨厂商 AI 协作
  • 为什么"有来源引用的回答"是解决 AI 幻觉最直接的工程手段
  • 逆向工程未公开 API 的代价:能力与脆弱性的权衡

前置知识

  • 熟悉 Python 基础和 pip 包管理
  • 用过 Google NotebookLM(了解它的核心功能)
  • 有 Claude Code 使用经验(如果你关注 Skill 集成部分)

项目背景

项目简介

notebooklm-py 是由开发者 Teng Lin 构建的非官方 Python 客户端,通过逆向工程 Google NotebookLM 的内部 API,提供完整的程序化访问能力。它不是爬虫,而是直接调用 NotebookLM 客户端与 Google 服务器通信时使用的同一批 HTTP 接口。

项目包含两个紧密相关的组件:

css 复制代码
notebooklm-py
  ├── Python 库 / CLI    ← 完整的 NotebookLM API 封装
  └── Claude Code Skill ← 让 Claude 在会话中实时查询 NotebookLM

这两个组件解决了不同层次的问题:Python 库解决的是"如何自动化 NotebookLM 操作";Claude Code Skill 解决的是"如何让 AI 助手的回答基于你的真实文档而不是训练数据"。

作者介绍

  • 主要作者 :Teng Lin(GitHub: @teng-lin
  • 项目性质:非官方、社区驱动,与 Google 无官方关联
  • 发布平台 :GitHub + PyPI(pip install notebooklm-py
  • 当前版本:v0.5.0(Beta 状态)

项目数据

  • ⭐ GitHub Stars: 9,500+
  • 📦 PyPI: notebooklm-py
  • 📄 License: MIT
  • 🐍 Python: ≥ 3.10
  • 🖥️ 平台: macOS, Linux, Windows
  • ⚠️ 状态: Beta(基于未公开 API,可能随 Google 变更而失效)
  • 🌐 仓库: teng-lin/notebooklm-py

主要功能

核心作用

notebooklm-py 的功能覆盖了 NotebookLM 的完整能力图谱:

arduino 复制代码
Notebook 管理
  ├── 创建、列出、重命名、删除、分享

来源导入
  ├── URL(网页)
  ├── YouTube 视频
  ├── PDF 文件
  ├── Google Drive 文档
  └── 粘贴文本

知识查询
  ├── 带对话历史的问答(引用来源)
  └── 引用固定(pin citations)

内容生成(Studio 功能)
  ├── 音频播客(Audio Overview)
  ├── 视频概述
  ├── 幻灯片(PPTX 格式)
  ├── 测验(Quiz)
  ├── 闪卡(Flashcards)
  ├── 脑图(JSON 格式)
  ├── 报告
  └── 信息图

研究代理
  ├── 网络研究(自动导入搜索结果)
  └── Drive 研究(自动导入云盘文档)

三种使用方式

方式 1:Python API(异步,适合自动化流水线)

python 复制代码
import asyncio
from notebooklm import NotebookLM

async def main():
    async with NotebookLM() as nlm:
        # 创建 Notebook
        notebook = await nlm.create_notebook("我的研究项目")
        
        # 导入多种来源
        await notebook.add_source("https://arxiv.org/abs/2310.06825")
        await notebook.add_source("research.pdf")
        await notebook.add_source("https://youtu.be/dQw4w9WgXcQ")
        
        # 查询知识库(返回带引用的回答)
        response = await notebook.query(
            "这篇论文的核心创新点是什么?",
            include_citations=True
        )
        print(response.answer)
        print(response.citations)  # 每条引用都指向具体来源段落
        
        # 生成音频播客
        podcast = await notebook.generate_audio_overview()
        podcast.save("summary.mp3")
        
        # 生成幻灯片
        slides = await notebook.generate_slides()
        slides.save("presentation.pptx")

asyncio.run(main())

方式 2:CLI(Shell 脚本和 CI/CD)

bash 复制代码
# 安装
pip install notebooklm-py

# 基础操作
notebooklm notebook create "产品文档知识库"
notebooklm source add --notebook "产品文档知识库" https://docs.example.com
notebooklm source add --notebook "产品文档知识库" ./spec-v2.pdf

# 查询
notebooklm query --notebook "产品文档知识库" "新版 API 的认证方式有哪些变化?"

# 生成内容
notebooklm generate audio --notebook "产品文档知识库"
notebooklm generate slides --notebook "产品文档知识库" --output slides.pptx

# 批量导入(在 CI/CD 中自动更新知识库)
notebooklm source sync --notebook "产品文档知识库" ./docs/

方式 3:Claude Code Skill(让 Claude 实时查询 NotebookLM)

这是整个项目最值得重点介绍的部分。

bash 复制代码
# 安装 Skill(方法 1:通过插件市场)
/plugin marketplace add teng-lin/notebooklm-py

# 安装 Skill(方法 2:直接安装到 Skills 目录)
notebooklm skill install

# 首次认证(浏览器登录 Google 账号,之后自动维持)
notebooklm auth login

安装后,在 Claude Code 的对话中:

css 复制代码
你:解释一下我们系统的认证架构,我记得在架构文档里有详细说明

Claude:[内部调用 NotebookLM Skill,查询你的"系统架构"知识库]

Claude:根据你的架构文档(来源:architecture-v3.md,第 4 页),
        系统使用 JWT + Refresh Token 双令牌机制...
        [每条信息都有来源引用,不是训练数据中的泛化回答]

项目详细剖析

Claude Code Skill 的技术原理

理解这个 Skill 如何工作,需要理解它的两层架构:

Layer 1:浏览器自动化(Browser Automation)

NotebookLM 没有公开 API,所有操作都需要通过 Google 账号认证。notebooklm-py 使用浏览器自动化(Playwright)来维持认证状态,捕获认证令牌后再直接发起 HTTP 请求。

这意味着:

  • ✅ 功能完整(与网页端完全对等)
  • ✅ 本地运行(所有数据留在你的设备上)
  • ⚠️ 需要本地 Claude Code(云端/沙箱环境无法使用浏览器)
  • ⚠️ 依赖 Google 内部 API,随时可能失效

Layer 2:Skill 集成层

css 复制代码
Claude Code 对话
    ↓ 判断需要知识库支持
Skill 触发
    ↓ 构造 NotebookLM 查询
notebooklm-py Python 库
    ↓ HTTP 请求到 Google 服务器
NotebookLM(Gemini 1.5 Pro 后端)
    ↓ 返回带引用的回答
Skill 解析响应
    ↓ 注入到 Claude 的上下文
Claude 最终回答(基于真实来源,有引用)

为什么"有来源引用的回答"是反幻觉的工程解法

这是值得深入思考的设计哲学。

AI 幻觉的核心问题不是"AI 回答了错误的内容",而是"AI 回答了不知道是否正确的内容却表现出确定性"。两种对抗策略:

策略 A:更好的训练数据和 RLHF → 缓解但无法根治(模型永远不知道自己不知道什么)

策略 B:强制每条断言都来自可验证的来源 → 根本性解决(如果来源不存在,就无法生成该断言)

notebooklm-py 的 Claude Code Skill 走的是策略 B 的路:

arduino 复制代码
传统 Claude 回答:
"JWT 是一种...(来自训练数据,可能是过期版本)"

接入 NotebookLM 的 Claude 回答:
"根据 architecture-v3.md(第 4 页第 2 段),
 你们系统的 JWT 实现使用了 ECDSA 签名...
 (来自你自己上传的文档,可追溯)"

这种模式特别适合:代码库文档、API 规范、内部流程手册、产品需求文档------这些知识只存在于你的组织内部,模型训练数据里没有,只能通过文档检索来获取。

超越网页界面的能力

notebooklm-py 能做一些 NotebookLM 网页界面做不到的事:

python 复制代码
# 批量创建多个 Notebook(网页需要一个个手动点)
notebooks = await asyncio.gather(*[
    nlm.create_notebook(f"研究主题 {i}")
    for i in range(10)
])

# 程序化引用固定(网页界面的隐藏功能)
await notebook.pin_citation(citation_id="cit_abc123")

# 研究代理:自动搜索并导入相关网页(超出网页界面能力)
await notebook.research_web(
    query="量子计算最新进展 2026",
    auto_import=True,
    max_sources=15
)

# 定时更新知识库(CI/CD 中自动同步最新文档)
async def sync_docs():
    notebook = await nlm.get_notebook("产品文档")
    await notebook.sync_sources("./docs/")  # 只添加新文件,不重复导入

使用风险与权衡

这个项目最重要的技术限制值得正视:

风险 影响 缓解方式
基于未公开 API Google 随时可能改变接口,导致工具失效 关注项目更新,有 fallback 方案
浏览器自动化 需要本地环境,无法在 CI/CD 中使用完整功能 CLI 模式部分功能可在无头环境运行
非官方客户端 违反 Google ToS(服务条款)风险 作者标注为"个人使用和原型验证"
Beta 状态 API 接口可能在版本间变化 锁定版本号,生产环境谨慎使用

作者在文档中明确说明:这个工具适合原型验证和个人项目,不建议用于关键生产系统


项目地址与资源

官方资源

安装快速参考

bash 复制代码
# 基础安装
pip install notebooklm-py

# 含浏览器自动化支持(Skill 集成必须)
pip install "notebooklm-py[browser]"

# Claude Code Skill 安装
notebooklm skill install
notebooklm auth login   # 首次认证

适用人群

  • 研究人员:自动化文献综述工作流,批量导入论文并查询知识库
  • 开发团队:把 API 规范、架构文档注入 Claude Code,获得有来源依据的代码建议
  • 内容创作者:批量从文档生成播客、幻灯片、思维导图
  • AI 工具构建者:研究跨厂商 AI 能力组合(Claude + NotebookLM/Gemini)

总结与展望

核心要点回顾

  1. 完整 API 封装:Notebook CRUD、多类型来源导入、RAG 查询、Studio 内容生成(音频/视频/幻灯片/闪卡)全覆盖
  2. 三种使用方式:Python 异步 API(流水线)、CLI(脚本/CI)、Claude Code Skill(AI 会话集成)
  3. 跨厂商 AI 协作:Claude 的推理 + NotebookLM/Gemini 的知识检索,形成互补
  4. 反幻觉工程实践:强制每条断言都来自可追溯来源,而不是依赖模型的训练数据
  5. 超越网页界面:批量操作、程序化引用固定、研究代理自动导入------这些能力只能通过 API 实现

一句话评价

notebooklm-py 做了 Google 不愿意做的事------把 NotebookLM 变成一个可编程的知识引擎;而它的 Claude Code Skill 则做了一件更有意思的事:让两个不同厂商的 AI 系统协作,各自做自己最擅长的部分。


欢迎来我的个人主页找到更多有用的知识和有趣的产品

相关推荐
深兰科技1 小时前
韩国KAIST AI半导体高管项目代表团到访深兰科技,聚焦AI算力与智能产业合作机会
人工智能·机器人·symfony·ai算力·深兰科技·韩国科学技术院·kaist
快乐on9仔1 小时前
NLP学习(一)transformers之pipeline体验
人工智能·深度学习
冬奇Lab1 小时前
Agent系列(六):记忆管理——让 Agent 记住重要的事
人工智能·agent
字节跳动开源1 小时前
veRL 推出开源 Uni-Agent:为通用 Agent 训练打造统一框架
开源
字节跳动开源2 小时前
Viking AI 搜索 CLI 正式发布:会说话,就能做搜索推荐
数据库·人工智能·开源
阿杰技术2 小时前
AI 编程助手落地实战:从提效到重构的全场景指南
人工智能·重构
Agent手记2 小时前
制造业生产流程自动化,Agent需要具备哪些能力?深度拆解2026工业级智能体落地范式与核心架构
大数据·人工智能·ai·架构·自动化
道里2 小时前
花了 5 万刀用 AI 写代码之后,这是我的全部经验
前端·人工智能