notebooklm-py 深度评测:随时会坏的 Google 非官方接口,凭什么压着 1.8 万条测试

notebooklm-py 深度评测:随时会坏的 Google 非官方接口,凭什么压着 1.8 万条测试

你大概用过 NotebookLM:把一堆资料丢进去,让它替你读、替你答、还带上出处。它官方只给了网页界面,没有给能用代码调用的接口。有人自己动手,把它做成了能编程调用的库,一下就冲到了 1.9 万 Star。

这次我盯上的是 teng-lin/notebooklm-py。它的自我介绍里有一句极少见的坦白:这是一个非官方库,用的全是没公开的 Google 接口,Google 随时可能改,一改它就可能坏。

我照着它自己的说明,在一台隔离的机器上把它装上、跑完了它的测试,发现两件放在一起很反差的事。

一件是它真能扛:1.8 万条测试,18720 条通过,而且整套测试断网就能跑,不碰任何真实账号。另一件是它自己天天在准备那个「随时会坏」的明天:从今年 8 月到 10 月的 585 次提交里,158 次有 AI 参与写代码,它还专门写了 13 个脚本,每次发布前自己检查自己有没有说谎。

它到底是什么

一句话:它是给 Claude Code、Codex 这类编程助手用的外挂接口,让助手能绕过网页界面,直接用代码使唤 NotebookLM。

举个能听懂的例子。你在网页上做视频摘要,得自己点开、上传、等它生成、再手动下载。换成这个库,你写一行命令,助手就能自己去建笔记本、把十几篇链接塞进去、让它读完、生成一段播客音频、再把音频下载到本地。中间不用你点一下鼠标。

它把 NotebookLM 的能力拆成了 11 类操作,做成了三种用法:命令行、Python 代码、以及一个能被模型调用的 MCP 接口(意思是「让模型调用外部工具」的通用插头)。另外它比网页版多做了几件网页版做不到的事——把生成的测验、闪卡批量导出成 JSON 和 Markdown 文件,把思维导图导出成能进可视化工具的 JSON,幻灯片直接存成可编辑的 PPTX。

它自带一个装在仓库根目录的技能说明文件,也就是说,它自己就是一个「skill」——这也是我把它放进技能评测这一栏的原因。

它能干什么 具体覆盖
笔记本 新建、复制、重命名、删除
资料源 链接、YouTube、PDF、Word、音频、视频、图片、Google Drive
提问 带出处回答、保存成笔记、自定义人设
生成内容 播客音频、视频、幻灯片、信息图、测验、闪卡、报告、数据表、思维导图
导出 音频、视频、文档、图片、表格、结构化数据等,共八种格式

我把它装起来,跑了它自己的测试

先交代评测条件,免得误会:全程在一台隔离沙箱里跑,被测项目拷进沙箱自己的工作目录,宿主机的凭证和目录都被挡住;跑测试的机器只有 1.9G 内存。命令和结果都可复现。

装上以后,我先跑了它默认的那套测试,也就是除「需要真实账号的端到端测试」之外的全部:

项 数字
通过的测试 18,720 条
失败的测试 48 条(见下方说明)
被跳过的测试 205 条
耗时 28 分 38 秒

那 48 条失败,我逐条查了原因:它们全是我的沙箱缺了一个叫 python 的命令别名(我的环境里只有 python3),测试脚本找不到这个命令,直接以「命令不存在」退出了。我给沙箱补上这个别名后,同一个测试文件单独重跑,67 条全过。所以这不是项目的问题,是我这边环境的问题——这一点我如实写出来,不拿它凑数。

真正让我意外的是下面这点。

按常理,一个用着没公开接口、随时可能被 Google 改坏的工具,能跑起来的测试大概也就是「凑合用」。但这个仓库里躺着 890 个测试文件、10151 个测试函数、45 万行测试代码,还有 160 盒录好的真实网络应答(它管这个叫 cassette,相当于把 Google 服务器的真实回信录下来,之后断网反复播,不消耗账号额度)。整套测试默认就是离线跑的,你不需要有 Google 账号,也不需要联网。

这意味着:Google 哪天偷偷改了接口,它的每月夜间任务会自己发现,而不是等用户来报错。对一个「随时会坏」的项目来说,这是把「坏」从事故变成了日程表上的一项。

它对一个不稳定接口,做了三件反常的事

第一件,它专门写了 13 个脚本,在每次发布前检查自己有没有前后矛盾。我拿它自己的这批脚本,跑了一遍它自己的仓库,13 个全部通过:

