GitHub Explorer

一个人用 AI 提交 1572 次:16k star 的 NotebookLM 逆向 SDK 怎么不让 AI 把代码写崩

GitHub: https://github.com/teng-lin/notebooklm-py

一句话总结

notebooklm-py 是 Google NotebookLM 的非官方 Python SDK——逆向其未公开的内部 RPC 协议,以 Python API + CLI + Agent Skill 三种形态交付,连网页端都不暴露的能力(批量下载、结构化导出、可编辑 PPTX、多账号切换)都能程序化访问。它由一位资深开发者用 Claude Code 高频结对编程、5 个月密集冲刺打造,最值得学的不是「逆向」本身,而是它配了一整套工程护栏(棘轮测试、VCR 录制、ADR)来同时驯服「Google 随时改接口」和「AI 量产代码失控」两个熵源。

值得关注的理由

  1. 逆向官方本体,而非另造替代品:同赛道高星项目(open-notebook 27k、SurfSense 14k、podcastfy 6k)几乎全是「开源重实现」,绕过 NotebookLM 本体因此拿不到 Google 专有的生成质量。本项目是唯一「驱动官方本体」的方案——护城河就是复用 Google 不开源的播客/视频质量,还解锁了网页 UI 自己都没有的导出能力。
  2. AI 结对编程的工程范本:近 30 天 881 个 commit(≈ 每天 29 个),贡献者里 Claude 独立署名 64 个 commit,CI 挂着 claude-code-action,CLAUDE.md 是全仓第 2 高频被改文件。难得的是它没被 AI 写崩——靠模块体积「棘轮」测试、自定义 lint、22 篇 ADR、120 个 VCR cassette 把每处行为钉死。这对所有用 AI 写代码的人都是直接可抄的护栏体系。
  3. 逆向脆弱性反而锻造出竞争壁垒:逆向无文档 API 字节级脆弱(fix 占 commit 的 34%),作者把脆弱性转化为「快速修复响应速度」——夜跑真 API 漂移检测 + RPC ID 变更定义为 PATCH 级快速发版(5 个月发了 16 个版本)。

项目展示

notebooklm-py logo 项目品牌图。

终端实操 Demo(CLI 形态):asciinema 录屏 | 增长曲线见 Star History(近一周爆发型增长,已上 Trendshift 榜)。

项目画像

维度数据
GitHubhttps://github.com/teng-lin/notebooklm-py
Star / Fork16,085 / 2,188
代码规模真实核心 约 6 万行 Python(src/notebooklm,210 文件,高度模块化)+ 18 万行测试 Python(3× 业务)+ 24.4 万行 VCR cassette YAML(测试录制,非代码);标称「45 万行」是把测试资产算进去的假象
项目年龄5 个月(2026-01-07 创建)
开发阶段密集开发(近 30 天 881 commit,AI 结对编程冲刺)
贡献模式单核心主导(Teng Lin 占 89.5% commits,27 贡献者,含 Claude 署名 64 commit)
热度定位大众热门(爆发型,近一周采样 185 星集中在 ~3 天,上 Trendshift 榜)
质量评级代码[优] 文档[优·22 篇 ADR] 测试[优·90% 覆盖闸] CI[优·三平台×5 Python 版本]

作者视角:为什么存在这个项目

创始人/作者背景

作者 Teng Lin(@teng-lin)是 XtalPi(晶泰科技,AI 制药独角兽)的 SWE/PM/BD,定位纽约,GitHub 15 年老号但公开作品少——长期低调实战派,近期 all-in agentic AI 赛道。他此前做过 agent-fetch(283⭐,给 agent 用的抓取工具),方向一脉相承:都是「给 agentic AI 补一块它够不到的能力」。可信度高:连续产出、方向一致、无刷量痕迹。

问题判断

NotebookLM 的痛点是「能力强但封闭」——高质量多模态生成(播客、视频、思维导图、测验)锁在网页 UI 里,没有官方 API,很多能力网页端根本不暴露。作者的关键判断是:与其重建一个更弱的开源替代,不如逆向官方本体 + 复用其生成质量。二次发现更妙——「网页 UI 自己都不暴露的能力,逆向反而能解锁」,这把项目从「API 补全」升级为「能力超集」。

解法哲学

  • 三形态 × 一份能力:同一套逆向能力同时以 Python API / CLI / Agent Skill 交付,而非三套实现。架构上严格分层:CLI 是 public client 的「纯 adapter」(不构建 raw RPC 负载),Skill 把 CLI 命令编排进 SKILL.md。
  • 用测试和 ADR 把逆向 API 钉死:22 篇 ADR + 39 个 guardrail 元测试 + 120 个 VCR cassette,把每个设计决策和协议形状固化,对抗「Google 改接口」与「AI 量产失控」。
  • 明确不做什么:声明「best for prototypes/research/personal projects」,不承诺 SLA;RPC ID 变更定义为 PATCH 级(「从我们视角是 bug fix」);下游依赖加 upper bound 防破坏性升级。
  • 押注 Agent Skill 生态:SKILL.md 放仓库根,支持 npx skills add 与 notebooklm skill install,卡位 agent skill 分发。

