关于 notebooklm
notebooklm 是用于自动化 Google NotebookLM 的非官方 Python 命令行工具和 API,可管理笔记本与来源、问答和生成内容,并下载成果以支持程序化工作流。
主要功能
- 01管理笔记本和来源
- 02来源问答与摘要
- 03生成音频、视频、幻灯片和报告
- 04生成测验、闪卡和视觉内容
- 05下载成果并管理分享
适用场景
- 01将研究资料整理成音频概览
- 02根据文档制作学习材料
- 03生成并下载文献综述
- 04通过 Python 自动执行 NotebookLM 任务
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ julianobarbosa/ claude-code-skills --skill notebooklm安装后在 Claude Code 中输入/notebooklm确认已加载。
详细介绍
NotebookLM 自动化
适用于 Google NotebookLM(notebooklm-py)的非官方 Python CLI 和 API。提供完整的程序化访问能力,包括 Web UI 未公开的功能。
先决条件
- Python 3.10+
- 可访问 NotebookLM 的 Google 账号
- 通过 Playwright 进行一次性浏览器登录
安装
# Install with browser login support
pip install "notebooklm-py[browser]"
playwright install chromium
# Linux only: also run
playwright install-deps chromium
身份验证
首次设置需要通过浏览器登录:
notebooklm login
# Opens Chromium → sign into Google → press Enter when done
# Session saved to ~/.notebooklm/storage_state.json
检查身份验证状态:notebooklm auth check --test
对于无头/CI 环境,可从本地计算机复制 storage_state.json,或设置 NOTEBOOKLM_AUTH_JSON 环境变量。
环境变量
| 变量 | 说明 | 默认值 |
|---|---|---|
NOTEBOOKLM_HOME | 配置目录 | ~/.notebooklm |
NOTEBOOKLM_AUTH_JSON | 内嵌身份验证 JSON(CI/CD) | — |
NOTEBOOKLM_LOG_LEVEL | DEBUG/INFO/WARNING/ERROR | WARNING |
NOTEBOOKLM_DEBUG_RPC | 启用 RPC 调试(1) | false |
核心工作流
典型工作流为:创建笔记本 → 添加来源 → 生成内容 → 下载。
1. 笔记本管理
notebooklm create "My Research" # Create notebook
notebooklm list # List all notebooks
notebooklm use <id> # Set active notebook (supports partial ID)
notebooklm summary # AI summary of current notebook
notebooklm rename "New Title" # Rename
notebooklm delete <id> # Delete
2. 添加来源
系统会根据类型自动检测来源:
notebooklm source add "https://example.com/article" # URL
notebooklm source add "https://youtube.com/watch?v=..." # YouTube
notebooklm source add ./document.pdf # File (PDF, MD, DOCX, TXT, audio, video, images)
notebooklm source add-drive <drive-file-id> "Title" # Google Drive
notebooklm source add-research "climate policy" --mode deep --import-all # Research agent
其他来源命令:
notebooklm source list # List sources
notebooklm source fulltext <id> # Get source full text
notebooklm source guide <id> # AI-generated source guide
notebooklm source rename <id> "New" # Rename
notebooklm source refresh <id> # Re-fetch URL source
notebooklm source delete <id> # Delete
3. 聊天 / 问答
notebooklm ask "What are the key findings?" -s <source_id>
notebooklm ask "Compare sources" --json --save-as-note --note-title "Comparison"
notebooklm history # View chat history
notebooklm history --save # Save history as note
4. 内容生成
所有生成命令均支持:-s/--source(可重复使用,仅限指定来源)、--json、--language、--retry N。
大多数命令都是异步的——使用 --wait 阻塞等待完成。
音频概览(播客)
notebooklm generate audio "Focus on practical applications" \
--format deep-dive \ # deep-dive | brief | critique | debate
--length long \ # short | default | long
--wait
视频概览
notebooklm generate video "Explain the architecture" \
--format explainer \ # explainer | brief
--style whiteboard \ # auto | classic | whiteboard | kawaii | anime | watercolor | retro-print | heritage | paper-craft
--wait
幻灯片
notebooklm generate slide-deck "Executive summary" \
--format detailed \ # detailed | presenter
--length default \ # default | short
--wait
# Revise a specific slide
notebooklm generate revise-slide "Add more data points" \
-a <artifact_id> --slide 2 --wait # slide is zero-based
学习材料
# Quizzes
notebooklm generate quiz --difficulty hard --quantity more --wait
# Flashcards
notebooklm generate flashcards --difficulty medium --wait
视觉内容与数据
# Infographic
notebooklm generate infographic \
--orientation landscape \ # landscape | portrait | square
--detail detailed \ # concise | standard | detailed
--wait
# Mind map (synchronous, no --wait needed)
notebooklm generate mind-map
# Data table
notebooklm generate data-table "Compare metrics across studies" --wait
报告
notebooklm generate report "Security analysis" \
--format briefing-doc \ # briefing-doc | study-guide | blog-post | custom
--append "Include threat modeling" \
--wait
5. 下载内容
所有下载命令均支持:-a/--artifact、--all、--latest、--earliest、--name、--force、--no-clobber、--dry-run、--json。
notebooklm download audio ./podcast.mp3
notebooklm download video ./overview.mp4
notebooklm download slide-deck ./slides.pptx --format pptx # or pdf (default)
notebooklm download infographic ./info.png
notebooklm download report ./report.md
notebooklm download mind-map ./map.json
notebooklm download data-table ./data.csv
notebooklm download quiz --format json ./quiz.json # json | markdown | html
notebooklm download flashcards --format markdown ./cards.md
6. 分享
notebooklm share status
notebooklm share public --enable # Create public link
notebooklm share view-level full # full | chat
notebooklm share add [email protected] --permission editor -m "Check this out"
notebooklm share remove [email protected]
7. 语言
notebooklm language list # 80+ languages
notebooklm language get
notebooklm language set ja # Set to Japanese
Python API
用于程序化工作流的完整异步 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")
# Generate audio overview
artifact = await client.artifacts.generate_audio(
nb.id, description="Deep dive on findings",
format=AudioFormat.DEEP_DIVE, length=AudioLength.LONG
)
# Wait and download
await client.artifacts.wait(nb.id, artifact.id)
await client.artifacts.download_audio(nb.id, artifact.id, "output.mp3")
# Chat with sources
result = await client.chat.ask(nb.id, "Summarize key points")
print(result.answer)
asyncio.run(main())
API 模块:client.notebooks、client.sources、client.artifacts、client.chat、client.research、client.notes、client.settings、client.sharing
常见示例
从研究到播客的工作流
notebooklm create "Climate Research"
notebooklm use <id>
notebooklm source add "https://en.wikipedia.org/wiki/Climate_change"
notebooklm source add-research "climate change solutions 2025" --mode deep --import-all
notebooklm generate audio "Focus on actionable solutions" --format debate --length long --wait
notebooklm download audio ./climate-debate.mp3
将文档分析转为学习材料
notebooklm create "Exam Prep"
notebooklm use <id>
notebooklm source add ./textbook.pdf
notebooklm generate quiz --difficulty hard --quantity more --wait
notebooklm generate flashcards --wait
notebooklm download quiz --format markdown ./quiz.md
notebooklm download flashcards --format json ./cards.json
批量导入 + 完整报告
notebooklm create "Literature Review"
notebooklm use <id>
for f in ./papers/*.pdf; do notebooklm source add "$f"; done
notebooklm generate report "Systematic review" --format briefing-doc --wait
notebooklm download report ./review.md
故障排除
| 问题 | 解决方法 |
|---|---|
| 身份验证已过期 | 再次运行 notebooklm login |
找不到 playwright | 运行 pip install "notebooklm-py[browser]",然后运行 playwright install chromium |
| 生成卡住 | 对待处理来源使用 notebooklm source wait <id>,并检查 --retry 标记 |
| 部分 ID 不匹配 | 使用更多笔记本 ID 字符 |
| 调试 API 调用 | 设置 NOTEBOOKLM_LOG_LEVEL=DEBUG 或 NOTEBOOKLM_DEBUG_RPC=1 |
注意事项
- 来源上传超过 200MB 时,即使请求返回 200 也会静默失败——下游会一直显示“处理中”。上传前请检查文件大小。
- 每个项目的并发音频/视频生成受速率限制——第二个并发生成任务会失败,并显示笼统的“请稍后重试”提示。请串行执行生成任务。
- gcloud 身份验证与 notebooklm-account 不同——登录了 gcloud 的用户可能无法访问 notebooklm;两者不一致时,请显式传入
--account。 - 上传时的来源顺序会影响生成内容中的引用优先级——为调整顺序而重新上传会改变输出风格。
- Studio 类型的超时时间不同——音频约 5 分钟,视频约 15 分钟,幻灯片约 3 分钟。对于耗时较长的类型,CLI 默认的 60 秒超时会导致任务中途退出。
评论
支持 Markdown