Claude Code + NotebookLM (Now Gemini Notebook): 3 Ways to Connect Them and When It Actually Saves Tokens (2026)

Short answer: If you searched for claude code notebook lm, you want Claude Code to ask your NotebookLM notebooks questions without you copy-pasting answers between a browser tab and the terminal. There is no official Google connector for personal accounts, so every route is a community tool that signs in with your Google session: a skill plus CLI (notebooklm-py), an MCP server (notebooklm-mcp-cli, the nlm command), or a Chrome-driven plugin. For a solo founder the CLI-plus-skill route is the lightest. It is worth it when you have a pile of docs that would otherwise be pasted into Claude’s context, and not worth it for a single README.

Last updated: November 14, 2026. NotebookLM was renamed Gemini Notebook by Google on July 16, 2026; the tools, package names and most search results still say NotebookLM, so this post uses both names. Commands come from each project’s README. I installed notebooklm-py 0.8.6 and notebooklm-mcp-cli 0.16.4 in a clean Python virtual environment on a Linux box on November 14, 2026, and the version and “not logged in” output below is copied from that run. I did not connect a real Google account there, so there are no “my notebook answered in X seconds” numbers. Forum notes are paraphrased from r/ClaudeAI, r/notebooklm and Hacker News.

First, the rename: NotebookLM is Gemini Notebook now

Google announced on July 16, 2026 that NotebookLM is now called Gemini Notebook. It is the same standalone product at the same job: you load sources (PDFs, Google Docs, URLs, YouTube, pasted text), and Gemini answers questions grounded in those sources with numbered citations. Old notebook links redirect automatically.

Why this matters for your setup:

  • Package names did not change. You still install notebooklm-py and notebooklm-mcp-cli. Do not go looking for a “gemini-notebook” package on PyPI and install something random.
  • One MCP server renamed itself. notebooklm-mcp-cli now registers its server as gemini-notebook-mcp. Its setup wizard flags old notebooklm-mcp entries under “Needs a fix” and renames them. If a 2025 tutorial tells you to call the server notebooklm, that still works as a name you choose, but the wizard will want to tidy it.
  • Plan limits are listed under the new name. Google’s plans page lists 100 notebooks per user and 50 sources per notebook without a paid AI plan, 200 notebooks and 100 sources per notebook on Plus, and 500 notebooks and 300 sources per notebook on Pro. Chat quotas are not spelled out per day on that page; the nlm README says the free tier is roughly 50 queries a day, so treat that as a community estimate.

Why pair Claude Code with NotebookLM at all

The pitch you will see in every README is “zero-token research.” Here is the honest version.

When you ask Claude Code about a big doc set (an API reference, a pile of customer interviews, ten PDFs of a payment provider’s docs), it reads files into its own context window. That is where the tokens go. NotebookLM does the reading on Google’s side and returns a short, cited answer. Claude Code then only spends tokens on your question and that answer.

The notebooklm-py README frames it as letting Gemini do the heavy analysis while your agent orchestrates. Forum posts say the same thing in plainer words: people were tired of tabbing to the browser, typing the question, and pasting the answer back.

Where it genuinely helps a vibe coder or indie dev:

  • Third-party docs you keep re-reading. Stripe, Supabase or a niche SDK’s docs, loaded once as URLs.
  • Research before you build. Competitor landing pages, Reddit threads you saved, a few YouTube teardown videos.
  • Project memory that is not code. Decisions, meeting notes, a PRD. Code still belongs in the repo and CLAUDE.md.

Where it does not help:

  • Your own codebase. Claude Code already searches it well; uploading source files to NotebookLM is slower and goes stale the moment you commit.
  • One or two short files. The round trip costs more time than reading them.
  • Anything private you would not paste into a Google product. Adding a source uploads it to Google.

If token cost is the real problem, read how to reduce Claude Code token usage first. A trimmed CLAUDE.md and smaller reads often fix the bill without adding a dependency.

The 3 ways to connect them

