notebooklm-py 把 NotebookLM 撬开了
3 个月斩获 12k star。这个项目把 Google NotebookLM 拆成 Python、CLI 和 Agent 三种入口,补全了官方 Web UI 没暴露的导出能力,还能让 Claude Code 直接调用它生成播客和思维导图。
1. 一个没被 Google 背书的项目,凭什么这么火
2026 年 1 月,GitHub 上多了一个叫 notebooklm-py 的仓库。作者是 teng-lin,目标只有一句话:让 Google NotebookLM 可以被脚本调用。
到今天,这个仓库 11,844 star、1,606 fork,登上了 Trendshift 榜单。从创建到现在,不到 4 个月。在开源世界里,这种增长曲线通常只属于两类项目:要么是巨头亲自下场推的官方 SDK,要么是踩中真实痛点又恰好赶上时代风口的小工具。这个项目属于后者,而且踩得非常准。
它和那种「调一个 OpenAI Key 就完事」的轮子完全不同。NotebookLM 没有官方 API。teng-lin 干的是反向工程——抓浏览器流量、还原内部 RPC 协议、把那些没文档的端点封装成 Python SDK 和 CLI。仓库里专门有一份 docs/rpc-development.md,讲怎么继续抓包扩接口。这种文档在普通开源项目里几乎看不到,它把项目的「不稳定」摆在台面上,反过来吸引了一批愿意一起维护协议的贡献者。
这种活儿一旦 Google 改一行代码就会全线挂掉,作者也在 README 里反复提醒「Use at Your Own Risk」。但偏偏就是它,一个建在沙堆上的库,在 4 个月内被 1 万多人 star。
为什么?不是因为它做了 NotebookLM 的镜像,而是因为它干了一件 NotebookLM 自己不愿意干的事:把闭源产品拆成一组可编排的原子能力,顺手再给它套上了一层 Agent 皮肤。这种「不重做产品、只补一层壳」的开源思路,其实是大模型时代最值得关注的一种范式。
2. 它的真正定位:不是替代 Web UI,而是给 NotebookLM 接上自动化总线
NotebookLM 自己很好用——丢一堆 PDF、URL、YouTube 链接进去,几分钟内就能听到 AI 主持的双人播客,也能拿到 Quiz、思维导图、视频概览。它在「个人知识助理」这个赛道里是少数能让人惊艳的产品。
但好用归好用,它只能在浏览器里用。这意味着:
•100 份 PDF,你得手动一个一个传•50 个研究主题,得开 50 个标签页•想把生成的 Quiz 嵌进自己的学习平台?没接口•想 CI 流水线里自动产播客?没办法•想接到知识库系统里做日更音频简报?门都没有
teng-lin 解决的就是这一层断裂。notebooklm-py 把 NotebookLM 的每一个产品功能都映射成了一个函数或者一行命令,让一个原本只能点鼠标的产品,变成了可以放进 shell、放进 Python 脚本、放进 cron 的一段代码。
2.1 三种入口、同一组能力
CLI 适合脚本和 CI:
-
-
-
-
1 | `notebooklm create "AI Safety Research"``notebooklm source add "./paper-batch/*.pdf"``notebooklm generate audio --wait``notebooklm download audio ./podcast.mp3` |
Python 适合应用集成:
-
-
-
-
1 | `async with await NotebookLMClient.from_storage() as client:``nb = await client.notebooks.create("Research")``await client.sources.add_url(nb.id, "https://example.com", wait=True)``result = await client.chat.ask(nb.id, "Summarize this")` |
第三种入口下面单独讲。
值得注意的是,这套 SDK 对异步、批量、CI 隔离都做了认真处理。比如多个 agent 并发时,它提供 NOTEBOOKLM_HOME 和 NOTEBOOKLM_PROFILE 让每个 agent 用独立的认证和上下文,不会互相串号。文档里专门用一节讲并发场景下应该传显式的 notebook ID 而不是依赖 notebooklm use 设置的全局上下文。
这些细节是「玩具脚本」和「能上线」之间的分水岭——也是这个项目让人愿意 star 的原因之一,它显然不是一个周末写出来的概念证明,而是经过认真打磨的工程作品。仓库里 90% 的测试覆盖率、用 VCR 录制的 HTTP 回归测试、配套的 mypy 严格类型检查、甚至 pre-commit hook,都说明作者把它当成一个「要长期维护」的项目在写。这种态度在反向工程类的开源项目里非常少见,大多数同类仓库写到能跑就停了。
3. 第三种入口:给 Claude Code 装一个 NotebookLM 大脑
这是 notebooklm-py 最反常规的设计,也是它在 agent 圈里被传播的主要原因。
它把自己同时打包成了 agentic skill——一份让 Claude Code、Codex、OpenClaw 这类 LLM agent 直接读懂、直接调用的指令文件。换句话说,它不仅给程序员准备了 SDK,还给 AI agent 准备了「岗位说明书」。
仓库里有一个 SKILL.md,文件头长这样:
-
-
-
-
1 | `---``name: notebooklm``description: Complete API for Google NotebookLM. Activates on /notebooklm or intent like "create a podcast about X"``---` |
文件里写清楚了:什么时候该激活我、可以无须确认直接跑哪些命令、必须先问用户的命令是哪些。这就是给 Claude Code 写的「岗位手册」。比如读取类的命令(list、status、auth check)被标为可以静默执行,而删除类的命令(delete)必须先问用户——这是一种针对 AI agent 的细粒度授权设计,普通 SDK 不会有这层抽象。
3.1 一条命令把 skill 装进 agent
-
-
-
1 | `notebooklm skill install``# 或者用 npx skills 生态``npx skills add teng-lin/notebooklm-py` |
第一条会把 SKILL.md 落到 ~/.claude/skills/notebooklm 和 ~/.agents/skills/notebooklm,Claude Code 启动后自动识别。第二条走的是 npx skills 的开放生态,把 GitHub 上的 SKILL.md 当成一种新型分发格式来安装。
3.2 装完之后,用法不再像调 API
装完之后,你和 Claude Code 的对话会变成这样:
「这是我组里下半年要看的 12 篇 paper,帮我做个 30 分钟的双人播客,要 critique 风格,然后产一份 Quiz Markdown 给我去周会上用。」
Claude Code 会自己一步步执行:认证、创建 notebook、批量加入 PDF、等 source 处理完、调用 generate audio --format critique、等生成完成、下载 mp3、再调用 generate quiz、最后导出为 Markdown。整个过程你不会跳出对话窗口,也不需要去查任何命令文档。
这种打包方式让 notebooklm-py 不再是一个普通的 Python 库,而是一个可挂载到任何 LLM agent 的能力插件。在 agent 编排成为主流的当下,这个差异化非常关键——它解释了为什么仓库的 topics 里同时挂着 claude-skills、agentic-skill、openclaw-skills,作者从一开始就没把自己定位成普通 SDK,而是把项目当成一个「面向 agent 时代的能力组件」来设计。
4. Web UI 不给、但它给的 7 件事
如果只是把 Web UI 的功能复刻一遍,这个项目不会到 12k star。它做了更进一步的事:把 Google 故意没给用户的能力还了回来。
下面这些都是 notebooklm-py 独有的:
1.批量下载:一条命令把某一类 artifact(比如所有播客)打包下来,Web UI 一次只能点一个2.Quiz / Flashcard 结构化导出:Web 端只让你在浏览器里答题,CLI 给 JSON、Markdown、HTML3.思维导图 JSON:把节点层级以结构化数据导出,你可以直接喂给可视化工具或自己渲染4.Slide Deck 导出 PPTX:Web 端只给 PDF,CLI 给 PowerPoint 可编辑文件5.Slide 单页精修:用一句自然语言改单张幻灯片,Web 端没有这个入口6.Data Table 导出 CSV:让 NotebookLM 帮你抽结构化表格,直接进 Excel7.Source 原文索引访问:能拿到一份 source 被 NotebookLM 索引后的全文,这对调试和二次加工很有用
第 5 条「slide 精修」是个典型例子——Google 内部肯定写了这段逻辑,只是没在 UI 上暴露按钮。notebooklm-py 通过 RPC 直接调到了那条路径,等于是用反向工程的手法把产品里被砍掉的「半成品功能」给挖了出来。
第 4 条 PPTX 也很有意思。NotebookLM 的幻灯片在 Web 端只能下载 PDF,但生成它的中间产物显然有结构化格式,否则没法做后续的「修改单页」。notebooklm-py 把这条链路打开,让用户拿到了真正可以二次编辑的文件。
这种「越过产品经理拿到工程师能力」的设计,是反向工程项目最迷人的部分。它不是新增功能,而是把已经存在却被锁起来的能力释放出来。对用户来说,这意味着同样一个 NotebookLM 账号,在 Web UI 里和在 CLI 里能干的事完全不在一个量级——前者是给个人用户的产品,后者是给开发者的能力面板。
5. 一个真实场景:200 页 PDF 自动变成多模态学习包
把上面所有能力串起来,你能搭出官方根本没想让你做的流水线。
假设你是一个法学研究生,期末要消化 8 篇判决书加 3 份 200 页的法律评论 PDF。传统路径是一篇一篇读,然后自己整理笔记。用 notebooklm-py,可以这样:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
1 | `notebooklm create "民商法期末复习"``notebooklm use <id>````# 批量喂 source``for f in ./papers/*.pdf; do``notebooklm source add "$f"``done``notebooklm source add "https://www.court.gov.cn/case-xxx"````# 一次性生成全套学习产物``notebooklm generate audio "深入对话风格,中文" --wait``notebooklm generate quiz --difficulty hard --quantity 30``notebooklm generate flashcards --quantity more``notebooklm generate mind-map``notebooklm generate report "争点提炼:列出每篇文献的核心争议和裁判要点"````# 下载成可移交格式``notebooklm download audio ./review.mp3``notebooklm download quiz --format markdown ./quiz.md``notebooklm download flashcards --format json ./cards.json``notebooklm download mind-map ./map.json``notebooklm download report ./brief.md` |
跑完之后,你手上有:一份 30 分钟通勤路上能听的播客、一份 Markdown 题库、一份可以导入 Anki 的闪卡 JSON、一份思维导图、一份争点分析报告。
整个过程一段 shell 脚本写完,可以放进 cron。明天来 5 篇新判决,把文件夹一换、脚本一跑,新的学习包又生成了。同样的模式可以套到很多其他场景:每周追技术博客的开发者用它产「行业播报音频」;运营团队用它把竞品文档转成内部培训 Quiz;独立研究者把每周读的论文打成思维导图归档。
这才是 NotebookLM 作为「AI 助理产品」之外,作为「内容生成基础设施」的样子。Web UI 让你一次解决一个问题,notebooklm-py 让你一次解决一类问题。
6. 建在沙堆上的便利:undocumented API 的代价
聊完亮点,得聊聊它的脆弱面。
notebooklm-py 调用的全部是未公开的 Google 内部接口。Google 任何一次客户端更新,都可能让某个 RPC 端点参数改名、签名换格式、甚至彻底下线。仓库里的 troubleshooting.md 和 rpc-reference.md 就是为了这种事而存在的——出问题时,你大概率得自己抓包补协议,或者等社区其他人补上 PR。
作者本人在 README 第一屏就写明:
Best for prototypes, research, and personal projects.
这是诚实的定位。它不适合做的事:
•给企业客户提供 SLA 的生产服务•接到付费产品的核心链路里•任何需要稳定性承诺的场景
它适合做的事:
•个人研究、学习流水线•团队内部工具、效率脚本•短周期的 PoC 和实验项目•LLM Agent 的能力拼图
另一层风险是合规——Google 没禁止这种用法,但也没允许。重度自动化访问可能触发限流甚至账号风控。作者建议在个人或学术账号上跑,别拿企业主账号试,这是对用户负责的提醒。
但反过来想,真正用它的人,买的本来就不是「永远稳定」。他们买的是:只要 NotebookLM 还活着,就有一群人帮我跟踪它的内部协议变化。这个交易在过去几乎不存在,因为没人愿意维护一个随时可能挂掉的东西。直到 LLM agent 流行起来,「在闭源产品的缝隙里拼能力」变成一件每天都有人在干的事,这种项目才有了存在的土壤。
如果你能接受这层不确定性,notebooklm-py 给你的回报是:一个 12k star 社区在帮你跟踪 Google 内部 API 的变化——这个 ROI,在 agent 时代,几乎找不到第二个项目能给。
3 个月 12k star,赌的不是稳定,赌的是「在闭源产品的缝隙里撬一道自动化的口子」这件事,在未来一年会越来越值钱。从这个角度看,notebooklm-py 不只是一个好用的工具,它更像是一个信号——预告了未来一两年还会出现一批同类项目,把现在被锁在 SaaS 后台里的各种 AI 产品,一个一个变成可挂载的 Agent 能力。
如果你最近在搭自己的研究流水线,或者在给 Claude Code 选可挂载的能力插件,这个项目值得花一个下午认真试一下。
💬 本文评论区已开启,但暂无读者留言。
本文转载自微信公众号,如有侵权请联系删除。
- 标题: notebooklm-py 把 NotebookLM 撬开了
- 作者: lxiol
- 创建于 : 2026-05-06 19:56:14
- 更新于 : 2026-05-12 16:07:04
- 链接: https://blog.lxiol.cn/2026/05/06/notebooklm-py-把-NotebookLM-撬开了/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。