teng-lin/notebooklm-py
GitHub: teng-lin/notebooklm-py
Google NotebookLM的非官方Python API和CLI工具,提供完整的功能覆盖以及网页版不具备的批量导出和自动化能力。
Stars: 3383 | Forks: 437
# notebooklm-py
## 你可以构建什么
🤖 **AI Agent 工具** - 将 NotebookLM 集成到 Claude Code 或其他 LLM agent 中。内置 [Claude Code skills](#agent-skills-claude-code) 以实现自然语言自动化(`notebooklm skill install`),或使用 async Python API 构建你自己的集成。
📚 **研究自动化** - 批量导入来源(URL、PDF、YouTube、Google Drive),运行带有自动导入功能的 Web/Drive 研究查询,并以编程方式提取洞察。构建可重复的研究 pipeline。
🎙️ **内容生成** - 生成音频概览(播客)、视频、幻灯片、测验、闪卡、信息图表、数据表、思维导图和学习指南。完全控制格式、样式和输出。
📥 **下载与导出** - 将所有生成的工件下载到本地(MP3、MP4、PDF、PNG、CSV、JSON、Markdown)。导出到 Google Docs/Sheets。**Web UI 不提供的功能**:批量下载、多种格式的测验/闪卡导出、思维导图 JSON 提取。
## 三种使用方式
| 方式 | 最适合 |
|--------|----------|
| **Python API** | 应用集成、异步工作流、自定义 pipeline |
| **CLI** | Shell 脚本、快速任务、CI/CD 自动化 |
| **Agent Skills** | Claude Code、LLM agent、自然语言自动化 |
## 功能
### 完整的 NotebookLM 覆盖
| 类别 | 功能 |
|----------|--------------|
| **Notebook** | 创建、列出、重命名、删除 |
| **来源** | URL、YouTube、文件(PDF、文本、Markdown、Word、音频、视频、图像)、Google Drive、粘贴的文本;刷新、获取指南/全文 |
| **聊天** | 提问、对话历史、自定义角色 |
| **研究** | Web 和 Drive 研究 agent(快速/深度模式),支持自动导入 |
| **分享** | 公开/私有链接、用户权限(查看者/编辑者)、查看级别控制 |
### 内容生成(所有 NotebookLM Studio 类型)
| 类型 | 选项 | 下载格式 |
|------|---------|-----------------|
| **音频概览** | 4 种格式(深度探讨、简报、评论、辩论)、3 种长度、50+ 种语言 | MP3/MP4 |
| **视频概览** | 2 种格式、9 种视觉风格(经典、白板、卡哇伊、动漫等) | MP4 |
| **幻灯片** | 详细或演示者格式,可调长度;单张幻灯片修改 | PDF, PPTX |
| **信息图表** | 3 种方向、3 种细节级别 | PNG |
| **测验** | 可配置数量和难度 | JSON, Markdown, HTML |
| **闪卡** | 可配置数量和难度 | JSON, Markdown, HTML |
| **报告** | 简报文档、学习指南、博客文章或自定义 prompt | Markdown |
| **数据表** | 通过自然语言自定义结构 | CSV |
| **思维导图** | 交互式分层可视化 | JSON |
### Web UI 之外的功能
这些功能可通过 API/CLI 使用,但未在 NotebookLM 的 Web 界面中公开:
- **批量下载** - 一次下载所有同类型的工件
- **测验/闪卡导出** - 获取结构化的 JSON、Markdown 或 HTML(Web UI 仅显示交互式视图)
- **思维导图数据提取** - 导出分层 JSON 用于可视化工具
- **数据表 CSV 导出** - 将结构化表格下载为电子表格
- **幻灯片 PPTX 格式** - 下载可编辑的 PowerPoint 文件(Web UI 仅提供 PDF)
- **幻灯片修改** - 使用自然语言 prompt 修改单张幻灯片
- **报告模板自定义** - 向内置格式模板追加额外指令
- **保存聊天到笔记** - 将 Q&A 答案或对话历史保存为 notebook 笔记
- **来源全文访问** - 检索任何来源的索引文本内容
- **编程式分享** - 无需 UI 即可管理权限
## 安装
```
# 基础安装
pip install notebooklm-py
# 带浏览器登录支持(首次设置必需)
pip install "notebooklm-py[browser]"
playwright install chromium
```
### 开发安装
适用于贡献者或测试未发布功能:
```
pip install git+https://github.com/teng-lin/notebooklm-py@main
```
⚠️ main 分支可能包含不稳定的更改。生产环境请使用 PyPI 发布版。
## 快速开始
notebooklm source add "https://en.wikipedia.org/wiki/Artificial_intelligence"
notebooklm source add "./paper.pdf"
# 3. 与你的 sources 聊天
notebooklm ask "What are the key themes?"
# 4. 生成内容
notebooklm generate audio "make it engaging" --wait
notebooklm generate video --style whiteboard --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 "compare key concepts"
# 5. 下载 artifacts
notebooklm download audio ./podcast.mp3
notebooklm download video ./overview.mp4
notebooklm download quiz --format markdown ./quiz.md
notebooklm download flashcards --format json ./cards.json
notebooklm download slide-deck ./slides.pdf
notebooklm download mind-map ./mindmap.json
notebooklm download data-table ./data.csv
```
### Python API
```
import asyncio
from notebooklm import NotebookLMClient
async def main():
async with await 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 mind map and export
result = await client.artifacts.generate_mind_map(nb.id)
await client.artifacts.download_mind_map(nb.id, "mindmap.json")
asyncio.run(main())
```
### Agent Skills (Claude Code)
```
# 通过 CLI 安装或让 Claude Code 执行
notebooklm skill install
# 然后使用自然语言:
# “创建一个关于 quantum computing 的 podcast”
# “以 markdown 格式下载 quiz”
# "/notebooklm generate video"
```
## 文档
- **[CLI 参考](docs/cli-reference.md)** - 完整的命令文档
- **[Python API](docs/python-api.md)** - 完整的 API 参考
- **[配置](docs/configuration.md)** - 存储和设置
- **[故障排除](docs/troubleshooting.md)** - 常见问题和解决方案
- **[API 稳定性](docs/stability.md)** - 版本控制策略和稳定性保证
### 贡献者
- **[开发指南](docs/development.md)** - 架构、测试和发布
- **[RPC 开发](docs/rpc-development.md)** - 协议捕获和调试
- **[RPC 参考](docs/rpc-reference.md)** - Payload 结构
- **[更新日志](CHANGELOG.md)** - 版本历史和发布说明
- **[安全](SECURITY.md)** - 安全策略和凭证处理
## 平台支持
| 平台 | 状态 | 备注 |
|----------|--------|-------|
| **macOS** | ✅ 已测试 | 主要开发平台 |
| **Linux** | ✅ 已测试 | 完全支持 |
| **Windows** | ✅ 已测试 | 在 CI 中测试 |
## 许可证
MIT License。详情请参阅 [LICENSE](LICENSE)。
16-minute session compressed to 30 seconds
标签:AI Agent 工具, Claude Code, DNS解析, Google Drive 集成, Google NotebookLM, LLM 应用开发, PDF 处理, Python 库, RAG, SEO, 内容生成, 开源项目, 异步编程, 数据导出, 文档结构分析, 特征检测, 知识管理, 科研自动化, 自动播客, 逆向工具, 非官方 API, 音频生成