RouteToolHow it talks to NotebookLMWorks inBest for
Skill + CLInotebooklm-py (notebooklm command)Unofficial web API with saved Google cookiesClaude Code, Codex, any agent that can run shell commandsMost solo devs; lightest setup
MCP servernotebooklm-mcp-cli (nlm + notebooklm-mcp)Unofficial internal API, saved browser profileClaude Code, Claude Desktop, Codex, Cursor, Gemini CLI, Windsurf, Cline, OpenCode and moreUsing one login across several AI tools
Chrome pluginnotebooklm-connector in the claude-code-zero marketplaceDrives your real Chrome through claude --chromeClaude Code with the Claude in Chrome extensionNo extra install beyond Chrome; occasional queries

All three are community projects. None is made by Google or Anthropic. Two of their READMEs say plainly that they use undocumented APIs that can change without notice and may not line up with Google’s terms. The only official programmatic route is Gemini Notebook for enterprise through Google Cloud, which is a business product, not something you will buy for a side project.

Way 1: notebooklm-py skill (recommended starting point)

The project recommends installing the CLI with uv tool or pipx so it gets its own environment:

uv tool install "notebooklm-py[browser]"   # or: pipx install "notebooklm-py[browser]"
notebooklm login                           # first run downloads Chromium (~170 MB), then Google sign-in
notebooklm auth check --test --json        # expect "status": "ok"
notebooklm skill install                   # adds the skill for Claude Code and .agents

According to the README, notebooklm skill install puts the skill in ~/.claude/skills/notebooklm and ~/.agents/skills/notebooklm. Run notebooklm skill status later to check it is still installed and current.

Here is what a fresh install looks like before you log in. This is the real output from the box:

$ notebooklm --version
NotebookLM CLI, version 0.8.6 (956400aa)
$ notebooklm list
Not logged in.

Checked locations:
  • Storage file: ~/.notebooklm/profiles/default/storage_state.json
  • NOTEBOOKLM_AUTH_JSON: not set

Options to authenticate:
  1. Run: notebooklm login
  2. Set NOTEBOOKLM_AUTH_JSON env var (for CI/CD)
  3. Use --storage /path/to/file.json flag

That storage_state.json file is your Google session. Treat it like a password: never commit it, never paste it into a chat, and keep it out of any folder you sync to a public repo.

The everyday commands you or Claude will run:

notebooklm create "Stripe billing docs"
notebooklm use <notebook_id>               # partial IDs work
notebooklm source add "https://docs.stripe.com/billing/subscriptions/overview"
notebooklm source add "./notes/pricing-decisions.md"
notebooklm ask "How do I handle a failed renewal payment? Cite sources." --json
notebooklm ask "Summarize the proration rules" --save-as-note
notebooklm usage                           # live usage and reset times

Pitfall worth knowing before Claude runs it for you: notebooklm ask --new starts a fresh conversation by deleting the notebook’s current server-side conversation. The CLI’s own help text calls it destructive and says the turns are not recoverable. It asks for confirmation unless --yes is passed. Tell Claude never to add --yes to --new without asking you (there is a CLAUDE.md line for this below).

Way 2: notebooklm-mcp-cli as an MCP server

If you jump between Claude Code, Codex and Cursor, an MCP server lets them all share one Google login. The nlm README’s quick start is three commands:

uv tool install notebooklm-mcp-cli
nlm login
nlm setup                     # interactive wizard

For a script or a dev container, skip the wizard and name the client:

nlm setup add claude-code
# or add it by hand:
claude mcp add gemini-notebook-mcp -- notebooklm-mcp

On the box, the examples in nlm setup add --help covered claude-code, claude-desktop, gemini, github-copilot, cursor, windsurf, cline, antigravity, opencode, json (prints a snippet for anything else) and all; the README also shows nlm setup add codex. The README says the wizard backs up every config file to ~/.notebooklm-mcp-cli/backups/ before changing it, and tells you to fully quit Claude Desktop first because it can overwrite its settings while open.

