@roomi-fields/notebooklm-mcp 1.3.6 → 1.5.1

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.
Files changed (284) hide show
  1. package/LICENSE +22 -22
  2. package/README.md +71 -34
  3. package/deployment/INDEX.md +292 -0
  4. package/deployment/PACKAGE-FILES.txt +180 -0
  5. package/deployment/QUICK-START.md +100 -0
  6. package/deployment/docs/01-INSTALL.md +611 -0
  7. package/deployment/docs/02-CONFIGURATION.md +404 -0
  8. package/deployment/docs/03-API.md +1691 -0
  9. package/deployment/docs/04-N8N-INTEGRATION.md +373 -0
  10. package/deployment/docs/05-TROUBLESHOOTING.md +429 -0
  11. package/deployment/docs/06-NOTEBOOK-LIBRARY.md +692 -0
  12. package/deployment/docs/07-AUTO-DISCOVERY.md +236 -0
  13. package/deployment/docs/08-WSL-USAGE.md +363 -0
  14. package/deployment/docs/09-MULTI-INTERFACE.md +293 -0
  15. package/deployment/docs/10-CONTENT-MANAGEMENT.md +421 -0
  16. package/deployment/docs/11-MULTI-ACCOUNT.md +295 -0
  17. package/deployment/docs/README.md +207 -0
  18. package/deployment/scripts/README.md +564 -0
  19. package/deployment/scripts/install.ps1 +114 -0
  20. package/deployment/scripts/setup-auth.ps1 +217 -0
  21. package/deployment/scripts/start-server.ps1 +72 -0
  22. package/deployment/scripts/stop-server.ps1 +51 -0
  23. package/deployment/scripts/test-api.ps1 +651 -0
  24. package/deployment/scripts/test-auth.ps1 +323 -0
  25. package/deployment/scripts/test-auto-discovery.ps1 +295 -0
  26. package/deployment/scripts/test-cors.ps1 +398 -0
  27. package/deployment/scripts/test-errors.ps1 +581 -0
  28. package/deployment/scripts/test-server.ps1 +140 -0
  29. package/deployment/scripts/test-sessions.ps1 +426 -0
  30. package/deployment/scripts/test-validation.ps1 +299 -0
  31. package/dist/accounts/account-manager.d.ts +163 -0
  32. package/dist/accounts/account-manager.d.ts.map +1 -0
  33. package/dist/accounts/account-manager.js +614 -0
  34. package/dist/accounts/account-manager.js.map +1 -0
  35. package/dist/accounts/auto-login-manager.d.ts +62 -0
  36. package/dist/accounts/auto-login-manager.d.ts.map +1 -0
  37. package/dist/accounts/auto-login-manager.js +537 -0
  38. package/dist/accounts/auto-login-manager.js.map +1 -0
  39. package/dist/accounts/crypto.d.ts +45 -0
  40. package/dist/accounts/crypto.d.ts.map +1 -0
  41. package/dist/accounts/crypto.js +138 -0
  42. package/dist/accounts/crypto.js.map +1 -0
  43. package/dist/accounts/index.d.ts +14 -0
  44. package/dist/accounts/index.d.ts.map +1 -0
  45. package/dist/accounts/index.js +14 -0
  46. package/dist/accounts/index.js.map +1 -0
  47. package/dist/accounts/types.d.ts +103 -0
  48. package/dist/accounts/types.d.ts.map +1 -0
  49. package/dist/accounts/types.js +7 -0
  50. package/dist/accounts/types.js.map +1 -0
  51. package/dist/auth/auth-manager.d.ts +9 -2
  52. package/dist/auth/auth-manager.d.ts.map +1 -1
  53. package/dist/auth/auth-manager.js +60 -6
  54. package/dist/auth/auth-manager.js.map +1 -1
  55. package/dist/auto-discovery/auto-discovery.d.ts.map +1 -1
  56. package/dist/auto-discovery/auto-discovery.js +2 -1
  57. package/dist/auto-discovery/auto-discovery.js.map +1 -1
  58. package/dist/cli/accounts.d.ts +13 -0
  59. package/dist/cli/accounts.d.ts.map +1 -0
  60. package/dist/cli/accounts.js +195 -0
  61. package/dist/cli/accounts.js.map +1 -0
  62. package/dist/config.d.ts +1 -0
  63. package/dist/config.d.ts.map +1 -1
  64. package/dist/config.js +24 -0
  65. package/dist/config.js.map +1 -1
  66. package/dist/content/content-generator.d.ts +153 -0
  67. package/dist/content/content-generator.d.ts.map +1 -0
  68. package/dist/content/content-generator.js +637 -0
  69. package/dist/content/content-generator.js.map +1 -0
  70. package/dist/content/content-manager.d.ts +364 -0
  71. package/dist/content/content-manager.d.ts.map +1 -0
  72. package/dist/content/content-manager.js +3841 -0
  73. package/dist/content/content-manager.js.map +1 -0
  74. package/dist/content/content-templates.d.ts +183 -0
  75. package/dist/content/content-templates.d.ts.map +1 -0
  76. package/dist/content/content-templates.js +719 -0
  77. package/dist/content/content-templates.js.map +1 -0
  78. package/dist/content/index.d.ts +14 -0
  79. package/dist/content/index.d.ts.map +1 -0
  80. package/dist/content/index.js +14 -0
  81. package/dist/content/index.js.map +1 -0
  82. package/dist/content/types.d.ts +285 -0
  83. package/dist/content/types.d.ts.map +1 -0
  84. package/dist/content/types.js +10 -0
  85. package/dist/content/types.js.map +1 -0
  86. package/dist/errors.d.ts +1 -1
  87. package/dist/errors.d.ts.map +1 -1
  88. package/dist/errors.js.map +1 -1
  89. package/dist/http-wrapper.d.ts +7 -0
  90. package/dist/http-wrapper.d.ts.map +1 -1
  91. package/dist/http-wrapper.js +449 -29
  92. package/dist/http-wrapper.js.map +1 -1
  93. package/dist/i18n/en.json +120 -0
  94. package/dist/i18n/fr.json +120 -0
  95. package/dist/i18n/index.d.ts +168 -0
  96. package/dist/i18n/index.d.ts.map +1 -0
  97. package/dist/i18n/index.js +213 -0
  98. package/dist/i18n/index.js.map +1 -0
  99. package/dist/index.js +26 -2
  100. package/dist/index.js.map +1 -1
  101. package/dist/library/notebook-library.d.ts +4 -0
  102. package/dist/library/notebook-library.d.ts.map +1 -1
  103. package/dist/library/notebook-library.js +20 -3
  104. package/dist/library/notebook-library.js.map +1 -1
  105. package/dist/session/browser-session.d.ts +35 -8
  106. package/dist/session/browser-session.d.ts.map +1 -1
  107. package/dist/session/browser-session.js +243 -28
  108. package/dist/session/browser-session.js.map +1 -1
  109. package/dist/session/session-manager.d.ts +6 -0
  110. package/dist/session/session-manager.d.ts.map +1 -1
  111. package/dist/session/session-manager.js +46 -14
  112. package/dist/session/session-manager.js.map +1 -1
  113. package/dist/session/shared-context-manager.d.ts +3 -3
  114. package/dist/session/shared-context-manager.d.ts.map +1 -1
  115. package/dist/session/shared-context-manager.js +10 -7
  116. package/dist/session/shared-context-manager.js.map +1 -1
  117. package/dist/stdio-http-proxy.d.ts +24 -0
  118. package/dist/stdio-http-proxy.d.ts.map +1 -0
  119. package/dist/stdio-http-proxy.js +592 -0
  120. package/dist/stdio-http-proxy.js.map +1 -0
  121. package/dist/tools/index.d.ts +106 -1
  122. package/dist/tools/index.d.ts.map +1 -1
  123. package/dist/tools/index.js +1028 -7
  124. package/dist/tools/index.js.map +1 -1
  125. package/dist/types.d.ts +81 -17
  126. package/dist/types.d.ts.map +1 -1
  127. package/dist/utils/citation-extractor.d.ts +66 -0
  128. package/dist/utils/citation-extractor.d.ts.map +1 -0
  129. package/dist/utils/citation-extractor.js +492 -0
  130. package/dist/utils/citation-extractor.js.map +1 -0
  131. package/dist/utils/page-utils.d.ts +8 -0
  132. package/dist/utils/page-utils.d.ts.map +1 -1
  133. package/dist/utils/page-utils.js +112 -8
  134. package/dist/utils/page-utils.js.map +1 -1
  135. package/docs/ADDING_A_LANGUAGE.md +209 -0
  136. package/docs/ARCHITECTURE_MIGRATION_STUDY.md +894 -0
  137. package/docs/CHROME_PROFILE_LIMITATION.md +15 -1
  138. package/docs/MULTI_ACCOUNT_SYSTEM.md +304 -0
  139. package/package.json +15 -12
  140. package/scripts/archive/add-and-activate-notebook.ps1 +31 -0
  141. package/scripts/archive/add-new-notebook.ps1 +25 -0
  142. package/scripts/archive/add-rom1pey.ps1 +2 -0
  143. package/scripts/archive/add-rpmonster.ps1 +2 -0
  144. package/scripts/archive/add-source-debug.ps1 +11 -0
  145. package/scripts/archive/add-source-e2e.ps1 +28 -0
  146. package/scripts/archive/add-source-visible.ps1 +11 -0
  147. package/scripts/archive/add-test-notebook.ps1 +13 -0
  148. package/scripts/archive/add-test-source.ps1 +50 -0
  149. package/scripts/archive/capture-screen.ps1 +11 -0
  150. package/scripts/archive/change-language.mjs +45 -0
  151. package/scripts/archive/change-language.ts +44 -0
  152. package/scripts/archive/check-account.ps1 +19 -0
  153. package/scripts/archive/check-notebook-2.ps1 +8 -0
  154. package/scripts/archive/check-test-notebook.ps1 +11 -0
  155. package/scripts/archive/create-notebook-auto.ps1 +31 -0
  156. package/scripts/archive/create-notebook.ps1 +8 -0
  157. package/scripts/archive/create-rom1pey-notebook.ps1 +19 -0
  158. package/scripts/archive/create-rom1pey.ps1 +8 -0
  159. package/scripts/archive/create-test-notebook-fresh.ps1 +21 -0
  160. package/scripts/archive/create-test-notebook.ps1 +16 -0
  161. package/scripts/archive/debug-add-source-auto.ps1 +29 -0
  162. package/scripts/archive/debug-add-source.ps1 +19 -0
  163. package/scripts/archive/debug-add-text-source.ps1 +47 -0
  164. package/scripts/archive/debug-home.ps1 +10 -0
  165. package/scripts/archive/debug-selectors.ps1 +55 -0
  166. package/scripts/archive/debug-sources-panel.ps1 +22 -0
  167. package/scripts/archive/debug-ui.ps1 +17 -0
  168. package/scripts/archive/discover-home.ps1 +26 -0
  169. package/scripts/archive/kill-automation-chrome.ps1 +37 -0
  170. package/scripts/archive/list-my-notebooks.ps1 +27 -0
  171. package/scripts/archive/navigate-home-visible.ps1 +23 -0
  172. package/scripts/archive/navigate-home.ps1 +15 -0
  173. package/scripts/archive/run-e2e-english.ps1 +111 -0
  174. package/scripts/archive/run-e2e-rom1pey-v2.ps1 +122 -0
  175. package/scripts/archive/run-e2e-rom1pey.ps1 +117 -0
  176. package/scripts/archive/setup-english-test.ps1 +36 -0
  177. package/scripts/archive/setup-test-notebook.ps1 +71 -0
  178. package/scripts/archive/simple-add-source.ps1 +14 -0
  179. package/scripts/archive/t10.ps1 +2 -0
  180. package/scripts/archive/t20.ps1 +4 -0
  181. package/scripts/archive/t30.ps1 +9 -0
  182. package/scripts/archive/t31.ps1 +11 -0
  183. package/scripts/archive/t32.ps1 +6 -0
  184. package/scripts/archive/t39.ps1 +5 -0
  185. package/scripts/archive/t40.ps1 +5 -0
  186. package/scripts/archive/t53.ps1 +12 -0
  187. package/scripts/archive/t54.ps1 +12 -0
  188. package/scripts/archive/t55.ps1 +11 -0
  189. package/scripts/archive/t9.ps1 +1 -0
  190. package/scripts/archive/test-access.ps1 +28 -0
  191. package/scripts/archive/test-add-delete-source.ps1 +64 -0
  192. package/scripts/archive/test-add-source-visible.ps1 +16 -0
  193. package/scripts/archive/test-add-source.ps1 +19 -0
  194. package/scripts/archive/test-add-text-debug.ps1 +28 -0
  195. package/scripts/archive/test-add-text-source.ps1 +8 -0
  196. package/scripts/archive/test-add-url-source.ps1 +7 -0
  197. package/scripts/archive/test-ask-ascii.ps1 +20 -0
  198. package/scripts/archive/test-ask-cnv.ps1 +20 -0
  199. package/scripts/archive/test-ask-headed.ps1 +51 -0
  200. package/scripts/archive/test-ask-ifs.ps1 +16 -0
  201. package/scripts/archive/test-ask-now.ps1 +24 -0
  202. package/scripts/archive/test-ask-real.ps1 +19 -0
  203. package/scripts/archive/test-ask-visible.ps1 +20 -0
  204. package/scripts/archive/test-create-notebook.ps1 +8 -0
  205. package/scripts/archive/test-create-then-add.ps1 +17 -0
  206. package/scripts/archive/test-delete-source.ps1 +41 -0
  207. package/scripts/archive/test-e2e-notebook.ps1 +21 -0
  208. package/scripts/archive/test-english-notebook.ps1 +20 -0
  209. package/scripts/archive/test-english.ps1 +7 -0
  210. package/scripts/archive/test-full-custom-instructions.ps1 +40 -0
  211. package/scripts/archive/test-full-infographic.ps1 +34 -0
  212. package/scripts/archive/test-full-language.ps1 +21 -0
  213. package/scripts/archive/test-full-presentation.ps1 +85 -0
  214. package/scripts/archive/test-full-report.ps1 +34 -0
  215. package/scripts/archive/test-full-source-selection.ps1 +35 -0
  216. package/scripts/archive/test-full-video-brief.ps1 +22 -0
  217. package/scripts/archive/test-full-video-explainer.ps1 +22 -0
  218. package/scripts/archive/test-full-video-styles.ps1 +37 -0
  219. package/scripts/archive/test-generate-report.ps1 +15 -0
  220. package/scripts/archive/test-generate-study-guide.ps1 +11 -0
  221. package/scripts/archive/test-headed-ask.ps1 +13 -0
  222. package/scripts/archive/test-headed-now.ps1 +9 -0
  223. package/scripts/archive/test-headed.ps1 +9 -0
  224. package/scripts/archive/test-hello.ps1 +7 -0
  225. package/scripts/archive/test-i18n-studio.ps1 +8 -0
  226. package/scripts/archive/test-i18n.ps1 +7 -0
  227. package/scripts/archive/test-manual-headed.ps1 +26 -0
  228. package/scripts/archive/test-mathieu-quota.ps1 +8 -0
  229. package/scripts/archive/test-notebook-1.ps1 +10 -0
  230. package/scripts/archive/test-notebook-2-sources.ps1 +12 -0
  231. package/scripts/archive/test-notebook1.ps1 +14 -0
  232. package/scripts/archive/test-personal-notebook.ps1 +14 -0
  233. package/scripts/archive/test-rate-limit.ps1 +19 -0
  234. package/scripts/archive/test-real-ask.ps1 +50 -0
  235. package/scripts/archive/test-real-ask2.ps1 +30 -0
  236. package/scripts/archive/test-rom1pey.ps1 +7 -0
  237. package/scripts/archive/test-rotation-complete.ps1 +14 -0
  238. package/scripts/archive/test-rotation.ps1 +8 -0
  239. package/scripts/archive/test-show-browser.ps1 +39 -0
  240. package/scripts/archive/test-update-notebook.ps1 +4 -0
  241. package/scripts/archive/verify-language-slow.ps1 +21 -0
  242. package/scripts/archive/verify-language.ps1 +15 -0
  243. package/scripts/check-server.ps1 +46 -0
  244. package/scripts/mcp-wsl-helper.sh +146 -0
  245. package/scripts/start-server.ps1 +94 -0
  246. package/scripts/stop-server.ps1 +30 -0
  247. package/scripts/switch-account-language.sh +191 -0
  248. package/scripts/test-account.ps1 +58 -0
  249. package/dist/__tests__/cleanup-manager.test.d.ts +0 -2
  250. package/dist/__tests__/cleanup-manager.test.d.ts.map +0 -1
  251. package/dist/__tests__/cleanup-manager.test.js +0 -341
  252. package/dist/__tests__/cleanup-manager.test.js.map +0 -1
  253. package/dist/__tests__/config-parsing.test.d.ts +0 -2
  254. package/dist/__tests__/config-parsing.test.d.ts.map +0 -1
  255. package/dist/__tests__/config-parsing.test.js +0 -338
  256. package/dist/__tests__/config-parsing.test.js.map +0 -1
  257. package/dist/__tests__/config.test.d.ts +0 -2
  258. package/dist/__tests__/config.test.d.ts.map +0 -1
  259. package/dist/__tests__/config.test.js +0 -267
  260. package/dist/__tests__/config.test.js.map +0 -1
  261. package/dist/__tests__/errors.test.d.ts +0 -2
  262. package/dist/__tests__/errors.test.d.ts.map +0 -1
  263. package/dist/__tests__/errors.test.js +0 -166
  264. package/dist/__tests__/errors.test.js.map +0 -1
  265. package/dist/__tests__/logger.test.d.ts +0 -2
  266. package/dist/__tests__/logger.test.d.ts.map +0 -1
  267. package/dist/__tests__/logger.test.js +0 -324
  268. package/dist/__tests__/logger.test.js.map +0 -1
  269. package/dist/__tests__/page-utils.test.d.ts +0 -2
  270. package/dist/__tests__/page-utils.test.d.ts.map +0 -1
  271. package/dist/__tests__/page-utils.test.js +0 -349
  272. package/dist/__tests__/page-utils.test.js.map +0 -1
  273. package/dist/__tests__/setup-verification.test.d.ts +0 -2
  274. package/dist/__tests__/setup-verification.test.d.ts.map +0 -1
  275. package/dist/__tests__/setup-verification.test.js +0 -15
  276. package/dist/__tests__/setup-verification.test.js.map +0 -1
  277. package/dist/__tests__/stealth-utils.test.d.ts +0 -2
  278. package/dist/__tests__/stealth-utils.test.d.ts.map +0 -1
  279. package/dist/__tests__/stealth-utils.test.js +0 -413
  280. package/dist/__tests__/stealth-utils.test.js.map +0 -1
  281. package/dist/__tests__/types.test.d.ts +0 -2
  282. package/dist/__tests__/types.test.d.ts.map +0 -1
  283. package/dist/__tests__/types.test.js +0 -461
  284. package/dist/__tests__/types.test.js.map +0 -1
