agentsclimarketplace

Notebooklm mcp skill

Skill 0SxD/notebooklm-mcp-skill

Single SKILL.md that abstracts three NotebookLM access paths (MCP CLI, Chrome browser, Playwright uploader) into one consistent interface.

Install
npx -y skills add 0SxD/notebooklm-mcp-skill

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Query, inspect, and manage Google NotebookLM notebooks from Claude Code. Trigger whenever the user says "query notebook", "ask notebooklm", "search notebooks", "list notebooks", "notebooklm server info", "get notebook", "inject source into notebook", "what did notebooklm say about", or any request to pull evidence from a named NotebookLM notebook as grounding for an artifact. Covers three access paths: (1) the mcp__notebooklm-mcp__* MCP tool surface (35 tools) when the stdio server is loaded, (2) a Claude-in-Chrome browser route against notebooklm.google.com when the MCP is unavailable, (3) a Playwright fallback using notebooklm_uploader.py for bulk source injection. Always ask the user which notebook to query before any call. Never auto-select. Never fabricate notebook IDs or contents. Every query runs through the 100 Percent Confidence Loop and every synthesized answer passes the Trinity Dialectic gate.

SKILL.md

6.8 KB, ~1.5k tokens by cl100k_base, as published. Nobody here has run it

NotebookLM MCP Skill

Access Google NotebookLM from Claude Code with a single consistent interface, regardless of which underlying path is live this session. Wraps the notebooklm-mcp-cli MCP, the Claude-in-Chrome browser route, and the Playwright uploader.

Operating contract

  • Zero Assumption Mandate: never auto-select a notebook. If the user has not named the target notebook, STOP and ask: "Which notebook should I use for this?"
  • 100 Percent Confidence Loop: clear Architecture, Evidence, and Intent doubts before any query.
  • Trinity Dialectic gate: every synthesized answer scores Logos (evidence), Pathos (intent), and Ethos (alignment) before it is presented. A global score below threshold loops back for revision.
  • Always cite the notebook by name and UUID when synthesizing output.
  • Always log the query and sanitized payload in the session log for the day.

Status block (update each session)

MCP server:   <loaded | not loaded -- using Path B>
MCP version:  <x.y.z>
Auth status:  <current | EXPIRED -- run "nlm login" before any notebook call>
Active path:  <A | B | C>

Access paths, in preference order

Path A, notebooklm-mcp-cli (preferred when loaded)

Package: notebooklm-mcp-cli (upstream github.com/jacob-bd/notebooklm-mcp-cli). Transport: stdio. Registered in ~/.claude.json. 35 tools prefixed mcp__notebooklm-mcp__*.

Binary location (Windows): C:\Users\<local-username>\.local\bin\notebooklm-mcp.EXE

Core tools:

  • mcp__notebooklm-mcp__server_info -- confirm server is live, return version.
  • mcp__notebooklm-mcp__notebook_list -- list every notebook visible to the authenticated account.
  • mcp__notebooklm-mcp__notebook_query -- query a specific notebook.
  • mcp__notebooklm-mcp__source_add, notebook_get, search_notebooks -- depending on session allowlist.

Check presence with ToolSearch select:mcp__notebooklm-mcp__server_info. If the search returns a schema, the MCP is loaded. If not, fall back to Path B.

Auth: nlm.EXE (Google OAuth). Account-scoped. Re-run nlm login after auth expiry or when switching Google accounts.

Path B, Claude in Chrome against notebooklm.google.com

When the MCP is not loaded this session. Uses mcp__Claude_in_Chrome__* tools (navigate, get_page_text, javascript_tool, read_console_messages, read_page).

Recipe:

  1. mcp__Claude_in_Chrome__navigate to the notebook URL the user named.
  2. mcp__Claude_in_Chrome__get_page_text to extract the current panel.
  3. mcp__Claude_in_Chrome__javascript_tool to post a chat query into the notebook's chat surface (inspect the DOM first; selectors drift).
  4. Wait for response, get_page_text again, extract.
  5. Zero-Context Reviewer sanitize the payload (strip conversational filler, formatting noise) before passing it to the main context.

Never run headless. Inherits the logged-in Chrome session.

Path C, Playwright uploader fallback