战略意图

个人爆款 + Agent Skill 分发卡位的组合拳:先用「唯一逆向官方本体」拿到 star 和 PyPI 用户,再用根 SKILL.md 把自己嵌入 Claude Code/Codex/OpenClaw 的 skill 生态,成为「NotebookLM 自动化」这个意图的默认入口。高频 AI 结对编程保证迭代速度跟得上 Google 接口漂移。

核心价值提炼

创新之处

  1. 逆向 API 的「企业级稳定性工程」整套打法(新颖 4 / 实用 5 / 可迁移 5):把无文档、字节级脆弱的逆向协议,用六条 ADR 钉死——单源退避数学(纯函数 + rng 注入得确定性测试)、跨两层 auth 刷新的单消费预算(一次逻辑 RPC 至多刷新一次)、五策略幂等分类法(把「重试是否安全」做成 RPC 属性而非调用点属性)、严格解码(单一 safe_index,协议漂移立刻抛 typed 错误)、loop-affinity 契约(跨 loop 复用响亮早失败)、顺序敏感的中间件链。
  2. 三形态 × 一份能力的统一交付架构(新颖 4 / 实用 5 / 可迁移 4):靠「CLI 是 client 纯 adapter + Skill 编排 CLI」实现零重复,并用静态导入测试(test_cli_boundary.py)守住「CLI 只能 import 公共面」的边界。
  3. VCR cassette 离线确定性测试 + shape-only 匹配器(新颖 5 / 实用 5 / 可迁移 4):120 个 cassette 把无文档 API 的真实响应录成离线回放资产;自定义匹配器只比 RPC 种类和嵌套形状、把 UUID/volatile key/leaf 值归一化,使 cassette 能跨「不同 notebook 重录」存活;CI 夜跑用真 API 录制检测漂移。
  4. 模块体积棘轮测试对抗 AI 膨胀(新颖 5 / 实用 4 / 可迁移 5):test_module_size_ratchet.py 把诊断脚本变成「棘轮」——>900 LOC 新模块直接 fail,allowlist 里的胖模块钉在实测 LOC、只能变小不能变大,缩小后还会 fail 提示「收紧天花板」,并带自检测试防 lint 退化成 no-op。这是高频 AI 结对编程仓库的代码量失控解药。
  5. cassette 防泄露三层守卫(新颖 5 / 实用 4 / 可迁移 3):AST 检测断言里 pin 了 server 返回值的脆弱耦合 + 子进程跑 strict 清洁检查 + 录制时名锚定双 pass 擦洗,防止录制真实 HTTP 时泄露凭据。
  6. 错误-返回契约一统(新颖 4 / 实用 5 / 可迁移 5):把「not found」曾经的 8 种编码方式统一成「资源缺失=异常、in-flight 缺失=typed lifecycle status」,v0.8.0 把 get() 全翻成 raise、get_or_none() 走 None 路径,静态 + 行为双 gate 守护。

可复用的模式与技巧

  1. 纯函数 + rng 注入的退避算法:退避曲线抽成无 I/O 纯函数,sleep 留给调用方,随机源参数化获得确定性测试。
  2. 单消费预算 token 跨层去重:用一个 consume() 只返回一次 True 的 token,把「至多一次」约束穿过多个独立失败层。
  3. 策略注册表把横切决策从调用点提到声明点:retry 安全性/幂等性作为对象属性集中声明,executor 查表,审计测试强制每条带理由。
  4. 棘轮元测试(ratchet lint):把「只能变好不能变坏」的指标写成会 fail 的 pytest,并带自检防退化为 no-op。
  5. shape-only / volatile-key-strip 的录制回放匹配器:cassette 匹配只比结构骨架,使录制资产跨重录会话存活。
  6. CLI/library 边界用静态导入测试守护:CLI 只能 import 公共面,靠 AST 测试把「薄 adapter」契约固化。
  7. ADR ↔ guardrail 测试一一对应:每条架构规则既有 ADR 解释又有 pin 测试强制;「有 pin 无 ADR」被显式定义为 smell。