Two auth details from its docs that save real debugging time:

  1. Do not hardcode cookies in your MCP config. When NOTEBOOKLM_COOKIES is set it wins over your saved login, so after the cookies expire, nlm login cannot fix the running server. Remove it and use nlm login.
  2. Turn on protected storage on a personal laptop: nlm auth storage set protected keeps the login encrypted with the key in your OS keychain. Headless servers cannot use this because there is no desktop keystore.

The old forum complaint about this server was sessions dying every 20 minutes or so. The maintainer said in an r/notebooklm post that a later release added automatic background re-auth from a saved Chrome profile, and the current docs describe cookies lasting a few weeks with automatic refresh. Google can still demand a fresh interactive sign-in at any time.

The MCP route has a cost the skill route does not: every MCP server adds tool definitions to Claude’s context at the start of a session. If you already run several servers, check the MCP servers worth keeping before adding another.

Way 3: let Claude drive Chrome

A plugin posted on r/notebooklm takes a different path: it uses Claude Code’s built-in Chrome integration and your already signed-in Google account, so there is no separate browser engine or cookie file. Setup from that post:

# start Claude Code with the Chrome integration (needs the Claude in Chrome extension)
claude --chrome

/plugin marketplace add LeeJuOh/claude-code-zero
/plugin install notebooklm-connector@claude-code-zero

Then you register a notebook URL and query it by name. Its author lists the main limitation: each query takes about 30 to 60 seconds because it goes through the real NotebookLM page. It also checks whether a multi-part question was fully answered and sends up to three follow-ups if not, which is a nice idea to copy even if you use another route.

Which projects to skip

  • PleasePrompto/notebooklm-skill shows up near the top of search results, but its README says the repository was archived in September 2026 and gets no more fixes. Its sibling notebooklm-mcp (installed with npx notebooklm-mcp@latest) is a separate project; check its repo activity before you depend on it.
  • “Rotate Google accounts when you hit the cap” advice appears in a few posts. Skip it. It is exactly the kind of use that gets accounts flagged, and if you are hitting the cap daily, you should pay for a plan or rethink the workflow.

A workflow that earns its keep: docs notebook + CLAUDE.md rule

The pattern that makes sense for a small product is one notebook per external dependency, plus a rule that tells Claude when to ask it.

Step 1. Create the notebook and load sources once:

notebooklm create "payments-docs"
notebooklm use <id>
notebooklm source add "https://docs.stripe.com/billing/subscriptions/overview"
notebooklm source add "https://docs.stripe.com/webhooks"
notebooklm source add "./docs/our-pricing-rules.md"

Step 2. Add a short section to your project’s CLAUDE.md (see the CLAUDE.md template if you do not have one yet):

## External docs (NotebookLM)
- For Stripe billing or webhook questions, run:
  notebooklm ask -n <payments-notebook-id> "<question>" --json
  and use only the cited answer. Do not fetch or read the Stripe docs pages yourself.
- If the answer has no citation for a claim, say so and ask me before coding it.
- Never run `notebooklm ask --new --yes`, `notebooklm delete`, or any source delete without asking me first.
- Never print, copy, or commit ~/.notebooklm/ files.

Step 3. A copy-paste prompt for Claude Code when you start a feature:

Before writing code for <feature>, ask the payments-docs notebook 2-4 specific
questions you need answered (one per notebooklm ask call, --json).
Show me each question and a one-line summary of the cited answer.
Then write a short plan that names which answer each step relies on.
Do not start coding until I reply "go".

This keeps the expensive reading on Google’s side, keeps citations visible, and keeps you in the loop for anything destructive. It pairs well with a compound engineering loop if you already run one: the “plan” step asks the notebook, and the “compound” step saves the lesson with --save-as-note.

