notebooklm-py README

The project's README from github.com/teng-lin/notebooklm-py. As one markdown file: README.md.

notebooklm-py

notebooklm-py logo

A Comprehensive Google Gemini Notebook Skill & Unofficial Python API. Full programmatic access to NotebookLM's features—including capabilities the web UI doesn't expose—via Python, CLI, and AI agents like Claude Code, Codex, and OpenClaw.

Note (July 2026): Google rebranded NotebookLM to Gemini Notebook. It remains the same standalone product (now also reachable inside the Gemini app), existing links redirect automatically, and this library drives the same underlying service and works unchanged. The package keeps the notebooklm-py name.

PyPI version Python Version License: MIT Tests

teng-lin%2Fnotebooklm-py | Trendshift

Source & Development: https://github.com/teng-lin/notebooklm-py

⚠️ Unofficial Library - Use at Your Own Risk

This library uses undocumented Google APIs that can change without notice.

  • Not affiliated with Google - This is a community project
  • APIs may break - Google can change internal endpoints anytime
  • Rate limits apply - Heavy usage may be throttled

Best for prototypes, research, and personal projects. See Troubleshooting for debugging tips.

What You Can Build

🤖 AI Agent Tools - Integrate NotebookLM into Claude Code, Codex, and other LLM agents. Ships with a root NotebookLM skill for GitHub and npx skills add discovery, local notebooklm skill install support for Claude Code and .agents skill directories, and repo-level Codex guidance in AGENTS.md.

📚 Research Automation - Bulk-import sources (URLs, PDFs, YouTube, Google Drive), run web/Drive research queries with auto-import, and extract insights programmatically. Build repeatable research pipelines.

🎙️ Content Generation - Generate Audio Overviews (podcasts), videos, slide decks, quizzes, flashcards, infographics, data tables, mind maps, and study guides. Full control over formats, styles, and output.

📥 Downloads & Export - Download all generated artifacts locally (MP3, MP4, PDF, PNG, CSV, JSON, Markdown). Export to Google Docs/Sheets. Features the web UI doesn't offer: batch downloads, quiz/flashcard export in multiple formats, mind map JSON extraction.

Use Cases & Recipes

NotebookLM is a grounded engine: Gemini does the heavy reading and answers from your sources with citations. The winning pattern is to let it do the expensive analysis while your agent (Claude Code, Codex, …) orchestrates and handles the final mile — using NotebookLM as a zero-token synthesis + memory layer an agent drives in a loop, and pulling structured artifacts out in bulk and in richer, scriptable formats. Recipes people build on top of this library, grouped by what they use NotebookLM as:

Spend fewer tokens — let NotebookLM do the expensive thinking:

Give your agent memory — persistent, grounded recall:

Turn your sources into answers & artifacts — cited responses, generated media, and exports:

Run it unattended, at scale, or on the go — scheduled, headless, and remote:

These combine ordinary library primitives — see the CLI Reference and Python API. The agent-side glue (skills, scheduling, vault layout) lives in your own setup, not this package. Per-notebook source counts depend on your Google account tier — split across notebooks if you hit a cap.

New here? Start with a walkthrough: Claude Code + NotebookLM = CHEAT CODE (video) · 5 demos + 50 use cases, with prompts.

Ways to Use

Method Best For
Python API Application integration, async workflows, custom pipelines
CLI Shell scripts, quick tasks, CI/CD automation
MCP Server Claude Desktop/Code, Codex, etc. — locally via stdio, or as a self-hosted remote connector (behind a Cloudflare/Tailscale tunnel) reachable from claude.ai and ChatGPT, mobile included.
REST Server Local automation over guarded HTTP routes without spawning a CLI process per call
Agent Integration Claude Code, Codex, LLM agents, natural language automation

REST and MCP servers support multiple profiles on either backend with --profiles (see the MCP guide). URL ingestion can optionally recover failed web pages with source add --fallback-fetch; install the impersonate and markdown extras and see the CLI reference.

API backends

The default backend is the established Web (batchexecute) transport. This release also provides an opt-in Android backend that uses NotebookLM's mobile gRPC service and bearer authentication. Select it for the CLI with --backend android (or NOTEBOOKLM_BACKEND=android), or for the Python API with NotebookLMClient.from_storage(backend="android") / NotebookLMClient(..., backend="android").

Install the Android runtime explicitly; it is intentionally not included in the all extra:

pip install "notebooklm-py[android,browser]"
notebooklm login --master-token --account [email protected]
notebooklm --backend android list --json

Android reads master_token.json from the selected profile and mints short-lived mobile bearer tokens as needed, so typed namespace calls do not depend on a browser-cookie session, Web build labels, or Web RPC IDs. All eleven public namespaces are available without falling back to the Web transport. Because the durable master token is a powerful full-account credential, use a dedicated account and protect the profile carefully. See the Android backend guide for setup and protocol details.

Features

Complete NotebookLM Coverage

Category Capabilities
Notebooks Create, copy (including sources and Studio artifacts), list, rename, delete
Sources URLs, YouTube, files (PDF, text, Markdown, Word, EPUB, audio, video, images), Google Drive, pasted text; refresh, get guide/fulltext
Chat Questions, conversation history, custom personas, suggested starter prompts
Notes Create, list, rename, delete, save chat answers, save conversation history
Source Labels AI-generated or manual topic labels; add/remove source membership; filter sources by label
Research Web and Drive research agents (fast/deep modes) with auto-import
Sharing Public/private links, user permissions (viewer/editor), view level control

Content Generation (All Artifact Types)