关键设计决策

  • 公共 facade / 私有实现 + 下划线即非支持表面:仅约 14 个无下划线模块是契约面,_ 前缀模块可随意改名删除无 deprecation 周期,用 40KB 的 test_public_surface_manifest.py 钉住整个公共表面——把兼容性负担控制在最小集合。
  • leader/follower 轮询去重:长任务轮询用 (notebook_id, task_id) 为键,第一个 waiter 当 leader 跑实际 poll,followers 经 asyncio.shield 附到共享 future,避免 N 个调用方各发一份轮询。

竞品格局与定位

竞品对比矩阵

维度notebooklm-pyopen-notebookSurfSensepodcastfykhoj
Star16k27.5k14.4k6.3k35k
路线逆向官方本体开源重实现团队向替代单点重实现自托管第二大脑
生成质量Google 专有(无损)取决于自选模型自建自建自建
覆盖能力全功能 + 超集多功能多源接入仅播客知识库助手
交付形态API/CLI/Agent Skill应用应用库产品
风险官方改接口即失效合规低、不脆弱同左同左不适用

差异化护城河

唯一「逆向官方本体 + 三形态交付」的项目,护城河 = 复用 Google 不开源的生成质量 + 解锁网页 UI 都没有的能力 + Agent Skill 生态卡位。竞品全是「绕开本体的重实现」,永远拿不到这份质量。

竞争风险

  1. 单点失效风险极高:Google 改内部 RPC 接口即全盘失效(Issue #1466 字节计数不匹配、#1319 artifact 失败需重试都印证脆弱性)。
  2. ToS / 合规风险:逆向未公开 API,README 已显式免责。
  3. 应对方式即壁垒:作者把脆弱性转化为「快速修复响应速度」——夜跑漂移检测 + PATCH 级快速发版。

生态定位

押注成为「NotebookLM 自动化」意图在 Claude Code/Codex/OpenClaw 等 agent 生态里的默认 skill 入口;个人开发者爆款(16k⭐ + PyPI + DeepWiki + Trendshift)+ skill 分发双轮驱动。

套利机会分析

  • 信息差:16k star + 5 个月爆发名副其实(极高 commit 密度 + 罕见工程纪律),不是占坑空壳。真正的内容价值在两个稀缺角度——①「如何把逆向脚本工程化成有版本契约的正规 SDK」;②「AI 结对编程怎么不写崩」的工程护栏拆解。
  • 技术借鉴:六条逆向稳定性 ADR、VCR cassette 离线测试、模块棘轮测试、ADR↔guardrail 一一对应——这些脱离 NotebookLM 场景,对任何「逆向/无官方 API 客户端」或「高频 AI 开发仓库」都直接可抄。
  • 生态位:填补「驱动 NotebookLM 官方本体的程序化自动化」空白。
  • 趋势判断:踩中 NotebookLM 热度 + Agent Skill 生态升温 + AI 辅助开发三股趋势;最大悬顶之剑是 Google 接口变更,但作者已用「快速修复响应」把它转成竞争壁垒。

风险与不足

  1. 逆向单点依赖:Google 改内部 RPC 即失效,是项目的根本性脆弱点。
  2. 合规灰区:逆向未公开 API,不适合对 ToS 敏感的生产场景。
  3. bus factor 偏高:作者占 89.5% commits,核心高度依赖一人(虽有 AI 辅助)。
  4. 文档/实现易漂移:高频迭代下 SKILL.md 与 CLI 出现过不一致(Issue #1407)。
  5. 依赖偏重:183 个运行依赖 + Playwright/Chromium(浏览器模式),安装体量不轻。

行动建议

  • 如果你要用它:想程序化操控 NotebookLM、复用其播客/视频生成质量、或把它接进 CI/CD 与 AI agent——这是唯一选择。但要接受「Google 随时可能改接口」的脆弱性,仅用于原型/研究/个人项目,别压生产 SLA。若你要的是自托管可控、不脆弱,open-notebook 等重实现更合适。
  • 如果你要学它(最高价值路径):重点读 src/notebooklm/_backoff.py(纯函数退避)、_auth_refresh_retry.py(跨层刷新预算)、_idempotency.py + docs/adr/0005(五策略幂等)、tests/vcr_config.py(shape-only 匹配器)、tests/_guardrails/test_module_size_ratchet.py(棘轮)、docs/architecture.md + docs/adr/(22 篇 ADR)。这套「逆向稳定性 + AI 护栏」工程是脱离场景的通用财富。
  • 如果你要 fork 它:方向不是逆向本身(脆弱),而是把它的工程护栏体系(棘轮测试、ADR↔guardrail、VCR 离线测试)搬到你自己的高频 AI 开发项目里。

知识入口

资源链接
DeepWiki已收录
Zread.ai未确认(直连 HTTP 403)
PyPInotebooklm-py v0.7.1(Python 3.10–3.14)
在线 Demoasciinema 终端录屏(无在线 playground,需本地运行)
关联论文无(工程项目,非研究)

相关报告