What it costs, honestly

  • NotebookLM itself: free tier with the limits above; higher limits on Google AI Plus, Pro and Ultra plans. If you already pay for Google AI Pro for Gemini, you already have the bigger NotebookLM limits.
  • Claude tokens: you still pay for Claude reading the question and the answer, plus MCP tool definitions if you use Way 2. What you save is the doc reading. On a small doc set the saving is small; on 20+ long sources it can be most of the session’s reading.
  • Time: every NotebookLM call is a network round trip, and the Chrome route is the slowest at 30 to 60 seconds per query by its author’s account. Batch your questions.
  • Maintenance: unofficial APIs break. Pin a version that works (uv tool install "notebooklm-py[browser]==0.8.6", for example) and upgrade on purpose, not mid-feature.

If what you actually want is a cheaper coding agent rather than cheaper doc reading, look at free Claude Code alternatives or a local AI agent instead.

Common problems and fixes

SymptomLikely causeFix
Not logged in.No saved session for this profilenotebooklm login, then notebooklm auth check --test
Works on your laptop, fails on a VPSServer sessions can expire sooner and there is no browser to re-authRun it on your own machine; the nlm docs do not recommend a VPS as a persistent setup
“Authentication expired” right after nlm loginNOTEBOOKLM_COOKIES hardcoded in the MCP configRemove the env var, restart the AI tool
pip install fails with externally-managed-environmentSystem Python on Debian/Ubuntu or Homebrew blocks global installsUse uv tool install or pipx as the README suggests
Claude still reads the docs itselfNo rule telling it to ask the notebookAdd the CLAUDE.md section above
Skill missing after an updateInstalled copy is old or was removednotebooklm skill status, then notebooklm skill install
Skill does nothing in Claude on the webWeb sandboxes have no network for browser automationUse local Claude Code; for Claude Desktop chat, notebooklm skill package builds an uploadable skill archive

If you work on a remote box over SSH, keep the NotebookLM login on the machine where the browser profile lives; the Claude Code SSH guide covers the setups where that matters.

My take

I like this pairing for one specific job: turning a wall of third-party docs into short, cited answers so the coding agent spends its context on your code. The skill-plus-CLI route is the one I would start with, because it is just shell commands Claude can run and you can read. I would only add the MCP server if you really use three or more AI tools, and I would not build a business-critical pipeline on any of these, because the APIs underneath are unofficial and the product itself was renamed four months ago, which is a good reminder of how fast the ground moves.

The biggest mistake I see in forum posts is treating NotebookLM as magic memory for everything. It is a reader for sources you choose. Keep code context in the repo, keep rules in CLAUDE.md, and use the notebook for the stuff that is too big or too external to belong in either.

FAQ

Is there an official Claude Code NotebookLM integration?

No. For personal Google accounts, every integration is a community project that uses your Google session. The official programmatic option is Gemini Notebook for enterprise through Google Cloud.

Does Gemini Notebook still work with these NotebookLM tools?

Yes. notebooklm-py notes that the July 2026 rebrand did not change the underlying service and the library works unchanged. notebooklm-mcp-cli now names its server gemini-notebook-mcp.

Skill or MCP server: which should I pick?

Pick the skill (notebooklm skill install) if you mainly use Claude Code or Codex in a terminal. Pick the MCP server if you want the same login in Claude Desktop, Cursor and other tools. A skill only adds a short description to context until it is used; an MCP server adds its tool definitions to every session.

Does it really use zero tokens?

No. NotebookLM’s reading does not count against your Claude usage, but Claude still reads your question and the returned answer. It saves the tokens Claude would have spent reading the source documents.

Is it safe to give Claude access to my Google account this way?

The tools store a Google session on your machine, so anyone who gets that file can act as you in NotebookLM. Use protected storage where offered, never commit the session files, and add CLAUDE.md rules that block deletes. Do not upload confidential sources.

Can I use this with Codex or Cursor instead?

Yes. notebooklm-py ships Codex guidance and an .agents skill folder, and nlm setup add cursor (or codex) wires the MCP server into those tools. See Claude Code vs Codex vs Cursor if you are still choosing an agent.

For more Claude Code setup, see the Claude Code skills guide and the full AI workflow for indie products.

Leave a Comment