notelm-mcp 1.2.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 (323) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +456 -0
  3. package/dist/auth/auth-manager.d.ts +139 -0
  4. package/dist/auth/auth-manager.d.ts.map +1 -0
  5. package/dist/auth/auth-manager.js +960 -0
  6. package/dist/auth/auth-manager.js.map +1 -0
  7. package/dist/config.d.ts +92 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +219 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/constants.d.ts +58 -0
  12. package/dist/constants.d.ts.map +1 -0
  13. package/dist/constants.js +133 -0
  14. package/dist/constants.js.map +1 -0
  15. package/dist/errors.d.ts +26 -0
  16. package/dist/errors.d.ts.map +1 -0
  17. package/dist/errors.js +41 -0
  18. package/dist/errors.js.map +1 -0
  19. package/dist/index.d.ts +32 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +325 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/library/notebook-library.d.ts +70 -0
  24. package/dist/library/notebook-library.d.ts.map +1 -0
  25. package/dist/library/notebook-library.js +279 -0
  26. package/dist/library/notebook-library.js.map +1 -0
  27. package/dist/library/types.d.ts +67 -0
  28. package/dist/library/types.d.ts.map +1 -0
  29. package/dist/library/types.js +8 -0
  30. package/dist/library/types.js.map +1 -0
  31. package/dist/playwright.config.d.ts +3 -0
  32. package/dist/playwright.config.d.ts.map +1 -0
  33. package/dist/playwright.config.js +38 -0
  34. package/dist/playwright.config.js.map +1 -0
  35. package/dist/resources/resource-handlers.d.ts +22 -0
  36. package/dist/resources/resource-handlers.d.ts.map +1 -0
  37. package/dist/resources/resource-handlers.js +216 -0
  38. package/dist/resources/resource-handlers.js.map +1 -0
  39. package/dist/scripts/save-auth-state.d.ts +2 -0
  40. package/dist/scripts/save-auth-state.d.ts.map +1 -0
  41. package/dist/scripts/save-auth-state.js +91 -0
  42. package/dist/scripts/save-auth-state.js.map +1 -0
  43. package/dist/session/browser-session.d.ts +108 -0
  44. package/dist/session/browser-session.d.ts.map +1 -0
  45. package/dist/session/browser-session.js +636 -0
  46. package/dist/session/browser-session.js.map +1 -0
  47. package/dist/session/session-manager.d.ts +76 -0
  48. package/dist/session/session-manager.d.ts.map +1 -0
  49. package/dist/session/session-manager.js +273 -0
  50. package/dist/session/session-manager.js.map +1 -0
  51. package/dist/session/shared-context-manager.d.ts +107 -0
  52. package/dist/session/shared-context-manager.d.ts.map +1 -0
  53. package/dist/session/shared-context-manager.js +447 -0
  54. package/dist/session/shared-context-manager.js.map +1 -0
  55. package/dist/src/auth/auth-manager.d.ts +139 -0
  56. package/dist/src/auth/auth-manager.d.ts.map +1 -0
  57. package/dist/src/auth/auth-manager.js +960 -0
  58. package/dist/src/auth/auth-manager.js.map +1 -0
  59. package/dist/src/config.d.ts +92 -0
  60. package/dist/src/config.d.ts.map +1 -0
  61. package/dist/src/config.js +219 -0
  62. package/dist/src/config.js.map +1 -0
  63. package/dist/src/constants.d.ts +58 -0
  64. package/dist/src/constants.d.ts.map +1 -0
  65. package/dist/src/constants.js +133 -0
  66. package/dist/src/constants.js.map +1 -0
  67. package/dist/src/errors.d.ts +26 -0
  68. package/dist/src/errors.d.ts.map +1 -0
  69. package/dist/src/errors.js +41 -0
  70. package/dist/src/errors.js.map +1 -0
  71. package/dist/src/index.d.ts +32 -0
  72. package/dist/src/index.d.ts.map +1 -0
  73. package/dist/src/index.js +325 -0
  74. package/dist/src/index.js.map +1 -0
  75. package/dist/src/library/notebook-library.d.ts +70 -0
  76. package/dist/src/library/notebook-library.d.ts.map +1 -0
  77. package/dist/src/library/notebook-library.js +279 -0
  78. package/dist/src/library/notebook-library.js.map +1 -0
  79. package/dist/src/library/types.d.ts +67 -0
  80. package/dist/src/library/types.d.ts.map +1 -0
  81. package/dist/src/library/types.js +8 -0
  82. package/dist/src/library/types.js.map +1 -0
  83. package/dist/src/resources/resource-handlers.d.ts +22 -0
  84. package/dist/src/resources/resource-handlers.d.ts.map +1 -0
  85. package/dist/src/resources/resource-handlers.js +216 -0
  86. package/dist/src/resources/resource-handlers.js.map +1 -0
  87. package/dist/src/scripts/health-check.d.ts +13 -0
  88. package/dist/src/scripts/health-check.d.ts.map +1 -0
  89. package/dist/src/scripts/health-check.js +100 -0
  90. package/dist/src/scripts/health-check.js.map +1 -0
  91. package/dist/src/session/browser-session.d.ts +108 -0
  92. package/dist/src/session/browser-session.d.ts.map +1 -0
  93. package/dist/src/session/browser-session.js +642 -0
  94. package/dist/src/session/browser-session.js.map +1 -0
  95. package/dist/src/session/session-manager.d.ts +76 -0
  96. package/dist/src/session/session-manager.d.ts.map +1 -0
  97. package/dist/src/session/session-manager.js +273 -0
  98. package/dist/src/session/session-manager.js.map +1 -0
  99. package/dist/src/session/shared-context-manager.d.ts +107 -0
  100. package/dist/src/session/shared-context-manager.d.ts.map +1 -0
  101. package/dist/src/session/shared-context-manager.js +447 -0
  102. package/dist/src/session/shared-context-manager.js.map +1 -0
  103. package/dist/src/tools/definitions/ask-question.d.ts +8 -0
  104. package/dist/src/tools/definitions/ask-question.d.ts.map +1 -0
  105. package/dist/src/tools/definitions/ask-question.js +211 -0
  106. package/dist/src/tools/definitions/ask-question.js.map +1 -0
  107. package/dist/src/tools/definitions/notebook-management.d.ts +3 -0
  108. package/dist/src/tools/definitions/notebook-management.d.ts.map +1 -0
  109. package/dist/src/tools/definitions/notebook-management.js +243 -0
  110. package/dist/src/tools/definitions/notebook-management.js.map +1 -0
  111. package/dist/src/tools/definitions/session-management.d.ts +3 -0
  112. package/dist/src/tools/definitions/session-management.d.ts.map +1 -0
  113. package/dist/src/tools/definitions/session-management.js +41 -0
  114. package/dist/src/tools/definitions/session-management.js.map +1 -0
  115. package/dist/src/tools/definitions/system.d.ts +3 -0
  116. package/dist/src/tools/definitions/system.d.ts.map +1 -0
  117. package/dist/src/tools/definitions/system.js +143 -0
  118. package/dist/src/tools/definitions/system.js.map +1 -0
  119. package/dist/src/tools/definitions.d.ts +12 -0
  120. package/dist/src/tools/definitions.d.ts.map +1 -0
  121. package/dist/src/tools/definitions.js +26 -0
  122. package/dist/src/tools/definitions.js.map +1 -0
  123. package/dist/src/tools/handlers.d.ts +212 -0
  124. package/dist/src/tools/handlers.d.ts.map +1 -0
  125. package/dist/src/tools/handlers.js +712 -0
  126. package/dist/src/tools/handlers.js.map +1 -0
  127. package/dist/src/tools/index.d.ts +8 -0
  128. package/dist/src/tools/index.d.ts.map +1 -0
  129. package/dist/src/tools/index.js +8 -0
  130. package/dist/src/tools/index.js.map +1 -0
  131. package/dist/src/types.d.ts +88 -0
  132. package/dist/src/types.d.ts.map +1 -0
  133. package/dist/src/types.js +5 -0
  134. package/dist/src/types.js.map +1 -0
  135. package/dist/src/utils/auth-manager.d.ts +2 -0
  136. package/dist/src/utils/auth-manager.d.ts.map +1 -0
  137. package/dist/src/utils/auth-manager.js +25 -0
  138. package/dist/src/utils/auth-manager.js.map +1 -0
  139. package/dist/src/utils/cleanup-manager.d.ts +133 -0
  140. package/dist/src/utils/cleanup-manager.d.ts.map +1 -0
  141. package/dist/src/utils/cleanup-manager.js +673 -0
  142. package/dist/src/utils/cleanup-manager.js.map +1 -0
  143. package/dist/src/utils/cli-handler.d.ts +16 -0
  144. package/dist/src/utils/cli-handler.d.ts.map +1 -0
  145. package/dist/src/utils/cli-handler.js +102 -0
  146. package/dist/src/utils/cli-handler.js.map +1 -0
  147. package/dist/src/utils/logger.d.ts +61 -0
  148. package/dist/src/utils/logger.d.ts.map +1 -0
  149. package/dist/src/utils/logger.js +92 -0
  150. package/dist/src/utils/logger.js.map +1 -0
  151. package/dist/src/utils/page-utils.d.ts +54 -0
  152. package/dist/src/utils/page-utils.d.ts.map +1 -0
  153. package/dist/src/utils/page-utils.js +381 -0
  154. package/dist/src/utils/page-utils.js.map +1 -0
  155. package/dist/src/utils/rate-limit-handler.d.ts +42 -0
  156. package/dist/src/utils/rate-limit-handler.d.ts.map +1 -0
  157. package/dist/src/utils/rate-limit-handler.js +88 -0
  158. package/dist/src/utils/rate-limit-handler.js.map +1 -0
  159. package/dist/src/utils/rate-limit-handler.test.d.ts +7 -0
  160. package/dist/src/utils/rate-limit-handler.test.d.ts.map +1 -0
  161. package/dist/src/utils/rate-limit-handler.test.js +86 -0
  162. package/dist/src/utils/rate-limit-handler.test.js.map +1 -0
  163. package/dist/src/utils/settings-manager.d.ts +37 -0
  164. package/dist/src/utils/settings-manager.d.ts.map +1 -0
  165. package/dist/src/utils/settings-manager.js +121 -0
  166. package/dist/src/utils/settings-manager.js.map +1 -0
  167. package/dist/src/utils/stealth-utils.d.ts +135 -0
  168. package/dist/src/utils/stealth-utils.d.ts.map +1 -0
  169. package/dist/src/utils/stealth-utils.js +396 -0
  170. package/dist/src/utils/stealth-utils.js.map +1 -0
  171. package/dist/src/utils/stealth-utils.test.d.ts +7 -0
  172. package/dist/src/utils/stealth-utils.test.d.ts.map +1 -0
  173. package/dist/src/utils/stealth-utils.test.js +72 -0
  174. package/dist/src/utils/stealth-utils.test.js.map +1 -0
  175. package/dist/tests/e2e/authenticated.spec.d.ts +2 -0
  176. package/dist/tests/e2e/authenticated.spec.d.ts.map +1 -0
  177. package/dist/tests/e2e/authenticated.spec.js +41 -0
  178. package/dist/tests/e2e/authenticated.spec.js.map +1 -0
  179. package/dist/tests/e2e/mocked.spec.d.ts +2 -0
  180. package/dist/tests/e2e/mocked.spec.d.ts.map +1 -0
  181. package/dist/tests/e2e/mocked.spec.js +32 -0
  182. package/dist/tests/e2e/mocked.spec.js.map +1 -0
  183. package/dist/tests/mocks/handlers.d.ts +4 -0
  184. package/dist/tests/mocks/handlers.d.ts.map +1 -0
  185. package/dist/tests/mocks/handlers.js +55 -0
  186. package/dist/tests/mocks/handlers.js.map +1 -0
  187. package/dist/tests/mocks/setup.d.ts +3 -0
  188. package/dist/tests/mocks/setup.d.ts.map +1 -0
  189. package/dist/tests/mocks/setup.js +77 -0
  190. package/dist/tests/mocks/setup.js.map +1 -0
  191. package/dist/tools/definitions/ask-question.d.ts +8 -0
  192. package/dist/tools/definitions/ask-question.d.ts.map +1 -0
  193. package/dist/tools/definitions/ask-question.js +211 -0
  194. package/dist/tools/definitions/ask-question.js.map +1 -0
  195. package/dist/tools/definitions/notebook-management.d.ts +3 -0
  196. package/dist/tools/definitions/notebook-management.d.ts.map +1 -0
  197. package/dist/tools/definitions/notebook-management.js +243 -0
  198. package/dist/tools/definitions/notebook-management.js.map +1 -0
  199. package/dist/tools/definitions/session-management.d.ts +3 -0
  200. package/dist/tools/definitions/session-management.d.ts.map +1 -0
  201. package/dist/tools/definitions/session-management.js +41 -0
  202. package/dist/tools/definitions/session-management.js.map +1 -0
  203. package/dist/tools/definitions/system.d.ts +3 -0
  204. package/dist/tools/definitions/system.d.ts.map +1 -0
  205. package/dist/tools/definitions/system.js +143 -0
  206. package/dist/tools/definitions/system.js.map +1 -0
  207. package/dist/tools/definitions.d.ts +12 -0
  208. package/dist/tools/definitions.d.ts.map +1 -0
  209. package/dist/tools/definitions.js +26 -0
  210. package/dist/tools/definitions.js.map +1 -0
  211. package/dist/tools/handlers.d.ts +212 -0
  212. package/dist/tools/handlers.d.ts.map +1 -0
  213. package/dist/tools/handlers.js +712 -0
  214. package/dist/tools/handlers.js.map +1 -0
  215. package/dist/tools/index.d.ts +8 -0
  216. package/dist/tools/index.d.ts.map +1 -0
  217. package/dist/tools/index.js +8 -0
  218. package/dist/tools/index.js.map +1 -0
  219. package/dist/types.d.ts +82 -0
  220. package/dist/types.d.ts.map +1 -0
  221. package/dist/types.js +5 -0
  222. package/dist/types.js.map +1 -0
  223. package/dist/utils/cleanup-manager.d.ts +133 -0
  224. package/dist/utils/cleanup-manager.d.ts.map +1 -0
  225. package/dist/utils/cleanup-manager.js +673 -0
  226. package/dist/utils/cleanup-manager.js.map +1 -0
  227. package/dist/utils/cli-handler.d.ts +16 -0
  228. package/dist/utils/cli-handler.d.ts.map +1 -0
  229. package/dist/utils/cli-handler.js +102 -0
  230. package/dist/utils/cli-handler.js.map +1 -0
  231. package/dist/utils/logger.d.ts +61 -0
  232. package/dist/utils/logger.d.ts.map +1 -0
  233. package/dist/utils/logger.js +92 -0
  234. package/dist/utils/logger.js.map +1 -0
  235. package/dist/utils/page-utils.d.ts +54 -0
  236. package/dist/utils/page-utils.d.ts.map +1 -0
  237. package/dist/utils/page-utils.js +381 -0
  238. package/dist/utils/page-utils.js.map +1 -0
  239. package/dist/utils/rate-limit-handler.d.ts +42 -0
  240. package/dist/utils/rate-limit-handler.d.ts.map +1 -0
  241. package/dist/utils/rate-limit-handler.js +88 -0
  242. package/dist/utils/rate-limit-handler.js.map +1 -0
  243. package/dist/utils/rate-limit-handler.test.d.ts +7 -0
  244. package/dist/utils/rate-limit-handler.test.d.ts.map +1 -0
  245. package/dist/utils/rate-limit-handler.test.js +91 -0
  246. package/dist/utils/rate-limit-handler.test.js.map +1 -0
  247. package/dist/utils/settings-manager.d.ts +37 -0
  248. package/dist/utils/settings-manager.d.ts.map +1 -0
  249. package/dist/utils/settings-manager.js +121 -0
  250. package/dist/utils/settings-manager.js.map +1 -0
  251. package/dist/utils/stealth-utils.d.ts +135 -0
  252. package/dist/utils/stealth-utils.d.ts.map +1 -0
  253. package/dist/utils/stealth-utils.js +396 -0
  254. package/dist/utils/stealth-utils.js.map +1 -0
  255. package/dist/utils/stealth-utils.test.d.ts +7 -0
  256. package/dist/utils/stealth-utils.test.d.ts.map +1 -0
  257. package/dist/utils/stealth-utils.test.js +72 -0
  258. package/dist/utils/stealth-utils.test.js.map +1 -0
  259. package/docs/01_configuration.md +94 -0
  260. package/docs/02_tools.md +34 -0
  261. package/docs/03_troubleshooting.md +59 -0
  262. package/docs/04_usage-guide.md +245 -0
  263. package/docs/05_project-analysis.qmd +309 -0
  264. package/docs/06_integration-analysis.html +914 -0
  265. package/docs/06_integration-analysis.qmd +255 -0
  266. package/docs/06_integration-analysis_files/libs/bootstrap/bootstrap-4f0954b6b0dd6bf39f4bb9151ba984db.min.css +12 -0
  267. package/docs/06_integration-analysis_files/libs/bootstrap/bootstrap-icons.css +2106 -0
  268. package/docs/06_integration-analysis_files/libs/bootstrap/bootstrap-icons.woff +0 -0
  269. package/docs/06_integration-analysis_files/libs/bootstrap/bootstrap.min.js +7 -0
  270. package/docs/06_integration-analysis_files/libs/clipboard/clipboard.min.js +7 -0
  271. package/docs/06_integration-analysis_files/libs/quarto-html/anchor.min.js +9 -0
  272. package/docs/06_integration-analysis_files/libs/quarto-html/axe/axe-check.js +145 -0
  273. package/docs/06_integration-analysis_files/libs/quarto-html/popper.min.js +6 -0
  274. package/docs/06_integration-analysis_files/libs/quarto-html/quarto-syntax-highlighting-587c61ba64f3a5504c4d52d930310e48.css +236 -0
  275. package/docs/06_integration-analysis_files/libs/quarto-html/quarto.js +847 -0
  276. package/docs/06_integration-analysis_files/libs/quarto-html/tabsets/tabsets.js +95 -0
  277. package/docs/06_integration-analysis_files/libs/quarto-html/tippy.css +1 -0
  278. package/docs/06_integration-analysis_files/libs/quarto-html/tippy.umd.min.js +2 -0
  279. package/docs/07_e2e-testing-safety.qmd +754 -0
  280. package/docs/08_project-re-evaluation.html +609 -0
  281. package/docs/08_project-re-evaluation.qmd +86 -0
  282. package/docs/08_project-re-evaluation_files/libs/bootstrap/bootstrap-4f0954b6b0dd6bf39f4bb9151ba984db.min.css +12 -0
  283. package/docs/08_project-re-evaluation_files/libs/bootstrap/bootstrap-icons.css +2106 -0
  284. package/docs/08_project-re-evaluation_files/libs/bootstrap/bootstrap-icons.woff +0 -0
  285. package/docs/08_project-re-evaluation_files/libs/bootstrap/bootstrap.min.js +7 -0
  286. package/docs/08_project-re-evaluation_files/libs/clipboard/clipboard.min.js +7 -0
  287. package/docs/08_project-re-evaluation_files/libs/quarto-html/anchor.min.js +9 -0
  288. package/docs/08_project-re-evaluation_files/libs/quarto-html/axe/axe-check.js +145 -0
  289. package/docs/08_project-re-evaluation_files/libs/quarto-html/popper.min.js +6 -0
  290. package/docs/08_project-re-evaluation_files/libs/quarto-html/quarto-syntax-highlighting-587c61ba64f3a5504c4d52d930310e48.css +236 -0
  291. package/docs/08_project-re-evaluation_files/libs/quarto-html/quarto.js +847 -0
  292. package/docs/08_project-re-evaluation_files/libs/quarto-html/tabsets/tabsets.js +95 -0
  293. package/docs/08_project-re-evaluation_files/libs/quarto-html/tippy.css +1 -0
  294. package/docs/08_project-re-evaluation_files/libs/quarto-html/tippy.umd.min.js +2 -0
  295. package/docs/notebooklm-mcp-usage.html +704 -0
  296. package/docs/notebooklm-mcp-usage.qmd +119 -0
  297. package/docs/notebooklm-mcp-usage_files/libs/bootstrap/bootstrap-6b71f2156b6a5230c6677325978bcf08.min.css +12 -0
  298. package/docs/notebooklm-mcp-usage_files/libs/bootstrap/bootstrap-icons.css +2106 -0
  299. package/docs/notebooklm-mcp-usage_files/libs/bootstrap/bootstrap-icons.woff +0 -0
  300. package/docs/notebooklm-mcp-usage_files/libs/bootstrap/bootstrap.min.js +7 -0
  301. package/docs/notebooklm-mcp-usage_files/libs/clipboard/clipboard.min.js +7 -0
  302. package/docs/notebooklm-mcp-usage_files/libs/quarto-html/anchor.min.js +9 -0
  303. package/docs/notebooklm-mcp-usage_files/libs/quarto-html/axe/axe-check.js +145 -0
  304. package/docs/notebooklm-mcp-usage_files/libs/quarto-html/popper.min.js +6 -0
  305. package/docs/notebooklm-mcp-usage_files/libs/quarto-html/quarto-syntax-highlighting-587c61ba64f3a5504c4d52d930310e48.css +236 -0
  306. package/docs/notebooklm-mcp-usage_files/libs/quarto-html/quarto.js +847 -0
  307. package/docs/notebooklm-mcp-usage_files/libs/quarto-html/tabsets/tabsets.js +95 -0
  308. package/docs/notebooklm-mcp-usage_files/libs/quarto-html/tippy.css +1 -0
  309. package/docs/notebooklm-mcp-usage_files/libs/quarto-html/tippy.umd.min.js +2 -0
  310. package/docs/repomix-usage_files/libs/bootstrap/bootstrap-6b71f2156b6a5230c6677325978bcf08.min.css +12 -0
  311. package/docs/repomix-usage_files/libs/bootstrap/bootstrap-icons.css +2106 -0
  312. package/docs/repomix-usage_files/libs/bootstrap/bootstrap-icons.woff +0 -0
  313. package/docs/repomix-usage_files/libs/bootstrap/bootstrap.min.js +7 -0
  314. package/docs/repomix-usage_files/libs/clipboard/clipboard.min.js +7 -0
  315. package/docs/repomix-usage_files/libs/quarto-html/anchor.min.js +9 -0
  316. package/docs/repomix-usage_files/libs/quarto-html/axe/axe-check.js +145 -0
  317. package/docs/repomix-usage_files/libs/quarto-html/popper.min.js +6 -0
  318. package/docs/repomix-usage_files/libs/quarto-html/quarto-syntax-highlighting-587c61ba64f3a5504c4d52d930310e48.css +236 -0
  319. package/docs/repomix-usage_files/libs/quarto-html/quarto.js +847 -0
  320. package/docs/repomix-usage_files/libs/quarto-html/tabsets/tabsets.js +95 -0
  321. package/docs/repomix-usage_files/libs/quarto-html/tippy.css +1 -0
  322. package/docs/repomix-usage_files/libs/quarto-html/tippy.umd.min.js +2 -0
  323. package/package.json +62 -0
