引言
大家好,今天我们将深入探讨一个极具实用价值的开源项目:notebooklm-py。如果你希望将Google强大的NotebookLM从网页端解放出来,集成到你的自动化脚本或工作流中,那么这个项目正是你所需要的解决方案。

Google NotebookLM无疑是当前个人知识管理与AI辅助分析领域的明星产品。它允许用户上传各类文档,并基于内容进行智能总结、问答、生成播客或幻灯片,且每个回答都附带精准的来源引用,功能十分强大。然而,其最大的局限在于缺乏官方API,所有操作都被束缚在网页界面内,难以实现程序化调用和系统集成。
notebooklm-py项目精准地解决了这一痛点。它通过逆向工程,完整封装了NotebookLM未公开的API接口,使你能够通过Python代码或命令行工具,以编程方式调用NotebookLM的全部核心功能,甚至包括一些网页端未开放的高级能力。更令人惊喜的是,它还提供了一个Claude Code Skill插件,能让Claude在对话中实时查询你的NotebookLM知识库,从而巧妙地将Gemini模型的检索能力与Claude的推理能力相结合。
目前,该项目在GitHub上已获得超过9500个星标,并采用宽松的MIT协议开源。
你将学到什么
- 掌握notebooklm-py的三种核心应用模式:Python API、命令行工具以及Claude Code Skill。
- 了解它能实现哪些超越NotebookLM网页界面的自动化操作。
- 理解Claude Code Skill如何实现跨厂商的“Claude + NotebookLM”AI协作。
- 认识“带来源引用的回答”为何是应对AI幻觉最有效的工程化手段之一。
- 评估基于未公开API进行逆向工程所带来的优势与潜在风险。
前置知识
- 具备Python基础语法知识,了解pip包管理工具。
- 对Google NotebookLM的基本功能有一定了解。
- 若想使用Claude Code Skill,建议具备Claude Code的基本使用经验。
项目背景
项目简介
notebooklm-py是由开发者Teng Lin构建的一个非官方Python客户端。其核心原理并非网页爬虫,而是直接调用NotebookLM客户端与Google服务器通信时使用的原生HTTP接口,从而实现了对NotebookLM所有功能的程序化访问与控制。
该项目包含两个紧密耦合的组件:一是作为基础的Python库和命令行工具,提供了完整的NotebookLM API封装;二是Claude Code Skill,它使得Claude能够在对话过程中实时查询你的NotebookLM知识库。前者解决了“如何自动化操作NotebookLM”的问题,后者则解决了“如何让AI助手的回答基于你的真实文档而非其固有训练数据”这一更深层次的需求。
作者介绍
- 主要作者:Teng Lin(GitHub: @teng-lin)
- 项目性质:社区驱动的非官方项目,与Google无任何官方关联。
- 发布平台:GitHub及PyPI(可通过
pip install notebooklm-py命令直接安装)。 - 当前版本:v0.5.0(处于Beta测试阶段)。
项目数据
- GitHub星标数: 9,500+
- PyPI包名: notebooklm-py
- 开源协议: MIT
- Python版本要求: ≥ 3.10
- 支持平台: macOS, Linux, Windows
- 项目状态: Beta(基于未公开API,可能随Google接口变更而失效)
- 代码仓库: teng-lin/notebooklm-py
主要功能
核心作用
notebooklm-py的功能全面覆盖了NotebookLM的核心能力图谱,主要包括以下方面:
Notebook管理:支持创建、列表查看、重命名、删除和分享Notebook。
来源导入:支持多种格式,包括网页URL、YouTube视频、PDF文件、Google Drive文档以及纯文本粘贴。
知识查询:支持基于对话历史的智能问答,所有回答均附带引用来源;同时支持引用固定功能。
内容生成(Studio功能):可以生成音频播客、视频概述、PPTX格式的幻灯片、测验题、学习闪卡、JSON格式的思维导图、研究报告以及信息图表。
研究助理:能够自动进行网络研究并将搜索结果导入知识库,或自动导入云盘中的指定文档。
三种使用方式
方式 1:Python API(异步,适合自动化流水线)
对于开发者而言,Python API提供了最大的灵活性。你可以通过异步编程模式,将NotebookLM的各项操作无缝集成到复杂的自动化流水线中。
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.sa ve("summary.mp3")
# 生成幻灯片
slides = await notebook.generate_slides()
slides.sa ve("presentation.pptx")
asyncio.run(main())
方式 2:CLI(Shell 脚本和 CI/CD)
如果你更偏爱命令行操作,或者需要在Shell脚本或CI/CD持续集成流程中调用,其CLI工具是绝佳选择。它让所有操作都变得可脚本化和可重复。
# 安装
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)
这是整个项目最具创新性的部分。它实现了AI工作流的“最后一公里”——让Claude能够直接访问并引用你的私有知识库内容。
# 安装 Skill(方法 1:通过插件市场)
/plugin marketplace add teng-lin/notebooklm-py
# 安装 Skill(方法 2:直接安装到 Skills 目录)
notebooklm skill install
# 首次认证(浏览器登录 Google 账号,之后自动维持)
notebooklm auth login
安装并配置完成后,在Claude Code中的对话体验将彻底改变:
你:解释一下我们系统的认证架构,我记得在架构文档里有详细说明
Claude:[内部调用 NotebookLM Skill,查询你的“系统架构”知识库]
Claude:根据你的架构文档(来源:architecture-v3.md,第 4 页),系统使用 JWT + Refresh Token 双令牌机制...
[每条信息都有来源引用,不是训练数据中的泛化回答]
项目详细剖析
Claude Code Skill 的技术原理
要理解这个Skill的工作原理,需要了解其两层架构设计。
第一层:浏览器自动化(Browser Automation)
由于NotebookLM没有公开API,所有操作都需要通过Google账号进行认证。notebooklm-py利用浏览器自动化工具来维持登录状态,捕获认证令牌后直接发起HTTP请求。这意味着其功能与网页端完全对等,且所有敏感数据(如令牌)都保留在本地设备上。但请注意,这要求必须在本地运行Claude Code,云端或沙箱环境因无法使用浏览器功能而受限。
第二层:Skill 集成层
这一层构建了一个高效的交互管道:当Claude Code在对话中判断需要查询知识库时,会触发该Skill;Skill随即构造NotebookLM查询请求,通过Python库发送至Google服务器;NotebookLM(基于Gemini 1.5 Pro模型)返回带有引用的答案;Skill解析响应后,将结构化结果注入Claude的上下文,最终由Claude给出基于真实文档来源、并附有引用的精准回答。
为什么“有来源引用的回答”是反幻觉的工程解法
这背后蕴含着一个重要的设计哲学。AI幻觉问题的核心,往往不在于“AI回答了错误内容”,而在于“AI对自己不确定是否正确的内容,给出了高度确信的回答”。
业界通常有两种对抗策略:策略A依赖于更优质的训练数据和RLHF(人类反馈强化学习),这能缓解但无法根除问题,因为模型本质上无法确知自己不知道什么。策略B则是强制要求模型的每一条断言都必须源自可验证的、具体的来源,如果来源不存在,则无法生成相应断言。这是一种更为根本的解决思路。
notebooklm-py的Claude Code Skill采用的正是策略B。它将回答的根基从模型泛化的训练数据,转移并锚定在你上传的具体文档上。对于像代码库文档、内部API规范、公司流程手册、产品需求文档这类仅存在于组织内部、绝无可能出现在模型训练数据中的知识,这种基于检索的生成(RAG)模式就显得至关重要且高度可靠。
超越网页界面的能力
得益于程序化访问,notebooklm-py能够实现一些在网页界面上难以完成或根本无法完成的操作:
- 批量操作:例如,批量创建数十个Notebook,而无需在网页上重复点击。
- 程序化引用固定:直接通过API调用网页端隐藏的“引用固定”功能。
- 研究助理自动化:自动执行网络搜索并将结果导入知识库,完全实现了自动化研究流程。
- 定时更新与同步:可在CI/CD流水线中设置定时任务,自动将最新文档同步至知识库,确保信息的实时性。
使用风险与权衡
当然,使用这样一个基于逆向工程的项目,也需要正视其技术限制和潜在风险。
| 风险 | 影响 | 缓解方式 |
|---|---|---|
| 基于未公开 API | Google 随时可能改变接口,导致工具失效 | 关注项目更新,准备备用方案 |
| 浏览器自动化 | 需要本地环境,无法在 CI/CD 中使用完整功能 | CLI 模式部分功能可在无头环境运行 |
| 非官方客户端 | 存在违反 Google 服务条款的风险 | 作者标注为“个人使用和原型验证” |
| Beta 状态 | API 接口可能在版本间变化 | 锁定版本号,生产环境谨慎使用 |
作者在项目文档中也明确说明,此工具更适合用于原型验证和个人项目,不建议将其用于关键的生产系统。
总结与展望
核心要点回顾
- 完整 API 封装:覆盖了Notebook的增删改查、多类型来源导入、RAG查询以及Studio内容生成等全套功能。
- 三种使用方式:提供了Python异步API、命令行工具和Claude Code Skill,适应不同场景需求。
- 跨厂商 AI 协作:巧妙地将Claude的推理能力与NotebookLM/Gemini的知识检索能力结合起来,形成互补。
- 反幻觉工程实践:通过强制要求回答基于可追溯的来源,而非模型的训练数据,为应对AI幻觉提供了一种工程化的解决思路。
- 超越网页界面:实现了批量操作、程序化引用固定、研究助理自动导入等只能通过API实现的高级能力。
适用人群
- 研究人员:可以构建自动化文献综述工作流,批量导入论文并智能查询知识库。
- 开发团队:能够将API规范、架构文档注入Claude Code,从而获得有据可依的精准代码建议。
- 内容创作者:可以批量从文档生成播客、幻灯片、思维导图等多种形式的衍生内容。
- AI 工具构建者:可以借此研究与探索跨厂商AI能力的组合与集成模式。
总而言之,notebooklm-py是一个构思巧妙的工具。它通过逆向工程,为强大的NotebookLM打开了程序化访问的大门,并在此基础上,积极探索了跨AI模型协作与对抗幻觉的新路径。虽然存在一定的使用风险,但对于追求自动化、集成化工作流的开发者和研究者而言,它无疑提供了一个极具价值的探索方向和实用工具。
