惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
LangChain Blog
人人都是产品经理
人人都是产品经理
D
DataBreaches.Net
WordPress大学
WordPress大学
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
小众软件
小众软件
The Register - Security
The Register - Security
C
Check Point Blog
Engineering at Meta
Engineering at Meta
The GitHub Blog
The GitHub Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
爱范儿
爱范儿
有赞技术团队
有赞技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
Vercel News
Vercel News
Google DeepMind News
Google DeepMind News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
P
Proofpoint News Feed
IT之家
IT之家
Martin Fowler
Martin Fowler
云风的 BLOG
云风的 BLOG
V
Visual Studio Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
V
V2EX
MyScale Blog
MyScale Blog
Y
Y Combinator Blog
博客园 - 【当耐特】
Stack Overflow Blog
Stack Overflow Blog
Microsoft Security Blog
Microsoft Security Blog
S
Schneier on Security
G
Google Developers Blog
Hugging Face - Blog
Hugging Face - Blog
F
Full Disclosure
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - Franky
T
The Exploit Database - CXSecurity.com
罗磊的独立博客
Spread Privacy
Spread Privacy
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Cloudflare Blog
Latest news
Latest news
GbyAI
GbyAI
P
Privacy International News Feed
Last Week in AI
Last Week in AI
T
The Blog of Author Tim Ferriss
H
Hacker News: Front Page
K
Kaspersky official blog

掘金

