Files
wehub-resource-sync 415caf51fc
CodeQL / Analyze (push) Has been cancelled
dependency-audit / pip-audit (push) Has been cancelled
Test / Code Quality (push) Has been cancelled
Test / Test (macos-latest, Python 3.13) (push) Has been cancelled
Test / Test (macos-latest, Python 3.14) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.10) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.11) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.12) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.13) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.14) (push) Has been cancelled
Test / Test (windows-latest, Python 3.10) (push) Has been cancelled
Test / Test (windows-latest, Python 3.11) (push) Has been cancelled
Test / Test (windows-latest, Python 3.12) (push) Has been cancelled
Test / Test (windows-latest, Python 3.13) (push) Has been cancelled
Test / Test (windows-latest, Python 3.14) (push) Has been cancelled
Test / Test (macos-latest, Python 3.10) (push) Has been cancelled
Test / Test (macos-latest, Python 3.11) (push) Has been cancelled
Test / Test (macos-latest, Python 3.12) (push) Has been cancelled
docs: make Chinese README the default
2026-07-13 10:42:39 +00:00

22 KiB
Raw Permalink Blame History

Note

本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
English · 原始项目 · 上游 README
原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。

notebooklm-py

notebooklm-py logo

全面的 NotebookLM Skill 与非官方 Python API。 通过 Python、CLI 以及 Claude Code、Codex、OpenClaw 等 AI 智能体,以编程方式完整访问 NotebookLM 的各项功能——包括 Web UI 未暴露的能力。

PyPI version Python Version License: MIT Tests

teng-lin%2Fnotebooklm-py | Trendshift

源码与开发https://github.com/teng-lin/notebooklm-py

⚠️ 非官方库 — 使用风险自负

本库使用未公开的 Google API,可能随时变更且不予通知。

  • 与 Google 无关联 — 这是社区项目
  • API 可能失效 — Google 可随时更改内部端点
  • 适用速率限制 — 大量使用可能被限流

最适合原型、研究和个人项目。调试技巧见 Troubleshooting

你能构建什么

🤖 AI 智能体工具 — 将 NotebookLM 集成到 Claude Code、Codex 及其他 LLM 智能体中。内置根级 NotebookLM skill,支持 GitHub 与 npx skills add 发现;为 Claude Code 提供本地 notebooklm skill install 支持,以及 .agents skill 目录;仓库级 Codex 指南见 AGENTS.md

📚 研究自动化 — 批量导入来源(URL、PDF、YouTube、Google Drive),运行 Web/Drive 研究查询并自动导入,以编程方式提取洞察。构建可重复的研究流水线。

🎙️ 内容生成 — 生成 Audio Overview(播客)、视频、幻灯片、测验、闪卡、信息图、数据表、思维导图和学习指南。对格式、风格与输出拥有完整控制。

📥 下载与导出 — 将所有生成物下载到本地(MP3、MP4、PDF、PNG、CSV、JSON、Markdown)。导出到 Google Docs/Sheets。Web UI 不具备的功能:批量下载、多格式测验/闪卡导出、思维导图 JSON 提取。

用例与配方

NotebookLM 是一个有来源依据(grounded的引擎:Gemini 负责繁重阅读,并基于你的来源作答并附引用。制胜模式是让它承担昂贵的分析,而你的智能体(Claude Code、Codex 等)负责编排与最后一公里——将 NotebookLM 作为智能体在循环中驱动的零 token 综合 + 记忆层,并以批量、更丰富、可脚本化的格式将结构化产物导出。人们基于本库构建的配方,按他们将 NotebookLM 用作什么而分组:

减少 token 消耗 — 让 NotebookLM 承担昂贵的思考:

  • 🪙 零 token 研究卸载 — 将 30 份文档扔进一个 notebook,让 Gemini 做繁重分析,让你的智能体仅在最终润色上消耗 token。智能体只负责编排(createsource addask);推理在服务端完成。实战案例:四工作流指南:阻止 Claude Code 在 NotebookLM 上烧 token.
  • 🧠 知识蒸馏 → 永久 skill — 运行 Deep Researchsource add-research "your topic" --mode deep)或加载文档语料,让 NotebookLM 的 Gemini 将其浓缩,并将结果烘焙进智能体启动时加载的 SKILL.md一次构建,零运行时 token 或网络调用即可复用,可 git 版本管理且不受 UI 漂移影响。无需手工策展来源即可打包领域专家。(把原始文档直接塞进 skill 会压平层次结构;先经 NotebookLM 浓缩才是关键。)
  • 自验证 skill — 让 NotebookLM 生成评测集 — 直接来自你来源的测验 — 用以对照 ground truth 为智能体 skill 打分,而非你自己会带入偏见的测试题。构建 skill,对照 NotebookLM 编写的评测运行,迭代直至通过。实战案例:某 skill 首轮 4/10、一次迭代后 10/10,由 NotebookLM 生成的测验评分.

