
最近折腾了一下 notebooklm-py,把 Google NotebookLM(谷歌的智能笔记工具)变成了可编程的 API,还顺手接入了 Claude Code,整个过程踩了几个坑,这篇把核心东西说清楚。
Google NotebookLM 是目前最强的个人知识 + AI 问答工具之一:上传文档,它自动摘要、生成播客、做 PPT、回答问题还能标注来源。但有一个致命缺陷:没有官方 API。所有操作都得在网页上手动来。
notebooklm-py 就是来解决这个问题的。它逆向工程了 NotebookLM 一整套未公开的内部接口,让你通过 Python 或命令行完成所有操作,甚至包括网页界面里根本没暴露的功能。更骚的是,它还自带一个 Claude Code Skill,能让 Claude 在对话中实时查询你的 NotebookLM 知识库,把 Gemini 的知识检索和 Claude 的推理能力串起来用。
GitHub 9500+ 星,MIT 协议。
notebooklm-py 是开发者 Teng Lin 构建的非官方 Python 客户端,通过逆向工程拦截 NotebookLM 网页客户端与谷歌服务器之间的 HTTP 请求来实现功能。
项目包含两个紧密关联的组件:
notebooklm-py ├── Python Library / CLI ← 完整的 NotebookLM API 封装 └── Claude Code Skill ← 让 Claude 在对话中查询 NotebookLM
这两个组件解决不同的问题:Python 库回答"如何自动化 NotebookLM 操作?",Claude Code Skill 回答"如何让 AI 助手的回复基于我的真实文档而不是训练数据?"。
pip install notebooklm-py)notebooklm-py 覆盖了 NotebookLM 完整的功能面:
笔记本管理 ├── 创建、列出、重命名、删除、分享 资料导入 ├── 网页 URL ├── YouTube 视频 ├── PDF 文件 ├── 百度云/阿里云盘文档 └── 粘贴文本 知识查询 ├── 带对话历史的问答(答案附带来源) └── 来源引用固定 内容生成(Studio 功能) ├── 音频播客(Audio Overview) ├── 视频概览 ├── PPT 幻灯片 ├── 小测验 ├── 闪卡 ├── 思维导图(JSON) ├── 研究报告 └── 信息图 研究智能体 ├── 网页研究(自动导入搜索结果) └── 云盘研究(自动导入云端文档)
import asyncio
from notebooklm import NotebookLM async def main(): async with NotebookLM() as nlm: # 创建笔记本 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())
# 安装
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 "产品文档知识库" \ "v2 版本的身份验证 API 做了哪些变更?" # 生成内容
notebooklm generate audio --notebook "产品文档知识库"
notebooklm generate slides --notebook "产品文档知识库" --output slides.pptx # 批量同步(CI/CD 中自动更新知识库)
notebooklm source sync --notebook "产品文档知识库" ./docs/
这是整个项目最有趣的部分。
# 安装 Skill(方式一:通过插件市场)
/plugin marketplace add teng-lin/notebooklm-py # 安装 Skill(方式二:直接安装到 skills 目录)
notebooklm skill install # 首次认证(浏览器登录谷歌账号,之后自动维持)
notebooklm auth login
安装完成后,在 Claude Code 对话中:
你:解释一下系统的身份验证架构—— 我记得在架构文档里有记录。 Claude:[内部调用 NotebookLM Skill,查询你的"系统架构"笔记本] Claude:根据你的架构文档(来源:architecture-v3.md,第4页), 系统使用了 JWT + Refresh Token 双 Token 机制... [每个论断都有可追溯的来源支撑,而非训练数据的泛化]
理解这个 Skill 需要理解它的双层架构:
第一层:浏览器自动化
NotebookLM 没有公开 API,所有操作都需要谷歌账号认证。notebooklm-py 使用浏览器自动化(Playwright)来维持认证状态,抓取 auth token 后直接发 HTTP 请求。
这意味着:
第二层:Skill 集成
Claude Code 对话 ↓ 判断需要调用知识库上下文
Skill 被触发 ↓ 构建 NotebookLM 查询
notebooklm-py Python 库 ↓ HTTP 请求发送到谷歌服务器
NotebookLM(Gemini 1.5 Pro 后端) ↓ 返回带来源的答案
Skill 解析响应 ↓ 注入到 Claude 的上下文窗口
Claude 的最终回答(基于真实来源,带引用)
这是一个值得深思的设计哲学。
AI 幻觉的核心问题不是"AI 说错了",而是"AI 以完全自信的态度说了一段可能错误的内容"。目前有两种应对策略:
策略 A:更好的训练数据和 RLHF
→ 有所缓解但无法消除(模型永远不知道自己不知道什么)
策略 B:强制每个论断都来自可验证的来源
→ 结构性修复(如果来源不存在,论断就无法生成)
notebooklm-py 的 Claude Code Skill 采用的是策略 B:
传统 Claude 回答:
"JWT 是一种令牌格式...(来自训练数据,可能已过时)" 接入 NotebookLM 的 Claude:
"根据 architecture-v3.md(第4页第2段), 你系统的 JWT 实现使用 ECDSA 签名...
(来自你自己上传的文档,完全可追溯)"
这个模式对于以下场景特别强大:代码库文档、API 规范、内部流程手册、产品需求——这些知识只存在于组织内部,任何模型的训练数据里都没有,只能通过文档检索获取。
notebooklm-py 有一些 NotebookLM 网页版做不到的功能:
# 批量创建多个笔记本(网页版需要手动逐个点击)
notebooks = await asyncio.gather(*[ nlm.create_notebook(f"研究主题 {i}") for i in range(10)
]) # 编程式来源引用固定(网页 UI 未暴露的能力)
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 | 谷歌随时可能改动内部实现,导致工具失效 | 关注项目更新,准备备用方案 |
| 浏览器自动化 | 需要本地环境;无头 CI/CD 无法使用完整功能 | CLI 模式支持部分无头操作 |
| 非官方客户端 | 可能存在谷歌服务条款违规风险 | 作者标注为"个人使用和原型验证" |
| Beta 状态 | API 可能在版本间发生变化 | 锁定版本号,生产环境谨慎使用 |
作者在文档中明确说明:这个工具适用于原型和个人项目,不适合对可靠性有严格要求的生产系统。
skills/README.md# 基础安装
pip install notebooklm-py # 包含浏览器自动化支持(Skill 集成必需)
pip install "notebooklm-py[browser]" # 安装 Claude Code Skill
notebooklm skill install
notebooklm auth login # 首次认证
notebooklm-py 做了谷歌自己没做的事——把 NotebookLM 变成可编程的知识引擎。它的 Claude Code Skill 做了更酷的事:让两个不同厂商的 AI 系统协作,每个做自己最擅长的事。
原文链接:https://dev.to/wonbot_ai/