mcpField
N
notebooklm

notebooklm

github.com/julianobarbosa生产力1468 次安装3 天前更新
代码仓库

关于 notebooklm

notebooklm 是用于自动化 Google NotebookLM 的非官方 Python 命令行工具和 API,可管理笔记本与来源、问答和生成内容,并下载成果以支持程序化工作流。

主要功能

  1. 01管理笔记本和来源
  2. 02来源问答与摘要
  3. 03生成音频、视频、幻灯片和报告
  4. 04生成测验、闪卡和视觉内容
  5. 05下载成果并管理分享

适用场景

  1. 01将研究资料整理成音频概览
  2. 02根据文档制作学习材料
  3. 03生成并下载文献综述
  4. 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_LEVELDEBUG/INFO/WARNING/ERRORWARNING
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