为智能体赋予记忆 — 持久、有来源依据的召回:

  • 💾 跨会话持久记忆 — 维护一个「Master Brain」notebook;收尾步骤将每次会话的决策与修复追加为笔记(note create / ask --save-as-note),并在你的 CLAUDE.md 中用一行在下次会话开始时查询它(ask)。存储与召回依托 Google 基础设施。
  • 🧩 面向编码智能体的有来源记忆 — 通过 MCP server(或普通 ask)暴露一份内部文档/RFC/架构 notebook,让智能体基于你的代码作答并附引用,而非听起来合理却错误的猜测 — 无需自建向量库与嵌入流水线的零基础设施替代方案。实战案例:将 notebook 变成编码智能体写代码前会查阅的有来源「项目大脑」.
  • 🪞 查询你自己的笔记/日记 — 加载多年的每日笔记、会议记录或日记,并用 ask 获取带引用贯穿你自己历史的答案 — 揭示关键词搜索无法发现的长期模式(例如从 282 条每日笔记综合而成的周报,每条论断都链接回其来源条目)。实战案例:与一年的每日笔记作为带引用知识库对话.

将来源转化为答案与产物 — 带引用的回复、生成的媒体与导出:

  • 📞 有来源知识库/排障神谕(RAG — 加载产品文档、FAQ、RFC 与历史工单,然后用 ask --json 为支持、on-call 或内部问答提供有来源、带引用的答案。或让智能体指向某个快速迭代工具的完整文档 — 超出智能体上下文容量 — 作为排障神谕,在出错瞬间即可查询。实战案例:OpenClaw 驱动本库抓取 docs.openclaw.ai 全部 524 页,去重重复翻译,审计至 269 条干净来源(缺失/多余/重复 = 0).
  • 🔁 多格式内容再利用 — 一套来源,多种格式:generate audio(播客)、generate videogenerate slide-deck,外加 generate report 博客草稿、generate quizgenerate flashcards — 将单个 notebook 扇出到各渠道。
  • 📤 批量、可脚本化导出 — 将思维导图导出为 JSON,闪卡/测验导出为 JSON/Markdown/HTML,数据表导出为 CSV,报告导出为 Markdown — 批量导出到本地文件,直接进入 Anki、你的思维导图工具或仓库download <type> / download <type> --all)。本库程序化「把数据取出来」的一半,而不只是「把来源放进去」。
  • 🕸️ Obsidian / 知识图谱同步 — 从 vault 根目录运行 CLI,使下载的产物(报告、思维导图 JSON、转录)作为文件落入知识图谱;基于此库构建的社区 skill 甚至会将 NotebookLM 的引用标记解析为 Obsidian [[wikilinks]]。搭配播客概览,为你的笔记提供音频摘要。实战案例:「Claude Code + NotebookLM + Obsidian = GOD MODE」.

无人值守、大规模或随时随地运行 — 定时、无头(headless)与远程:

  • 🚨 事件 runbook 生成器 — 收到告警时,启动包含相关文档的笔记本,提出有针对性的诊断问题,并生成 briefing-doc 报告(generate report --format briefing-doc --wait,然后 download report)作为自动化 runbook。
  • 📚 课程 / 学习集构建器 — 抓取教学大纲或开发者路线图,为每个主题创建一个笔记本(有意控制节奏以规避速率限制),并批量生成播客、测验和抽认卡。
  • 📰 定时音频简报 — 将 auth refresh --quietcron/launchd/systemd)与 generate audio 配对,按计划向播客 feed 发布全新的个性化简报。
  • 📱 用手机使用 NotebookLM,由 agent 驱动 — 在 Cloudflare/Tailscale 隧道后自托管 remote MCP connector,并在 网页端 添加为自定义连接器(claude.ai Connectors,或开启 Developer Mode 的 ChatGPT)。然后在外出时通过 claude.ai 移动应用 驱动完整工具集 — 深度研究、来源摄取、Studio 生成、带引用的问答 — 并可与其他 MCP 工具串联,无需在多个应用间切换(ChatGPT 的 MCP 连接器仅支持网页端)。

这些功能组合了普通的库原语 — 参见 CLI ReferencePython API。agent 侧的粘合层(skills、调度、vault 布局)位于你自己的配置中,而非本软件包。每个笔记本的来源数量取决于你的 Google 账户等级 — 若触及上限,可拆分到多个笔记本。

