notebooklm-py
程序化访问 Google NotebookLM 的 Python 库与 AI Agent 技能,提供 CLI、Python API 以及 Claude Code 等 agent 集成。支持批量导入来源、生成播客/视频/测验等各类内容,并能利用 Web UI 不暴露的功能(如批量下载、Quiz 结构化导出)。亮点是完全可编程,适合构建自动化研究管线或内容生成工作流。非官方库,使用未公开 API,可能随时失效,仅适用于原型和个人项目。
README
notebooklm-py
全面的 NotebookLM 技能与非官方 Python API。 通过 Python、CLI 以及 Claude Code、Codex、OpenClaw 等 AI agent,实现对 NotebookLM 功能的完整程序化访问——包括 Web UI 未暴露的能力。
源码与开发: 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。
快速开始
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。
文档
- CLI 参考 - 完整的命令文档
- Python API - 完整的 API 参考
- 配置 - 存储与设置
- 发布指南 - 发布检查清单与打包验证
- 故障排除 - 常见问题与解决方案
- API 稳定性 - 版本策略与稳定性保证
贡献者专用
平台支持
| 平台 | 状态 | 备注 |
|---|---|---|
| macOS | ✅ 已测试 | 主要开发平台 |
| Linux | ✅ 已测试 | 完全支持 |
| Windows | ✅ 已测试 | 在 CI 中测试 |
Star 历史
许可证
MIT 许可证。详情见 LICENSE。