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-pyandnotebooklm-mcp-cli. Do not go looking for a “gemini-notebook” package on PyPI and install something random. - One MCP server renamed itself.
notebooklm-mcp-clinow registers its server asgemini-notebook-mcp. Its setup wizard flags oldnotebooklm-mcpentries under “Needs a fix” and renames them. If a 2025 tutorial tells you to call the servernotebooklm, 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
nlmREADME 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
| Route | Tool | How it talks to NotebookLM | Works in | Best for |
|---|---|---|---|---|
| Skill + CLI | notebooklm-py (notebooklm command) | Unofficial web API with saved Google cookies | Claude Code, Codex, any agent that can run shell commands | Most solo devs; lightest setup |
| MCP server | notebooklm-mcp-cli (nlm + notebooklm-mcp) | Unofficial internal API, saved browser profile | Claude Code, Claude Desktop, Codex, Cursor, Gemini CLI, Windsurf, Cline, OpenCode and more | Using one login across several AI tools |
| Chrome plugin | notebooklm-connector in the claude-code-zero marketplace | Drives your real Chrome through claude --chrome | Claude Code with the Claude in Chrome extension | No 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:
- Do not hardcode cookies in your MCP config. When
NOTEBOOKLM_COOKIESis set it wins over your saved login, so after the cookies expire,nlm logincannot fix the running server. Remove it and usenlm login. - Turn on protected storage on a personal laptop:
nlm auth storage set protectedkeeps 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 withnpx 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
| Symptom | Likely cause | Fix |
|---|---|---|
Not logged in. | No saved session for this profile | notebooklm login, then notebooklm auth check --test |
| Works on your laptop, fails on a VPS | Server sessions can expire sooner and there is no browser to re-auth | Run it on your own machine; the nlm docs do not recommend a VPS as a persistent setup |
“Authentication expired” right after nlm login | NOTEBOOKLM_COOKIES hardcoded in the MCP config | Remove the env var, restart the AI tool |
pip install fails with externally-managed-environment | System Python on Debian/Ubuntu or Homebrew blocks global installs | Use uv tool install or pipx as the README suggests |
| Claude still reads the docs itself | No rule telling it to ask the notebook | Add the CLAUDE.md section above |
| Skill missing after an update | Installed copy is old or was removed | notebooklm skill status, then notebooklm skill install |
| Skill does nothing in Claude on the web | Web sandboxes have no network for browser automation | Use 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.