notebooklm-py:基于 Python 的 Google NotebookLM 非官方 API 及工具项目

Unofficial Python API and agentic skill for Google NotebookLM. Full programmatic access to NotebookLM's features—including capabilities the web UI doesn't expose—via Python, CLI, and AI agents like Claude Code, Codex, and OpenClaw.

分支33Tags18
文件最后提交记录最后更新时间
3 天前
3 天前
12 小时前
4 小时前
18 天前
1 天前
4 小时前
4 小时前
3 天前
5 个月前
24 天前
17 天前
18 天前
2 天前
11 天前
18 天前
5 个月前
1 天前
20 天前
11 天前
5 个月前
3 天前
1 天前

notebooklm-py

notebooklm-py logo

全面的 NotebookLM 技能与非官方 Python API。 通过 Python、命令行界面(CLI)以及 Claude Code、Codex、OpenClaw 等 AI 智能体,提供对 NotebookLM 功能的完整程序化访问,包括网页用户界面未公开的功能。

PyPI version Python Version License: MIT Tests

teng-lin%2Fnotebooklm-py | Trendshift

源码与开发https://github.com/teng-lin/notebooklm-py

⚠️ 非官方库 - 风险自负

本库使用未公开的 Google API,这些 API 可能会在毫无通知的情况下发生变更。

  • 与 Google 无关联 - 这是一个社区项目
  • API 可能失效 - Google 可随时更改内部端点
  • 存在速率限制 - 大量使用可能会受到限流

最适合用于原型开发、研究和个人项目。调试技巧请参见故障排除

你可以构建什么

🤖 AI 智能体工具 - 将 NotebookLM 集成到 Claude Code、Codex 和其他 LLM 智能体中。提供用于 GitHub 和 npx skills add 发现的根级 NotebookLM 技能,支持 Claude Code 和 .agents 技能目录的本地 notebooklm skill install,以及 AGENTS.md 中提供的仓库级 Codex 指南。

📚 研究自动化 - 批量导入来源(URL、PDF、YouTube、Google Drive),通过自动导入运行网络/云端硬盘研究查询,并以编程方式提取见解。构建可重复的研究流程。

🎙️ 内容生成 - 生成音频概述(播客)、视频、幻灯片、测验、抽认卡、信息图表、数据表格、思维导图和学习指南。完全控制格式、样式和输出。

📥 下载与导出 - 将所有生成的工件本地下载(MP3、MP4、PDF、PNG、CSV、JSON、Markdown)。导出到 Google 文档/表格。提供网页界面不具备的功能:批量下载、多种格式的测验/抽认卡导出、思维导图 JSON 提取。

使用场景与实用方案

NotebookLM 是一个基于事实的引擎:Gemini 负责繁重的阅读工作,并根据您的来源提供带有引用的答案。最佳实践是让它执行高成本的分析,而您的智能体(Claude Code、Codex 等)负责协调并处理最后的收尾工作。人们基于此库构建的实用方案包括:

  • 🪙 零 token 研究卸载 — 将 30 份文档放入一个笔记本,让 Gemini 进行繁重的分析,您的智能体只需在最终润色上花费 token。智能体仅负责协调(createsource addask);推理过程在服务器端进行。
  • 🧠 网络研究 → 专家智能体 — 运行深度研究source add-research)将网络内容扫描成带有来源的报告,然后将该报告提炼为可重用的 Claude 技能 — 无需手动整理来源即可获得一个打包好的领域专家。
  • 💾 跨会话持久记忆 — 保留一个“主脑”笔记本;在收尾步骤中,将每个会话的决策和修正作为笔记追加(note create / ask --save-as-note),并在您的 CLAUDE.md 中添加一行代码,以便在下一个会话开始时查询(ask)。存储和回忆功能依托 Google 的基础设施。
  • 🕸️ Obsidian / 知识图谱同步 — 从您的知识库根目录运行 CLI,使下载的工件(报告、思维导图 JSON、文字记录)作为文件存储在您的知识图谱中;基于此库构建的社区技能甚至能将 NotebookLM 的引用标记解析为 Obsidian [[维基链接]]。与播客概述搭配使用,可获得笔记的音频摘要。
  • 🔁 多格式内容再利用 — 一个来源集,多种格式:generate audio(播客)、generate videogenerate slide-deck,以及 generate report 博客草稿、generate quizgenerate flashcards — 将单个笔记本扩展到多个渠道。
  • 📞 基于事实的知识库(RAG) — 加载产品文档、常见问题解答、RFC 和过往工单,然后使用 ask --json 获取基于来源、带有引用的答案,用于支持、值班或内部问答。
  • 🧩 编码智能体的事实记忆 — 通过 MCP 服务器(或简单的 ask)公开包含您内部文档/RFC/架构的笔记本,使智能体能够根据您的代码并带有引用进行回答,而非给出听起来合理的猜测 — 这是一种无需搭建自己的向量数据库和嵌入管道的零基础设施替代方案。
  • 🚨 事件运行手册生成器 — 收到警报时,创建一个包含相关文档的笔记本,提出有针对性的诊断问题,并生成简报文档报告(generate report --format briefing-doc)作为自动化运行手册。
  • 📚 课程/学习集构建器 — 抓取教学大纲或开发者路线图,为每个主题创建一个笔记本(有意控制节奏以避开速率限制),并为每个主题批量生成播客、测验和抽认卡。
  • 📰 定时音频简报 — 将 auth refresh --quiet(通过 cron/launchd/systemd)与 generate audio 配合使用,按计划将新鲜的个性化简报发布到播客 feed。