@@ -0,0 +1,255 @@
1
+ ---
2
+ title: "Chrome/NotebookLM/Gemini 통합 분석 보고서"
3
+ author: "Antigravity AI"
4
+ date: "2026-01-02"
5
+ format:
6
+ html:
7
+ toc: true
8
+ toc-depth: 3
9
+ number-sections: true
10
+ ---
11
+
12
+ # 개요
13
+
14
+ 이 문서는 NotebookLM MCP 프로젝트의 Chrome 자동화, NotebookLM 연동, Gemini 통합 부분에 대한 분석 결과입니다.
15
+
16
+ ---
17
+
18
+ # Gemini 버전 확인
19
+
20
+ ::: {.callout-important}
21
+ ## 결론: Gemini 2.5 사용 (Gemini 3 아님)
22
+ NotebookLM은 현재 **Gemini 2.5**를 백엔드로 사용합니다.
23
+ :::
24
+
25
+ ## 코드 내 확인 사항
26
+
27
+ | 파일 | 내용 |
28
+ |------|------|
29
+ | `src/tools/definitions/ask-question.ts` | `"Gemini 2.5 • Session RAG"` |
30
+ | `README.md` | `"Gemini 2.5 that provides intelligent, synthesized answers"` |
31
+ | `CHANGELOG.md` | `"Session-based conversations with Gemini 2.5"` |
32
+
33
+ ## 참고
34
+
35
+ - NotebookLM은 Google의 관리형 서비스
36
+ - Gemini 모델 버전은 Google에서 제어하며 MCP에서 직접 변경 불가
37
+ - Google이 백엔드를 업그레이드하면 자동으로 최신 버전 사용
38
+
39
+ ---
40
+
41
+ # Chrome 자동화 분석
42
+
43
+ ## 사용 기술
44
+
45
+ - **Patchright v1.48.2**: Playwright 포크, 봇 탐지 회피 특화
46
+ - **영구 Chrome 프로필**: `launchPersistentContext`로 일관된 핑거프린트 유지
47
+
48
+ ## 핵심 구성요소
49
+
50
+ | 파일 | 역할 |
51
+ |------|------|
52
+ | `auth-manager.ts` | Google 인증, 쿠키 관리, 상태 저장/복원 |
53
+ | `browser-session.ts` | 개별 브라우저 세션, 질문 전송, 응답 수신 |
54
+ | `session-manager.ts` | 다중 세션 관리, 세션 풀링, 자동 정리 |
55
+ | `shared-context-manager.ts` | 단일 브라우저 컨텍스트 공유, 프로필 관리 |
56
+
57
+ ## 아키텍처 흐름
58
+
59
+ ```mermaid
60
+ flowchart LR
61
+ A[MCP Client] --> B[Tool Handler]
62
+ B --> C[Session Manager]
63
+ C --> D[Shared Context Manager]
64
+ D --> E[Browser Session]
65
+ E --> F[NotebookLM Page]
66
+ F --> G[Gemini 2.5 Backend]
67
+ ```
68
+
69
+ ## 잘 구현된 부분
70
+
71
+ ::: {.callout-tip}
72
+ ### 강점
73
+ 1. **자동 복구 메커니즘**: 브라우저/컨텍스트 종료 시 자동 재연결
74
+ 2. **다국어 셀렉터**: 6개 언어 UI 대응 (영어, 독일어, 일본어, 한국어, 프랑스어, 스페인어)
75
+ 3. **스텔스 모드**: 휴먼 타이핑, 마우스 움직임, 랜덤 딜레이
76
+ 4. **세션 기반 대화**: 컨텍스트 유지를 통한 심층 연구 가능
77
+ :::
78
+
79
+ ---
80
+
81
+ # NotebookLM 연동 분석
82
+
83
+ ## 인증 흐름
84
+
85
+ 1. 사용자가 `setup_auth` 호출
86
+ 2. Chrome 브라우저 창 열림 (headful 모드)
87
+ 3. Google 계정 수동 로그인 (최대 10분)
88
+ 4. 쿠키 및 sessionStorage 저장
89
+ 5. 이후 세션에서 자동 인증
90
+
91
+ ## 질문-응답 흐름
92
+
93
+ ```mermaid
94
+ sequenceDiagram
95
+ participant C as Claude
96
+ participant M as MCP Server
97
+ participant B as Browser Session
98
+ participant N as NotebookLM
99
+
100
+ C->>M: ask_question(question)
101
+ M->>B: getOrCreateSession()
102
+ B->>N: Navigate to notebook
103
+ B->>N: Type question (human-like)
104
+ B->>N: Submit (Enter)
105
+ N-->>B: Stream response
106
+ B-->>M: Parse answer
107
+ M-->>C: Return formatted answer
108
+ ```
109
+
110
+ ## Rate Limit 처리
111
+
112
+ - 무료 계정: 50 쿼리/일
113
+ - Rate limit 감지: 에러 메시지 및 입력창 disabled 체크
114
+ - 우회: `re_auth` 도구로 다른 Google 계정 전환
115
+
116
+ ---
117
+
118
+ # 개선 권장 사항
119
+
120
+ ## 우선순위: 높음
121
+
122
+ ### 1. ESM 호환성 문제
123
+
124
+ **위치**: `src/utils/settings-manager.ts`
125
+
126
+ ```typescript
127
+ // 현재 (비권장)
128
+ const fsSync = require("fs");
129
+ const data = fsSync.readFileSync(this.settingsPath, "utf-8");
130
+
131
+ // 개선안
132
+ import { readFileSync } from "fs";
133
+ const data = readFileSync(this.settingsPath, "utf-8");
134
+ ```
135
+
136
+ ### 2. 타입 안전성 개선
137
+
138
+ `@ts-expect-error` 사용 위치:
139
+
140
+ - `auth-manager.ts`: sessionStorage 접근
141
+ - `browser-session.ts`: 브라우저 컨텍스트 평가
142
+ - `stealth-utils.ts`: 윈도우 객체 접근
143
+
144
+ **개선안**: 브라우저 컨텍스트용 타입 정의 생성
145
+
146
+ ```typescript
147
+ // src/types/browser-context.d.ts
148
+ interface BrowserWindow extends Window {
149
+ sessionStorage: Storage;
150
+ localStorage: Storage;
151
+ }
152
+ ```
153
+
154
+ ---
155
+
156
+ ## 우선순위: 중간
157
+
158
+ ### 3. Rate Limit 재시도 로직 (✅ 완료)
159
+
160
+ `RateLimitHandler`를 사용하여 `BrowserSession.ask()` 메서드에 자동 재시도 로직을 통합했습니다.
161
+ 429 에러 또는 쿼리 제한 감지 시 지수 백오프를 통해 자동으로 재시도합니다.
162
+
163
+ ```typescript
164
+ // src/session/browser-session.ts
165
+ const handler = new RateLimitHandler();
166
+ const askWithRetry = () => handler.executeWithRetry(askOnce);
167
+ ```
168
+
169
+ ### 4. 테스트 추가
170
+
171
+ 현재 상태:
172
+ - `package.json`에 테스트 스크립트 없음
173
+ - 테스트 파일 없음
174
+
175
+ 권장 사항:
176
+ - Jest 또는 Vitest 설정
177
+ - 핵심 모듈 단위 테스트
178
+ - E2E 테스트 (Playwright 활용)
179
+
180
+ ### 5. 하드코딩된 타임아웃 개선
181
+
182
+ ```typescript
183
+ // 현재
184
+ await page.waitForTimeout(2000); // 매직 넘버
185
+
186
+ // 개선안
187
+ await page.waitForTimeout(CONFIG.delays.pageStabilize);
188
+ ```
189
+
190
+ ---
191
+
192
+ ## 우선순위: 낮음
193
+
194
+ ### 6. 상수 추출
195
+
196
+ ```typescript
197
+ // src/constants.ts
198
+ export const SELECTORS = {
199
+ CHAT_INPUT: "textarea.query-box-input",
200
+ THINKING_MESSAGE: "div.thinking-message",
201
+ RESPONSE_CONTAINER: ".response-content",
202
+ };
203
+
204
+ export const URLS = {
205
+ NOTEBOOKLM_AUTH: "https://notebooklm.google.com/",
206
+ GOOGLE_ACCOUNTS: "https://accounts.google.com/",
207
+ };
208
+
209
+ export const ERROR_MESSAGES = {
210
+ SESSION_EXPIRED: "Session expired, re-authenticating...",
211
+ RATE_LIMIT: "Rate limit reached (50 queries/day)",
212
+ };
213
+ ```
214
+
215
+ ### 7. 중복 코드 제거
216
+
217
+ 세션 초기화/복구 로직이 여러 곳에서 반복:
218
+
219
+ - `BrowserSession.init()`
220
+ - `BrowserSession.ask()` 내부 복구
221
+ - `BrowserSession.reset()`
222
+
223
+ **개선안**: 공통 복구 유틸리티 함수 추출
224
+
225
+ ---
226
+
227
+ # 프로젝트 강점 요약
228
+
229
+ ::: {.callout-note}
230
+ ## 전반적 평가
231
+ NotebookLM MCP는 **프로덕션 수준의 품질**을 갖춘 잘 설계된 프로젝트입니다.
232
+ :::
233
+
234
+ | 영역 | 평가 |
235
+ |------|------|
236
+ | 에러 처리 | ✅ 견고함 (try-catch + 자동 복구) |
237
+ | 크로스 플랫폼 | ✅ Linux, macOS, Windows 지원 |
238
+ | 문서화 | ✅ 포괄적 (설정, 도구, 트러블슈팅) |
239
+ | MCP 표준 | ✅ 16개 도구와 리소스 제공 |
240
+ | 보안 | ⚠️ 개선 필요 (이메일 마스킹 강화) |
241
+ | 테스트 | ❌ 부재 (추가 필요) |
242
+
243
+ ---
244
+
245
+ # 결론
246
+
247
+ NotebookLM MCP는 Gemini 2.5 기반 NotebookLM과의 통합이 견고하게 구현되어 있으며, Patchright를 활용한 Chrome 자동화가 봇 탐지를 효과적으로 회피합니다.
248
+
249
+ **즉시 개선 권장**:
250
+
251
+ 1. ESM 호환성 (`require()` → ESM import)
252
+ 2. 테스트 커버리지 추가
253
+ 3. Rate limit 재시도 로직
254
+
255
+ 이러한 개선을 적용하면 더욱 안정적이고 유지보수 가능한 프로젝트가 될 것입니다.