Win 安装Claude Code FastAPI 的 CORSMiddleware 跨域中间件 Java 自研 ReAct Agent 半年后,我用 LangGraph 验证了这些设计取舍 🚀AI编程工作流终极形态:GitNexus!零Token消耗实现代码知识图谱化!让Claude Code和Codex拥有上帝视角彻底告别盲目改代码,复杂项目重 LeetCode 72. 编辑距离:动态规划经典题解 被The Graph的GraphQL查询坑了三天,我用一个真实DeFi项目把链上数据索引彻底搞懂了 (AI) 编写简单 AI 助手 (ds-agent) 别再让 pnpm 跟着 nvm 跑了!独立安装终极指南 Claude Code 为什么这么顺?Anthropic 最新复盘:真正撑住它的不是模型,而是缓存 从 /simplify 指令深挖 Claude Code 多 Agent 协同机制 Function-Calling与工具使用 新手上路(六):Claude code装上ECC全家桶:38 个子代理、156 个技能、生产级 Hooks 与 Rules 体系 我在 Claude、Kimi、opencode 三个 AI 之间搭了一条自动协作管道 【技能篇】OpenClaw Skill 详解:给 AI 装上"专业外挂" wagmi v2 多链钱包切换:一个 Uniswap 仿盘项目让我踩了三天坑 两周浅学 RAG 我把 Python re 模块比喻成摸金手套 新手上路(三):Claude Code Skills 装了一堆没用?20+ 个 Skill 横向对比 + 三套组合方案,按需抄 K2.6、DeepSeek V4、GPT-5.5 都来了,组合拳打起来 Claude Code 进阶之路:从记忆系统到子代理编排 [java] 编译之后的记录类(Record Classes)长什么样子(上) 国产大模型能力大比拼,社区有话说 我研读了 500 个 Spring Boot 生产级代码库,90% 都犯了这 7 个致命错误 JAVA重点难点 转发-中央网信办部署开展“清朗·整治AI应用乱象”专项行动 合同同步逻辑 【合并已排序数组的三种实现策略,哪一种更可取?】 30天减20斤挑战:少一斤发100红包(2) 我竟然被JavaScript的隐式类型转换坑了三天! 二十五.Electron 初体验与进阶 本地到生产,解决 AI 全栈最后一公里——构建&部署&运维 程序员创业半年:顺的事、不顺的事,和我一直没想清楚的事 UI组件库elementplus 像使用 Redis 一样操作 LocalStorage 向量检索的流程是怎样的?Embedding 和 Rerank 各自的作用? LangChain DeepAgents 速通指南(七)—— DeepAgents使用Agent Skill 为什么越来越多的大厂抛弃MCP,转向CLI? 【节点】[SquareRoot节点]原理解析与实际应用 juejin.cn juejin.cn 从 “存得下” 到 “算得快”:工业物联网需要新一代时序数据平台越来越多工业用户开始意识到一个问题:**数据是存下来了, - 掘金 放弃 Claude 订阅?我用 8 年前的服务器,强跑 Google 最强开源模型 Gemma 4 真实测评! Python开发者狂喜!200+课时FastAPI全栈实战合集,10大模块持续更新中🔥 从 Claw-Code 看 AI 驱动的大型项目开发:2 人 + 10 个自治 Agent 如何产出 48K 行 Rust 代码 秒级创建实例,火山引擎 Milvus Serverless 让 AI Agent 开发更快更省火山引擎MilvusSer MediaPlayer 播放器架构:NuPlayer 的 Source/Decoder/Renderer 三驾马车 juejin.cn juejin.cn juejin.cn juejin.cn juejin.cn juejin.cn OrbStack:一键将你的 Mac 变为本地服务器 NginxPulse:Nginx日志监控革命!实时洞察Web流量与安全态势的智能利器引言:当Nginx日志成为运维的“数 - 掘金 juejin.cn 大V说’AI替代不了你’,但现实是——用AI的人正在替代你2026年是AI落地的元年,自从Claude Code爆火之后 - 掘金 juejin.cn 你以为是技术问题,其实是流程问题:工程效率的真相引言 在软件工程领域,效率问题始终是团队管理者和工程师们关注的焦点。当项 - 掘金 大模型工程三驾马车:Prompt Engineering、Context Engineering 与 Harness Engineering 深度解析 juejin.cn 4.响应式系统基础:从发布订阅模式的角度理解 Vue3 的数据响应式原理本文从发布订阅模式的核心思想出发,深入剖析了 V - 掘金 慌了!Android 17 取消图标文字,你的 App 可能要找不到了用户终于可以隐藏桌面图标下面的文字了。 这个功能在 juejin.cn 我用 AI 搓了一个"比谁更持久"的微信小游戏,AI实现只用了一天,微信审核却用了一个月!!!起因:一个沙雕想法的诞生 - 掘金 juejin.cn 第12章 工具(Tools)与函数调用(LangChain实战)在前几章中,我们搭建的RAG系统、对话链,核心能力局限 - 掘金 juejin.cn CmComposeUI —— 基于 Kotlin Multiplatform Compose 的 UI 组件库 Android 开发的 AI coding 与 AI debugging在目前整个行业都在大规模使用 AI coding juejin.cn juejin.cn juejin.cn juejin.cn 一文搞懂Harness Engineering与Meta-Harness 越用越强不是广告语:拆解 Hermes Agent 的三层学习机制 P2G-Python字符串方法完全指南-split、join、strip、replace的Python编程利器 AI 周刊【2026.04.06-04.12】:Anthropic 藏起最强模型、AI 社会矛盾激化、"欢乐马"登顶 从 AI Skills 学实战技能(六):让 AI 帮你总结网页、PDF、视频 关于10年工作经验的程序员对OpenClaw的实战经验分享以及看法 详解 karpathy 的 microgpt:实现一个浏览器运行的 gpt 不用 Tailscale:3 步把 Mac mini 通过 FRP 暴露到公网(稳定开机自启) P2B-Python可迭代对象完全指南-从列表到生成器的Python编程利器 手把手带你部署本地模型,让你Token自由(小白专属) juejin.cn 10分钟掌握 JSON-RPC 协议,面试加分、设计不踩坑 ReAct:让大模型学会边想边做 聊聊AI的发展史,AI的爆发并不是偶然 Python的列表推导式里藏了个坑,差点让我加班到凌晨 重排、重绘与合成——浏览器渲染性能的底层逻辑 podman与docker的区别和生产环境最佳实践 juejin.cn ConcurrentHashMap线程安全实现原理全解析 juejin.cn juejin.cn juejin.cn juejin.cn juejin.cn juejin.cn OpenAI Codex深度解析:终端里的AI代码特工,一个指令重构整个项目 UE5.6 Cesium 插件编译踩坑记录(UE 5.6 + MSVC 14.38 + CMake 3.31)
一天一个开源项目(第113篇):notebooklm-py - 把 Google NotebookLM 变成可编程 API,还能接入 Claude Code
冬奇Lab · 2026-05-27 · via 掘金