初次使用? 从入门 walkthrough 开始:Claude Code + NotebookLM = CHEAT CODE (视频) · 5 个演示 + 50 个用例,附 prompts.

使用方式

方式 最适合
Python API 应用集成、异步工作流、自定义流水线
CLI Shell 脚本、快速任务、CI/CD 自动化
MCP Server Claude Desktop/Code、Codex 等 — 通过 stdio 本地使用,或作为自托管远程连接器(置于 Cloudflare/Tailscale 隧道后),可从 claude.ai 和 ChatGPT 访问,包括移动端。
REST Server 通过受保护的 HTTP 路由进行本地自动化,无需每次调用都启动 CLI 进程
Agent Integration Claude Code、Codex、LLM agent、自然语言自动化

功能

完整的 NotebookLM 覆盖

类别 能力
Notebooks 创建、列出、重命名、删除
Sources URL、YouTube、文件(PDF、text、Markdown、Word、EPUB、音频、视频、图片)、Google Drive、粘贴文本;刷新、获取 guide/fulltext
Chat 提问、对话历史、自定义 persona、建议的 starter prompts
Notes 创建、列出、重命名、删除、保存聊天回答、保存对话历史
Source Labels AI 生成或手动的主题标签;添加/移除来源归属;按标签筛选来源
Research Web 与 Drive 研究 agentfast/deep 模式),支持自动导入
Sharing 公开/私密链接、用户权限(viewer/editor)、视图级别控制

内容生成(全部制品类型)

类型 选项 下载格式
Audio Overview 4 种格式(deep-dive、brief、critique、debate),3 种时长,50+ 种语言 MP3
Video Overview 4 种格式(explainer、brief、cinematic、short),8 种视觉风格(+ auto/custom),另有专用 cinematic-video CLI 别名 MP4
Slide Deck 详细或演讲者格式,长度可调;单页幻灯片修订 PDF、PPTX
Infographic 3 种方向、3 个细节级别 PNG
Quiz 可配置数量与难度 JSON、Markdown、HTML
Flashcards 可配置数量与难度 JSON、Markdown、HTML
Report briefing doc、study guide、blog post 或自定义 prompt Markdown
Data Table 通过自然语言自定义结构 CSV
Mind Map 层级节点树 — 两种类型note-backed JSON 或较新的交互式 studio map--kind / MindMapKind JSON

超越 Web UI

API/CLI 让程序化、批量与本地文件能力变得简单 — 其中多项以更丰富格式或更大规模提供,优于在 Web 应用中点击操作:

  • 批量下载 - 一次性下载某类型的全部制品
  • Quiz/Flashcard 导出 - 获取结构化 JSON、Markdown 或 HTML 文件
  • 思维导图数据提取 - 导出供可视化工具使用的层级 JSON
  • 数据表 CSV 导出 - 将结构化表格下载为电子表格
  • 幻灯片导出为 PPTX 或 PDF - 下载可编辑的 PowerPoint 或 PDF 文件
  • 幻灯片修订 - 用自然语言 prompt 修改单页幻灯片
  • 报告模板自定义 - 向内置格式模板追加额外说明
  • 将聊天历史保存为笔记 - 将整段问答对话(不仅是单个回答)持久化为笔记本笔记
  • 来源全文访问 - 检索任意来源的已索引文本内容
  • 程序化分享 - 无需 UI 即可管理权限

安装

完整安装指南 — 六种角色(agent、end-user、library、headless、contributor、power-user)、可选附加组件矩阵、平台说明 — 见 docs/installation.md

最快上手CLI 用户与 AI agent)— 使用 uv tool(推荐)或 pipx 安装 CLI

uv tool install "notebooklm-py[browser]"   # or: pipx install "notebooklm-py[browser]"
notebooklm login                           # first run auto-downloads Chromium (~170 MB), then Google sign-in
notebooklm auth check --test --json        # verify: expect "status": "ok"

为何选择 uv tool / pipx 它们将 CLI 安装到独立隔离环境中,并把 notebooklm 放到你的 PATH — 不会与其他工具产生依赖冲突,一行命令即可升级(uv tool upgrade notebooklm-py)或卸载;关键的是,它们在现代 macOSHomebrew Python)和 Debian/Ubuntu 上可用,而这些系统上全局 pip install 会被 error: externally-managed-environment 阻止(PEP 668). 还没有 uvcurl -LsSf https://astral.sh/uv/install.sh | sh(或 brew install uv / winget install astral-sh.uv)。

更喜欢纯 pipvirtualenv 内 效果相同(在 Windows 上也可直接使用,因其 Python 不受外部管理):

