开源项目

notebooklm-py

notebooklm-py

程序化访问 Google NotebookLM 的 Python 库与 AI Agent 技能,提供 CLI、Python API 以及 Claude Code 等 agent 集成。支持批量导入来源、生成播客/视频/测验等各类内容,并能利用 Web UI 不暴露的功能(如批量下载、Quiz 结构化导出)。亮点是完全可编程,适合构建自动化研究管线或内容生成工作流。非官方库,使用未公开 API,可能随时失效,仅适用于原型和个人项目。

README

notebooklm-py

notebooklm-py 标志

全面的 NotebookLM 技能与非官方 Python API。 通过 Python、CLI 以及 Claude Code、Codex、OpenClaw 等 AI agent,实现对 NotebookLM 功能的完整程序化访问——包括 Web UI 未暴露的能力。

PyPI 版本 Python 版本 许可证: MIT 测试

teng-lin%2Fnotebooklm-py | Trendshift

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

⚠️ 非官方库 - 使用风险自负

本库使用 未文档化的 Google API,这些 API 可能随时变更且不另行通知。

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

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

你可以构建什么

🤖 AI Agent 工具 - 将 NotebookLM 集成到 Claude Code、Codex 等 LLM agent 中。附带了 GitHub 上可发现的根级 NotebookLM 技能(通过 npx skills add 发现),为 Claude Code 和 .agents 技能目录提供了本地 notebooklm skill install 支持,以及仓库级别的 Codex 指南(位于 AGENTS.md)。

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

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

📥 下载与导出 - 将所有生成的内容本地下载(MP3、MP4、PDF、PNG、CSV、JSON、Markdown)。导出到 Google Docs/Sheets。Web UI 未提供的功能:批量下载、多种格式的测验/闪卡导出、思维导图 JSON 提取。

三种使用方式

方式 最佳场景
Python API 应用集成、异步工作流、自定义流水线
CLI Shell 脚本、快速任务、CI/CD 自动化
Agent 集成 Claude Code、Codex、LLM agent、自然语言自动化

功能

完整的 NotebookLM 覆盖

类别 能力
笔记本 创建、列出、重命名、删除
来源 URL、YouTube、文件(PDF、文本、Markdown、Word、EPUB、音频、视频、图片)、Google Drive、粘贴文本;刷新、获取指南/全文
对话 提问、对话历史、自定义角色
研究 网页和 Drive 研究 agent(快速/深度模式)并自动导入
共享 公开/私有链接、用户权限(查看者/编辑者)、视图级别控制

内容生成(所有制品类型)

类型 选项 下载格式
音频概览 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

超越 Web UI 的功能

以下功能可通过 API/CLI 使用,但在 NotebookLM 的 Web 界面中未提供:

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

安装

完整安装指南——六种角色(agent、最终用户、库、无头、贡献者、高级用户)、可选附加组件矩阵、平台注意事项——请参见 docs/installation.md。

最快上手(CLI 用户和 AI agent):

pip install "notebooklm-py[browser]"   # 核心 + Playwright
playwright install chromium             # ~170 MB;无进度条——请耐心等待(30–90 秒)
notebooklm login                        # 打开浏览器进行 Google 登录
notebooklm auth check --test --json     # 验证:预期输出 "status": "ok"

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

pip install notebooklm-py               # ~10 MB;附带预获取的 storage_state.json

如果在 Linux 上执行 playwright install chromium 时遇到 TypeError: onExit is not a function 错误,请参见 Linux 变通方案。贡献者: 请参见 CONTRIBUTING.md。

快速开始


16 分钟会话压缩至 30 秒

CLI

# 1. 认证(打开浏览器)
notebooklm login
# 或者使用 Microsoft Edge(适用于要求 Edge 进行 SSO 的组织)
# notebooklm login --browser msedge
# 或者从已登录的浏览器会话中重用 cookies
# notebooklm login --browser-cookies chrome
# notebooklm login --browser-cookies 'chrome::Profile 1'  # 指定一个 Chromium 配置文件
# (结合 --profile 可填充特定配置文件;
#  如果登录了多个 Google 账户,在 auth inspect 后使用 --account / --all-accounts)

# 2. 创建笔记本并添加来源
notebooklm create "我的研究"
notebooklm use <notebook_id>
notebooklm source add "https://en.wikipedia.org/wiki/Artificial_intelligence"
notebooklm source add "./paper.pdf"

# 3. 与来源对话
notebooklm ask "有哪些关键主题?"
notebooklm ask --prompt-file ./long_question.txt  # 从文件读取问题

# 4. 生成内容(长提示请使用 --prompt-file)
notebooklm generate audio "让它有吸引力" --wait
notebooklm generate video --style whiteboard --wait
notebooklm generate cinematic-video "纪录片风格总结" --wait
notebooklm generate quiz --difficulty hard
notebooklm generate flashcards --quantity more
notebooklm generate slide-deck
notebooklm generate infographic --orientation portrait
notebooklm generate mind-map
notebooklm generate data-table "比较关键概念"

# 5. 下载制品
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         # 诊断认证/cookie 问题
notebooklm auth refresh --quiet      # 一次性 cookie 保活(用于 cron / launchd / systemd)
notebooklm auth refresh --browser-cookies chrome  # 重新提取并修复账户路由
notebooklm auth inspect --browser 'chrome::Profile 1'  # 预览一个 Chromium 配置文件
notebooklm agent show codex          # 打印捆绑的 Codex 说明
notebooklm agent show claude         # 打印捆绑的 Claude Code 技能模板
notebooklm language list             # 列出支持的输出语言
notebooklm metadata --json           # 导出笔记本元数据和来源
notebooklm share status              # 检查共享状态
notebooklm source add-research "AI"  # 启动网页研究并导入来源
notebooklm skill status              # 检查本地 agent 技能安装状态
notebooklm profile list              # 列出所有 Google 账户配置文件
notebooklm profile switch work       # 切换活跃账户配置文件

将 --prompt-file PATH 与 ask、基于提示的 generate 命令以及 source add-research 结合使用,当文本对于 shell 命令行过长时。这会从文件读取提示/查询文本,与 source add ./file.pdf(仍将作为 NotebookLM 来源上传该文件)不同。

Python API

import asyncio
from notebooklm import NotebookLMClient

async def main():
    async with await NotebookLMClient.from_storage() as client:
        # 创建笔记本并添加来源
        nb = await client.notebooks.create("研究")
        await client.sources.add_url(nb.id, "https://example.com", wait=True)

        # 与来源对话
        result = await client.chat.ask(nb.id, "总结一下")
        print(result.answer)

        # 生成内容(播客、视频、测验等)
        status = await client.artifacts.generate_audio(nb.id, instructions="让它有趣")
        await client.artifacts.wait_for_completion(nb.id, status.task_id)
        await client.artifacts.download_audio(nb.id, "podcast.mp3")

        # 生成测验并下载为 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")

        # 生成思维导图并导出
        result = await client.artifacts.generate_mind_map(nb.id)
        await client.artifacts.download_mind_map(nb.id, "mindmap.json")

asyncio.run(main())

Agent 设置

方式 1 —— CLI 安装:

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。

开源项目teng-lin2026-05-21原文

相关内容