@@ -0,0 +1,404 @@
1
+ # Configuration Guide - NotebookLM MCP HTTP Server
2
+
3
+ > Advanced configuration, environment variables, security
4
+
5
+ ---
6
+
7
+ ## 📋 Environment Variables
8
+
9
+ ### HTTP Configuration
10
+
11
+ | Variable | Default | Description |
12
+ | ----------- | ------------- | ---------------------------------------------------------------- |
13
+ | `HTTP_HOST` | `0.0.0.0` | Listen IP address (`0.0.0.0` = network, `127.0.0.1` = localhost) |
14
+ | `HTTP_PORT` | `3000` | HTTP listen port |
15
+ | `NODE_ENV` | `development` | Environment (`development`, `production`) |
16
+
17
+ **Examples:**
18
+
19
+ ```powershell
20
+ # Localhost only (maximum security)
21
+ $env:HTTP_HOST="127.0.0.1"
22
+ $env:HTTP_PORT="3000"
23
+ node dist/http-wrapper.js
24
+
25
+ # Local network (for n8n)
26
+ $env:HTTP_HOST="0.0.0.0"
27
+ $env:HTTP_PORT="3000"
28
+ node dist/http-wrapper.js
29
+
30
+ # Custom port
31
+ $env:HTTP_PORT="8080"
32
+ node dist/http-wrapper.js
33
+ ```
34
+
35
+ ### Browser Configuration
36
+
37
+ | Variable | Default | Description |
38
+ | ---------------------- | ------- | ------------------------------------------------------- |
39
+ | `HEADLESS` | `true` | Chrome headless (`true` = invisible, `false` = visible) |
40
+ | `STEALTH_ENABLED` | `true` | Stealth anti-detection mode |
41
+ | `NOTEBOOKLM_UI_LOCALE` | `fr` | UI language for selectors (`fr` or `en`) |
42
+
43
+ **Examples:**
44
+
45
+ ```powershell
46
+ # Debug: see Chrome
47
+ $env:HEADLESS="false"
48
+ node dist/http-wrapper.js
49
+
50
+ # Use English UI selectors (for English Google Account)
51
+ $env:NOTEBOOKLM_UI_LOCALE="en"
52
+ node dist/http-wrapper.js
53
+ ```
54
+
55
+ ### Session Configuration
56
+
57
+ | Variable | Default | Description |
58
+ | ----------------- | ------- | ------------------------------------- |
59
+ | `MAX_SESSIONS` | `10` | Maximum number of concurrent sessions |
60
+ | `SESSION_TIMEOUT` | `900` | Session timeout in seconds (15 min) |
61
+
62
+ **Examples:**
63
+
64
+ ```powershell
65
+ # More simultaneous sessions
66
+ $env:MAX_SESSIONS="20"
67
+ node dist/http-wrapper.js
68
+ ```
69
+
70
+ ### Data Configuration
71
+
72
+ | Variable | Default | Description |
73
+ | -------------------- | ----------------------- | ------------------------- |
74
+ | `DATA_DIR` | `./Data` | Persistent data directory |
75
+ | `CHROME_PROFILE_DIR` | `./Data/chrome_profile` | Chrome profile |
76
+ | `BROWSER_STATE_DIR` | `./Data/browser_state` | Browser state |
77
+
78
+ ---
79
+
80
+ ## 🔒 Security
81
+
82
+ ### 1. Restrict to Localhost
83
+
84
+ **For local use only:**
85
+
86
+ ```powershell
87
+ $env:HTTP_HOST="127.0.0.1"
88
+ node dist/http-wrapper.js
89
+ ```
90
+
91
+ **Advantages:**
92
+
93
+ - ✅ No network access possible
94
+ - ✅ Maximum security
95
+ - ❌ n8n must be on the same machine
96
+
97
+ ### 2. Windows Firewall
98
+
99
+ **For n8n on local network, allow only the n8n server IP:**
100
+
101
+ ```powershell
102
+ # Replace 192.168.1.100 with your n8n server IP
103
+ New-NetFirewallRule `
104
+ -DisplayName "NotebookLM MCP (n8n only)" `
105
+ -Direction Inbound `
106
+ -LocalPort 3000 `
107
+ -Protocol TCP `
108
+ -Action Allow `
109
+ -RemoteAddress 192.168.1.100
110
+ ```
111
+
112
+ ### 3. Add API Authentication (Optional)
113
+
114
+ Modify `src/http-wrapper.ts` after line 27:
115
+
116
+ ```typescript
117
+ // Authentication middleware
118
+ const API_KEY = process.env.API_KEY || 'change-me';
119
+
120
+ app.use((req, res, next) => {
121
+ // Skip auth for health check
122
+ if (req.path === '/health') {
123
+ return next();
124
+ }
125
+
126
+ const authHeader = req.headers.authorization;
127
+ if (authHeader !== `Bearer ${API_KEY}`) {
128
+ return res.status(401).json({
129
+ success: false,
130
+ error: 'Unauthorized',
131
+ });
132
+ }
133
+ next();
134
+ });
135
+ ```
136
+
137
+ **Usage:**
138
+
139
+ ```powershell
140
+ # Start with API key
141
+ $env:API_KEY="my-super-secure-secret-token"
142
+ node dist/http-wrapper.js
143
+ ```
144
+
145
+ **In n8n, add the header:**
146
+
147
+ ```
148
+ Authorization: Bearer my-super-secure-secret-token
149
+ ```
150
+
151
+ ### 4. HTTPS with Reverse Proxy (Production)
152
+
153
+ **Option A: Nginx**
154
+
155
+ ```nginx
156
+ server {
157
+ listen 443 ssl;
158
+ server_name notebooklm.mydomain.com;
159
+
160
+ ssl_certificate /path/to/cert.pem;
161
+ ssl_certificate_key /path/to/key.pem;
162
+
163
+ location / {
164
+ proxy_pass http://localhost:3000;
165
+ proxy_http_version 1.1;
166
+ proxy_set_header Upgrade $http_upgrade;
167
+ proxy_set_header Connection 'upgrade';
168
+ proxy_set_header Host $host;
169
+ proxy_cache_bypass $http_upgrade;
170
+ }
171
+ }
172
+ ```
173
+
174
+ **Option B: Caddy** (simpler)
175
+
176
+ ```
177
+ notebooklm.mydomain.com {
178
+ reverse_proxy localhost:3000
179
+ }
180
+ ```
181
+
182
+ ---
183
+
184
+ ## ⚙️ Advanced Configuration
185
+
186
+ ### .env File (Recommended)
187
+
188
+ Create `.env` at the root:
189
+
190
+ ```bash
191
+ # HTTP Configuration
192
+ HTTP_HOST=0.0.0.0
193
+ HTTP_PORT=3000
194
+ NODE_ENV=production
195
+
196
+ # Browser Configuration
197
+ HEADLESS=true
198
+ STEALTH_ENABLED=true
199
+ NOTEBOOKLM_UI_LOCALE=fr # or 'en' for English
200
+
201
+ # Session Configuration
202
+ MAX_SESSIONS=10
203
+ SESSION_TIMEOUT=900
204
+
205
+ # Security
206
+ API_KEY=your-secret-token
207
+
208
+ # Data Paths (optional)
209
+ DATA_DIR=./Data
210
+ CHROME_PROFILE_DIR=./Data/chrome_profile
211
+ BROWSER_STATE_DIR=./Data/browser_state
212
+ ```
213
+
214
+ **Load with:**
215
+
216
+ ```powershell
217
+ # Install dotenv
218
+ npm install dotenv
219
+
220
+ # Modify http-wrapper.ts (first line):
221
+ import 'dotenv/config';
222
+
223
+ # Start
224
+ node dist/http-wrapper.js
225
+ ```
226
+
227
+ ### Logging
228
+
229
+ The server uses the `utils/logger.ts` module with 4 levels:
230
+
231
+ - `log.success()` - Success messages (green)
232
+ - `log.info()` - Information (cyan)
233
+ - `log.warning()` - Warnings (yellow)
234
+ - `log.error()` - Errors (red)
235
+ - `log.dim()` - Secondary messages (gray)
236
+
237
+ **Disable debug logs:**
238
+
239
+ Modify `src/session/browser-session.ts` line 415:
240
+
241
+ ```typescript
242
+ debug: false, // Disable debug logs
243
+ ```
244
+
245
+ ---
246
+
247
+ ## 🚀 Deployment Modes
248
+
249
+ ### Development Mode
250
+
251
+ ```powershell
252
+ npm run dev:http
253
+ ```
254
+
255
+ - Auto-reload on code changes
256
+ - Debug logs enabled
257
+ - Chrome visible (`HEADLESS=false`)
258
+
259
+ ### Production Mode
260
+
261
+ ```powershell
262
+ $env:NODE_ENV="production"
263
+ $env:HEADLESS="true"
264
+ node dist/http-wrapper.js
265
+ ```
266
+
267
+ - No auto-reload
268
+ - Minimal logs
269
+ - Chrome headless
270
+
271
+ ### Background Mode (Windows)
272
+
273
+ ```powershell
274
+ # Start
275
+ Start-Process node -ArgumentList "dist/http-wrapper.js" -WindowStyle Hidden
276
+
277
+ # Stop
278
+ Get-Process node | Where-Object {$_.Path -like "*node.exe*"} | Stop-Process
279
+ ```
280
+
281
+ ### With PM2 (Recommended for Production)
282
+
283
+ ```bash
284
+ # Start (PM2 is included as dev dependency)
285
+ npm run daemon:start
286
+
287
+ # Auto-restart on boot
288
+ pm2 startup
289
+ pm2 save
290
+
291
+ # Manage
292
+ npm run daemon:status # View status
293
+ npm run daemon:logs # View logs
294
+ npm run daemon:restart # Restart
295
+ npm run daemon:stop # Stop
296
+ ```
297
+
298
+ ---
299
+
300
+ ## 📊 Monitoring
301
+
302
+ ### Health Check Endpoint
303
+
304
+ ```bash
305
+ curl http://localhost:3000/health
306
+ ```
307
+
308
+ **Response:**
309
+
310
+ ```json
311
+ {
312
+ "success": true,
313
+ "data": {
314
+ "authenticated": true,
315
+ "sessions": 2,
316
+ "library_notebooks": 1,
317
+ "context_age_hours": 0.5
318
+ }
319
+ }
320
+ ```
321
+
322
+ **Automatic monitoring (cron):**
323
+
324
+ ```bash
325
+ # Check every 5 minutes
326
+ */5 * * * * curl -s http://localhost:3000/health | jq -e '.success == true' || echo "Server down!"
327
+ ```
328
+
329
+ ---
330
+
331
+ ## 🔧 Configuration Troubleshooting
332
+
333
+ ### Problem: "EADDRINUSE: address already in use"
334
+
335
+ **Cause:** Port already in use
336
+
337
+ **Solution:**
338
+
339
+ ```powershell
340
+ # Change the port
341
+ $env:HTTP_PORT="3001"
342
+ node dist/http-wrapper.js
343
+ ```
344
+
345
+ ### Problem: n8n cannot connect
346
+
347
+ **Cause:** Firewall or HOST misconfigured
348
+
349
+ **Solution:**
350
+
351
+ ```powershell
352
+ # Check config
353
+ $env:HTTP_HOST="0.0.0.0" # Not 127.0.0.1!
354
+ node dist/http-wrapper.js
355
+
356
+ # Check firewall
357
+ Test-NetConnection -ComputerName localhost -Port 3000
358
+ ```
359
+
360
+ ### Problem: "Cannot find module 'dotenv'"
361
+
362
+ **Cause:** .env used but dotenv not installed
363
+
364
+ **Solution:**
365
+
366
+ ```powershell
367
+ npm install dotenv
368
+ ```
369
+
370
+ ---
371
+
372
+ ## 📝 Complete Example
373
+
374
+ **Production startup script (`start-prod.ps1`):**
375
+
376
+ ```powershell
377
+ #!/usr/bin/env pwsh
378
+
379
+ # Configuration
380
+ $env:NODE_ENV="production"
381
+ $env:HTTP_HOST="0.0.0.0"
382
+ $env:HTTP_PORT="3000"
383
+ $env:HEADLESS="true"
384
+ $env:MAX_SESSIONS="15"
385
+ $env:SESSION_TIMEOUT="1800" # 30 min
386
+
387
+ # Checks
388
+ if (-not (Test-Path "dist/http-wrapper.js")) {
389
+ Write-Error "Build missing. Run: npm run build"
390
+ exit 1
391
+ }
392
+
393
+ if (-not (Test-Path "Data/browser_state/state.json")) {
394
+ Write-Warning "Authentication not configured. Run: npm run setup-auth"
395
+ }
396
+
397
+ # Start
398
+ Write-Host "🚀 Starting in production mode..." -ForegroundColor Green
399
+ node dist/http-wrapper.js
400
+ ```
401
+
402
+ ---
403
+
404
+ **Configuration validated!** ✅