Script: <project-root>/notebooklm_uploader.py (see notebooklm-batch-uploader). Use: bulk source injection (adding books or markdown to notebooks at scale), not for single-query grounding. Requires pip install playwright and playwright install chromium. Uses channel="chrome" and headless=False.

Canonical workflow

  1. Target verification. Did the user name the notebook? If not, STOP and ask.
  2. Access path probe. ToolSearch for MCP tool schema. If missing, use Path B.
  3. Confidence loop. Three questions: target identity, expected evidence type, use of the evidence downstream.
  4. Query. Path A or Path B. Record the exact prompt, session ID, notebook ID in a session log.
  5. Sanitize. Zero-Context Reviewer scavenge pass on the returned payload.
  6. Synthesize. Answer with citations back to the notebook source.
  7. Trinity Dialectic. Logos (evidence quality), Pathos (intent alignment), Ethos (no hallucination). Below threshold: loop back, revise.
  8. Log. Append a row to today's session log.

Session log template

Append to session_logs/session_log_YYYY-MM-DD.md:

## Entry [N]
- **Notebook (named by user):** [name + UUID]
- **Query:** [verbatim text passed]
- **Session ID:** [from MCP or "browser-{date}-{n}" for Path B]
- **Raw payload (ZCR sanitized):** [stripped content]
- **Trinity scores:** Logos=[0-5] Pathos=[0-5] Ethos=[0-5]  -> [PROCEED | LOOP_BACK]
- **Gaps / follow-ups:** [list]

Must do

  • Always ask which notebook to query when unspecified.
  • Always cite the notebook by name and UUID when synthesizing.
  • Always log the query plus sanitized payload in the session log for the day.
  • Always Trinity-gate the synthesis before replying.
  • Always reuse an existing session ID if continuing a thread in the same notebook on the same day.

Must NOT do

  • Never auto-select a notebook.
  • Never fabricate notebook IDs, UUIDs, or content.
  • Never bypass the Trinity Dialectic gate on synthesized output.
  • Never write raw unsanitized MCP output to long-term memory. Stage in a scratch/research directory first; promote only after review.

Trigger phrases (non-exhaustive)

"query notebook", "ask notebooklm", "search notebooks", "list notebooks", "notebooklm server info", "get notebook", "inject source into notebook", "what did notebooklm say about", "cite from notebooklm", "pull evidence from", "grounding from notebook", "add source to notebook".

Verification checklist before use

  • Access path probed this session? (ToolSearch select:mcp__notebooklm-mcp__server_info)
  • User named the notebook?
  • Session log for today exists or is about to be created?
  • Auth confirmed current? (run nlm login if expired)

References

  • Upstream MCP: github.com/jacob-bd/notebooklm-mcp-cli
  • Batch uploader: notebooklm-batch-uploader (sibling repo)
  • Book organizer: notebooklm-book-organizer (sibling repo)
  • Research protocol: notebooklm-research-protocol (sibling repo)

What ships with it: 3 files

3.4 KB alongside SKILL.md

Gives 0 of the 12 instructions most mcp tooling skills give in ~1.5k tokens

Counted across 638 of the 750 authors here whose files we hold, read 2026-08-07

  • Create ten complex or independent read-only evaluation questionsin 69 of 638, across 15 files
  • Test servers using MCP Inspectorin 61 of 638, across 19 files
  • Provide actionable error messages with specific next stepsin 54 of 638, across 12 files
  • Prioritize comprehensive API coverage over specific workflows or workflow toolsin 54 of 638, across 12 files
  • Use TypeScript and Streamable HTTP for remote servers or clientsin 54 of 638, across 8 files
  • Define structured output schemas where possiblein 50 of 638, across 8 files
  • Use Zod or Pydantic for input schemasin 47 of 638, across 5 files
  • Fetch MCP specification pages with markdown suffixin 46 of 638, across 4 files
  • Load framework documentation using WebFetchin 45 of 638, across 3 files
  • Verify each evaluation answer independentlyin 45 of 638, across 3 files
  • Implement API client with authentication and paginationin 45 of 638, across 3 files
  • Define input schemas with validationin 27 of 638, across 9 files

Said here and by no other author read

  • ask which notebook to query if unspecified
  • probe the access path each session
  • clear architecture, evidence, and intent doubts before query
  • record the query and session ID in a log
  • sanitize the returned payload
  • cite the notebook by name and UUID

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.