引言

"AI needs to know where it learned something from."

这是"一天一个开源项目"系列的第113篇文章。今天带你了解的项目是 notebooklm-py

Google NotebookLM 是目前最好的"个人知识库 + AI 问答"工具之一——你上传文档,它帮你提炼、总结、生成播客、制作幻灯片,并且每个回答都有来源引用。但它有一个巨大的局限:没有官方 API,一切只能在网页上手动操作。

notebooklm-py 解决了这个问题。它逆向工程了 NotebookLM 的全部未公开 API,让你用 Python 代码或 CLI 完整控制 NotebookLM 的每一个功能——包括网页界面没有暴露的功能。更进一步,它还提供了一个 Claude Code Skill,让 Claude 能在对话中实时查询你的 NotebookLM 知识库,把 Gemini 的知识基础能力和 Claude 的推理能力结合起来。

9,500+ Stars,MIT 开源。

你将学到什么

  • notebooklm-py 的三种使用方式(Python API / CLI / Agent Skill)
  • 它能做哪些 NotebookLM 网页界面做不到的事
  • Claude Code Skill 集成如何实现"Claude + NotebookLM"的跨厂商 AI 协作
  • 为什么"有来源引用的回答"是解决 AI 幻觉最直接的工程手段
  • 逆向工程未公开 API 的代价:能力与脆弱性的权衡

前置知识

  • 熟悉 Python 基础和 pip 包管理
  • 用过 Google NotebookLM(了解它的核心功能)
  • 有 Claude Code 使用经验(如果你关注 Skill 集成部分)

项目背景

项目简介

notebooklm-py 是由开发者 Teng Lin 构建的非官方 Python 客户端,通过逆向工程 Google NotebookLM 的内部 API,提供完整的程序化访问能力。它不是爬虫,而是直接调用 NotebookLM 客户端与 Google 服务器通信时使用的同一批 HTTP 接口。

项目包含两个紧密相关的组件:

notebooklm-py
  ├── Python 库 / CLI    ← 完整的 NotebookLM API 封装
  └── Claude Code Skill ← 让 Claude 在会话中实时查询 NotebookLM

这两个组件解决了不同层次的问题:Python 库解决的是"如何自动化 NotebookLM 操作";Claude Code Skill 解决的是"如何让 AI 助手的回答基于你的真实文档而不是训练数据"。

