慣性聚合 高效追蹤和閱讀你感興趣的部落格、新聞、科技資訊
閱讀原文 在慣性聚合中打開

推薦訂閱源

WordPress大学
WordPress大学
M
MIT News - Artificial intelligence
小众软件
小众软件
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Tailwind CSS Blog
T
The Blog of Author Tim Ferriss
Engineering at Meta
Engineering at Meta
Jina AI
Jina AI
Last Week in AI
Last Week in AI
I
InfoQ
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
人人都是产品经理
人人都是产品经理
MongoDB | Blog
MongoDB | Blog
The Cloudflare Blog
月光博客
月光博客
爱范儿
爱范儿
D
Docker
罗磊的独立博客
博客园 - 叶小钗
博客园 - 司徒正美

掘金

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
一天一個開源項目(第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 系統協作,各自做自己最擅長的部分。


歡迎來我的個人主頁找到更多有用的知識和有趣的產品