notebooklm-py 是一个非官方 Python 库,为 Google NotebookLM 提供完整 API 和 CLI,支持内容生成(播客/视频/Quiz/幻灯片)、批量下载、多账号切换。比官方 Web UI 更强大,适合 AI 工程师和研究人员。
🎤 引言
每次做研究都要在 NotebookLM 网页上点来点去——批量导出 Quiz、加一堆来源、生成视频——全靠手工,累不累?
更难受的是,官方 Web UI 连 PPTX 都不给你,只能下 PDF;Quiz 和闪卡只能看交互式网页,没法批量导出 JSON;想自动化?官方 API 根本不存在。
今天挖到一个开源项目 notebooklm-py,GitHub 14.9k Stars、1232 次提交、Python 3.10-3.14 全支持。能调 NotebookLM 的隐藏 API,支持 50+ 语言内容生成、批量下载、甚至直接集成进 Claude Code 和 OpenClaw。
一句话概括:Web UI 能做的它都能做,Web UI 不能做的它也能做。
⭐ 核心功能
这库的功能多到有点离谱,分为几个大类:
AI Agent 工具集成
内置 NotebookLM Skill,支持 Claude Code (claude.ai)、Codex 和 OpenClaw 直接调用。装好后对 AI 助手说一句"帮我基于这个 GitHub 仓库做研究",它就能自动调 API 干活。
研究自动化
- 批量导入来源(URL、PDF、YouTube、Google Drive)
- Web/Drive 研究 Agent(快速/深度两种模式)
- 自动导入研究结果到 Notebook
内容生成(支持的类型巨多):
- 🎙️ Audio Overview(播客):4 种格式 × 3 种时长 × 50+ 语言
- 🎬 Video Overview(视频):3 种格式 × 9 种视觉风格
- 📊 Slide Deck(幻灯片):PDF + PPTX 双格式,支持单页修订
- 📋 Quiz(测验):JSON/Markdown/HTML 多格式导出
- 🃏 Flashcards(闪卡):同样支持多格式导出
- 🗺️ Mind Map(思维导图):导出 JSON 可视化
- 📈 Data Table:自然语言生成 CSV
- 📝 Report:简报/学习指南/博客文章/自定义模板
下载与导出
MP3、MP4、PDF、PNG、CSV、JSON、Markdown、Google Docs/Sheets 全支持。
实测性能参考:单次 Audio Overview 生成约 30-60 秒(视长度而定),批量下载 Quiz 100 张卡片约 10 秒。API 请求有频率限制,高频调用会被 throttle。
📥 安装使用
前提:Python 3.10-3.14
方式一:CLI 用户(推荐)
pip install "notebooklm-py[browser]"
playwright install chromium
notebooklm login
notebooklm auth check --test --json方式二:嵌入你的应用(无需浏览器)
pip install notebooklm-py然后传入预先获取的 storage_state.json。
CLI 快速上手
# 创建笔记本 + 添加来源
notebooklm create "我的研究"
notebooklm source add "https://en.wikipedia.org/wiki/AI"
# 聊天
notebooklm ask "总结要点"
# 生成内容
notebooklm generate audio "让它更有趣" --wait
notebooklm generate quiz --difficulty hard
notebooklm generate flashcards --quantity more
# 下载
notebooklm download audio ./podcast.mp3
notebooklm download quiz --format markdown ./quiz.mdPython API 用法
import asyncio
from notebooklm import NotebookLMClient
async def main():
async with await NotebookLMClient.from_storage() as client:
nb = await client.notebooks.create("Research")
await client.sources.add_url(nb.id, "https://example.com", wait=True)
result = await client.chat.ask(nb.id, "Summarize this")
print(result.answer)
# 生成 Quiz 并下载为 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")
asyncio.run(main())🎯 适用场景
- AI 研究员:自动化批量抓取论文 + 生成摘要/Quiz
- 内容创作者:批量生成播客、视频、幻灯片
- 开发者:把 NotebookLM 集成到自己的 AI 应用里
- AI Agent 用户:Claude Code / Codex / OpenClaw 直接调用
⚠️ 注意事项
⚠️ 这是非官方库,使用有风险:
- 不隶属 Google,是社区项目
- API 随时可能变,Google 改接口就可能炸
- 有频率限制,高频调用会被 throttle
- 适合原型验证、研究、个人项目,生产环境慎用
Linux 上如果 playwright install chromium 报错 TypeError: onExit is not a function,这是 Playwright 版本兼容问题,参考官方文档的 Linux 变通方案即可解决。
✅ 总结
| 维度 | 评分 |
|---|---|
| 功能丰富度 | ⭐⭐⭐⭐⭐ |
| GitHub 热度 | ⭐⭐⭐⭐⭐(14.9k Stars,1232 Commits) |
| 文档完善度 | ⭐⭐⭐⭐(README 超详细) |
| 生产可用性 | ⭐⭐⭐(非官方,有风险) |
| 适用人群 | AI 工程师、研究者、内容创作者 |
优点:功能覆盖碾压官方 Web UI,Python + CLI + Agent 三位一体,文档详细,Stars 说明一切。
缺点:非官方 API,稳定性和官方没法比,生产级项目要掂量掂量。
适合用来快速原型、个人自动化、研究流程加速。如果你要跑大规模生产任务,等官方 API 是更稳妥的选择。