这些方案均组合了普通的库原语 — 请参阅 CLI 参考Python API。智能体端的衔接(技能、调度、知识库布局)存在于您自己的设置中,而非此软件包内。

实际应用案例: "Claude Code + NotebookLM = 作弊码" · "…+ Obsidian = 上帝模式" · 完全在终端中驱动的无浏览器 YouTube→笔记本→带引用答案流水线 · 将繁重文档分析卸载到 NotebookLM 以避免 Claude Code 浪费 token 的四工作流指南(零 token 研究、网络研究智能体、跨会话记忆、Obsidian“第二大脑”) · 将笔记本转变为编码智能体在编写代码前参考的基于来源的“项目大脑”

使用方式

方法 适用场景
Python API 应用集成、异步工作流、自定义管道
CLI Shell 脚本、快速任务、CI/CD 自动化
MCP 服务器 向 Claude Desktop/Code、Cursor、Windsurf 及其他 MCP 客户端公开 NotebookLM 工具
REST 服务器 通过受保护的 HTTP 路由进行本地自动化,无需为每次调用生成 CLI 进程
智能体集成 Claude Code、Codex、LLM 智能体、自然语言自动化

功能特性

全面覆盖 NotebookLM

类别 功能
笔记本 创建、列出、重命名、删除
来源 URL、YouTube、文件(PDF、文本、Markdown、Word、EPUB、音频、视频、图像)、Google Drive、粘贴文本;刷新、获取指南/全文
聊天 提问、对话历史、自定义角色
笔记 创建、列出、重命名、删除、保存聊天答案、保存对话历史
来源标签 AI 生成或手动主题标签;添加/移除来源成员;按标签筛选来源
研究 网络和云端硬盘研究智能体(快速/深度模式),支持自动导入
分享 公开/私有链接、用户权限(查看者/编辑者)、查看级别控制

内容生成(所有工件类型)