Type Options Download Format
Audio Overview 4 formats (deep-dive, brief, critique, debate), 3 lengths, 50+ languages MP3
Video Overview 4 formats (explainer, brief, cinematic, short), 8 visual styles (+ auto/custom), plus a dedicated cinematic-video CLI alias MP4
Slide Deck Detailed or presenter format, adjustable length; individual slide revision PDF, PPTX
Infographic 3 orientations, 3 detail levels PNG
Quiz Configurable quantity and difficulty JSON, Markdown, HTML
Flashcards Configurable quantity and difficulty JSON, Markdown, HTML
Report Briefing doc, study guide, blog post, or custom prompt Markdown
Data Table Custom structure via natural language CSV
Mind Map Hierarchical node tree — two kinds: note-backed JSON or the newer interactive studio map (--kind / MindMapKind) JSON

Beyond the Web UI

Programmatic, batch, and local-file capabilities the API/CLI make easy — several in richer formats, or at a scale, than clicking through the web app:

Installation

The full install guide — six personas (agent, end-user, library, headless, contributor, power-user), optional extras matrix, platform notes — lives in docs/installation.md.

Quickest start (CLI users and AI agents) — install the CLI with uv tool (recommended) or pipx:

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"

Why uv tool / pipx? They install the CLI into its own isolated environment and put notebooklm on your PATH — no dependency clashes with other tools, a one-line upgrade (uv tool upgrade notebooklm-py) or uninstall, and, crucially, they work on modern macOS (Homebrew Python) and Debian/Ubuntu where a system-wide pip install is blocked with error: externally-managed-environment (PEP 668). No uv yet? curl -LsSf https://astral.sh/uv/install.sh | sh (or brew install uv / winget install astral-sh.uv).

Prefer plain pip? It works the same inside a virtualenv (and directly on Windows, where Python isn't externally-managed):

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

As a library (embedded in your app — no Playwright, no Chromium):

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

If playwright install chromium fails on Linux with TypeError: onExit is not a function, see the Linux workaround. Contributors: see CONTRIBUTING.md.

Authentication & Access

Flexible auth for local dev, headless servers, and multi-tenant setups:

Agent Setup

Option 1 — CLI install:

notebooklm skill install

Installs the skill into ~/.claude/skills/notebooklm and ~/.agents/skills/notebooklm.

Option 2 — npx install (via the open skills ecosystem):

npx skills add teng-lin/notebooklm-py

Fetches the canonical SKILL.md directly from GitHub.

Quick Start

NotebookLM Session Demo
16-minute session compressed to 30 seconds

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.m4a
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

Other useful CLI commands:

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 usage                     # Show live compute usage and reset times
notebooklm usage --json              # Export the full usage snapshot, including categories
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

Use --prompt-file PATH with ask, prompt-based generate commands, and source add-research when the text is too long for the shell command line. This reads prompt/query text from a file and is separate from source add ./file.pdf, which still uploads that file as a NotebookLM source.

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.m4a")

        # 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())

Documentation

For Contributors

License

MIT License. See LICENSE for details.

notebooklm-py (teng-lin/notebooklm-py)

Searching Database…

这是什么东西?一个非官方的 Google NotebookLM(现已更名为 Gemini Notebook)Python API 和技能:可以通过 Python 完全以编程方式使用它的各项功能,还提供 CLI、MCP 和 REST 服务器,并支持 Claude Code 和 Codex 等智能体。
它是一个 Python 库、命令行工具,还是别的什么?以上都是:既是用于应用集成的 Python API,也是用于脚本和 CI/CD 的 CLI,还是面向 Claude Code/Desktop 和 Codex 的 MCP 服务器,另外还有一个用于本地 HTTP 自动化的 REST 服务器。
我怎么把它跑起来?安装这个 Python 包(pip install notebooklm-py)即可;它还以技能的形式支持各类智能体,包括 Claude Code 的技能安装、.agents 技能目录,以及 npx skills add 的自动发现。
我需要有付费的 Google 账号或 API 密钥吗?你需要一个能使用 NotebookLM 的 Google 账号——它没有官方 API 密钥:默认的网页后端通过你浏览器里的 Cookie 会话工作,而可选的 Android 后端则用一个长期有效的主令牌来生成访问令牌。
有什么坑——能放心在生产环境里用吗?它调用的是 Google 未公开文档的 API,随时可能悄悄变动,而且高频使用可能触发速率限制——作者建议只用于原型、研究和个人项目。
我用它的时候,数据会去哪里?都会传到 Google——读取、推理和存储都发生在 Google 的基础设施上;只有你明确下载的内容(MP3、PDF、JSON、CSV 等)才会落到你自己的电脑上。
我可以往笔记本里放哪些类型的资料来源?链接、YouTube、Google Drive、粘贴的文本,以及各种文件——PDF、纯文本、Markdown、Word、EPUB、音频、视频、图片——另外还有网页和 Drive 研究智能体,会自动把它们找到的内容导入进来。
它能生成什么?NotebookLM 的所有内容类型:音频概览(播客)、视频概览、幻灯片、测验、抽认卡、信息图、数据表、思维导图和学习指南——并且可以控制格式、风格和篇幅。
它能做哪些 NotebookLM 网页版做不到的事?脚本化的批量操作:批量导入资料来源、批量下载全部生成内容、以多种格式导出测验和抽认卡,以及提取思维导图的 JSON——全部无需打开界面,还能用 cron 定时执行。
为什么大家把它和 Claude Code 这类编程智能体搭配使用?NotebookLM 是一个基于资料来源的引擎——Gemini 会读取你的资料并给出带引用的回答——所以智能体把它当作零令牌消耗的归纳和记忆层,繁重的推理则放在服务端完成。
Creator
teng-lin
Size
47.7 MB
Stars
19.8K
Age
9mo
Commits · 90 Days