@roomi-fields/notebooklm-mcp 1.1.2
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/LICENSE +22 -0
- package/README.md +548 -0
- package/dist/auth/auth-manager.d.ts +139 -0
- package/dist/auth/auth-manager.d.ts.map +1 -0
- package/dist/auth/auth-manager.js +981 -0
- package/dist/auth/auth-manager.js.map +1 -0
- package/dist/config.d.ts +89 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +216 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +26 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +41 -0
- package/dist/errors.js.map +1 -0
- package/dist/http-wrapper.d.ts +8 -0
- package/dist/http-wrapper.d.ts.map +1 -0
- package/dist/http-wrapper.js +221 -0
- package/dist/http-wrapper.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +499 -0
- package/dist/index.js.map +1 -0
- package/dist/library/notebook-library.d.ts +81 -0
- package/dist/library/notebook-library.d.ts.map +1 -0
- package/dist/library/notebook-library.js +362 -0
- package/dist/library/notebook-library.js.map +1 -0
- package/dist/library/types.d.ts +67 -0
- package/dist/library/types.d.ts.map +1 -0
- package/dist/library/types.js +8 -0
- package/dist/library/types.js.map +1 -0
- package/dist/session/browser-session.d.ts +108 -0
- package/dist/session/browser-session.d.ts.map +1 -0
- package/dist/session/browser-session.js +630 -0
- package/dist/session/browser-session.js.map +1 -0
- package/dist/session/session-manager.d.ts +76 -0
- package/dist/session/session-manager.d.ts.map +1 -0
- package/dist/session/session-manager.js +273 -0
- package/dist/session/session-manager.js.map +1 -0
- package/dist/session/shared-context-manager.d.ts +107 -0
- package/dist/session/shared-context-manager.d.ts.map +1 -0
- package/dist/session/shared-context-manager.js +447 -0
- package/dist/session/shared-context-manager.js.map +1 -0
- package/dist/tools/index.d.ts +225 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +1396 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types.d.ts +82 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/cleanup-manager.d.ts +133 -0
- package/dist/utils/cleanup-manager.d.ts.map +1 -0
- package/dist/utils/cleanup-manager.js +673 -0
- package/dist/utils/cleanup-manager.js.map +1 -0
- package/dist/utils/logger.d.ts +61 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +92 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/page-utils.d.ts +54 -0
- package/dist/utils/page-utils.d.ts.map +1 -0
- package/dist/utils/page-utils.js +422 -0
- package/dist/utils/page-utils.js.map +1 -0
- package/dist/utils/stealth-utils.d.ts +135 -0
- package/dist/utils/stealth-utils.d.ts.map +1 -0
- package/dist/utils/stealth-utils.js +398 -0
- package/dist/utils/stealth-utils.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stealth utilities for human-like browser behavior
|
|
3
|
+
*
|
|
4
|
+
* This module provides functions to simulate realistic human interactions:
|
|
5
|
+
* - Human-like typing (speed configurable via CONFIG.typingWpmMin/Max)
|
|
6
|
+
* - Realistic mouse movements (Bezier curves with jitter)
|
|
7
|
+
* - Random delays (normal distribution)
|
|
8
|
+
* - Smooth scrolling
|
|
9
|
+
* - Reading pauses
|
|
10
|
+
*
|
|
11
|
+
* Based on the Python implementation from stealth_utils.py
|
|
12
|
+
*/
|
|
13
|
+
import { CONFIG } from "../config.js";
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Helper Functions
|
|
16
|
+
// ============================================================================
|
|
17
|
+
/**
|
|
18
|
+
* Sleep for specified milliseconds
|
|
19
|
+
*/
|
|
20
|
+
export async function sleep(ms) {
|
|
21
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Generate random integer between min and max (inclusive)
|
|
25
|
+
*/
|
|
26
|
+
export function randomInt(min, max) {
|
|
27
|
+
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Generate random float between min and max
|
|
31
|
+
*/
|
|
32
|
+
export function randomFloat(min, max) {
|
|
33
|
+
return Math.random() * (max - min) + min;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Generate random character (for typos)
|
|
37
|
+
*/
|
|
38
|
+
export function randomChar() {
|
|
39
|
+
const chars = "qwertyuiopasdfghjklzxcvbnm";
|
|
40
|
+
return chars[randomInt(0, chars.length - 1)];
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Generate Gaussian (normal) distributed random number
|
|
44
|
+
* Uses Box-Muller transform
|
|
45
|
+
*/
|
|
46
|
+
export function gaussian(mean, stdDev) {
|
|
47
|
+
const u1 = Math.random();
|
|
48
|
+
const u2 = Math.random();
|
|
49
|
+
const z0 = Math.sqrt(-2.0 * Math.log(u1)) * Math.cos(2.0 * Math.PI * u2);
|
|
50
|
+
return z0 * stdDev + mean;
|
|
51
|
+
}
|
|
52
|
+
// ============================================================================
|
|
53
|
+
// Random Delays
|
|
54
|
+
// ============================================================================
|
|
55
|
+
/**
|
|
56
|
+
* Add a random delay to simulate human thinking/reaction time
|
|
57
|
+
* Uses normal distribution for more realistic delays
|
|
58
|
+
*
|
|
59
|
+
* @param minMs Minimum delay in milliseconds (default: from CONFIG)
|
|
60
|
+
* @param maxMs Maximum delay in milliseconds (default: from CONFIG)
|
|
61
|
+
*/
|
|
62
|
+
export async function randomDelay(minMs, maxMs) {
|
|
63
|
+
minMs = minMs ?? CONFIG.minDelayMs;
|
|
64
|
+
maxMs = maxMs ?? CONFIG.maxDelayMs;
|
|
65
|
+
if (!CONFIG.stealthEnabled || !CONFIG.stealthRandomDelays) {
|
|
66
|
+
// Fixed delay (average)
|
|
67
|
+
const target = minMs === maxMs ? minMs : (minMs + maxMs) / 2;
|
|
68
|
+
if (target > 0) {
|
|
69
|
+
await sleep(target);
|
|
70
|
+
}
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
// Use normal distribution for more realistic delays
|
|
74
|
+
// Mean at 60% of range, standard deviation of 20% of range
|
|
75
|
+
const mean = minMs + (maxMs - minMs) * 0.6;
|
|
76
|
+
const stdDev = (maxMs - minMs) * 0.2;
|
|
77
|
+
let delay = gaussian(mean, stdDev);
|
|
78
|
+
delay = Math.max(minMs, Math.min(maxMs, delay)); // Clamp to range
|
|
79
|
+
await sleep(delay);
|
|
80
|
+
}
|
|
81
|
+
// ============================================================================
|
|
82
|
+
// Human Typing
|
|
83
|
+
// ============================================================================
|
|
84
|
+
/**
|
|
85
|
+
* Type text in a human-like manner with variable speed and optional typos
|
|
86
|
+
*
|
|
87
|
+
* Simulates realistic typing patterns:
|
|
88
|
+
* - Variable speed (45-65 WPM by default)
|
|
89
|
+
* - Occasional typos (2% chance)
|
|
90
|
+
* - Longer pauses after punctuation
|
|
91
|
+
* - Realistic character delays
|
|
92
|
+
*
|
|
93
|
+
* @param page Playwright page instance
|
|
94
|
+
* @param selector CSS selector of input element
|
|
95
|
+
* @param text Text to type
|
|
96
|
+
* @param options Typing options (wpm, withTypos)
|
|
97
|
+
*/
|
|
98
|
+
export async function humanType(page, selector, text, options = {}) {
|
|
99
|
+
if (!CONFIG.stealthEnabled || !CONFIG.stealthHumanTyping) {
|
|
100
|
+
// Fast typing without stealth
|
|
101
|
+
await page.fill(selector, text);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const wpm = options.wpm ?? randomInt(CONFIG.typingWpmMin, CONFIG.typingWpmMax);
|
|
105
|
+
const withTypos = options.withTypos ?? true;
|
|
106
|
+
// Calculate average delay per character (in ms)
|
|
107
|
+
// WPM = (characters / 5) / minutes
|
|
108
|
+
// Average word length ~5 characters
|
|
109
|
+
const charsPerMinute = wpm * 5;
|
|
110
|
+
const avgDelayMs = (60 * 1000) / charsPerMinute;
|
|
111
|
+
// Clear existing text first
|
|
112
|
+
await page.fill(selector, "");
|
|
113
|
+
await randomDelay(30, 80);
|
|
114
|
+
// Click to focus
|
|
115
|
+
await page.click(selector);
|
|
116
|
+
await randomDelay(20, 60);
|
|
117
|
+
// Type each character
|
|
118
|
+
let currentText = "";
|
|
119
|
+
let i = 0;
|
|
120
|
+
while (i < text.length) {
|
|
121
|
+
const char = text[i];
|
|
122
|
+
// Simulate very rare typo (0.3% chance) and shorter correction
|
|
123
|
+
if (withTypos && Math.random() < 0.003 && i > 0) {
|
|
124
|
+
// Type wrong character
|
|
125
|
+
const wrongChar = randomChar();
|
|
126
|
+
currentText += wrongChar;
|
|
127
|
+
await page.fill(selector, currentText);
|
|
128
|
+
// Shorter notice window for faster typing
|
|
129
|
+
const noticeDelay = randomFloat(avgDelayMs * 0.6, avgDelayMs * 1.1);
|
|
130
|
+
await sleep(noticeDelay);
|
|
131
|
+
// Backspace
|
|
132
|
+
currentText = currentText.slice(0, -1);
|
|
133
|
+
await page.fill(selector, currentText);
|
|
134
|
+
await randomDelay(20, 60);
|
|
135
|
+
}
|
|
136
|
+
// Type correct character
|
|
137
|
+
currentText += char;
|
|
138
|
+
await page.fill(selector, currentText);
|
|
139
|
+
// Variable delay between characters – tuned for faster but still human-like typing
|
|
140
|
+
let delay;
|
|
141
|
+
if (char === "." || char === "!" || char === "?") {
|
|
142
|
+
delay = randomFloat(avgDelayMs * 1.05, avgDelayMs * 1.4);
|
|
143
|
+
}
|
|
144
|
+
else if (char === " ") {
|
|
145
|
+
delay = randomFloat(avgDelayMs * 0.5, avgDelayMs * 0.9);
|
|
146
|
+
}
|
|
147
|
+
else if (char === ",") {
|
|
148
|
+
delay = randomFloat(avgDelayMs * 0.9, avgDelayMs * 1.2);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
// Normal character
|
|
152
|
+
const variation = randomFloat(0.5, 0.9);
|
|
153
|
+
delay = avgDelayMs * variation;
|
|
154
|
+
}
|
|
155
|
+
await sleep(delay);
|
|
156
|
+
i++;
|
|
157
|
+
}
|
|
158
|
+
// Small delay after finishing typing
|
|
159
|
+
await randomDelay(50, 120);
|
|
160
|
+
}
|
|
161
|
+
// ============================================================================
|
|
162
|
+
// Mouse Movement
|
|
163
|
+
// ============================================================================
|
|
164
|
+
/**
|
|
165
|
+
* Move mouse in a realistic curved path to target coordinates
|
|
166
|
+
* Uses Bezier-like curves with jitter for natural movement
|
|
167
|
+
*
|
|
168
|
+
* @param page Playwright page instance
|
|
169
|
+
* @param targetX Target X coordinate (default: random)
|
|
170
|
+
* @param targetY Target Y coordinate (default: random)
|
|
171
|
+
* @param steps Number of steps in movement (default: random 10-25)
|
|
172
|
+
*/
|
|
173
|
+
export async function randomMouseMovement(page, targetX, targetY, steps) {
|
|
174
|
+
if (!CONFIG.stealthEnabled || !CONFIG.stealthMouseMovements) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const viewport = page.viewportSize() || CONFIG.viewport;
|
|
178
|
+
targetX = targetX ?? randomInt(100, viewport.width - 100);
|
|
179
|
+
targetY = targetY ?? randomInt(100, viewport.height - 100);
|
|
180
|
+
steps = steps ?? randomInt(10, 25);
|
|
181
|
+
// Start from a random position (we don't know current position)
|
|
182
|
+
const startX = randomInt(0, viewport.width);
|
|
183
|
+
const startY = randomInt(0, viewport.height);
|
|
184
|
+
// Generate curved path using Bezier-like curve
|
|
185
|
+
for (let step = 0; step < steps; step++) {
|
|
186
|
+
const progress = step / steps;
|
|
187
|
+
// Add some randomness to create a natural curve
|
|
188
|
+
const curveOffsetX = Math.sin(progress * Math.PI) * randomInt(-50, 50);
|
|
189
|
+
const curveOffsetY = Math.cos(progress * Math.PI) * randomInt(-30, 30);
|
|
190
|
+
let currentX = startX + (targetX - startX) * progress + curveOffsetX;
|
|
191
|
+
let currentY = startY + (targetY - startY) * progress + curveOffsetY;
|
|
192
|
+
// Add micro-jitter (humans never move in perfectly straight lines)
|
|
193
|
+
const jitterX = randomFloat(-3, 3);
|
|
194
|
+
const jitterY = randomFloat(-3, 3);
|
|
195
|
+
currentX = Math.max(0, Math.min(viewport.width, currentX + jitterX));
|
|
196
|
+
currentY = Math.max(0, Math.min(viewport.height, currentY + jitterY));
|
|
197
|
+
await page.mouse.move(currentX, currentY);
|
|
198
|
+
// Variable delay between movements (faster in middle, slower at ends)
|
|
199
|
+
const delay = 10 + 20 * Math.abs(0.5 - progress);
|
|
200
|
+
await sleep(delay);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
// ============================================================================
|
|
204
|
+
// Realistic Click
|
|
205
|
+
// ============================================================================
|
|
206
|
+
/**
|
|
207
|
+
* Click an element with realistic human behavior
|
|
208
|
+
* Includes mouse movement, pause, and click
|
|
209
|
+
*
|
|
210
|
+
* @param page Playwright page instance
|
|
211
|
+
* @param selector CSS selector of element to click
|
|
212
|
+
* @param withMouseMovement Whether to move mouse first (default: true)
|
|
213
|
+
*/
|
|
214
|
+
export async function realisticClick(page, selector, withMouseMovement = true) {
|
|
215
|
+
if (!CONFIG.stealthEnabled || !CONFIG.stealthMouseMovements) {
|
|
216
|
+
await page.click(selector);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
if (withMouseMovement) {
|
|
220
|
+
// Move mouse to element
|
|
221
|
+
const element = await page.$(selector);
|
|
222
|
+
if (element) {
|
|
223
|
+
const box = await element.boundingBox();
|
|
224
|
+
if (box) {
|
|
225
|
+
// Don't click exactly in center (humans are imperfect)
|
|
226
|
+
const offsetX = randomFloat(-box.width * 0.2, box.width * 0.2);
|
|
227
|
+
const offsetY = randomFloat(-box.height * 0.2, box.height * 0.2);
|
|
228
|
+
const targetX = box.x + box.width / 2 + offsetX;
|
|
229
|
+
const targetY = box.y + box.height / 2 + offsetY;
|
|
230
|
+
await randomMouseMovement(page, targetX, targetY);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
// Small pause before clicking
|
|
235
|
+
await randomDelay(100, 300);
|
|
236
|
+
// Click
|
|
237
|
+
await page.click(selector);
|
|
238
|
+
// Small pause after clicking
|
|
239
|
+
await randomDelay(150, 400);
|
|
240
|
+
}
|
|
241
|
+
// ============================================================================
|
|
242
|
+
// Smooth Scrolling
|
|
243
|
+
// ============================================================================
|
|
244
|
+
/**
|
|
245
|
+
* Scroll the page smoothly like a human
|
|
246
|
+
* Uses multiple small steps for smooth animation
|
|
247
|
+
*
|
|
248
|
+
* @param page Playwright page instance
|
|
249
|
+
* @param amount Scroll amount in pixels (default: random 100-400)
|
|
250
|
+
* @param direction Scroll direction ("down" or "up")
|
|
251
|
+
*/
|
|
252
|
+
export async function smoothScroll(page, amount, direction = "down") {
|
|
253
|
+
amount = amount ?? randomInt(100, 400);
|
|
254
|
+
amount = Math.abs(amount);
|
|
255
|
+
if (direction === "up") {
|
|
256
|
+
amount = -amount;
|
|
257
|
+
}
|
|
258
|
+
if (!CONFIG.stealthEnabled || !CONFIG.stealthMouseMovements) {
|
|
259
|
+
await page.evaluate((scrollAmount) => {
|
|
260
|
+
// @ts-expect-error - window exists in browser context
|
|
261
|
+
window.scrollBy({ top: scrollAmount, behavior: "auto" });
|
|
262
|
+
}, amount);
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
// Scroll in multiple small steps for smoothness
|
|
266
|
+
const steps = randomInt(8, 15);
|
|
267
|
+
const stepAmount = amount / steps;
|
|
268
|
+
for (let i = 0; i < steps; i++) {
|
|
269
|
+
await page.evaluate((step) => {
|
|
270
|
+
// @ts-expect-error - window exists in browser context
|
|
271
|
+
window.scrollBy({ top: step, behavior: "smooth" });
|
|
272
|
+
}, stepAmount);
|
|
273
|
+
await sleep(randomFloat(20, 50));
|
|
274
|
+
}
|
|
275
|
+
// Pause after scrolling (humans look at content)
|
|
276
|
+
await randomDelay(300, 800);
|
|
277
|
+
}
|
|
278
|
+
// ============================================================================
|
|
279
|
+
// Reading Simulation
|
|
280
|
+
// ============================================================================
|
|
281
|
+
/**
|
|
282
|
+
* Pause as if reading text, based on length
|
|
283
|
+
* Calculates realistic reading time based on text length and WPM
|
|
284
|
+
*
|
|
285
|
+
* @param textLength Number of characters to "read"
|
|
286
|
+
* @param wpm Reading speed in words per minute (default: random 200-250)
|
|
287
|
+
*/
|
|
288
|
+
export async function readingPause(textLength, wpm) {
|
|
289
|
+
if (!CONFIG.stealthEnabled || !CONFIG.stealthRandomDelays) {
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
wpm = wpm ?? randomInt(200, 250);
|
|
293
|
+
// Calculate reading time
|
|
294
|
+
// Average word length ~5 characters
|
|
295
|
+
const wordCount = textLength / 5;
|
|
296
|
+
const minutes = wordCount / wpm;
|
|
297
|
+
let seconds = minutes * 60;
|
|
298
|
+
// Add some randomness (humans don't read at constant speed)
|
|
299
|
+
seconds *= randomFloat(0.8, 1.2);
|
|
300
|
+
// Cap at reasonable maximum (3 seconds)
|
|
301
|
+
seconds = Math.min(seconds, 3.0);
|
|
302
|
+
await sleep(seconds * 1000);
|
|
303
|
+
}
|
|
304
|
+
// ============================================================================
|
|
305
|
+
// Random Mouse Jitter
|
|
306
|
+
// ============================================================================
|
|
307
|
+
/**
|
|
308
|
+
* Add small random mouse movements to simulate natural fidgeting
|
|
309
|
+
*
|
|
310
|
+
* @param page Playwright page instance
|
|
311
|
+
* @param iterations Number of small movements (default: 3)
|
|
312
|
+
*/
|
|
313
|
+
export async function randomMouseJitter(page, iterations = 3) {
|
|
314
|
+
if (!CONFIG.stealthEnabled || !CONFIG.stealthMouseMovements) {
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
const viewport = page.viewportSize() || CONFIG.viewport;
|
|
318
|
+
for (let i = 0; i < iterations; i++) {
|
|
319
|
+
const targetX = randomInt(0, viewport.width);
|
|
320
|
+
const targetY = randomInt(0, viewport.height);
|
|
321
|
+
await page.mouse.move(targetX, targetY, { steps: randomInt(2, 4) });
|
|
322
|
+
await sleep(randomFloat(100, 300));
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
// ============================================================================
|
|
326
|
+
// Hover Element
|
|
327
|
+
// ============================================================================
|
|
328
|
+
/**
|
|
329
|
+
* Hover over an element with realistic mouse movement
|
|
330
|
+
*
|
|
331
|
+
* @param page Playwright page instance
|
|
332
|
+
* @param selector CSS selector of element to hover
|
|
333
|
+
*/
|
|
334
|
+
export async function hoverElement(page, selector) {
|
|
335
|
+
if (!CONFIG.stealthEnabled || !CONFIG.stealthMouseMovements) {
|
|
336
|
+
await page.hover(selector);
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
339
|
+
const element = await page.$(selector);
|
|
340
|
+
if (element) {
|
|
341
|
+
const box = await element.boundingBox();
|
|
342
|
+
if (box) {
|
|
343
|
+
// Move to center of element
|
|
344
|
+
const targetX = box.x + box.width / 2;
|
|
345
|
+
const targetY = box.y + box.height / 2;
|
|
346
|
+
await randomMouseMovement(page, targetX, targetY);
|
|
347
|
+
await page.hover(selector);
|
|
348
|
+
await randomDelay(200, 500);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
// ============================================================================
|
|
353
|
+
// Simulate Reading Page
|
|
354
|
+
// ============================================================================
|
|
355
|
+
/**
|
|
356
|
+
* Simulate reading a page with scrolling and pauses
|
|
357
|
+
* Adds realistic behavior of scrolling and reading content
|
|
358
|
+
*
|
|
359
|
+
* @param page Playwright page instance
|
|
360
|
+
*/
|
|
361
|
+
export async function simulateReadingPage(page) {
|
|
362
|
+
if (!CONFIG.stealthEnabled || !CONFIG.stealthRandomDelays) {
|
|
363
|
+
return;
|
|
364
|
+
}
|
|
365
|
+
// Random number of scroll actions
|
|
366
|
+
const scrollCount = randomInt(1, 3);
|
|
367
|
+
for (let i = 0; i < scrollCount; i++) {
|
|
368
|
+
// Scroll down
|
|
369
|
+
await smoothScroll(page, undefined, "down");
|
|
370
|
+
// "Read" the visible content
|
|
371
|
+
await randomDelay(800, 1500);
|
|
372
|
+
// Sometimes scroll up a bit (humans do this)
|
|
373
|
+
if (Math.random() < 0.3) {
|
|
374
|
+
await smoothScroll(page, randomInt(50, 150), "up");
|
|
375
|
+
await randomDelay(400, 800);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
// ============================================================================
|
|
380
|
+
// Exports
|
|
381
|
+
// ============================================================================
|
|
382
|
+
export default {
|
|
383
|
+
sleep,
|
|
384
|
+
randomInt,
|
|
385
|
+
randomFloat,
|
|
386
|
+
randomChar,
|
|
387
|
+
gaussian,
|
|
388
|
+
randomDelay,
|
|
389
|
+
humanType,
|
|
390
|
+
randomMouseMovement,
|
|
391
|
+
realisticClick,
|
|
392
|
+
smoothScroll,
|
|
393
|
+
readingPause,
|
|
394
|
+
randomMouseJitter,
|
|
395
|
+
hoverElement,
|
|
396
|
+
simulateReadingPage,
|
|
397
|
+
};
|
|
398
|
+
//# sourceMappingURL=stealth-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stealth-utils.js","sourceRoot":"","sources":["../../src/utils/stealth-utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@roomi-fields/notebooklm-mcp",
|
|
3
|
+
"version": "1.1.2",
|
|
4
|
+
"description": "MCP server for NotebookLM API with HTTP REST API - Zero hallucinations from your notebooks",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"notebooklm-mcp": "dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc",
|
|
11
|
+
"watch": "tsc --watch",
|
|
12
|
+
"dev": "tsx watch src/index.ts",
|
|
13
|
+
"dev:http": "tsx watch src/http-wrapper.ts",
|
|
14
|
+
"start:http": "node dist/http-wrapper.js",
|
|
15
|
+
"setup-auth": "node dist/index.js",
|
|
16
|
+
"prepare": "npm run build",
|
|
17
|
+
"test": "tsx src/index.ts"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"mcp",
|
|
21
|
+
"notebooklm",
|
|
22
|
+
"gemini",
|
|
23
|
+
"ai",
|
|
24
|
+
"claude",
|
|
25
|
+
"n8n",
|
|
26
|
+
"automation",
|
|
27
|
+
"rest-api",
|
|
28
|
+
"http-server",
|
|
29
|
+
"workflow"
|
|
30
|
+
],
|
|
31
|
+
"author": "Romain Peyrichou (https://github.com/roomi-fields)",
|
|
32
|
+
"contributors": [
|
|
33
|
+
"Gérôme Dexheimer <hello@geromedexheimer.de> (https://github.com/PleasePrompto)"
|
|
34
|
+
],
|
|
35
|
+
"license": "MIT",
|
|
36
|
+
"repository": {
|
|
37
|
+
"type": "git",
|
|
38
|
+
"url": "git+https://github.com/roomi-fields/notebooklm-mcp-http.git"
|
|
39
|
+
},
|
|
40
|
+
"homepage": "https://github.com/roomi-fields/notebooklm-mcp-http#readme",
|
|
41
|
+
"bugs": {
|
|
42
|
+
"url": "https://github.com/roomi-fields/notebooklm-mcp-http/issues"
|
|
43
|
+
},
|
|
44
|
+
"files": [
|
|
45
|
+
"dist",
|
|
46
|
+
"README.md",
|
|
47
|
+
"NOTEBOOKLM_USAGE.md",
|
|
48
|
+
"LICENSE",
|
|
49
|
+
"docs"
|
|
50
|
+
],
|
|
51
|
+
"dependencies": {
|
|
52
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
53
|
+
"cors": "^2.8.5",
|
|
54
|
+
"dotenv": "^16.4.0",
|
|
55
|
+
"env-paths": "^3.0.0",
|
|
56
|
+
"express": "^4.18.2",
|
|
57
|
+
"globby": "^14.1.0",
|
|
58
|
+
"patchright": "^1.48.2",
|
|
59
|
+
"zod": "^3.22.0"
|
|
60
|
+
},
|
|
61
|
+
"devDependencies": {
|
|
62
|
+
"@types/cors": "^2.8.17",
|
|
63
|
+
"@types/express": "^4.17.21",
|
|
64
|
+
"@types/node": "^20.11.0",
|
|
65
|
+
"tsx": "^4.7.0",
|
|
66
|
+
"typescript": "^5.3.3"
|
|
67
|
+
},
|
|
68
|
+
"engines": {
|
|
69
|
+
"node": ">=18.0.0"
|
|
70
|
+
}
|
|
71
|
+
}
|