类型 选项 下载格式
音频概述 4 种格式(深度解析、简要概述、评论、辩论),3 种长度,50 多种语言 MP3/MP4
视频概述 3 种格式(解说、简要概述、电影式),9 种视觉风格,外加专用 cinematic-video CLI 别名 MP4
幻灯片 详细格式或演示者格式,可调整长度;单张幻灯片修订 PDF、PPTX
信息图 3 种方向,3 种详细程度 PNG
测验 可配置题目数量和难度 JSON、Markdown、HTML
抽认卡 可配置数量和难度 JSON、Markdown、HTML
报告 简报文档、学习指南、博客文章或自定义提示 Markdown
数据表 通过自然语言自定义结构 CSV
思维导图 层级节点树 — 两种类型:笔记支持的 JSON 或较新的交互式工作室地图(--kind / MindMapKind JSON

超越网页界面

以下功能可通过 API/CLI 使用,但未在 NotebookLM 的网页界面中公开:

  • 批量下载 - 一次性下载所有特定类型的成果物
  • 测验/闪卡导出 - 获取结构化 JSON、Markdown 或 HTML 格式(网页界面仅显示交互式视图)
  • 思维导图数据提取 - 导出层级化 JSON 用于可视化工具
  • 数据表格 CSV 导出 - 将结构化表格下载为电子表格
  • 幻灯片导出为 PPTX - 下载可编辑的 PowerPoint 文件(网页界面仅提供 PDF)
  • 幻灯片修订 - 使用自然语言提示修改单个幻灯片
  • 报告模板自定义 - 向内置格式模板追加额外指令
  • 聊天记录保存到笔记 - 将问答答案或对话历史保存为笔记本笔记
  • 源文件全文访问 - 检索任何源文件的索引文本内容
  • 程序化共享 - 无需界面即可管理权限
  • 多账户配置 - 无需重新验证即可切换 Google 账户
  • 浏览器 Cookie 导入 - 重用现有浏览器会话的 Cookie,无需运行 Playwright

安装

完整的安装指南(包括六种角色:代理、终端用户、库用户、无头模式用户、贡献者、高级用户)、可选附加组件矩阵以及平台说明,请参见 docs/installation.md

最快入门(CLI 用户和 AI 代理)—— 使用 uv tool(推荐)或 pipx 安装 CLI:

uv tool install "notebooklm-py[browser]"   # or: pipx install "notebooklm-py[browser]"
notebooklm login                           # first run auto-downloads Chromium (~170 MB), then Google sign-in
notebooklm auth check --test --json        # verify: expect "status": "ok"

为什么选择 uv tool / pipx 它们会将 CLI 安装到独立的环境中,并将 notebooklm 添加到您的 PATH 中——不会与其他工具产生依赖冲突,只需一行命令即可升级(uv tool upgrade notebooklm-py)或卸载,而且重要的是,它们在现代 macOS(Homebrew Python)和 Debian/Ubuntu 系统上均可正常工作,而在这些系统中,使用 pip install 进行全局安装会因 error: externally-managed-environment 而被阻止(PEP 668)。还没有安装 uv?可以运行 curl -LsSf https://astral.sh/uv/install.sh | sh(或 brew install uv / winget install astral-sh.uv)。

更倾向于使用普通 pip 在虚拟环境中,它的工作方式完全相同(在 Windows 系统上也可直接使用,因为 Windows 中的 Python 不受外部管理):

python3 -m venv .venv && source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install "notebooklm-py[browser]"

作为库(嵌入到您的应用中——无需 Playwright,无需 Chromium):

uv add notebooklm-py                    # or, inside a virtualenv: pip install notebooklm-py

如果在 Linux 系统上运行 playwright install chromium 时出现 TypeError: onExit is not a function 错误,请参阅 Linux 解决方法贡献者:请查看 CONTRIBUTING.md

快速开始


16 分钟的操作过程压缩至 30 秒

命令行界面

# 1. Authenticate (opens browser)
notebooklm login
# Or use Microsoft Edge (for orgs that require Edge for SSO)
# notebooklm login --browser msedge
# Or reuse cookies from an already-logged-in browser session
# notebooklm login --browser-cookies chrome
# notebooklm login --browser-cookies 'chrome::Profile 1'  # one Chromium profile
# (combine with --profile to populate a specific profile;
#  use --account / --all-accounts after auth inspect when several
#  Google accounts are signed in)

# 2. Create a notebook and add sources
notebooklm create "My Research"
notebooklm use <notebook_id>
notebooklm source add "https://en.wikipedia.org/wiki/Artificial_intelligence"
notebooklm source add "./paper.pdf"

# 3. Chat with your sources
notebooklm ask "What are the key themes?"
notebooklm ask --prompt-file ./long_question.txt  # Read question from file

# 4. Generate content (use --prompt-file for long prompts)
notebooklm generate audio "make it engaging" --wait
notebooklm generate video --style whiteboard --wait
notebooklm generate cinematic-video "documentary-style summary" --wait
notebooklm generate quiz --difficulty hard
notebooklm generate flashcards --quantity more
notebooklm generate slide-deck
notebooklm generate infographic --orientation portrait
notebooklm generate mind-map                       # interactive studio map (default); --kind note-backed for the JSON tree
notebooklm generate data-table "compare key concepts"

# 5. Download artifacts
notebooklm download audio ./podcast.mp3
notebooklm download video ./overview.mp4
notebooklm download cinematic-video ./documentary.mp4
notebooklm download quiz --format markdown ./quiz.md
notebooklm download flashcards --format json ./cards.json
notebooklm download slide-deck ./slides.pdf
notebooklm download infographic ./infographic.png
notebooklm download mind-map ./mindmap.json
notebooklm download data-table ./data.csv

其他实用的 CLI 命令:

notebooklm auth check --test         # Diagnose auth/cookie issues
notebooklm auth refresh --quiet      # One-shot cookie keepalive (for cron / launchd / systemd)
notebooklm auth refresh --browser-cookies chrome  # Re-extract and repair account routing
notebooklm auth inspect --browser 'chrome::Profile 1'  # Preview one Chromium profile
notebooklm agent show codex          # Print bundled Codex instructions
notebooklm agent show claude         # Print bundled Claude Code skill template
notebooklm language list             # List supported output languages
notebooklm metadata --json           # Export notebook metadata and sources
notebooklm share status              # Inspect sharing state
notebooklm source add-research "AI"  # Start web research and import sources
notebooklm skill status              # Check local agent skill installation
notebooklm profile list              # List all Google account profiles
notebooklm profile switch work       # Switch active account profile

当文本过长而无法在 shell 命令行中输入时,可在 ask、基于提示词的 generate 命令以及 source add-research 中使用 --prompt-file PATH。此参数会从文件读取提示词/查询文本,与 source add ./file.pdf 不同,后者仍会将该文件作为 NotebookLM 源文件上传。

Python API

import asyncio
from notebooklm import NotebookLMClient, MindMapKind

async def main():
    async with NotebookLMClient.from_storage() as client:
        # Create notebook and add sources
        nb = await client.notebooks.create("Research")
        await client.sources.add_url(nb.id, "https://example.com", wait=True)

        # Chat with your sources
        result = await client.chat.ask(nb.id, "Summarize this")
        print(result.answer)

        # Generate content (podcast, video, quiz, etc.)
        status = await client.artifacts.generate_audio(nb.id, instructions="make it fun")
        await client.artifacts.wait_for_completion(nb.id, status.task_id)
        await client.artifacts.download_audio(nb.id, "podcast.mp3")

        # Generate quiz and download as JSON
        status = await client.artifacts.generate_quiz(nb.id)
        await client.artifacts.wait_for_completion(nb.id, status.task_id)
        await client.artifacts.download_quiz(nb.id, "quiz.json", output_format="json")

        # Generate a mind map via the unified client.mind_maps API (issue #1256) —
        # two kinds: the newer MindMapKind.INTERACTIVE studio map (shown; polled to
        # completion by default) or MindMapKind.NOTE_BACKED JSON. Both export via:
        await client.mind_maps.generate(nb.id, kind=MindMapKind.INTERACTIVE)
        await client.artifacts.download_mind_map(nb.id, "mindmap.json")

asyncio.run(main())

代理设置

选项 1 — 命令行界面安装

notebooklm skill install

将技能安装到 ~/.claude/skills/notebooklm~/.agents/skills/notebooklm

选项 2 — npx 安装(通过开放技能生态系统):

npx skills add teng-lin/notebooklm-py

直接从 GitHub 获取规范的 SKILL.md

文档

面向贡献者

平台支持

平台 状态 说明
macOS ✅ 已测试 主要开发平台
Linux ✅ 已测试 完全支持
Windows ✅ 已测试 在 CI 中测试

Star 历史

Star History Chart

许可证

MIT 许可证。详情参见 LICENSE

项目介绍

Unofficial Python API and agentic skill for Google NotebookLM. Full programmatic access to NotebookLM's features—including capabilities the web UI doesn't expose—via Python, CLI, and AI agents like Claude Code, Codex, and OpenClaw.

定制我的领域
7417.09 K2.33 K访问 GitHub