@roomi-fields/notebooklm-mcp 1.3.5 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +93 -658
- package/dist/accounts/account-manager.d.ts +163 -0
- package/dist/accounts/account-manager.d.ts.map +1 -0
- package/dist/accounts/account-manager.js +614 -0
- package/dist/accounts/account-manager.js.map +1 -0
- package/dist/accounts/auto-login-manager.d.ts +62 -0
- package/dist/accounts/auto-login-manager.d.ts.map +1 -0
- package/dist/accounts/auto-login-manager.js +537 -0
- package/dist/accounts/auto-login-manager.js.map +1 -0
- package/dist/accounts/crypto.d.ts +45 -0
- package/dist/accounts/crypto.d.ts.map +1 -0
- package/dist/accounts/crypto.js +138 -0
- package/dist/accounts/crypto.js.map +1 -0
- package/dist/accounts/index.d.ts +14 -0
- package/dist/accounts/index.d.ts.map +1 -0
- package/dist/accounts/index.js +14 -0
- package/dist/accounts/index.js.map +1 -0
- package/dist/accounts/types.d.ts +103 -0
- package/dist/accounts/types.d.ts.map +1 -0
- package/dist/accounts/types.js +7 -0
- package/dist/accounts/types.js.map +1 -0
- package/dist/auth/auth-manager.d.ts +9 -2
- package/dist/auth/auth-manager.d.ts.map +1 -1
- package/dist/auth/auth-manager.js +60 -6
- package/dist/auth/auth-manager.js.map +1 -1
- package/dist/auto-discovery/auto-discovery.d.ts.map +1 -1
- package/dist/auto-discovery/auto-discovery.js +2 -1
- package/dist/auto-discovery/auto-discovery.js.map +1 -1
- package/dist/cli/accounts.d.ts +13 -0
- package/dist/cli/accounts.d.ts.map +1 -0
- package/dist/cli/accounts.js +195 -0
- package/dist/cli/accounts.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -0
- package/dist/config.js.map +1 -1
- package/dist/content/content-generator.d.ts +153 -0
- package/dist/content/content-generator.d.ts.map +1 -0
- package/dist/content/content-generator.js +637 -0
- package/dist/content/content-generator.js.map +1 -0
- package/dist/content/content-manager.d.ts +364 -0
- package/dist/content/content-manager.d.ts.map +1 -0
- package/dist/content/content-manager.js +3846 -0
- package/dist/content/content-manager.js.map +1 -0
- package/dist/content/content-templates.d.ts +183 -0
- package/dist/content/content-templates.d.ts.map +1 -0
- package/dist/content/content-templates.js +719 -0
- package/dist/content/content-templates.js.map +1 -0
- package/dist/content/index.d.ts +14 -0
- package/dist/content/index.d.ts.map +1 -0
- package/dist/content/index.js +14 -0
- package/dist/content/index.js.map +1 -0
- package/dist/content/types.d.ts +285 -0
- package/dist/content/types.d.ts.map +1 -0
- package/dist/content/types.js +10 -0
- package/dist/content/types.js.map +1 -0
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/http-wrapper.d.ts +7 -0
- package/dist/http-wrapper.d.ts.map +1 -1
- package/dist/http-wrapper.js +449 -29
- package/dist/http-wrapper.js.map +1 -1
- package/dist/index.js +26 -2
- package/dist/index.js.map +1 -1
- package/dist/library/notebook-library.d.ts +4 -0
- package/dist/library/notebook-library.d.ts.map +1 -1
- package/dist/library/notebook-library.js +20 -3
- package/dist/library/notebook-library.js.map +1 -1
- package/dist/session/browser-session.d.ts +35 -8
- package/dist/session/browser-session.d.ts.map +1 -1
- package/dist/session/browser-session.js +242 -28
- package/dist/session/browser-session.js.map +1 -1
- package/dist/session/session-manager.d.ts +6 -0
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +46 -14
- package/dist/session/session-manager.js.map +1 -1
- package/dist/session/shared-context-manager.d.ts +3 -3
- package/dist/session/shared-context-manager.d.ts.map +1 -1
- package/dist/session/shared-context-manager.js +8 -7
- package/dist/session/shared-context-manager.js.map +1 -1
- package/dist/stdio-http-proxy.d.ts +24 -0
- package/dist/stdio-http-proxy.d.ts.map +1 -0
- package/dist/stdio-http-proxy.js +592 -0
- package/dist/stdio-http-proxy.js.map +1 -0
- package/dist/tools/index.d.ts +106 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1028 -7
- package/dist/tools/index.js.map +1 -1
- package/dist/types.d.ts +81 -17
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/citation-extractor.d.ts +66 -0
- package/dist/utils/citation-extractor.d.ts.map +1 -0
- package/dist/utils/citation-extractor.js +492 -0
- package/dist/utils/citation-extractor.js.map +1 -0
- package/dist/utils/page-utils.d.ts +8 -0
- package/dist/utils/page-utils.d.ts.map +1 -1
- package/dist/utils/page-utils.js +112 -8
- package/dist/utils/page-utils.js.map +1 -1
- package/docs/ARCHITECTURE_MIGRATION_STUDY.md +894 -0
- package/docs/CHROME_PROFILE_LIMITATION.md +15 -1
- package/docs/MULTI_ACCOUNT_SYSTEM.md +304 -0
- package/package.json +10 -10
- package/dist/__tests__/cleanup-manager.test.d.ts +0 -2
- package/dist/__tests__/cleanup-manager.test.d.ts.map +0 -1
- package/dist/__tests__/cleanup-manager.test.js +0 -341
- package/dist/__tests__/cleanup-manager.test.js.map +0 -1
- package/dist/__tests__/config-parsing.test.d.ts +0 -2
- package/dist/__tests__/config-parsing.test.d.ts.map +0 -1
- package/dist/__tests__/config-parsing.test.js +0 -338
- package/dist/__tests__/config-parsing.test.js.map +0 -1
- package/dist/__tests__/config.test.d.ts +0 -2
- package/dist/__tests__/config.test.d.ts.map +0 -1
- package/dist/__tests__/config.test.js +0 -267
- package/dist/__tests__/config.test.js.map +0 -1
- package/dist/__tests__/errors.test.d.ts +0 -2
- package/dist/__tests__/errors.test.d.ts.map +0 -1
- package/dist/__tests__/errors.test.js +0 -166
- package/dist/__tests__/errors.test.js.map +0 -1
- package/dist/__tests__/logger.test.d.ts +0 -2
- package/dist/__tests__/logger.test.d.ts.map +0 -1
- package/dist/__tests__/logger.test.js +0 -324
- package/dist/__tests__/logger.test.js.map +0 -1
- package/dist/__tests__/page-utils.test.d.ts +0 -2
- package/dist/__tests__/page-utils.test.d.ts.map +0 -1
- package/dist/__tests__/page-utils.test.js +0 -349
- package/dist/__tests__/page-utils.test.js.map +0 -1
- package/dist/__tests__/setup-verification.test.d.ts +0 -2
- package/dist/__tests__/setup-verification.test.d.ts.map +0 -1
- package/dist/__tests__/setup-verification.test.js +0 -15
- package/dist/__tests__/setup-verification.test.js.map +0 -1
- package/dist/__tests__/stealth-utils.test.d.ts +0 -2
- package/dist/__tests__/stealth-utils.test.d.ts.map +0 -1
- package/dist/__tests__/stealth-utils.test.js +0 -413
- package/dist/__tests__/stealth-utils.test.js.map +0 -1
- package/dist/__tests__/types.test.d.ts +0 -2
- package/dist/__tests__/types.test.d.ts.map +0 -1
- package/dist/__tests__/types.test.js +0 -461
- package/dist/__tests__/types.test.js.map +0 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
> **Forked from** [PleasePrompto/notebooklm-mcp](https://github.com/PleasePrompto/notebooklm-mcp)
|
|
6
6
|
|
|
7
|
-
**
|
|
7
|
+
**Full automation of Google NotebookLM: Q&A, audio podcasts, and source management**
|
|
8
8
|
|
|
9
9
|
<!-- Badges -->
|
|
10
10
|
|
|
@@ -14,744 +14,179 @@
|
|
|
14
14
|
|
|
15
15
|
<!-- End Badges -->
|
|
16
16
|
|
|
17
|
-
[MCP Installation](#mcp-installation) • [HTTP REST API](#http-rest-api) • [Why NotebookLM](#why-notebooklm-not-local-rag) • [Examples](#real-world-example) • [Documentation](./deployment/docs/)
|
|
18
|
-
|
|
19
17
|
</div>
|
|
20
18
|
|
|
21
19
|
---
|
|
22
20
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## 🚀 Two Ways to Use This Server
|
|
28
|
-
|
|
29
|
-
### 1️⃣ **HTTP REST API** (New! Recommended for n8n, Zapier, Make.com)
|
|
30
|
-
|
|
31
|
-
Use NotebookLM from **any tool** via HTTP REST API:
|
|
32
|
-
|
|
33
|
-
**Option A: Install from npm**
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
# Install globally
|
|
37
|
-
npm install -g @roomi-fields/notebooklm-mcp
|
|
38
|
-
|
|
39
|
-
# For MCP stdio mode (Claude Code, Cursor)
|
|
40
|
-
notebooklm-mcp
|
|
41
|
-
|
|
42
|
-
# For HTTP server mode
|
|
43
|
-
# Note: Currently requires cloning the repo for HTTP mode
|
|
44
|
-
# See Option B below
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
**Option B: Install from source (Required for HTTP mode)**
|
|
48
|
-
|
|
49
|
-
```bash
|
|
50
|
-
# Clone and install
|
|
51
|
-
git clone https://github.com/roomi-fields/notebooklm-mcp.git
|
|
52
|
-
cd notebooklm-mcp
|
|
53
|
-
npm install
|
|
54
|
-
npm run build
|
|
55
|
-
npm run start:http
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
**Query the API:**
|
|
59
|
-
|
|
60
|
-
```bash
|
|
61
|
-
curl -X POST http://localhost:3000/ask \
|
|
62
|
-
-H "Content-Type: application/json" \
|
|
63
|
-
-d '{"question": "Explain X", "notebook_id": "my-notebook"}'
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
**Perfect for:**
|
|
67
|
-
|
|
68
|
-
- ✅ n8n workflows and automation
|
|
69
|
-
- ✅ Zapier, Make.com integrations
|
|
70
|
-
- ✅ Custom web applications
|
|
71
|
-
- ✅ Backend APIs
|
|
72
|
-
|
|
73
|
-
**👉 Full HTTP setup guide:** [deployment/docs/01-INSTALL.md](./deployment/docs/01-INSTALL.md)
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
### 2️⃣ **MCP stdio** (For Claude Code, Cursor, Codex)
|
|
78
|
-
|
|
79
|
-
Use NotebookLM directly from your AI coding assistant:
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
# Claude Code
|
|
83
|
-
claude mcp add notebooklm npx @roomi-fields/notebooklm-mcp@latest
|
|
84
|
-
|
|
85
|
-
# Codex
|
|
86
|
-
codex mcp add notebooklm -- npx @roomi-fields/notebooklm-mcp@latest
|
|
87
|
-
|
|
88
|
-
# Cursor (add to ~/.cursor/mcp.json)
|
|
89
|
-
{
|
|
90
|
-
"mcpServers": {
|
|
91
|
-
"notebooklm": {
|
|
92
|
-
"command": "npx",
|
|
93
|
-
"args": ["-y", "@roomi-fields/notebooklm-mcp@latest"]
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
**Perfect for:**
|
|
21
|
+
## Features
|
|
100
22
|
|
|
101
|
-
|
|
102
|
-
- ✅ Any MCP-compatible AI assistant
|
|
103
|
-
- ✅ Direct CLI integration
|
|
23
|
+
### Q&A with Citations
|
|
104
24
|
|
|
105
|
-
|
|
25
|
+
- **Ask questions** to NotebookLM and get accurate, citation-backed answers
|
|
26
|
+
- **Source citation extraction** with 5 formats: none, inline, footnotes, json, expanded
|
|
27
|
+
- **Session management** for multi-turn conversations
|
|
106
28
|
|
|
107
|
-
|
|
29
|
+
### Content Generation
|
|
108
30
|
|
|
109
|
-
|
|
31
|
+
Generate multiple content types from your notebook sources:
|
|
110
32
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
33
|
+
| Content Type | Formats | Options |
|
|
34
|
+
| ------------------ | ------------------------ | ---------------------------------------------- |
|
|
35
|
+
| **Audio Overview** | Podcast-style discussion | Language (80+), custom instructions |
|
|
36
|
+
| **Video** | Brief, Explainer | 6 visual styles, language, custom instructions |
|
|
37
|
+
| **Infographic** | Horizontal, Vertical | Language, custom instructions |
|
|
38
|
+
| **Report** | Summary, Detailed | Language, custom instructions |
|
|
39
|
+
| **Presentation** | Overview, Detailed | Language, custom instructions |
|
|
40
|
+
| **Data Table** | Simple, Detailed | Language, custom instructions |
|
|
115
41
|
|
|
116
|
-
|
|
42
|
+
**Video Visual Styles**: classroom, documentary, animated, corporate, cinematic, minimalist
|
|
117
43
|
|
|
118
|
-
|
|
44
|
+
### Content Download
|
|
119
45
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
46
|
+
- **Download Audio** — WAV audio files
|
|
47
|
+
- **Download Video** — MP4 video files
|
|
48
|
+
- **Download Infographic** — PNG image files
|
|
49
|
+
- Text-based content (report, presentation, data_table) is returned in the API response
|
|
123
50
|
|
|
124
|
-
|
|
51
|
+
### Source Management
|
|
125
52
|
|
|
126
|
-
|
|
53
|
+
- **Add sources**: Files (PDF, TXT, DOCX), URLs, Text, YouTube videos, Google Drive
|
|
54
|
+
- **List sources**: View all sources in a notebook
|
|
127
55
|
|
|
128
|
-
|
|
56
|
+
### Notebook Library
|
|
129
57
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
| **Web search** | 🟡 Medium | Instant | High - unreliable sources | Hit or miss |
|
|
134
|
-
| **Local RAG** | 🟡 Medium-High | Hours (embeddings, chunking) | Medium - retrieval gaps | Depends on setup |
|
|
135
|
-
| **NotebookLM MCP** | 🟢 Minimal | 5 minutes | **Zero** - refuses if unknown | Expert synthesis |
|
|
58
|
+
- **Multi-notebook management** with validation and smart selection
|
|
59
|
+
- **Auto-discovery**: Automatically generate metadata via NotebookLM queries
|
|
60
|
+
- **Search notebooks** by keyword in name, description, or topics
|
|
136
61
|
|
|
137
|
-
###
|
|
62
|
+
### Integration Options
|
|
138
63
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
3. **Multi-source correlation**: Connects information across 50+ documents
|
|
142
|
-
4. **Citation-backed**: Every answer includes source references
|
|
143
|
-
5. **No infrastructure**: No vector DBs, embeddings, or chunking strategies needed
|
|
64
|
+
- **MCP Protocol** — Claude Code, Cursor, Codex, any MCP client
|
|
65
|
+
- **HTTP REST API** — n8n, Zapier, Make.com, custom integrations
|
|
144
66
|
|
|
145
67
|
---
|
|
146
68
|
|
|
147
|
-
##
|
|
148
|
-
|
|
149
|
-
### Quick Start
|
|
150
|
-
|
|
151
|
-
```powershell
|
|
152
|
-
# 1. Clone and install
|
|
153
|
-
git clone <repo-url> D:\notebooklm-http
|
|
154
|
-
cd D:\notebooklm-http
|
|
155
|
-
npm install
|
|
156
|
-
npm run build
|
|
157
|
-
|
|
158
|
-
# 2. Configure authentication (one-time)
|
|
159
|
-
npm run setup-auth
|
|
160
|
-
# Chrome opens → log in with Google → close Chrome
|
|
161
|
-
|
|
162
|
-
# 3. Start the server
|
|
69
|
+
## Quick Start
|
|
163
70
|
|
|
164
|
-
|
|
165
|
-
npm run start:http
|
|
71
|
+
> ⚠️ **npm registry temporarily unavailable** - Install from GitHub instead (see below)
|
|
166
72
|
|
|
167
|
-
|
|
168
|
-
npm run daemon:start # Start in background
|
|
169
|
-
npm run daemon:logs # View logs
|
|
170
|
-
npm run daemon:status # Check status
|
|
171
|
-
npm run daemon:stop # Stop server
|
|
172
|
-
|
|
173
|
-
# 4. Add your first notebook (in another terminal if using Option A)
|
|
174
|
-
curl -X POST http://localhost:3000/notebooks \
|
|
175
|
-
-H "Content-Type: application/json" \
|
|
176
|
-
-d '{
|
|
177
|
-
"url": "https://notebooklm.google.com/notebook/YOUR-NOTEBOOK-ID",
|
|
178
|
-
"name": "My Knowledge Base",
|
|
179
|
-
"description": "My documentation",
|
|
180
|
-
"topics": ["docs", "api"]
|
|
181
|
-
}'
|
|
182
|
-
|
|
183
|
-
# 5. Query NotebookLM
|
|
184
|
-
curl -X POST http://localhost:3000/ask \
|
|
185
|
-
-H "Content-Type: application/json" \
|
|
186
|
-
-d '{"question": "Explain X"}'
|
|
187
|
-
|
|
188
|
-
# 6. Validate installation (optional)
|
|
189
|
-
.\deployment\scripts\test-server.ps1
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
**👉 See [Testing Guide](./deployment/scripts/README.md) for automated test suite**
|
|
193
|
-
|
|
194
|
-
### API Endpoints
|
|
195
|
-
|
|
196
|
-
| Method | Endpoint | Description |
|
|
197
|
-
| -------- | -------------------------- | ----------------------------------- |
|
|
198
|
-
| `GET` | `/health` | Check server health |
|
|
199
|
-
| `POST` | `/ask` | Ask a question to NotebookLM |
|
|
200
|
-
| `GET` | `/notebooks` | List all notebooks |
|
|
201
|
-
| `POST` | `/notebooks` | Add notebook (with live validation) |
|
|
202
|
-
| `POST` | `/notebooks/auto-discover` | Auto-generate notebook metadata |
|
|
203
|
-
| `DELETE` | `/notebooks/:id` | Remove a notebook |
|
|
204
|
-
| `PUT` | `/notebooks/:id/activate` | Set active notebook |
|
|
205
|
-
| `GET` | `/sessions` | List active sessions |
|
|
206
|
-
| `DELETE` | `/sessions/:id` | Close a session |
|
|
207
|
-
|
|
208
|
-
**👉 Full API documentation:** [deployment/docs/03-API.md](./deployment/docs/03-API.md)
|
|
209
|
-
|
|
210
|
-
### n8n Integration
|
|
211
|
-
|
|
212
|
-
Perfect for n8n workflows:
|
|
213
|
-
|
|
214
|
-
```json
|
|
215
|
-
{
|
|
216
|
-
"nodes": [
|
|
217
|
-
{
|
|
218
|
-
"name": "Ask NotebookLM",
|
|
219
|
-
"type": "n8n-nodes-base.httpRequest",
|
|
220
|
-
"parameters": {
|
|
221
|
-
"method": "POST",
|
|
222
|
-
"url": "http://your-server:3000/ask",
|
|
223
|
-
"jsonParameters": true,
|
|
224
|
-
"bodyParametersJson": {
|
|
225
|
-
"question": "{{ $json.query }}",
|
|
226
|
-
"notebook_id": "my-notebook"
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
]
|
|
231
|
-
}
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
**👉 n8n guide:** [deployment/docs/04-N8N-INTEGRATION.md](./deployment/docs/04-N8N-INTEGRATION.md)
|
|
235
|
-
|
|
236
|
-
---
|
|
237
|
-
|
|
238
|
-
## 🔍 Auto-Discovery : Self-Organizing Documentation
|
|
239
|
-
|
|
240
|
-
Autonomous resource discovery enables AI orchestrators to find and use relevant documentation without manual intervention.
|
|
241
|
-
|
|
242
|
-
### How it works
|
|
243
|
-
|
|
244
|
-
**1. Add notebook** (zero manual metadata):
|
|
73
|
+
### Option 1: MCP Mode (Claude Code, Cursor, Codex)
|
|
245
74
|
|
|
246
75
|
```bash
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
**2. System queries NotebookLM** to auto-generate:
|
|
253
|
-
|
|
254
|
-
- Kebab-case name (3 words max)
|
|
255
|
-
- Concise description (2 sentences)
|
|
256
|
-
- Relevant tags (8-10 keywords)
|
|
257
|
-
|
|
258
|
-
**3. Orchestrators discover autonomously**:
|
|
259
|
-
|
|
260
|
-
- Claude Code finds relevant docs without prompting
|
|
261
|
-
- n8n workflows auto-select documentation
|
|
262
|
-
- Cursor matches context to notebooks
|
|
263
|
-
|
|
264
|
-
### Progressive disclosure pattern
|
|
265
|
-
|
|
266
|
-
Inspired by [Claude Skills best practices](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices#progressive-disclosure-patterns):
|
|
267
|
-
|
|
268
|
-
- **Level 0** (startup): Lightweight metadata loaded (~500 tokens)
|
|
269
|
-
- **Level 1** (matching): Local tag/description search (0 NotebookLM queries)
|
|
270
|
-
- **Level 2** (deep query): Targeted NotebookLM query only when needed
|
|
271
|
-
|
|
272
|
-
### Why this matters
|
|
273
|
-
|
|
274
|
-
**Before**: Manual library management, orchestrators can't discover resources autonomously
|
|
275
|
-
|
|
276
|
-
**After**: Self-organizing library, autonomous documentation discovery
|
|
277
|
-
|
|
278
|
-
Perfect for:
|
|
279
|
-
|
|
280
|
-
- ✅ Teams with 10+ documentation notebooks
|
|
281
|
-
- ✅ n8n workflows needing dynamic doc access
|
|
282
|
-
- ✅ Claude Code autonomous research
|
|
283
|
-
- ✅ Onboarding new developers without manual setup
|
|
284
|
-
|
|
285
|
-
### Example workflow
|
|
286
|
-
|
|
287
|
-
```bash
|
|
288
|
-
# 1. Add documentation notebooks (auto-discover metadata)
|
|
289
|
-
curl -X POST /notebooks/auto-discover -d '{"url": "https://notebooklm.google.com/notebook/n8n-docs"}'
|
|
290
|
-
curl -X POST /notebooks/auto-discover -d '{"url": "https://notebooklm.google.com/notebook/react-guide"}'
|
|
291
|
-
|
|
292
|
-
# 2. Claude Code autonomously discovers relevant notebook
|
|
293
|
-
User: "Build Gmail automation with n8n"
|
|
294
|
-
→ System matches: "n8n-docs" (tags: ["n8n", "gmail", "automation"])
|
|
295
|
-
→ Query NotebookLM: "Gmail node configuration?"
|
|
296
|
-
→ Claude implements with accurate info
|
|
297
|
-
|
|
298
|
-
# 3. Zero hallucinations, zero manual intervention
|
|
299
|
-
```
|
|
300
|
-
|
|
301
|
-
---
|
|
302
|
-
|
|
303
|
-
### Background Daemon Mode
|
|
304
|
-
|
|
305
|
-
Run the HTTP server as a background process without keeping a terminal window open:
|
|
306
|
-
|
|
307
|
-
```bash
|
|
308
|
-
# Start server in background
|
|
309
|
-
npm run daemon:start
|
|
310
|
-
|
|
311
|
-
# View real-time logs
|
|
312
|
-
npm run daemon:logs
|
|
313
|
-
|
|
314
|
-
# Check server status
|
|
315
|
-
npm run daemon:status
|
|
316
|
-
|
|
317
|
-
# Restart server
|
|
318
|
-
npm run daemon:restart
|
|
319
|
-
|
|
320
|
-
# Stop server
|
|
321
|
-
npm run daemon:stop
|
|
322
|
-
|
|
323
|
-
# Remove from PM2 process list
|
|
324
|
-
npm run daemon:delete
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
**Features:**
|
|
328
|
-
|
|
329
|
-
- ✅ Runs in background without terminal window
|
|
330
|
-
- ✅ Auto-restart on crash
|
|
331
|
-
- ✅ Centralized log management (logs/pm2-\*.log)
|
|
332
|
-
- ✅ Memory limit protection (1GB max)
|
|
333
|
-
- ✅ Production-ready process management
|
|
334
|
-
|
|
335
|
-
**Configuration:** Edit `ecosystem.config.cjs` to customize PM2 behavior (env vars, restart policy, etc.)
|
|
336
|
-
|
|
337
|
-
### Installation & Documentation
|
|
338
|
-
|
|
339
|
-
- 📖 [**Installation Guide**](./deployment/docs/01-INSTALL.md) — Step-by-step setup
|
|
340
|
-
- 🔧 [**Configuration**](./deployment/docs/02-CONFIGURATION.md) — Environment variables, security
|
|
341
|
-
- 📡 [**API Reference**](./deployment/docs/03-API.md) — Complete endpoint documentation
|
|
342
|
-
- 📚 [**Notebook Library**](./deployment/docs/06-NOTEBOOK-LIBRARY.md) — Multi-notebook management
|
|
343
|
-
- ✅ [**Testing Suite**](./deployment/scripts/README.md) — Automated validation scripts
|
|
344
|
-
- 🐛 [**Troubleshooting**](./deployment/docs/05-TROUBLESHOOTING.md) — Common issues
|
|
345
|
-
|
|
346
|
-
---
|
|
347
|
-
|
|
348
|
-
## MCP Installation
|
|
349
|
-
|
|
350
|
-
<details>
|
|
351
|
-
<summary>Claude Code</summary>
|
|
352
|
-
|
|
353
|
-
```bash
|
|
354
|
-
claude mcp add notebooklm npx @roomi-fields/notebooklm-mcp@latest
|
|
355
|
-
```
|
|
356
|
-
|
|
357
|
-
</details>
|
|
358
|
-
|
|
359
|
-
<details>
|
|
360
|
-
<summary>Codex</summary>
|
|
361
|
-
|
|
362
|
-
```bash
|
|
363
|
-
codex mcp add notebooklm -- npx @roomi-fields/notebooklm-mcp@latest
|
|
364
|
-
```
|
|
365
|
-
|
|
366
|
-
</details>
|
|
367
|
-
|
|
368
|
-
<details>
|
|
369
|
-
<summary>Gemini</summary>
|
|
370
|
-
|
|
371
|
-
```bash
|
|
372
|
-
gemini mcp add notebooklm npx @roomi-fields/notebooklm-mcp@latest
|
|
373
|
-
```
|
|
374
|
-
|
|
375
|
-
</details>
|
|
376
|
-
|
|
377
|
-
<details>
|
|
378
|
-
<summary>Cursor</summary>
|
|
76
|
+
# Clone and build locally
|
|
77
|
+
git clone https://github.com/roomi-fields/notebooklm-mcp.git
|
|
78
|
+
cd notebooklm-mcp
|
|
79
|
+
npm install && npm run build
|
|
379
80
|
|
|
380
|
-
|
|
81
|
+
# Claude Code
|
|
82
|
+
claude mcp add notebooklm node /path/to/notebooklm-mcp/dist/index.js
|
|
381
83
|
|
|
382
|
-
|
|
84
|
+
# Cursor - add to ~/.cursor/mcp.json
|
|
383
85
|
{
|
|
384
86
|
"mcpServers": {
|
|
385
87
|
"notebooklm": {
|
|
386
|
-
"command": "
|
|
387
|
-
"args": ["
|
|
88
|
+
"command": "node",
|
|
89
|
+
"args": ["/path/to/notebooklm-mcp/dist/index.js"]
|
|
388
90
|
}
|
|
389
91
|
}
|
|
390
92
|
}
|
|
391
93
|
```
|
|
392
94
|
|
|
393
|
-
|
|
95
|
+
Then say: _"Log me in to NotebookLM"_ → Chrome opens → log in with Google.
|
|
394
96
|
|
|
395
|
-
|
|
396
|
-
<summary>amp</summary>
|
|
97
|
+
### Option 2: HTTP REST API (n8n, Zapier, Make.com)
|
|
397
98
|
|
|
398
99
|
```bash
|
|
399
|
-
|
|
100
|
+
git clone https://github.com/roomi-fields/notebooklm-mcp.git
|
|
101
|
+
cd notebooklm-mcp
|
|
102
|
+
npm install && npm run build
|
|
103
|
+
npm run setup-auth # One-time Google login
|
|
104
|
+
npm run start:http # Start server on port 3000
|
|
400
105
|
```
|
|
401
106
|
|
|
402
|
-
</details>
|
|
403
|
-
|
|
404
|
-
<details>
|
|
405
|
-
<summary>VS Code</summary>
|
|
406
|
-
|
|
407
107
|
```bash
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
<details>
|
|
414
|
-
<summary>Other MCP clients</summary>
|
|
415
|
-
|
|
416
|
-
**Generic MCP config:**
|
|
417
|
-
|
|
418
|
-
```json
|
|
419
|
-
{
|
|
420
|
-
"mcpServers": {
|
|
421
|
-
"notebooklm": {
|
|
422
|
-
"command": "npx",
|
|
423
|
-
"args": ["@roomi-fields/notebooklm-mcp@latest"]
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
```
|
|
428
|
-
|
|
429
|
-
</details>
|
|
430
|
-
|
|
431
|
-
### MCP Quick Start
|
|
432
|
-
|
|
433
|
-
1. **Install** the MCP server (see above)
|
|
434
|
-
|
|
435
|
-
2. **Authenticate** (one-time)
|
|
436
|
-
|
|
437
|
-
Say in your chat (Claude/Codex):
|
|
438
|
-
|
|
439
|
-
```
|
|
440
|
-
"Log me in to NotebookLM"
|
|
441
|
-
```
|
|
442
|
-
|
|
443
|
-
_A Chrome window opens → log in with Google_
|
|
444
|
-
|
|
445
|
-
3. **Create your knowledge base**
|
|
446
|
-
|
|
447
|
-
Go to [notebooklm.google.com](https://notebooklm.google.com) → Create notebook → Upload your docs:
|
|
448
|
-
|
|
449
|
-
- 📄 PDFs, Google Docs, markdown files
|
|
450
|
-
- 🔗 Websites, GitHub repos
|
|
451
|
-
- 🎥 YouTube videos
|
|
452
|
-
- 📚 Multiple sources per notebook
|
|
453
|
-
|
|
454
|
-
Share: **⚙️ Share → Anyone with link → Copy**
|
|
455
|
-
|
|
456
|
-
4. **Let Claude use it**
|
|
457
|
-
|
|
458
|
-
```
|
|
459
|
-
"I'm building with [library]. Here's my NotebookLM: [link]"
|
|
108
|
+
# Query the API
|
|
109
|
+
curl -X POST http://localhost:3000/ask \
|
|
110
|
+
-H "Content-Type: application/json" \
|
|
111
|
+
-d '{"question": "Explain X", "notebook_id": "my-notebook"}'
|
|
460
112
|
```
|
|
461
113
|
|
|
462
|
-
**That's it.** Claude now asks NotebookLM whatever it needs, building expertise before writing code.
|
|
463
|
-
|
|
464
|
-
---
|
|
465
|
-
|
|
466
|
-
## Related Project: Claude Code Skill (by original author)
|
|
467
|
-
|
|
468
|
-
The original author [PleasePrompto](https://github.com/PleasePrompto) also created a **Python-based Claude Code Skill** as an alternative approach:
|
|
469
|
-
|
|
470
|
-
🔗 **[NotebookLM Claude Code Skill](https://github.com/PleasePrompto/notebooklm-skill)** - Python skill for Claude Code
|
|
471
|
-
|
|
472
|
-
### When to use which approach?
|
|
473
|
-
|
|
474
|
-
| Feature | This Project (MCP + HTTP) | Original Skill (Python) |
|
|
475
|
-
| ----------------- | ------------------------------------------------------------ | ---------------------------- |
|
|
476
|
-
| **Protocol** | MCP (Model Context Protocol) | Claude Skills |
|
|
477
|
-
| **Installation** | `claude mcp add notebooklm npx @roomi-fields/notebooklm-mcp` | Clone to `~/.claude/skills/` |
|
|
478
|
-
| **Sessions** | ✅ Persistent browser sessions | Fresh browser per query |
|
|
479
|
-
| **Compatibility** | ✅ Claude Code, Cursor, Codex, any MCP client | Claude Code only |
|
|
480
|
-
| **HTTP API** | ✅ Works with n8n, Zapier, Make.com | ❌ Not available |
|
|
481
|
-
| **Language** | TypeScript | Python |
|
|
482
|
-
| **Use case** | Long conversations, automation workflows | Quick one-off queries |
|
|
483
|
-
|
|
484
|
-
### Which one should you choose?
|
|
485
|
-
|
|
486
|
-
- **Use this MCP project** if you want:
|
|
487
|
-
- Persistent sessions (faster repeated queries)
|
|
488
|
-
- Compatibility with multiple tools (Cursor, Codex, etc.)
|
|
489
|
-
- HTTP REST API for n8n/Zapier automation
|
|
490
|
-
- TypeScript-based development
|
|
491
|
-
|
|
492
|
-
- **Use the original Skill** if you prefer:
|
|
493
|
-
- Python-based workflow
|
|
494
|
-
- Simpler clone-and-use installation
|
|
495
|
-
- Stateless queries (no session management)
|
|
496
|
-
- Only using Claude Code locally
|
|
497
|
-
|
|
498
|
-
Both use the same Patchright browser automation technology and provide zero-hallucination answers from NotebookLM.
|
|
499
|
-
|
|
500
114
|
---
|
|
501
115
|
|
|
502
|
-
##
|
|
503
|
-
|
|
504
|
-
### Building an n8n Workflow Without Hallucinations
|
|
505
|
-
|
|
506
|
-
**Challenge**: n8n's API is new — Claude hallucinates node names and functions.
|
|
507
|
-
|
|
508
|
-
**Solution**:
|
|
509
|
-
|
|
510
|
-
1. Downloaded complete n8n documentation → merged into manageable chunks
|
|
511
|
-
2. Uploaded to NotebookLM
|
|
512
|
-
3. Told Claude: _"Build me a Gmail spam filter workflow. Use this NotebookLM: [link]"_
|
|
513
|
-
|
|
514
|
-
**Watch the AI-to-AI conversation:**
|
|
515
|
-
|
|
516
|
-
```
|
|
517
|
-
Claude → "How does Gmail integration work in n8n?"
|
|
518
|
-
NotebookLM → "Use Gmail Trigger with polling, or Gmail node with Get Many..."
|
|
519
|
-
|
|
520
|
-
Claude → "How to decode base64 email body?"
|
|
521
|
-
NotebookLM → "Body is base64url encoded in payload.parts, use Function node..."
|
|
522
|
-
|
|
523
|
-
Claude → "How to parse OpenAI response as JSON?"
|
|
524
|
-
NotebookLM → "Set responseFormat to json, use {{ $json.spam }} in IF node..."
|
|
525
|
-
|
|
526
|
-
Claude → "What about error handling if the API fails?"
|
|
527
|
-
NotebookLM → "Use Error Trigger node with Continue On Fail enabled..."
|
|
528
|
-
|
|
529
|
-
Claude → ✅ "Here's your complete workflow JSON..."
|
|
530
|
-
```
|
|
116
|
+
## Documentation
|
|
531
117
|
|
|
532
|
-
|
|
118
|
+
| Guide | Description |
|
|
119
|
+
| ------------------------------------------------------------ | ----------------------------------------- |
|
|
120
|
+
| [Installation](./deployment/docs/01-INSTALL.md) | Step-by-step setup for HTTP and MCP modes |
|
|
121
|
+
| [Configuration](./deployment/docs/02-CONFIGURATION.md) | Environment variables and security |
|
|
122
|
+
| [API Reference](./deployment/docs/03-API.md) | Complete HTTP endpoint documentation |
|
|
123
|
+
| [n8n Integration](./deployment/docs/04-N8N-INTEGRATION.md) | Workflow automation setup |
|
|
124
|
+
| [Troubleshooting](./deployment/docs/05-TROUBLESHOOTING.md) | Common issues and solutions |
|
|
125
|
+
| [Notebook Library](./deployment/docs/06-NOTEBOOK-LIBRARY.md) | Multi-notebook management |
|
|
126
|
+
| [Auto-Discovery](./deployment/docs/07-AUTO-DISCOVERY.md) | Autonomous metadata generation |
|
|
127
|
+
| [Multi-Interface](./deployment/docs/09-MULTI-INTERFACE.md) | Run Claude Desktop + HTTP simultaneously |
|
|
128
|
+
| [Chrome Limitation](./docs/CHROME_PROFILE_LIMITATION.md) | Profile locking (solved in v1.3.6+) |
|
|
533
129
|
|
|
534
130
|
---
|
|
535
131
|
|
|
536
|
-
##
|
|
537
|
-
|
|
538
|
-
### **Zero Hallucinations**
|
|
539
|
-
|
|
540
|
-
NotebookLM refuses to answer if information isn't in your docs. No invented APIs.
|
|
541
|
-
|
|
542
|
-
### **Multi-Notebook Library**
|
|
543
|
-
|
|
544
|
-
Manage multiple NotebookLM notebooks with automatic validation, duplicate detection, and smart selection.
|
|
545
|
-
|
|
546
|
-
### **Autonomous Research**
|
|
547
|
-
|
|
548
|
-
Claude asks follow-up questions automatically, building complete understanding before coding.
|
|
549
|
-
|
|
550
|
-
### **Deep, Iterative Research**
|
|
551
|
-
|
|
552
|
-
- Claude automatically asks follow-up questions to build complete understanding
|
|
553
|
-
- Each answer triggers deeper questions until Claude has all the details
|
|
554
|
-
- Example: For n8n workflow, Claude asked multiple sequential questions about Gmail integration, error handling, and data transformation
|
|
132
|
+
## Roadmap
|
|
555
133
|
|
|
556
|
-
|
|
134
|
+
See [ROADMAP.md](./ROADMAP.md) for planned features and version history.
|
|
557
135
|
|
|
558
|
-
|
|
136
|
+
**Latest releases:**
|
|
559
137
|
|
|
560
|
-
|
|
138
|
+
- **v1.5.0** — Complete Studio content generation (video, infographic, presentation, data_table) + Notes management + Delete sources
|
|
139
|
+
- **v1.4.0** — Content management (sources, audio, generation) + Multi-account
|
|
140
|
+
- **v1.3.7** — Source citation extraction (5 formats)
|
|
561
141
|
|
|
562
|
-
|
|
142
|
+
**Not yet implemented:**
|
|
563
143
|
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
## Architecture
|
|
567
|
-
|
|
568
|
-
```mermaid
|
|
569
|
-
graph LR
|
|
570
|
-
A[Your Task] --> B[Claude/n8n/HTTP Client]
|
|
571
|
-
B --> C[MCP/HTTP Server]
|
|
572
|
-
C --> D[Chrome Automation]
|
|
573
|
-
D --> E[NotebookLM]
|
|
574
|
-
E --> F[Gemini 2.5]
|
|
575
|
-
F --> G[Your Docs]
|
|
576
|
-
G --> F
|
|
577
|
-
F --> E
|
|
578
|
-
E --> D
|
|
579
|
-
D --> C
|
|
580
|
-
C --> B
|
|
581
|
-
B --> H[Accurate Output]
|
|
582
|
-
```
|
|
144
|
+
- Discover sources (Web/Drive search with Fast/Deep modes)
|
|
145
|
+
- Edit notes (create, delete, and convert are implemented)
|
|
583
146
|
|
|
584
147
|
---
|
|
585
148
|
|
|
586
|
-
##
|
|
587
|
-
|
|
588
|
-
| Intent | Say | Result |
|
|
589
|
-
| --------------- | ------------------------------------------------------------- | -------------------------------- |
|
|
590
|
-
| Authenticate | _"Open NotebookLM auth setup"_ or _"Log me in to NotebookLM"_ | Chrome opens for login |
|
|
591
|
-
| Add notebook | _"Add [link] to library"_ | Saves notebook with metadata |
|
|
592
|
-
| List notebooks | _"Show our notebooks"_ | Lists all saved notebooks |
|
|
593
|
-
| Research first | _"Research this in NotebookLM before coding"_ | Multi-question session |
|
|
594
|
-
| Select notebook | _"Use the React notebook"_ | Sets active notebook |
|
|
595
|
-
| Update notebook | _"Update notebook tags"_ | Modify metadata |
|
|
596
|
-
| Remove notebook | _"Remove [notebook] from library"_ | Deletes from library |
|
|
597
|
-
| View browser | _"Show me the browser"_ | Watch live NotebookLM chat |
|
|
598
|
-
| Fix auth | _"Repair NotebookLM authentication"_ | Clears and re-authenticates |
|
|
599
|
-
| Switch account | _"Re-authenticate with different Google account"_ | Changes account |
|
|
600
|
-
| Clean restart | _"Run NotebookLM cleanup"_ | Removes all data for fresh start |
|
|
601
|
-
|
|
602
|
-
---
|
|
603
|
-
|
|
604
|
-
## Comparison to Alternatives
|
|
605
|
-
|
|
606
|
-
### vs. Downloading docs locally
|
|
607
|
-
|
|
608
|
-
- **You**: Download docs → Claude: "search through these files"
|
|
609
|
-
- **Problem**: Claude reads thousands of files → massive token usage, often misses connections
|
|
610
|
-
- **NotebookLM**: Pre-indexed by Gemini, semantic understanding across all docs
|
|
611
|
-
|
|
612
|
-
### vs. Web search
|
|
613
|
-
|
|
614
|
-
- **You**: "Research X online"
|
|
615
|
-
- **Problem**: Outdated info, hallucinated examples, unreliable sources
|
|
616
|
-
- **NotebookLM**: Only your trusted docs, always current, with citations
|
|
149
|
+
## Disclaimer
|
|
617
150
|
|
|
618
|
-
|
|
151
|
+
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.
|
|
619
152
|
|
|
620
|
-
|
|
621
|
-
- **Problem**: Hours of setup, tuning retrieval, still gets "creative" with gaps
|
|
622
|
-
- **NotebookLM**: Upload docs → done. Google handles everything.
|
|
153
|
+
See full [Disclaimer](#disclaimer-details) below.
|
|
623
154
|
|
|
624
155
|
---
|
|
625
156
|
|
|
626
|
-
##
|
|
627
|
-
|
|
628
|
-
**Is it really zero hallucinations?**
|
|
629
|
-
Yes. NotebookLM is specifically designed to only answer from uploaded sources. If it doesn't know, it says so.
|
|
630
|
-
|
|
631
|
-
**What about rate limits?**
|
|
632
|
-
Free tier has daily query limits per Google account. Quick account switching supported for continued research.
|
|
633
|
-
|
|
634
|
-
**How secure is this?**
|
|
635
|
-
Chrome runs locally. Your credentials never leave your machine. Use a dedicated Google account if concerned.
|
|
636
|
-
|
|
637
|
-
**Can I see what's happening?**
|
|
638
|
-
Yes! Say _"Show me the browser"_ (MCP mode) or set `HEADLESS=false` (HTTP mode) to watch the live NotebookLM conversation.
|
|
157
|
+
## Contributing
|
|
639
158
|
|
|
640
|
-
|
|
641
|
-
Your docs are always current. No training cutoff. No hallucinations. Perfect for new libraries, internal APIs, or fast-moving projects.
|
|
159
|
+
Found a bug? Have an idea? [Open an issue](https://github.com/roomi-fields/notebooklm-mcp/issues) or submit a PR!
|
|
642
160
|
|
|
643
|
-
|
|
161
|
+
See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.
|
|
644
162
|
|
|
645
|
-
##
|
|
163
|
+
## License
|
|
646
164
|
|
|
647
|
-
|
|
165
|
+
MIT — Use freely in your projects. See [LICENSE](./LICENSE).
|
|
648
166
|
|
|
649
|
-
|
|
167
|
+
## Author
|
|
650
168
|
|
|
651
|
-
|
|
169
|
+
**Romain Peyrichou** — [@roomi-fields](https://github.com/roomi-fields)
|
|
652
170
|
|
|
653
171
|
---
|
|
654
172
|
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
This tool automates browser interactions with NotebookLM to make your workflow more efficient. However, a few friendly reminders:
|
|
173
|
+
<details>
|
|
174
|
+
<summary><a name="disclaimer-details"></a>Full Disclaimer</summary>
|
|
658
175
|
|
|
659
176
|
**About browser automation:**
|
|
660
|
-
While I've built in humanization features (realistic typing speeds, natural delays, mouse movements)
|
|
177
|
+
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.
|
|
661
178
|
|
|
662
179
|
**About CLI tools and AI agents:**
|
|
663
|
-
CLI tools like Claude Code, Codex, and similar AI-powered assistants are
|
|
180
|
+
CLI tools like Claude Code, Codex, and similar AI-powered assistants are powerful but can make mistakes:
|
|
664
181
|
|
|
665
182
|
- Always review changes before committing or deploying
|
|
666
183
|
- Test in safe environments first
|
|
667
184
|
- Keep backups of important work
|
|
668
|
-
-
|
|
185
|
+
- AI agents are assistants, not infallible oracles
|
|
669
186
|
|
|
670
|
-
I built this tool for myself
|
|
187
|
+
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.
|
|
671
188
|
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
---
|
|
675
|
-
|
|
676
|
-
## Roadmap
|
|
677
|
-
|
|
678
|
-
### ✅ Implemented in v1.3.2
|
|
679
|
-
|
|
680
|
-
**🤖 Auto-Discovery: Autonomous Resource Discovery**
|
|
681
|
-
|
|
682
|
-
- ✅ Automatically generate notebook name, description, and tags via NotebookLM
|
|
683
|
-
- ✅ Progressive disclosure pattern inspired by Claude Skills best practices
|
|
684
|
-
- ✅ Zero-friction notebook addition (30 seconds vs 5 minutes)
|
|
685
|
-
- ✅ Validation of auto-generated metadata (kebab-case, description length, tags count)
|
|
686
|
-
- ✅ Orchestrators discover relevant documentation autonomously
|
|
687
|
-
|
|
688
|
-
**👉 See [Auto-Discovery Documentation](./deployment/docs/07-AUTO-DISCOVERY.md) for details**
|
|
689
|
-
|
|
690
|
-
### 🔧 Minor Fixes (v1.3.5)
|
|
691
|
-
|
|
692
|
-
**Cosmetic improvements:**
|
|
693
|
-
|
|
694
|
-
- Fix PowerShell `CursorPosition` error in test scripts (non-interactive terminal)
|
|
695
|
-
- Add strict type validation for `show_browser` parameter (return 400 on invalid types)
|
|
696
|
-
|
|
697
|
-
### 🔜 Planned for v1.4.0+
|
|
698
|
-
|
|
699
|
-
**🔥 Separate Chrome Profiles by Mode (Priority):**
|
|
700
|
-
|
|
701
|
-
- Enable HTTP and MCP stdio modes to run simultaneously
|
|
702
|
-
- Automatic profile detection: `chrome_profile_http` vs `chrome_profile_stdio`
|
|
703
|
-
- No user configuration needed - just works
|
|
704
|
-
- Solves Chrome profile locking issue for dual-mode users
|
|
705
|
-
- **👉 See [Chrome Profile Limitation](./docs/CHROME_PROFILE_LIMITATION.md) for details**
|
|
706
|
-
|
|
707
|
-
**Smart Metadata Refresh:**
|
|
708
|
-
|
|
709
|
-
- Auto-detect when notebook content has changed
|
|
710
|
-
- Re-query NotebookLM to update metadata
|
|
711
|
-
- Endpoint: `PATCH /notebooks/:id/refresh`
|
|
712
|
-
|
|
713
|
-
**Semantic Matching:**
|
|
714
|
-
|
|
715
|
-
- Use embeddings for advanced notebook matching beyond tags
|
|
716
|
-
- Endpoint: `GET /notebooks/match?query=gmail&semantic=true`
|
|
717
|
-
|
|
718
|
-
**Usage Analytics:**
|
|
719
|
-
|
|
720
|
-
- Track which notebooks are queried together
|
|
721
|
-
- Suggest related notebooks based on usage patterns
|
|
722
|
-
- Endpoint: `GET /notebooks/:id/related`
|
|
723
|
-
|
|
724
|
-
### 🚀 Previously Implemented
|
|
725
|
-
|
|
726
|
-
**✅ PM2 Daemon Mode (v1.1.2):**
|
|
727
|
-
|
|
728
|
-
- Cross-platform process manager with auto-restart
|
|
729
|
-
- Commands: `npm run daemon:start`, `daemon:logs`, `daemon:status`
|
|
730
|
-
- Built-in log rotation and monitoring
|
|
731
|
-
|
|
732
|
-
**✅ Multi-Notebook Library (v1.1.2):**
|
|
733
|
-
|
|
734
|
-
- Live validation of notebooks
|
|
735
|
-
- Duplicate detection
|
|
736
|
-
- Smart notebook selection
|
|
737
|
-
|
|
738
|
-
### 💡 Have an idea?
|
|
739
|
-
|
|
740
|
-
[Open a discussion](https://github.com/roomi-fields/notebooklm-mcp/discussions) to suggest new features!
|
|
741
|
-
|
|
742
|
-
---
|
|
743
|
-
|
|
744
|
-
## Contributing
|
|
745
|
-
|
|
746
|
-
Found a bug? Have a feature idea? [Open an issue](https://github.com/roomi-fields/notebooklm-mcp/issues) or submit a PR!
|
|
747
|
-
|
|
748
|
-
See [CONTRIBUTING.md](./CONTRIBUTING.md) for contribution guidelines.
|
|
749
|
-
|
|
750
|
-
## License
|
|
751
|
-
|
|
752
|
-
MIT — Use freely in your projects.
|
|
753
|
-
|
|
754
|
-
See [LICENSE](./LICENSE) for details.
|
|
189
|
+
</details>
|
|
755
190
|
|
|
756
191
|
---
|
|
757
192
|
|