它自己检查什么 结果
文档里提到的代码文件是否还存在 通过(582 个路径全部对得上)
别人写的 deprecation 提示有没有写错删除版本 通过(没有指向当前版本)
测试覆盖率门槛有没有被偷偷调低 通过(最终门槛锁在 90%)
用到的第三方流水线工具是否锁定了版本号防篡改 通过(8 个工作流全部锁定)
会拿到密钥的流水线是否都加了守卫 通过

这里补一句人话解释几个词。所谓「deprecation 提示」,就是代码里那句「这个功能以后会删掉」的说明——它最容易出的错,是说「将在 0.8.5 版删除」,而当前正好就是 0.8.5 版,于是这句话本身自相矛盾。这个库专门写了个脚本在发布前拦这类错误。

第二件,它有 102 个「护栏」测试。这些测试不测功能,专门测「规矩有没有被破坏」——比如某个内部模块不许被另一个模块直接引用、某个文件不许超过多少行、某个接口的兼容清单有没有偷偷改动。等于给仓库立了一套自己的交通法规,还派了 102 个交警。

第三件,也是我觉得最值得普通读者知道的一点:这是一个大量借助 AI 写的项目,而且它没藏着。我拉了它从 8 月到 10 月的提交记录,585 次提交里,274 条提交信息里带着「由 Claude 协作完成」的署名,其中 158 次能确认有 AI 参与,占 27%。

换句话说,作者一边用 AI 写一个「随时会坏」的库,一边给这个库配了 1.8 万条测试和 102 条护栏来兜住 AI 可能写错的地方。这两件事放在一起才是完整的:AI 负责写得快,工程规矩负责让它不写崩。

翻车点和公道话,都得说全

翻车点有四条,都不影响它可用,但选型前该知道:

版本号追不上 GitHub。GitHub 上最新发布是 0.8.5(10 月 12 日当天发的),而 Python 官方软件源上还是 0.8.4。想装最新的得从 GitHub 装。

它是 0.x 版本,作者自己在文档里写明:0.x 阶段的接口不算稳定,小版本升级有可能删掉之前标记过时的接口。 想长期稳定用的团队,这一点要放在心上。

「省 token」这个卖点,仓库里拿不出第一方证据。它首页举了一串「用 NotebookLM 做零 token 分析层」的例子,但每个例子都是一条外部的推文或文章链接,没有一条是它自己测出来的对比数字。这个思路本身成立——让 NotebookLM 读完再让助手只做最后一步,确实省——但「省多少」目前是社区说法,不是它的成绩单。别把社区案例当成官方实测。

它虽然锁了 90% 覆盖率门槛,但剩下那 10% 正是最容易出问题的角落。这是所有靠覆盖率兜底的项目共同的天花板,不是它独有的毛病。

也有要说的公道话,而且份量不轻:

它的文档厚得反常。23 份说明文档、2 万多行,还有 41 份架构决策记录(ADR,就是「当时为什么这么做」的存档)。一个个人项目把决策一条条记档,这在开源圈里少见。

它的安全说明写得像一份正经的威胁模型。文档里明说:存下来的登录凭证「等同于账号本身」,能拿它重新签新的会话,所以文件权限锁死、绝不进日志、绝不上传,还劝你「另开一个小号专门跑自动化」。这种把最坏情况写在前面的态度,比只写怎么用的项目要负责。

它把复杂度摊开了讲。别人不给的接口它自己造,但造的过程看不懂的地方,它写了「协议开发」「RPC 参考」「认证的 Cookie 生命周期」等专门文档,等于把逆向出来的东西又翻译了一遍给外人。

同类里它站在哪,谁该用它

同类里排第二的是一个 193 Star 的项目,只做 MCP 这一条路,界面更简单,但导出、测验、思维导图这些能力都没有;再往下的几个要么是它的下游(直接包了它),要么是老语言重写的(Rust、企业版方向)。

所以三个东西其实是一层层的关系:你想要一个能写进代码、又能被助手直接调用的完整工具箱,选它;你只想在 Claude 里加一个 NotebookLM 插头、不写代码,选那个轻量版就够;你要的是管理后台那样稳定对外的服务,这两个都不合适,因为它们的底层随时可能被 Google 改动。

适合谁:经常让 AI 助手帮你做调研、又烦透了在网页上反复点击的人;想给助手接一个「读完资料再答」的记忆库、又不想自己搭一整套向量检索的团队。

先别急的有两种人:一是要把它接进对方核心系统的——底层接口随时会坏,作者自己都不保证;二是冲着「省 token」这个词来的——这个数字目前没有官方实测撑腰,别拿它做预算。

关注 AI商业快讯,每天一篇 AI 热点深度解读。

相关阅读: