mrkeyoor.com_
Wed 02 Sept 16:56 UTC
LLM Toolsevaluationupdated 02 Sept 2026

notebooklm-py review

notebooklm-py is an unofficial Python client for Google's NotebookLM, now branded Gemini Notebook. It lets applications, shell scripts, MCP clients, and coding agents create notebooks, add sources, ask cited questions, generate media or study material, and download the results.

trackingstars / 7d
Verdict

Our notebooklm-py suite reached 76% before our 900-second cap, after a 31-second install and 7-second build, so the package is easy to obtain but slow to verify fully. Use it for personal research automation, prototypes, and agent tools where NotebookLM's cited answers and generated artifacts save real work. Avoid making it an irreplaceable production dependency until an official Google contract exists.

We ran it

Lab card: what happened when we ran notebooklm-pyScreenshot of notebooklm-py (github.com/teng-lin/notebooklm-py)
Install✓ · 31s132 packages · 377 MB
Build✓ · 7s
Tests✗ timed out · 900sran, no count parsed
Known vulns0(pip-audit)
Repo1842 files~534,077 lines of source · 107.1 MB · 13 CI workflows · tests dir

Answers from our run

Does notebooklm-py build from source?

Dependencies installed in 31 seconds (132 packages), and the build succeeded in 7 seconds. We cloned commit 558ab48 into a clean Debian container with 3 CPUs and no project-specific setup.

Do notebooklm-py's tests pass?

We could not finish them: the suite was still running after 15 minutes in our container.

Does notebooklm-py have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use notebooklm-py?

Production systems that require an official API, SLA, or advance deprecation notice: the project uses undocumented Google services that can change without warning.

What are the alternatives to notebooklm-py?

RAGFlow, Haystack, Open WebUI. Our notebooklm-py suite reached 76% before our 900-second cap, after a 31-second install and 7-second build, so the package is easy to obtain but slow to verify fully.

Setup3/531-second install; browser login and account secrets add real work
Docs5/5Detailed API, CLI, MCP, auth, security, quota, and upgrade guides
Community4/519,079 stars with source and issue activity on September 2
Maturity3/5Beta v0.8.1, 0 audit findings, but the suite timed out

Who it’s for

Python developers automating a NotebookLM workflow that is already useful by hand.
Researchers who need repeatable source imports, cited answers, and bulk artifact downloads.
MCP users who want Claude Code, Codex, or another agent to query a source-grounded notebook.
Personal automation builders who accept Google-hosted processing and can repair authentication when sessions change.

Who it’s NOT for

Production systems that require an official API, SLA, or advance deprecation notice: the project uses undocumented Google services that can change without warning.
Organizations that cannot treat local auth files as full Google-account secrets: the security guide says storage_state.json holds live cookies and master_token.json can mint new sessions.
Teams that need documents and memory to remain on their own infrastructure: the README says storage and recall live on Google's systems.
Jobs that cannot tolerate account-tier quotas, throttling, or long waits: the README warns about rate limits, and v0.8.1 changed the deep-research wait default to 1,800 seconds.
Operators relying on log scrubbing for every Google key shape today: issue #2253 documents a gap for newer AQ-prefixed keys, while the proposed fix remained an open PR on 2026-09-02.

Setup reality

Our sandbox installed 132 Python packages in 31 seconds and used 377 MB. The build passed in 7 seconds. Pytest reached 76% and then timed out at the 900-second cap without a final test count. Pip-audit found 0 known vulnerabilities. The 107.1 MB checkout held 1,842 files and about 534,077 source lines.

Python 3.10 through 3.14 is supported. The base library does not need Playwright, but the normal CLI login uses the browser extra and downloads about 170 MB of Chromium on first use. Authentication needs a Google account; unattended use can store a master token that the project says should belong to a dedicated account.

The client speaks undocumented Google Web or Android services, so endpoint changes and rate limits are runtime concerns. Local profiles hold account-equivalent cookies or tokens. MCP and REST deployment add network access, bearer authentication, profile isolation, and tunnel configuration to the basic install.

Five interfaces expose one unofficial NotebookLM client

notebooklm-py provides 5 ways into the same service: an async Python API, CLI, MCP server, REST server, and agent skill. The shared client can create notebooks, add URLs or files, ask questions with citations, manage notes and sharing, run web or Drive research, and download generated results. That is much broader than a wrapper around the chat box.

The artifact surface is the main practical draw. One notebook can produce audio, video, slide decks, reports, quizzes, flashcards, infographics, tables, and mind maps, with structured downloads for several formats. Batch exports and source full-text access remove repetitive browser work. Google still performs the reading and generation, so the library automates NotebookLM rather than bringing its models or source index onto your machine.

Browser login adds about 170 MB before first use

The quickest CLI setup installs the browser extra with uv tool or pipx, then opens a Google sign-in. The README says first use downloads about 170 MB of Chromium. Python 3.10 through 3.14 is supported, and embedding the base library avoids Playwright. Other authentication paths can import browser cookies or use a master token for a headless server.

Those shortcuts carry a serious secret boundary. The security guide calls storage_state.json and master_token.json account-equivalent because one contains live cookies and the other can mint sessions. It recommends a dedicated account for unattended work, restrictive profile access, loopback-only browser-debug endpoints, and immediate revocation after suspected exposure. A remote MCP connector therefore needs more care than placing the command behind a tunnel.

What happened when we ran it

Our sandbox installed commit 558ab48 in 31 seconds. It added 132 Python packages and occupied 377 MB on disk. The build completed successfully in 7 seconds. The checkout itself was 107.1 MB with 1,842 files and about 534,077 lines of source.

Pytest did not finish within the 900-second cap. The last output showed ordinary progress dots reaching 76%, but no final passed, failed, or skipped count. The tail also did not name a failing case or an error. The test result is a timeout, and the supplied log does not establish whether one case stalled or the remaining suite simply needed more time.

Pip-audit found 0 known vulnerabilities in the installed dependency set. The repository had 13 CI workflow files, a tests directory, and no Dockerfile. Our test method used a fresh unprivileged Debian container with 3 CPUs, 8 GB of RAM, Python 3.12, and no secrets.

Version 0.8.1 still depends on undocumented Google RPCs

Version 0.8.1 documents a stable public Python surface within a major version, yet the project remains in 0.x and may remove deprecated APIs in a later minor release. More importantly, Google gives this client no API stability promise, deprecation notice, SLA, or support. A renamed RPC method or changed response can become a patch release here and an immediate outage in your automation.

Quotas belong to Google accounts, not this package. The README warns that heavy use may be throttled, and its quota guide says live remaining counts and reset times are unavailable through known RPCs. Release v0.8.1 also raised the deep-research CLI wait default from 300 to 1,800 seconds. Scheduled jobs need explicit timeouts, partial-result handling, retry limits, and an owner who can inspect the account when a server response changes.

MCP and Claude Code access widen the credential boundary

The repository ships an MCP server and a Claude Code skill, and its installer can place instructions in both Claude and .agents skill directories. That makes a notebook useful as a cited project memory for coding agents. It also gives the agent tools that create, share, import, generate, download, and delete data. Confirmation gates and a dedicated Google profile should be part of the setup, especially for remote connectors.

Issue 2253 documents a redaction gap for newer Google API keys beginning with AQ. The reporter tested a synthetic key and explicitly said it was not evidence of a live leak. Open PR 2254 adds the missing pattern. Until that fix ships, operators who record RPC cassettes or log failure payloads should avoid placing such keys in the process and inspect diagnostics before sharing them.

29 open items accompany same-day source activity

The last source push was September 2, 2026, and GitHub listed 29 open issues and pull requests that day. Release v0.8.1 arrived on August 14 with collection support, richer citations, auth recovery work, and several compatibility aliases scheduled through v0.x. The small combined queue and same-day protocol investigation show active maintenance, although they cannot turn an undocumented upstream into a contracted API.

notebooklm-py is unusually capable for automating a consumer research product. The 31-second install, 0 audit findings, and detailed security documentation make a contained trial easy to justify. The 900-second test timeout and Google-owned protocol set the boundary: keep raw sources recoverable elsewhere, isolate credentials, pin the package, and design every scheduled or agent-driven run so a NotebookLM change can fail without taking the rest of the system with it.

Alternatives

ProjectWhat it isPick it when
RAGFlow gh↗A self-hosted document ingestion and retrieval engine with grounded chat and agent features.pick this instead when documents, indexes, and model traffic must stay in infrastructure you control.
Haystack gh↗A Python framework for assembling retrieval, generation, routing, memory, and agent pipelines.pick this instead when you want to choose the models, vector store, and retrieval logic yourself.
Open WebUI gh↗A self-hosted interface for local and hosted language models with document knowledge features.pick this instead when an interactive private chat surface matters more than NotebookLM artifact automation.

What people are saying

  1. [github-trending] teng-lin/notebooklm-py

Sources

  1. notebooklm-py README
  2. notebooklm-py v0.8.1 release
  3. Installation guide
  4. Security model
  5. API stability and versioning
  6. MCP server guide
  7. NotebookLM quota reference
  8. AQ-prefixed key redaction gap

More llm tools reviews

a2ui · web-llm · hello-agents · geo-seo-claude · OpenResearch · rig · the whole board →