作者介绍

  • 主要作者:Teng Lin(GitHub: @teng-lin
  • 项目性质:非官方、社区驱动,与 Google 无官方关联
  • 发布平台:GitHub + PyPI(pip install notebooklm-py
  • 当前版本:v0.5.0(Beta 状态)

项目数据

  • ⭐ GitHub Stars: 9,500+
  • 📦 PyPI: notebooklm-py
  • 📄 License: MIT
  • 🐍 Python: ≥ 3.10
  • 🖥️ 平台: macOS, Linux, Windows
  • ⚠️ 状态: Beta(基于未公开 API,可能随 Google 变更而失效)
  • 🌐 仓库: teng-lin/notebooklm-py

主要功能

核心作用

notebooklm-py 的功能覆盖了 NotebookLM 的完整能力图谱:

Notebook 管理
  ├── 创建、列出、重命名、删除、分享

来源导入
  ├── URL(网页)
  ├── YouTube 视频
  ├── PDF 文件
  ├── Google Drive 文档
  └── 粘贴文本

知识查询
  ├── 带对话历史的问答(引用来源)
  └── 引用固定(pin citations)

内容生成(Studio 功能)
  ├── 音频播客(Audio Overview)
  ├── 视频概述
  ├── 幻灯片(PPTX 格式)
  ├── 测验(Quiz)
  ├── 闪卡(Flashcards)
  ├── 脑图(JSON 格式)
  ├── 报告
  └── 信息图

研究代理
  ├── 网络研究(自动导入搜索结果)
  └── Drive 研究(自动导入云盘文档)

三种使用方式

方式 1:Python API(异步,适合自动化流水线)

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.save("summary.mp3")
        
        # 生成幻灯片
        slides = await notebook.generate_slides()
        slides.save("presentation.pptx")

asyncio.run(main())

方式 2:CLI(Shell 脚本和 CI/CD)

# 安装
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)

这是整个项目最值得重点介绍的部分。

# 安装 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 如何工作,需要理解它的两层架构:

Layer 1:浏览器自动化(Browser Automation)

NotebookLM 没有公开 API,所有操作都需要通过 Google 账号认证。notebooklm-py 使用浏览器自动化(Playwright)来维持认证状态,捕获认证令牌后再直接发起 HTTP 请求。

这意味着:

  • ✅ 功能完整(与网页端完全对等)
  • ✅ 本地运行(所有数据留在你的设备上)
  • ⚠️ 需要本地 Claude Code(云端/沙箱环境无法使用浏览器)
  • ⚠️ 依赖 Google 内部 API,随时可能失效

Layer 2:Skill 集成层

Claude Code 对话
    ↓ 判断需要知识库支持
Skill 触发
    ↓ 构造 NotebookLM 查询
notebooklm-py Python 库
    ↓ HTTP 请求到 Google 服务器
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 网页界面做不到的事:

# 批量创建多个 Notebook(网页需要一个个手动点)
notebooks = await asyncio.gather(*[
    nlm.create_notebook(f"研究主题 {i}")
    for i in range(10)
])

# 程序化引用固定(网页界面的隐藏功能)
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/")  # 只添加新文件,不重复导入

使用风险与权衡

这个项目最重要的技术限制值得正视:

风险影响缓解方式
基于未公开 APIGoogle 随时可能改变接口,导致工具失效关注项目更新,有 fallback 方案
浏览器自动化需要本地环境,无法在 CI/CD 中使用完整功能CLI 模式部分功能可在无头环境运行
非官方客户端违反 Google ToS(服务条款)风险作者标注为"个人使用和原型验证"
Beta 状态API 接口可能在版本间变化锁定版本号,生产环境谨慎使用

作者在文档中明确说明:这个工具适合原型验证和个人项目,不建议用于关键生产系统


项目地址与资源

官方资源

安装快速参考

# 基础安装
pip install notebooklm-py

# 含浏览器自动化支持(Skill 集成必须)
pip install "notebooklm-py[browser]"

# Claude Code Skill 安装
notebooklm skill install
notebooklm auth login   # 首次认证

适用人群

  • 研究人员:自动化文献综述工作流,批量导入论文并查询知识库
  • 开发团队:把 API 规范、架构文档注入 Claude Code,获得有来源依据的代码建议
  • 内容创作者:批量从文档生成播客、幻灯片、思维导图
  • AI 工具构建者:研究跨厂商 AI 能力组合(Claude + NotebookLM/Gemini)

总结与展望

核心要点回顾

  1. 完整 API 封装:Notebook CRUD、多类型来源导入、RAG 查询、Studio 内容生成(音频/视频/幻灯片/闪卡)全覆盖
  2. 三种使用方式:Python 异步 API(流水线)、CLI(脚本/CI)、Claude Code Skill(AI 会话集成)
  3. 跨厂商 AI 协作:Claude 的推理 + NotebookLM/Gemini 的知识检索,形成互补
  4. 反幻觉工程实践:强制每条断言都来自可追溯来源,而不是依赖模型的训练数据
  5. 超越网页界面:批量操作、程序化引用固定、研究代理自动导入——这些能力只能通过 API 实现

一句话评价

notebooklm-py 做了 Google 不愿意做的事——把 NotebookLM 变成一个可编程的知识引擎;而它的 Claude Code Skill 则做了一件更有意思的事:让两个不同厂商的 AI 系统协作,各自做自己最擅长的部分。


欢迎来我的个人主页找到更多有用的知识和有趣的产品