python3 -m venv .venv && source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install "notebooklm-py[browser]"

作为库(嵌入你的应用 — 无需 Playwright、无需 Chromium):

uv add notebooklm-py                    # or, inside a virtualenv: pip install notebooklm-py

playwright install chromium 在 Linux 上因 TypeError: onExit is not a function 失败,请参阅 Linux workaround贡献者: 请参阅 CONTRIBUTING.md

认证与访问

面向本地开发、无头服务器与多租户设置的灵活认证:

  • 三种获取 cookie 的方式 - 交互式 Playwright 登录(默认)、从已登录浏览器导入(login --browser-cookies chrome,无需 Playwright),或持久的 master token
  • Master-token 认证 - 按需生成新的 web cookie,无需每次会话都启动浏览器(login --master-token --account you@example.com),因此可在无人值守下自动修复过期会话 — 适用于服务器、CI 与远程 MCP 连接器(claude.ai / ChatGPT)的认证模型。
  • 多账户配置 - 无需重新认证即可在多个 Google 账户间切换。

Agent 配置

方案 1 — CLI 安装

notebooklm skill install

将 skill 安装到 ~/.claude/skills/notebooklm~/.agents/skills/notebooklm

方案 2 — npx 安装(通过开放 skills 生态):

npx skills add teng-lin/notebooklm-py

直接从 GitHub 获取权威的 SKILL.md

快速开始


16 分钟会话压缩为 30 秒

CLI

# 1. Authenticate (opens browser)
notebooklm login
# Or use Microsoft Edge (for orgs that require Edge for SSO)
# notebooklm login --browser msedge
# Or reuse cookies from an already-logged-in browser session
# notebooklm login --browser-cookies chrome
# notebooklm login --browser-cookies 'chrome::Profile 1'  # one Chromium profile
# (combine with --profile to populate a specific profile;
#  use --account / --all-accounts after auth inspect when several
#  Google accounts are signed in)

# 2. Create a notebook and add sources
notebooklm create "My Research"
notebooklm use <notebook_id>
notebooklm source add "https://en.wikipedia.org/wiki/Artificial_intelligence"
notebooklm source add "./paper.pdf"

# 3. Chat with your sources
notebooklm ask "What are the key themes?"
notebooklm ask --prompt-file ./long_question.txt  # Read question from file

# 4. Generate content (use --prompt-file for long prompts)
notebooklm generate audio "make it engaging" --wait
notebooklm generate video --style whiteboard --wait
notebooklm generate cinematic-video "documentary-style summary" --wait
notebooklm generate quiz --difficulty hard
notebooklm generate flashcards --quantity more
notebooklm generate slide-deck
notebooklm generate infographic --orientation portrait
notebooklm generate mind-map                       # interactive studio map (default); --kind note-backed for the JSON tree
notebooklm generate data-table "compare key concepts"

# 5. Download artifacts
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         # Diagnose auth/cookie issues
notebooklm auth refresh --quiet      # One-shot cookie keepalive (for cron / launchd / systemd)
notebooklm auth refresh --browser-cookies chrome  # Re-extract and repair account routing
notebooklm auth inspect --browser 'chrome::Profile 1'  # Preview one Chromium profile
notebooklm agent show codex          # Print bundled Codex instructions
notebooklm agent show claude         # Print bundled Claude Code skill template
notebooklm language list             # List supported output languages
notebooklm metadata --json           # Export notebook metadata and sources
notebooklm share status              # Inspect sharing state
notebooklm source add-research "AI" --import-all  # web research + import found sources
notebooklm skill status              # Check local agent skill installation
notebooklm profile list              # List all Google account profiles
notebooklm profile switch work       # Switch active account profile

--prompt-file PATHask、基于 prompt 的 generate 命令以及 source add-research 配合使用,当文本过长无法放入 shell 命令行时尤为适用。该方式从文件读取 prompt/查询文本,与 source add ./file.pdf 不同——后者仍会将该文件作为 NotebookLM 源上传。

Python API

import asyncio
from notebooklm import NotebookLMClient, MindMapKind

async def main():
    async with 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 a mind map via the unified client.mind_maps API (issue #1256) —
        # two kinds: the newer MindMapKind.INTERACTIVE studio map (shown; polled to
        # completion by default) or MindMapKind.NOTE_BACKED JSON. Both export via:
        mm = await client.mind_maps.generate(nb.id, kind=MindMapKind.INTERACTIVE)
        await client.artifacts.download_mind_map(nb.id, "mindmap.json", mm.id)

asyncio.run(main())

文档

面向贡献者

Star History

Star History Chart

许可证

MIT License。详见 LICENSE