<div align="center">
NotebookLM REST API + MCP server
Automate Google NotebookLM at scale. 33-endpoint HTTP REST API for n8n / Zapier / Make / curl, plus an MCP server for Claude Code / Cursor / Codex. Citation-backed Q&A, full Studio generation (audio Β· video Β· infographic Β· report Β· presentation Β· data table), multi-account rotation with auto-reauth across personal and Google Workspace accounts.
v3.0.0 β major refactor: dual transport. The data plane now drives NotebookLM's internal
batchexecuteRPC API (the same one the web app calls) instead of scraping the DOM β immune to UI rebrands, 10-100Γ faster (list notebooks ~1 s vs ~30 s, generate a report ~13 s vs minutes), and more correct. The Playwright browser is kept as an automatic fallback (NOTEBOOKLM_TRANSPORT=domforces it) plus login / auto-reauth, so nothing breaks if an internal endpoint shifts β both paths ship permanently for robustness. Adds 5 new tools: notebook sharing, study aids (flashcards / quiz), mind maps, source labels, and web research / source discovery. Still batch-tested on overnight runs of 1 000+ questions. See the changelog. Compare withPleasePrompto/notebooklm-mcpfor when this project is the right pick (REST API, full Studio, auto-reauth).
<!-- Badges -->
      
   
<!-- End Badges -->
</div>
---
Features
Q&A with Citations
- Ask questions to NotebookLM and get accurate, citation-backed answers
- Source citation extraction with 5 formats: none, inline, footnotes, json, expanded (97% excerpt success rate)
- Session management for multi-turn conversations with auto-reauth on session expiry
Content Generation
Generate multiple content types from your notebook sources:
| Content Type | Formats | Options | | ------------------ | ------------------------ | ---------------------------------------------- | | Audio Overview | Podcast-style discussion | Language (80+), custom instructions | | Video | Brief, Explainer | 6 visual styles, language, custom instructions | | Infographic | Horizontal, Vertical | Language, custom instructions | | Report | Summary, Detailed | Language, custom instructions | | Presentation | Overview, Detailed | Language, custom instructions | | Data Table | Simple, Detailed | Language, custom instructions |
Video Visual Styles: classroom, documentary, animated, corporate, cinematic, minimalist
Content Download
- Download Audio β WAV audio files
- Download Video β MP4 video files
- Download Infographic β PNG image files
- Text-based content (report, presentation, data_table) is returned in the API response
Source Management
- Add sources: Files (PDF, TXT, DOCX), URLs, Text, YouTube videos, Google Drive
- List sources: View all sources in a notebook
Notebook Library
- Multi-notebook management with validation and smart selection
- Auto-discovery: Automatically generate metadata via NotebookLM queries
- Search notebooks by keyword in name, description, or topics
- Scrape notebooks: List all notebooks from NotebookLM with IDs and names
- Bulk delete: Delete multiple notebooks at once
Accounts & Localization
- Personal _and_ Google Workspace accounts β recognizes both NotebookLM hosts (
notebooklm.google.comand thenotebook.google.comWorkspace alias), so Workspace sessions authenticate cleanly instead of looping on "session expired" - UI-language-aware β drives NotebookLM whether its interface is in English, French, German, or Japanese (
enΒ·frΒ·deΒ·ja); add a language in a single JSON file
Integration Options
- MCP Protocol β Claude Code, Cursor, Codex, any MCP client
- HTTP REST API β n8n, Zapier, Make.com, custom integrations
- Docker β Isolated deployment with Docker or Docker Compose
- RTFM retrieval layer β
/batch-to-vaultwrites citation-backed answers as markdown + JSON sidecars (nblm-answer-v1schema), indexable by RTFM (FTS5 + semantic) for unlimited offline queries. Ideal for academic / SOTA workflows. Guide.
---
Quick Start
Option 0 β Claude Code marketplace (one-liner, recommended for Claude Code users)
The fastest way to get NotebookLM into Claude Code. Distributed via the roomi-fields/claude-plugins marketplace alongside RTFM (the retrieval companion β see RTFM integration guide):
/plugin marketplace add roomi-fields/claude-plugins
/plugin install notebooklm@roomi-fields
That registers the MCP server, runs npx -y @roomi-fields/notebooklm-mcp@<pinned-version> automatically (Node β₯ 18 required), and lets you upgrade with two commands when a new release ships: /plugin marketplace update roomi-fields then /reload-plugins. Then run npm run setup-auth once to log into Google. To install RTFM at the same time: /plugin install rtfm@roomi-fields.
Option 1 β HTTP REST API (n8n, Zapier, Make, curl, any HTTP client)
git clone https://github.com/roomi-fields/notebooklm-mcp.git
cd notebooklm-mcp
npm install && npm run build
npm run setup-auth # One-time Google login
npm run start:http # Start REST API on port 3000
# Citation-backed Q&A, single curl, JSON response
curl -X POST http://localhost:3000/ask \
-H 'Content-Type: application/json' \
-d '{"question": "Summarize chapter 3", "notebook_id": "your-id", "source_format": "json"}'
The full surface is 33 documented endpoints β see the REST API reference. For overnight batches of 1 000+ questions, see the batch pattern.
Option 2 β MCP Mode (Claude Code, Cursor, Codex)
# Build (same package, MCP transport)
git clone https://github.com/roomi-fields/notebooklm-mcp.git
cd notebooklm-mcp
npm install && npm run build
# Claude Code
claude mcp add notebooklm node /path/to/notebooklm-mcp/dist/index.js
# Cursor β add to ~/.cursor/mcp.json
{
"mcpServers": {
"notebooklm": {
"command": "node",
"args": ["/path/to/notebooklm-mcp/dist/index.js"]
}
}
}
Then say: _"Log me in to NotebookLM"_ β Chrome opens β log in with Google.
Option 3 β Docker (NAS, server, headless)
# Build and run
docker build -t notebooklm-mcp .
docker run -d --name notebooklm-mcp -p 3000:3000 -p 6080:6080 -v notebooklm-data:/data notebooklm-mcp
# Authenticate via noVNC
# 1. Open http://localhost:6080/vnc.html
# 2. Run: curl -X POST http://localhost:3000/setup-auth -d '{"show_browser":true}'
# 3. Login to Google in the VNC window
See Docker Guide for NAS deployment (Synology, QNAP).
---
Documentation
Full docs site: <https://roomi-fields.github.io/notebooklm-mcp/> Β· OpenAPI 3.1 spec
| Guide | Description | | -------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | Installation | Step-by-step setup for HTTP and MCP modes | | Configuration | Environment variables and security | | REST API reference | Complete HTTP endpoint documentation (33 endpoints) | | Run 1 000 questions overnight | Production batch pattern with auto-reauth and rotation | | RTFM integration β cache as searchable vault | Pipeline pattern: NotebookLM as one-shot ingestion, RTFM as retrieval layer. /batch-to-vault endpoint, nblm-answer-v1 schema. | | n8n integration | Workflow automation setup | | Troubleshooting | Common issues and solutions | | Notebook library | Multi-notebook management | | Auto-discovery | Autonomous metadata generation | | Content management | Audio, video, infographic, report, presentation | | Multi-account rotation | Multiple accounts with TOTP auto-reauth | | Docker | Docker and Docker Compose deployment | | Multi-interface | Run Claude Desktop + HTTP simultaneously | | Compare with PleasePrompto v2.0.0 | Feature matrix vs the upstream MCP-only server | | Chrome profile limitation | Profile locking (solved in v1.3.6+) | | Adding a language | i18n system for multilingual UI support |
---
Roadmap
See ROADMAP.md for planned features and version history.
Latest releases:
- v2.2.1 β Recognize both NotebookLM hosts so Google Workspace accounts authenticate (the
notebook.google.comalias); notebook listing no longer wastes ~30s after the "Gemini Notebook" rebrand; HTTP banner reads the real version. Diagnosis + patch by @kpietkaa (#19) - v2.2.0 β Fix new-answer detection timing out when an answer repeats an earlier one (position-based identity, not text-hash); graceful shutdown on stdio disconnect; Japanese UI locale
- v2.1.1 β Thai UI selectors for
notebook_create(partial, #18) - v2.1.0 β
note_listandnote_getMCP tools (#17) - v2.0.4 β German UI selectors (closes #14)
- v2.0.0 β Tools renamed to a namespaced tree (
notebook_ask,source_add,session_list,server_health,vault_batchβ¦) across 9 namespaces;tools/listadvertises only the canonical names. Backward compatible β the legacy flat names still work as aliases, so existing scripts and configs keep running. Also adds MCPannotations(read-only / destructive / idempotent / open-world hints) andoutputSchema+structuredContenton every tool. Published on the Smithery registry. - v1.7.0 β
batch_to_vaultexposed as a first-class MCP tool (parity with the HTTP endpoint, no localhost server required); sharedrunBatchToVaulthelper deduplicates the loop across both transports - v1.6.0 β
/batch-to-vaultendpoint + RTFM integration (nblm-answer-v1JSON Schema published at schemas.roomi-fields.com/nblm-answer-v1.json) for caching NotebookLM answers as a searchable markdown vault - v1.5.8 β NotebookLM 2026 UI adaptations (icon-label sanitization, Discussion-panel recovery, count-based source detection) β PR #5 by @KhizarJamshaidIqbal
- v1.5.7 β Citation extraction selector fix (
.highlighted) and Docker multi-stage build β PR #1 by @JulienCANTONI - v1.5.6 β Citation extraction major rewrite (97% success rate), browser-verified auth at startup, profile auto-sync
- v1.5.0 β Complete Studio content generation (video, infographic, presentation, data_table) + Notes management + Delete sources
- v1.4.0 β Content management (sources, audio, generation) + Multi-account
_Intermediate patch and hardening releases (1.5.xβ1.7.x) are in the full CHANGELOG._
Not yet implemented:
- Discover sources (Web/Drive search with Fast/Deep modes)
- Edit notes (create, delete, and convert are implemented)
---
Disclaimer
This tool automates browser interactions with NotebookLM. Use a dedicated Google account for automation. CLI tools like Claude Code can make mistakes β always review changes before deploying.
See full Disclaimer below.
---
Contributing
Found a bug? Have an idea? Open an issue or submit a PR!
See CONTRIBUTING.md for guidelines.
License
MIT β Use freely in your projects. See LICENSE.
Author
Romain Peyrichou β @roomi-fields
Acknowledgments
Thanks to everyone who has contributed code, ideas, and bug reports:
- GΓ©rΓ΄me Dexheimer β @PleasePrompto, author of the upstream
notebooklm-mcpthis project builds on - Khizar Jamshaid Iqbal β @KhizarJamshaidIqbal, 2025 UI selector fixes, doctor script, PII scrub
- Kazik Pietka β @kpietkaa,
notebook.google.comrebrand support - Rui Ruiberriz β @Excauboi,
hl=<uiLocale>on app URLs + click-through scrape fallback - @he0xwhale β
note_list/note_getMCP tools - @eminsnow β canonical tool names (
_over.) - Julien Cantoni β @JulienCANTONI
---
<details> <summary><a name="disclaimer-details"></a>Full Disclaimer</summary>
About browser automation: While I've built in humanization features (realistic typing speeds, natural delays, mouse movements), I can't guarantee Google won't detect or flag automated usage. Use a dedicated Google account for automation.
About CLI tools and AI agents: CLI tools like Claude Code, Codex, and similar AI-powered assistants are powerful but can make mistakes:
- Always review changes before committing or deploying
- Test in safe environments first
- Keep backups of important work
- AI agents are assistants, not infallible oracles
I built this tool for myself and share it hoping it helps others, but I can't take responsibility for any issues that might occur. Use at your own discretion.
</details>
---
<div align="center">
Built with frustration about hallucinated APIs, powered by Google's NotebookLM
β Star on GitHub if this saves you debugging time!
</div>











