chrometools-mcp 2.4.0 → 2.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/CHANGELOG.md +139 -0
- package/README.md +102 -5
- package/RELEASE_NOTES_v2.5.0.md +109 -0
- package/VIDEO_SCRIPTS.md +2116 -0
- package/element-finder-utils.js +138 -28
- package/figma-tools.js +120 -0
- package/index.js +430 -9
- package/npm_publish_output.txt +0 -0
- package/package.json +1 -1
- package/server/tool-definitions.js +63 -5
- package/server/tool-groups.js +4 -5
- package/server/tool-schemas.js +31 -0
- package/tools/tool-schemas.js +1 -0
package/VIDEO_SCRIPTS.md
ADDED
|
@@ -0,0 +1,2116 @@
|
|
|
1
|
+
# Video Scripts for ChromeTools MCP Tool Groups
|
|
2
|
+
|
|
3
|
+
Complete narration scripts for video tutorials. Read these texts while recording demonstrations.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Video 1: Core Group (2-3 minutes)
|
|
8
|
+
|
|
9
|
+
### [0:00-0:20] Opening
|
|
10
|
+
|
|
11
|
+
**Text to read:**
|
|
12
|
+
|
|
13
|
+
"Привет! В этом видео мы разберем группу Core - базовые инструменты ChromeTools MCP сервера.
|
|
14
|
+
|
|
15
|
+
Группа Core содержит всего два инструмента, но они критически важны для работы. Это ping и openBrowser.
|
|
16
|
+
|
|
17
|
+
Эта группа нужна ВСЕГДА, независимо от вашего use case."
|
|
18
|
+
|
|
19
|
+
**[ACTION: Show mcp_config.json with ENABLED_TOOLS]**
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
### [0:20-1:00] Tool: ping
|
|
24
|
+
|
|
25
|
+
**Text to read:**
|
|
26
|
+
|
|
27
|
+
"Первый инструмент - ping. Он используется для проверки, что MCP сервер запущен и работает корректно.
|
|
28
|
+
|
|
29
|
+
Давайте попробуем."
|
|
30
|
+
|
|
31
|
+
**[ACTION: Ask AI to ping]**
|
|
32
|
+
|
|
33
|
+
**Text to read:**
|
|
34
|
+
|
|
35
|
+
"AI, ping the server"
|
|
36
|
+
|
|
37
|
+
**[PAUSE for response]**
|
|
38
|
+
|
|
39
|
+
**Text to read:**
|
|
40
|
+
|
|
41
|
+
"Как видите, сервер отвечает 'pong'. Это означает, что соединение установлено и сервер готов к работе.
|
|
42
|
+
|
|
43
|
+
Обычно этот инструмент используется автоматически при подключении, но вы можете вызвать его явно для диагностики."
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
### [1:00-2:30] Tool: openBrowser
|
|
48
|
+
|
|
49
|
+
**Text to read:**
|
|
50
|
+
|
|
51
|
+
"Второй инструмент - openBrowser. Он запускает браузер Chrome и открывает указанную страницу.
|
|
52
|
+
|
|
53
|
+
Ключевая особенность ChromeTools MCP - персистентная сессия браузера. Это означает, что браузер остается открытым между командами.
|
|
54
|
+
|
|
55
|
+
Давайте откроем example.com"
|
|
56
|
+
|
|
57
|
+
**[ACTION: Ask AI to open browser]**
|
|
58
|
+
|
|
59
|
+
**Text to read:**
|
|
60
|
+
|
|
61
|
+
"AI, open browser and navigate to https://example.com"
|
|
62
|
+
|
|
63
|
+
**[PAUSE for browser to open]**
|
|
64
|
+
|
|
65
|
+
**Text to read:**
|
|
66
|
+
|
|
67
|
+
"Браузер открылся. Обратите внимание - это НЕ headless режим, окно полностью видимое. Вы можете взаимодействовать с ним вручную между командами AI.
|
|
68
|
+
|
|
69
|
+
Теперь давайте откроем другой сайт."
|
|
70
|
+
|
|
71
|
+
**[ACTION: Navigate to github.com]**
|
|
72
|
+
|
|
73
|
+
**Text to read:**
|
|
74
|
+
|
|
75
|
+
"AI, now navigate to https://github.com"
|
|
76
|
+
|
|
77
|
+
**[PAUSE for navigation]**
|
|
78
|
+
|
|
79
|
+
**Text to read:**
|
|
80
|
+
|
|
81
|
+
"Обратите внимание - используется ТОТ ЖЕ браузер и та же вкладка. Это и есть персистентная сессия. Вы можете подготовить страницу вручную, затем попросить AI продолжить работу с ней."
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
### [2:30-3:00] Summary
|
|
86
|
+
|
|
87
|
+
**Text to read:**
|
|
88
|
+
|
|
89
|
+
"Итак, группа Core:
|
|
90
|
+
- Два базовых инструмента: ping и openBrowser
|
|
91
|
+
- Нужна ВСЕГДА в любой конфигурации
|
|
92
|
+
- Минимальная конфигурация: ENABLED_TOOLS равно core
|
|
93
|
+
|
|
94
|
+
Для базовой автоматизации добавьте группу interaction. Об этом в следующем видео.
|
|
95
|
+
|
|
96
|
+
Конфигурация для группы Core потребляет минимум токенов - всего около тысячи.
|
|
97
|
+
|
|
98
|
+
Ссылка на документацию в описании. Спасибо за просмотр!"
|
|
99
|
+
|
|
100
|
+
**[ACTION: Show documentation link]**
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Video 2: Interaction Group (5-6 minutes)
|
|
105
|
+
|
|
106
|
+
### [0:00-0:30] Opening
|
|
107
|
+
|
|
108
|
+
**Text to read:**
|
|
109
|
+
|
|
110
|
+
"Привет! В этом видео мы разберем группу Interaction - основу веб-автоматизации.
|
|
111
|
+
|
|
112
|
+
Эта группа содержит 5 инструментов для имитации действий пользователя: type, click, scrollTo, waitForElement и hover.
|
|
113
|
+
|
|
114
|
+
Вместе с группой Core, группа Interaction покрывает девяносто процентов базовой автоматизации.
|
|
115
|
+
|
|
116
|
+
Давайте откроем Google для демонстрации."
|
|
117
|
+
|
|
118
|
+
**[ACTION: Open https://www.google.com]**
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
### [0:30-1:30] Tool: type
|
|
123
|
+
|
|
124
|
+
**Text to read:**
|
|
125
|
+
|
|
126
|
+
"Первый инструмент - type. Он вводит текст в поля ввода.
|
|
127
|
+
|
|
128
|
+
Давайте найдем что-нибудь в Google."
|
|
129
|
+
|
|
130
|
+
**[ACTION: Ask AI to type]**
|
|
131
|
+
|
|
132
|
+
**Text to read:**
|
|
133
|
+
|
|
134
|
+
"AI, type 'chrometools mcp' in the search box"
|
|
135
|
+
|
|
136
|
+
**[PAUSE while typing]**
|
|
137
|
+
|
|
138
|
+
**Text to read:**
|
|
139
|
+
|
|
140
|
+
"Текст введен. По умолчанию, инструмент type ОЧИЩАЕТ поле перед вводом. Это контролируется параметром clearFirst.
|
|
141
|
+
|
|
142
|
+
Давайте попробуем ДОписать текст без очистки."
|
|
143
|
+
|
|
144
|
+
**[ACTION: Type with clearFirst: false]**
|
|
145
|
+
|
|
146
|
+
**Text to read:**
|
|
147
|
+
|
|
148
|
+
"AI, now type ' github' in the same field with clearFirst set to false"
|
|
149
|
+
|
|
150
|
+
**[PAUSE]**
|
|
151
|
+
|
|
152
|
+
**Text to read:**
|
|
153
|
+
|
|
154
|
+
"Как видите, текст добавился в конец. Поле не очистилось.
|
|
155
|
+
|
|
156
|
+
Также есть параметр delay для имитации печати человека. По умолчанию - ноль миллисекунд, то есть мгновенный ввод."
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
### [1:30-2:30] Tool: click
|
|
161
|
+
|
|
162
|
+
**Text to read:**
|
|
163
|
+
|
|
164
|
+
"Второй инструмент - click. Он выполняет клик по элементу.
|
|
165
|
+
|
|
166
|
+
Давайте нажмем на кнопку поиска."
|
|
167
|
+
|
|
168
|
+
**[ACTION: Click search button]**
|
|
169
|
+
|
|
170
|
+
**Text to read:**
|
|
171
|
+
|
|
172
|
+
"AI, click the search button"
|
|
173
|
+
|
|
174
|
+
**[PAUSE for results to load]**
|
|
175
|
+
|
|
176
|
+
**Text to read:**
|
|
177
|
+
|
|
178
|
+
"Отлично, мы на странице результатов. Инструмент click автоматически ждет, пока элемент станет видимым и кликабельным.
|
|
179
|
+
|
|
180
|
+
Есть параметр timeout - максимальное время ожидания. По умолчанию тридцать тысяч миллисекунд, то есть тридцать секунд.
|
|
181
|
+
|
|
182
|
+
Также есть параметр waitAfter - пауза после клика. По умолчанию полторы секунды, чтобы дождаться анимаций.
|
|
183
|
+
|
|
184
|
+
Давайте кликнем на первый результат."
|
|
185
|
+
|
|
186
|
+
**[ACTION: Click first result]**
|
|
187
|
+
|
|
188
|
+
**Text to read:**
|
|
189
|
+
|
|
190
|
+
"AI, click on the first result"
|
|
191
|
+
|
|
192
|
+
**[PAUSE for page to load]**
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
### [2:30-3:30] Tool: scrollTo
|
|
197
|
+
|
|
198
|
+
**Text to read:**
|
|
199
|
+
|
|
200
|
+
"Третий инструмент - scrollTo. Он прокручивает страницу к указанному элементу.
|
|
201
|
+
|
|
202
|
+
Это особенно полезно для:
|
|
203
|
+
- Lazy-loading контента, который загружается при прокрутке
|
|
204
|
+
- Тестирования видимости элементов
|
|
205
|
+
- Подготовки страницы перед screenshot
|
|
206
|
+
|
|
207
|
+
Давайте откроем страницу с документацией."
|
|
208
|
+
|
|
209
|
+
**[ACTION: Open long documentation page]**
|
|
210
|
+
|
|
211
|
+
**Text to read:**
|
|
212
|
+
|
|
213
|
+
"AI, scroll to the element with text 'Installation'"
|
|
214
|
+
|
|
215
|
+
**[PAUSE while scrolling]**
|
|
216
|
+
|
|
217
|
+
**Text to read:**
|
|
218
|
+
|
|
219
|
+
"Прокрутка выполнена. По умолчанию используется smooth behavior - плавная прокрутка.
|
|
220
|
+
|
|
221
|
+
Можно указать auto для мгновенной прокрутки."
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
### [3:30-4:30] Tool: waitForElement
|
|
226
|
+
|
|
227
|
+
**Text to read:**
|
|
228
|
+
|
|
229
|
+
"Четвертый инструмент - waitForElement. Он ждет появления элемента на странице.
|
|
230
|
+
|
|
231
|
+
Это критически важно для работы с динамическим контентом: AJAX запросы, React-приложения, lazy loading.
|
|
232
|
+
|
|
233
|
+
Давайте откроем страницу с динамическим контентом."
|
|
234
|
+
|
|
235
|
+
**[ACTION: Open page with dynamic content]**
|
|
236
|
+
|
|
237
|
+
**Text to read:**
|
|
238
|
+
|
|
239
|
+
"AI, wait for the element '.dynamic-content' to appear"
|
|
240
|
+
|
|
241
|
+
**[PAUSE while waiting]**
|
|
242
|
+
|
|
243
|
+
**Text to read:**
|
|
244
|
+
|
|
245
|
+
"Элемент появился. Инструмент дождался его загрузки.
|
|
246
|
+
|
|
247
|
+
Параметры:
|
|
248
|
+
- timeout: максимальное время ожидания. По умолчанию пять тысяч миллисекунд.
|
|
249
|
+
- visible: ждать именно видимый элемент. По умолчанию true.
|
|
250
|
+
|
|
251
|
+
Если элемент не появится за timeout - вы получите ошибку."
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
### [4:30-5:30] Tool: hover
|
|
256
|
+
|
|
257
|
+
**Text to read:**
|
|
258
|
+
|
|
259
|
+
"Пятый инструмент - hover. Он имитирует наведение мыши на элемент.
|
|
260
|
+
|
|
261
|
+
Используется для:
|
|
262
|
+
- Тестирования CSS псевдокласса hover
|
|
263
|
+
- Показа tooltips и подсказок
|
|
264
|
+
- Открытия выпадающих меню
|
|
265
|
+
|
|
266
|
+
Давайте откроем страницу с hover-эффектами."
|
|
267
|
+
|
|
268
|
+
**[ACTION: Open page with hover menus]**
|
|
269
|
+
|
|
270
|
+
**Text to read:**
|
|
271
|
+
|
|
272
|
+
"AI, hover over the menu item"
|
|
273
|
+
|
|
274
|
+
**[PAUSE while hovering]**
|
|
275
|
+
|
|
276
|
+
**Text to read:**
|
|
277
|
+
|
|
278
|
+
"Подменю появилось. Это именно то, что происходит при наведении мыши пользователем.
|
|
279
|
+
|
|
280
|
+
Теперь можем кликнуть на элемент подменю."
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
### [5:30-6:00] Summary
|
|
285
|
+
|
|
286
|
+
**Text to read:**
|
|
287
|
+
|
|
288
|
+
"Итак, группа Interaction:
|
|
289
|
+
- Пять инструментов для имитации действий пользователя
|
|
290
|
+
- type, click, scrollTo, waitForElement, hover
|
|
291
|
+
- Комбинируйте с core: ENABLED_TOOLS равно core comma interaction
|
|
292
|
+
|
|
293
|
+
Это покрывает девяносто процентов базовой автоматизации.
|
|
294
|
+
|
|
295
|
+
Экономия токенов: семь инструментов вместо сорока трех. Это примерно пять тысяч токенов вместо двадцати восьми тысяч.
|
|
296
|
+
|
|
297
|
+
Для инспекции страниц добавьте группу inspection. Об этом в следующем видео.
|
|
298
|
+
|
|
299
|
+
Спасибо за просмотр!"
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## Video 3: Inspection Group (6-7 minutes)
|
|
304
|
+
|
|
305
|
+
### [0:00-0:30] Opening
|
|
306
|
+
|
|
307
|
+
**Text to read:**
|
|
308
|
+
|
|
309
|
+
"Привет! В этом видео мы разберем группу Inspection - инструменты для анализа и визуального тестирования.
|
|
310
|
+
|
|
311
|
+
Эта группа содержит 5 инструментов: getElement, getComputedCss, getBoxModel, screenshot и saveScreenshot.
|
|
312
|
+
|
|
313
|
+
Группа Inspection особенно важна для frontend-разработки и тестирования.
|
|
314
|
+
|
|
315
|
+
Давайте откроем красиво оформленную страницу для демонстрации."
|
|
316
|
+
|
|
317
|
+
**[ACTION: Open styled webpage]**
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
### [0:30-1:30] Tool: getElement
|
|
322
|
+
|
|
323
|
+
**Text to read:**
|
|
324
|
+
|
|
325
|
+
"Первый инструмент - getElement. Он возвращает HTML разметку элемента.
|
|
326
|
+
|
|
327
|
+
Используется для проверки структуры DOM, наличия атрибутов, классов.
|
|
328
|
+
|
|
329
|
+
Давайте получим HTML header элемента."
|
|
330
|
+
|
|
331
|
+
**[ACTION: Get element]**
|
|
332
|
+
|
|
333
|
+
**Text to read:**
|
|
334
|
+
|
|
335
|
+
"AI, get the HTML of the header element"
|
|
336
|
+
|
|
337
|
+
**[PAUSE for response]**
|
|
338
|
+
|
|
339
|
+
**Text to read:**
|
|
340
|
+
|
|
341
|
+
"Вот полная HTML разметка. Вы видите все теги, атрибуты, классы, вложенные элементы.
|
|
342
|
+
|
|
343
|
+
Это полезно для:
|
|
344
|
+
- Проверки структуры
|
|
345
|
+
- Дебаггинга верстки
|
|
346
|
+
- Проверки наличия data-атрибутов
|
|
347
|
+
|
|
348
|
+
Обратите внимание: для лучшей производительности рекомендуется использовать analyzePage вместо getElement, когда нужна общая информация о странице."
|
|
349
|
+
|
|
350
|
+
---
|
|
351
|
+
|
|
352
|
+
### [1:30-2:30] Tool: getComputedCss
|
|
353
|
+
|
|
354
|
+
**Text to read:**
|
|
355
|
+
|
|
356
|
+
"Второй инструмент - getComputedCss. Он возвращает вычисленные CSS стили элемента.
|
|
357
|
+
|
|
358
|
+
Ключевое слово - ВЫЧИСЛЕННЫЕ. То есть фактические стили, которые применил браузер, с учетом всех CSS правил, наследования, каскада.
|
|
359
|
+
|
|
360
|
+
Давайте получим цвета кнопки."
|
|
361
|
+
|
|
362
|
+
**[ACTION: Get CSS colors]**
|
|
363
|
+
|
|
364
|
+
**Text to read:**
|
|
365
|
+
|
|
366
|
+
"AI, get computed CSS for the main button, category: colors"
|
|
367
|
+
|
|
368
|
+
**[PAUSE for response]**
|
|
369
|
+
|
|
370
|
+
**Text to read:**
|
|
371
|
+
|
|
372
|
+
"Вот все цветовые свойства: color, background-color, border-color.
|
|
373
|
+
|
|
374
|
+
Инструмент поддерживает категории для фильтрации:
|
|
375
|
+
- colors: все цвета
|
|
376
|
+
- typography: шрифты, размеры текста
|
|
377
|
+
- layout: ширина, высота, padding, margin
|
|
378
|
+
- visual: тени, прозрачность, transforms
|
|
379
|
+
- all: все свойства
|
|
380
|
+
|
|
381
|
+
Давайте получим layout."
|
|
382
|
+
|
|
383
|
+
**[ACTION: Get layout properties]**
|
|
384
|
+
|
|
385
|
+
**Text to read:**
|
|
386
|
+
|
|
387
|
+
"AI, now get layout properties"
|
|
388
|
+
|
|
389
|
+
**[PAUSE]**
|
|
390
|
+
|
|
391
|
+
**Text to read:**
|
|
392
|
+
|
|
393
|
+
"Отлично. Ширина, высота, padding, margin - все вычисленные значения.
|
|
394
|
+
|
|
395
|
+
Это незаменимо для:
|
|
396
|
+
- Дизайн-валидации
|
|
397
|
+
- Тестирования responsive design
|
|
398
|
+
- Дебаггинга CSS"
|
|
399
|
+
|
|
400
|
+
---
|
|
401
|
+
|
|
402
|
+
### [2:30-3:30] Tool: getBoxModel
|
|
403
|
+
|
|
404
|
+
**Text to read:**
|
|
405
|
+
|
|
406
|
+
"Третий инструмент - getBoxModel. Он возвращает CSS box model элемента.
|
|
407
|
+
|
|
408
|
+
Box model - это базовая концепция CSS: content, padding, border, margin.
|
|
409
|
+
|
|
410
|
+
Давайте получим box model для карточки."
|
|
411
|
+
|
|
412
|
+
**[ACTION: Get box model]**
|
|
413
|
+
|
|
414
|
+
**Text to read:**
|
|
415
|
+
|
|
416
|
+
"AI, get box model for the card element"
|
|
417
|
+
|
|
418
|
+
**[PAUSE for response]**
|
|
419
|
+
|
|
420
|
+
**Text to read:**
|
|
421
|
+
|
|
422
|
+
"Вот что мы получили:
|
|
423
|
+
- Dimensions: ширина и высота контента
|
|
424
|
+
- Padding: внутренние отступы со всех сторон
|
|
425
|
+
- Border: толщина рамки
|
|
426
|
+
- Margin: внешние отступы
|
|
427
|
+
|
|
428
|
+
Это ТОЧНЫЕ значения в пикселях, которые использует браузер.
|
|
429
|
+
|
|
430
|
+
Используйте getBoxModel для:
|
|
431
|
+
- Дебаггинга проблем с layout
|
|
432
|
+
- Проверки spacing
|
|
433
|
+
- Анализа размеров элементов"
|
|
434
|
+
|
|
435
|
+
**[ACTION: Optionally show box model diagram on screen]**
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
439
|
+
### [3:30-5:00] Tool: screenshot
|
|
440
|
+
|
|
441
|
+
**Text to read:**
|
|
442
|
+
|
|
443
|
+
"Четвертый инструмент - screenshot. Он делает скриншот элемента и ВОЗВРАЩАЕТ его в контекст AI.
|
|
444
|
+
|
|
445
|
+
Это мощный инструмент, но есть важный нюанс: каждый скриншот потребляет от пятнадцати до двадцати пяти тысяч токенов.
|
|
446
|
+
|
|
447
|
+
Давайте сделаем скриншот hero-секции."
|
|
448
|
+
|
|
449
|
+
**[ACTION: Take screenshot]**
|
|
450
|
+
|
|
451
|
+
**Text to read:**
|
|
452
|
+
|
|
453
|
+
"AI, take a screenshot of the hero section"
|
|
454
|
+
|
|
455
|
+
**[PAUSE for screenshot]**
|
|
456
|
+
|
|
457
|
+
**Text to read:**
|
|
458
|
+
|
|
459
|
+
"AI получил изображение и может его анализировать.
|
|
460
|
+
|
|
461
|
+
Параметры screenshot:
|
|
462
|
+
- format: png для качества, jpeg для меньшего размера, auto по умолчанию
|
|
463
|
+
- quality: от одного до ста для JPEG. По умолчанию восемьдесят.
|
|
464
|
+
- maxWidth и maxHeight: ограничение размера. По умолчанию тысяча двадцать четыре на восемь тысяч.
|
|
465
|
+
- padding: добавить отступ вокруг элемента. По умолчанию ноль.
|
|
466
|
+
|
|
467
|
+
ВАЖНО: используйте screenshot, когда нужен ВИЗУАЛЬНЫЙ анализ.
|
|
468
|
+
|
|
469
|
+
Для анализа форм, кнопок, текста - используйте analyzePage. Он потребляет всего две-пять тысяч токенов вместо пятнадцати-двадцати пяти.
|
|
470
|
+
|
|
471
|
+
Об analyzePage расскажу в видео про Advanced группу."
|
|
472
|
+
|
|
473
|
+
---
|
|
474
|
+
|
|
475
|
+
### [5:00-6:30] Tool: saveScreenshot
|
|
476
|
+
|
|
477
|
+
**Text to read:**
|
|
478
|
+
|
|
479
|
+
"Пятый инструмент - saveScreenshot. Он сохраняет скриншот в ФАЙЛ, НЕ возвращая его в контекст.
|
|
480
|
+
|
|
481
|
+
Это критически важно для экономии токенов.
|
|
482
|
+
|
|
483
|
+
Давайте сохраним скриншот всей страницы."
|
|
484
|
+
|
|
485
|
+
**[ACTION: Save screenshot]**
|
|
486
|
+
|
|
487
|
+
**Text to read:**
|
|
488
|
+
|
|
489
|
+
"AI, save screenshot of the entire page to ./screenshots/page.png"
|
|
490
|
+
|
|
491
|
+
**[PAUSE while saving]**
|
|
492
|
+
|
|
493
|
+
**Text to read:**
|
|
494
|
+
|
|
495
|
+
"Скриншот сохранен. AI НЕ получил изображение в контекст.
|
|
496
|
+
|
|
497
|
+
Токены потрачены: НОЛЬ.
|
|
498
|
+
|
|
499
|
+
Файл создан на диске."
|
|
500
|
+
|
|
501
|
+
**[ACTION: Show saved file]**
|
|
502
|
+
|
|
503
|
+
**Text to read:**
|
|
504
|
+
|
|
505
|
+
"Вот наш файл.
|
|
506
|
+
|
|
507
|
+
Параметры те же, что у screenshot: format, quality, maxWidth, maxHeight, padding.
|
|
508
|
+
|
|
509
|
+
Best practice:
|
|
510
|
+
- screenshot - когда AI должен АНАЛИЗИРОВАТЬ изображение
|
|
511
|
+
- saveScreenshot - когда нужно просто СОХРАНИТЬ для человека
|
|
512
|
+
|
|
513
|
+
Разница в токенах: ноль против пятнадцати-двадцати пяти тысяч.
|
|
514
|
+
|
|
515
|
+
Для визуального тестирования лучше использовать saveScreenshot для baseline, затем compareFigmaToElement из группы Figma."
|
|
516
|
+
|
|
517
|
+
---
|
|
518
|
+
|
|
519
|
+
### [6:30-7:00] Summary
|
|
520
|
+
|
|
521
|
+
**Text to read:**
|
|
522
|
+
|
|
523
|
+
"Итак, группа Inspection:
|
|
524
|
+
- Пять инструментов для анализа страниц
|
|
525
|
+
- getElement, getComputedCss, getBoxModel, screenshot, saveScreenshot
|
|
526
|
+
- Конфигурация: ENABLED_TOOLS равно core comma interaction comma inspection
|
|
527
|
+
|
|
528
|
+
Это базовый набор для автоматизации и тестирования.
|
|
529
|
+
|
|
530
|
+
Экономия токенов: двенадцать инструментов вместо сорока трех. Примерно восемь тысяч токенов вместо двадцати восьми тысяч. Экономия семьдесят один процент.
|
|
531
|
+
|
|
532
|
+
ВАЖНО: используйте saveScreenshot вместо screenshot, когда визуальный анализ AI не нужен.
|
|
533
|
+
|
|
534
|
+
Для отладки JavaScript и сети добавьте группу debug. Об этом в следующем видео.
|
|
535
|
+
|
|
536
|
+
Спасибо за просмотр!"
|
|
537
|
+
|
|
538
|
+
---
|
|
539
|
+
|
|
540
|
+
## Video 4: Debug Group (5-6 minutes)
|
|
541
|
+
|
|
542
|
+
### [0:00-0:30] Opening
|
|
543
|
+
|
|
544
|
+
**Text to read:**
|
|
545
|
+
|
|
546
|
+
"Привет! В этом видео мы разберем группу Debug - новую группу для отладки JavaScript и мониторинга сети.
|
|
547
|
+
|
|
548
|
+
В версии два точка четыре точка ноль мы выделили эти инструменты в отдельную группу для экономии токенов.
|
|
549
|
+
|
|
550
|
+
Группа Debug содержит 4 инструмента: getConsoleLogs, listNetworkRequests, getNetworkRequest и filterNetworkRequests.
|
|
551
|
+
|
|
552
|
+
Используйте эту группу, когда нужна отладка. Отключайте для простой автоматизации.
|
|
553
|
+
|
|
554
|
+
Давайте откроем страницу с API запросами."
|
|
555
|
+
|
|
556
|
+
**[ACTION: Open page with network activity and console logs]**
|
|
557
|
+
|
|
558
|
+
---
|
|
559
|
+
|
|
560
|
+
### [0:30-1:30] Tool: getConsoleLogs
|
|
561
|
+
|
|
562
|
+
**Text to read:**
|
|
563
|
+
|
|
564
|
+
"Первый инструмент - getConsoleLogs. Он читает логи из браузерной консоли.
|
|
565
|
+
|
|
566
|
+
Полезно для:
|
|
567
|
+
- Отладки JavaScript ошибок
|
|
568
|
+
- Проверки warnings
|
|
569
|
+
- Анализа debug output
|
|
570
|
+
|
|
571
|
+
Давайте получим все логи."
|
|
572
|
+
|
|
573
|
+
**[ACTION: Get console logs]**
|
|
574
|
+
|
|
575
|
+
**Text to read:**
|
|
576
|
+
|
|
577
|
+
"AI, get console logs"
|
|
578
|
+
|
|
579
|
+
**[PAUSE for response]**
|
|
580
|
+
|
|
581
|
+
**Text to read:**
|
|
582
|
+
|
|
583
|
+
"Вот все сообщения: log, warn, error, info.
|
|
584
|
+
|
|
585
|
+
Можно фильтровать по типу. Давайте получим только ошибки."
|
|
586
|
+
|
|
587
|
+
**[ACTION: Get only errors]**
|
|
588
|
+
|
|
589
|
+
**Text to read:**
|
|
590
|
+
|
|
591
|
+
"AI, get only error logs"
|
|
592
|
+
|
|
593
|
+
**[PAUSE]**
|
|
594
|
+
|
|
595
|
+
**Text to read:**
|
|
596
|
+
|
|
597
|
+
"Только errors.
|
|
598
|
+
|
|
599
|
+
Параметры:
|
|
600
|
+
- types: массив типов. log, warn, error, info, debug, verbose, warning
|
|
601
|
+
- clear: очистить логи после чтения. По умолчанию false.
|
|
602
|
+
|
|
603
|
+
Используйте clear: true, если обрабатываете логи пошагово."
|
|
604
|
+
|
|
605
|
+
---
|
|
606
|
+
|
|
607
|
+
### [1:30-3:00] Tool: listNetworkRequests
|
|
608
|
+
|
|
609
|
+
**Text to read:**
|
|
610
|
+
|
|
611
|
+
"Второй инструмент - listNetworkRequests. Он возвращает СПИСОК сетевых запросов.
|
|
612
|
+
|
|
613
|
+
Именно список: метод, URL, статус. Без деталей - для обзора.
|
|
614
|
+
|
|
615
|
+
Давайте посмотрим все запросы."
|
|
616
|
+
|
|
617
|
+
**[ACTION: List network requests]**
|
|
618
|
+
|
|
619
|
+
**Text to read:**
|
|
620
|
+
|
|
621
|
+
"AI, list network requests"
|
|
622
|
+
|
|
623
|
+
**[PAUSE for response]**
|
|
624
|
+
|
|
625
|
+
**Text to read:**
|
|
626
|
+
|
|
627
|
+
"Вот список всех запросов. Для каждого: метод, URL, статус код, тип.
|
|
628
|
+
|
|
629
|
+
Инструмент поддерживает фильтрацию по:
|
|
630
|
+
- types: Fetch, XHR, Document, Stylesheet, Image, Media, Font, Script, WebSocket, Other
|
|
631
|
+
По умолчанию: Fetch и XHR
|
|
632
|
+
- status: pending, completed, failed, all
|
|
633
|
+
|
|
634
|
+
Также есть pagination:
|
|
635
|
+
- limit: максимум запросов. По умолчанию пятьдесят.
|
|
636
|
+
- offset: пропустить первые N. По умолчанию ноль.
|
|
637
|
+
|
|
638
|
+
Давайте получим только XHR запросы."
|
|
639
|
+
|
|
640
|
+
**[ACTION: Filter by type]**
|
|
641
|
+
|
|
642
|
+
**Text to read:**
|
|
643
|
+
|
|
644
|
+
"AI, list only XHR requests"
|
|
645
|
+
|
|
646
|
+
**[PAUSE]**
|
|
647
|
+
|
|
648
|
+
**Text to read:**
|
|
649
|
+
|
|
650
|
+
"Только XHR. Гораздо удобнее для анализа.
|
|
651
|
+
|
|
652
|
+
Параметр clear: очистить список после чтения. По умолчанию false."
|
|
653
|
+
|
|
654
|
+
---
|
|
655
|
+
|
|
656
|
+
### [3:00-4:30] Tool: getNetworkRequest
|
|
657
|
+
|
|
658
|
+
**Text to read:**
|
|
659
|
+
|
|
660
|
+
"Третий инструмент - getNetworkRequest. Он возвращает ПОЛНЫЕ детали одного запроса.
|
|
661
|
+
|
|
662
|
+
Используйте после listNetworkRequests: сначала найдите нужный request ID, затем получите детали.
|
|
663
|
+
|
|
664
|
+
Давайте получим детали первого API запроса."
|
|
665
|
+
|
|
666
|
+
**[ACTION: Get request details]**
|
|
667
|
+
|
|
668
|
+
**Text to read:**
|
|
669
|
+
|
|
670
|
+
"AI, get details for request ID '123'"
|
|
671
|
+
|
|
672
|
+
**[PAUSE for response]**
|
|
673
|
+
|
|
674
|
+
**Text to read:**
|
|
675
|
+
|
|
676
|
+
"Вот что мы получили:
|
|
677
|
+
- Request headers: все заголовки запроса
|
|
678
|
+
- Request payload: тело запроса, если есть
|
|
679
|
+
- Response headers: заголовки ответа
|
|
680
|
+
- Response body: тело ответа
|
|
681
|
+
|
|
682
|
+
Это полная информация для дебаггинга API.
|
|
683
|
+
|
|
684
|
+
Можно проверить:
|
|
685
|
+
- Правильные ли заголовки авторизации
|
|
686
|
+
- Корректный ли payload
|
|
687
|
+
- Что вернул сервер
|
|
688
|
+
- Какие установлены cookies
|
|
689
|
+
|
|
690
|
+
Незаменимо для дебаггинга интеграций с API."
|
|
691
|
+
|
|
692
|
+
---
|
|
693
|
+
|
|
694
|
+
### [4:30-5:30] Tool: filterNetworkRequests
|
|
695
|
+
|
|
696
|
+
**Text to read:**
|
|
697
|
+
|
|
698
|
+
"Четвертый инструмент - filterNetworkRequests. Он ищет запросы по URL паттерну.
|
|
699
|
+
|
|
700
|
+
В отличие от listNetworkRequests, который просто фильтрует по типу, filterNetworkRequests ищет по содержимому URL.
|
|
701
|
+
|
|
702
|
+
И сразу возвращает ПОЛНЫЕ детали, как getNetworkRequest.
|
|
703
|
+
|
|
704
|
+
Давайте найдем все API запросы."
|
|
705
|
+
|
|
706
|
+
**[ACTION: Filter by URL pattern]**
|
|
707
|
+
|
|
708
|
+
**Text to read:**
|
|
709
|
+
|
|
710
|
+
"AI, filter network requests by URL pattern '/api/'"
|
|
711
|
+
|
|
712
|
+
**[PAUSE for response]**
|
|
713
|
+
|
|
714
|
+
**Text to read:**
|
|
715
|
+
|
|
716
|
+
"Все запросы к API эндпоинтам. С полными деталями: headers, payload, response.
|
|
717
|
+
|
|
718
|
+
Паттерн поддерживает:
|
|
719
|
+
- Частичное совпадение: '/api/'
|
|
720
|
+
- Регулярные выражения: '.*graphql.*'
|
|
721
|
+
|
|
722
|
+
Давайте найдем GraphQL запросы."
|
|
723
|
+
|
|
724
|
+
**[ACTION: Filter by "graphql"]**
|
|
725
|
+
|
|
726
|
+
**Text to read:**
|
|
727
|
+
|
|
728
|
+
"AI, filter by 'graphql'"
|
|
729
|
+
|
|
730
|
+
**[PAUSE]**
|
|
731
|
+
|
|
732
|
+
**Text to read:**
|
|
733
|
+
|
|
734
|
+
"Только GraphQL. Очень удобно для специфичных запросов.
|
|
735
|
+
|
|
736
|
+
Также поддерживает параметры types и clear."
|
|
737
|
+
|
|
738
|
+
---
|
|
739
|
+
|
|
740
|
+
### [5:30-6:00] Summary
|
|
741
|
+
|
|
742
|
+
**Text to read:**
|
|
743
|
+
|
|
744
|
+
"Итак, группа Debug:
|
|
745
|
+
- Четыре инструмента для отладки
|
|
746
|
+
- getConsoleLogs, listNetworkRequests, getNetworkRequest, filterNetworkRequests
|
|
747
|
+
- Выделена в отдельную группу в версии два точка четыре
|
|
748
|
+
|
|
749
|
+
Конфигурация с debugging: ENABLED_TOOLS равно core comma interaction comma inspection comma debug
|
|
750
|
+
|
|
751
|
+
Когда debugging НЕ нужен - отключайте эту группу для экономии токенов.
|
|
752
|
+
|
|
753
|
+
Для продвинутых возможностей и AI инструментов добавьте группу advanced. Об этом в следующем видео.
|
|
754
|
+
|
|
755
|
+
Спасибо за просмотр!"
|
|
756
|
+
|
|
757
|
+
---
|
|
758
|
+
|
|
759
|
+
## Video 5: Advanced Group (8-10 minutes)
|
|
760
|
+
|
|
761
|
+
### [0:00-0:30] Opening
|
|
762
|
+
|
|
763
|
+
**Text to read:**
|
|
764
|
+
|
|
765
|
+
"Привет! В этом видео мы разберем группу Advanced - самую мощную группу инструментов.
|
|
766
|
+
|
|
767
|
+
Девять инструментов для сложных задач и AI-powered автоматизации.
|
|
768
|
+
|
|
769
|
+
Группа Advanced включает:
|
|
770
|
+
- Выполнение произвольного JavaScript
|
|
771
|
+
- Изменение стилей и viewport
|
|
772
|
+
- Навигацию
|
|
773
|
+
- И самое главное - AI-powered инструменты для анализа и поиска
|
|
774
|
+
|
|
775
|
+
Давайте начнем."
|
|
776
|
+
|
|
777
|
+
**[ACTION: Open a complex webpage]**
|
|
778
|
+
|
|
779
|
+
---
|
|
780
|
+
|
|
781
|
+
### [0:30-1:30] Tool: executeScript
|
|
782
|
+
|
|
783
|
+
**Text to read:**
|
|
784
|
+
|
|
785
|
+
"Первый инструмент - executeScript. Он выполняет произвольный JavaScript код в браузере.
|
|
786
|
+
|
|
787
|
+
Это полная свобода. Можно делать ЧТО УГОДНО.
|
|
788
|
+
|
|
789
|
+
Но есть важное правило: используйте executeScript ТОЛЬКО когда специализированных инструментов недостаточно.
|
|
790
|
+
|
|
791
|
+
Давайте получим все ссылки на странице."
|
|
792
|
+
|
|
793
|
+
**[ACTION: Execute script]**
|
|
794
|
+
|
|
795
|
+
**Text to read:**
|
|
796
|
+
|
|
797
|
+
"AI, execute script to get all links on the page"
|
|
798
|
+
|
|
799
|
+
**[PAUSE for execution]**
|
|
800
|
+
|
|
801
|
+
**Text to read:**
|
|
802
|
+
|
|
803
|
+
"Вот массив всех URL на странице.
|
|
804
|
+
|
|
805
|
+
Параметры:
|
|
806
|
+
- script: JavaScript код. Должен возвращать JSON-сериализуемое значение
|
|
807
|
+
- timeout: максимальное время. По умолчанию тридцать тысяч миллисекунд
|
|
808
|
+
- waitAfter: пауза после выполнения. По умолчанию пятьсот миллисекунд
|
|
809
|
+
- screenshot: сделать скриншот после выполнения. По умолчанию false
|
|
810
|
+
|
|
811
|
+
ВАЖНО: для стандартных задач используйте специализированные инструменты. Они безопаснее и эффективнее."
|
|
812
|
+
|
|
813
|
+
---
|
|
814
|
+
|
|
815
|
+
### [1:30-2:30] Tools: setStyles, setViewport, getViewport, navigateTo
|
|
816
|
+
|
|
817
|
+
**Text to read:**
|
|
818
|
+
|
|
819
|
+
"Следующие инструменты - setStyles, setViewport, getViewport и navigateTo.
|
|
820
|
+
|
|
821
|
+
setStyles изменяет CSS стили элемента. Полезно для прототипирования и визуального тестирования.
|
|
822
|
+
|
|
823
|
+
Давайте изменим кнопку."
|
|
824
|
+
|
|
825
|
+
**[ACTION: Set styles]**
|
|
826
|
+
|
|
827
|
+
**Text to read:**
|
|
828
|
+
|
|
829
|
+
"AI, set button background to red and padding to 20px"
|
|
830
|
+
|
|
831
|
+
**[PAUSE while styles apply]**
|
|
832
|
+
|
|
833
|
+
**Text to read:**
|
|
834
|
+
|
|
835
|
+
"Стили применены вживую.
|
|
836
|
+
|
|
837
|
+
setViewport и getViewport - для тестирования responsive design.
|
|
838
|
+
|
|
839
|
+
Давайте проверим текущий размер."
|
|
840
|
+
|
|
841
|
+
**[ACTION: Get viewport]**
|
|
842
|
+
|
|
843
|
+
**Text to read:**
|
|
844
|
+
|
|
845
|
+
"AI, get current viewport size"
|
|
846
|
+
|
|
847
|
+
**[PAUSE]**
|
|
848
|
+
|
|
849
|
+
**Text to read:**
|
|
850
|
+
|
|
851
|
+
"Тысяча девятьсот двадцать на тысячу восемьдесят. Desktop.
|
|
852
|
+
|
|
853
|
+
Изменим на mobile."
|
|
854
|
+
|
|
855
|
+
**[ACTION: Set viewport to mobile]**
|
|
856
|
+
|
|
857
|
+
**Text to read:**
|
|
858
|
+
|
|
859
|
+
"AI, set viewport to 375 by 667 - that's iPhone SE"
|
|
860
|
+
|
|
861
|
+
**[PAUSE while viewport changes]**
|
|
862
|
+
|
|
863
|
+
**Text to read:**
|
|
864
|
+
|
|
865
|
+
"Layout изменился. Responsive design в действии.
|
|
866
|
+
|
|
867
|
+
navigateTo - для перехода на другие страницы."
|
|
868
|
+
|
|
869
|
+
**[ACTION: Navigate]**
|
|
870
|
+
|
|
871
|
+
**Text to read:**
|
|
872
|
+
|
|
873
|
+
"AI, navigate to https://github.com/docentovich/chrometools-mcp"
|
|
874
|
+
|
|
875
|
+
**[PAUSE]**
|
|
876
|
+
|
|
877
|
+
**Text to read:**
|
|
878
|
+
|
|
879
|
+
"Переход выполнен. В том же окне.
|
|
880
|
+
|
|
881
|
+
Параметр waitUntil контролирует, когда считать загрузку завершенной: load, domcontentloaded, networkidle0, networkidle2."
|
|
882
|
+
|
|
883
|
+
---
|
|
884
|
+
|
|
885
|
+
### [4:30-6:00] Tool: analyzePage ⭐
|
|
886
|
+
|
|
887
|
+
**Text to read:**
|
|
888
|
+
|
|
889
|
+
"Теперь КЛЮЧЕВОЙ инструмент - analyzePage.
|
|
890
|
+
|
|
891
|
+
Это AI-powered анализ страницы. Он возвращает структурированную информацию о:
|
|
892
|
+
- Формах и полях ввода с текущими значениями
|
|
893
|
+
- Кнопках с текстом
|
|
894
|
+
- Ссылках
|
|
895
|
+
- Всех интерактивных элементах
|
|
896
|
+
|
|
897
|
+
И самое важное: analyzePage потребляет всего две-пять тысяч токенов.
|
|
898
|
+
|
|
899
|
+
Для сравнения: screenshot - пятнадцать-двадцать пять тысяч токенов.
|
|
900
|
+
|
|
901
|
+
Давайте проанализируем текущую страницу."
|
|
902
|
+
|
|
903
|
+
**[ACTION: Analyze page]**
|
|
904
|
+
|
|
905
|
+
**Text to read:**
|
|
906
|
+
|
|
907
|
+
"AI, analyze the current page"
|
|
908
|
+
|
|
909
|
+
**[PAUSE for analysis]**
|
|
910
|
+
|
|
911
|
+
**Text to read:**
|
|
912
|
+
|
|
913
|
+
"Вот что мы получили:
|
|
914
|
+
- Форма входа с полями username и password
|
|
915
|
+
- Кнопка 'Sign in'
|
|
916
|
+
- Ссылки на регистрацию и восстановление пароля
|
|
917
|
+
- Все с селекторами и текущими значениями
|
|
918
|
+
|
|
919
|
+
analyzePage кешируется по URL. При повторном вызове на том же URL - вернет кеш.
|
|
920
|
+
|
|
921
|
+
Параметр refresh: true - принудительно обновить кеш.
|
|
922
|
+
|
|
923
|
+
Best practice: используйте analyzePage вместо screenshot для анализа форм и интерактивных элементов.
|
|
924
|
+
|
|
925
|
+
Экономия: в пять-десять раз меньше токенов."
|
|
926
|
+
|
|
927
|
+
---
|
|
928
|
+
|
|
929
|
+
### [6:00-7:00] Tool: getAllInteractiveElements
|
|
930
|
+
|
|
931
|
+
**Text to read:**
|
|
932
|
+
|
|
933
|
+
"Инструмент getAllInteractiveElements возвращает ВСЕ интерактивные элементы с селекторами.
|
|
934
|
+
|
|
935
|
+
Полезно для:
|
|
936
|
+
- Понимания доступных действий
|
|
937
|
+
- Генерации автотестов
|
|
938
|
+
- Проверки доступности
|
|
939
|
+
|
|
940
|
+
Давайте получим их."
|
|
941
|
+
|
|
942
|
+
**[ACTION: Get interactive elements]**
|
|
943
|
+
|
|
944
|
+
**Text to read:**
|
|
945
|
+
|
|
946
|
+
"AI, get all interactive elements"
|
|
947
|
+
|
|
948
|
+
**[PAUSE]**
|
|
949
|
+
|
|
950
|
+
**Text to read:**
|
|
951
|
+
|
|
952
|
+
"Список всех кнопок, ссылок, инпутов, select'ов - всего, с чем можно взаимодействовать.
|
|
953
|
+
|
|
954
|
+
Параметр includeHidden: включить скрытые элементы. По умолчанию false."
|
|
955
|
+
|
|
956
|
+
---
|
|
957
|
+
|
|
958
|
+
### [7:00-8:30] Tool: findElementsByText
|
|
959
|
+
|
|
960
|
+
**Text to read:**
|
|
961
|
+
|
|
962
|
+
"Инструмент findElementsByText ищет элементы по тексту.
|
|
963
|
+
|
|
964
|
+
Очень удобно, когда CSS селектор сложно составить, но вы знаете текст.
|
|
965
|
+
|
|
966
|
+
Давайте найдем кнопку входа."
|
|
967
|
+
|
|
968
|
+
**[ACTION: Find by text]**
|
|
969
|
+
|
|
970
|
+
**Text to read:**
|
|
971
|
+
|
|
972
|
+
"AI, find elements with text 'Sign in'"
|
|
973
|
+
|
|
974
|
+
**[PAUSE]**
|
|
975
|
+
|
|
976
|
+
**Text to read:**
|
|
977
|
+
|
|
978
|
+
"Нашли элементы с этим текстом. С селекторами.
|
|
979
|
+
|
|
980
|
+
Параметры:
|
|
981
|
+
- exact: точное совпадение. По умолчанию false - частичное
|
|
982
|
+
- caseSensitive: учитывать регистр. По умолчанию false
|
|
983
|
+
|
|
984
|
+
Также можно СРАЗУ выполнить действие на первом найденном элементе.
|
|
985
|
+
|
|
986
|
+
Давайте найдем и кликнем."
|
|
987
|
+
|
|
988
|
+
**[ACTION: Find and click]**
|
|
989
|
+
|
|
990
|
+
**Text to read:**
|
|
991
|
+
|
|
992
|
+
"AI, find and click element with exact text 'Sign In'"
|
|
993
|
+
|
|
994
|
+
**[PAUSE]**
|
|
995
|
+
|
|
996
|
+
**Text to read:**
|
|
997
|
+
|
|
998
|
+
"Один запрос - поиск и клик. Очень удобно."
|
|
999
|
+
|
|
1000
|
+
---
|
|
1001
|
+
|
|
1002
|
+
### [8:30-9:30] Tool: smartFindElement ⭐
|
|
1003
|
+
|
|
1004
|
+
**Text to read:**
|
|
1005
|
+
|
|
1006
|
+
"И наконец - smartFindElement. Самый мощный инструмент поиска.
|
|
1007
|
+
|
|
1008
|
+
Он использует AI для поиска элементов по ЕСТЕСТВЕННОМУ описанию на языке.
|
|
1009
|
+
|
|
1010
|
+
Давайте попробуем."
|
|
1011
|
+
|
|
1012
|
+
**[ACTION: Smart find]**
|
|
1013
|
+
|
|
1014
|
+
**Text to read:**
|
|
1015
|
+
|
|
1016
|
+
"AI, find 'the blue button that says submit'"
|
|
1017
|
+
|
|
1018
|
+
**[PAUSE for AI search]**
|
|
1019
|
+
|
|
1020
|
+
**Text to read:**
|
|
1021
|
+
|
|
1022
|
+
"AI вернул ranked candidates - отранжированные кандидаты. Лучшие совпадения первыми.
|
|
1023
|
+
|
|
1024
|
+
Можно сразу выполнить действие."
|
|
1025
|
+
|
|
1026
|
+
**[ACTION: Smart find and click]**
|
|
1027
|
+
|
|
1028
|
+
**Text to read:**
|
|
1029
|
+
|
|
1030
|
+
"AI, find 'the main navigation menu' and click it"
|
|
1031
|
+
|
|
1032
|
+
**[PAUSE]**
|
|
1033
|
+
|
|
1034
|
+
**Text to read:**
|
|
1035
|
+
|
|
1036
|
+
"Нашли и кликнули. По описанию на естественном языке.
|
|
1037
|
+
|
|
1038
|
+
Параметр maxResults контролирует количество кандидатов. По умолчанию пять.
|
|
1039
|
+
|
|
1040
|
+
ВАЖНОЕ ЗАМЕЧАНИЕ: документация рекомендует использовать analyzePage для лучшей производительности, когда это возможно.
|
|
1041
|
+
|
|
1042
|
+
smartFindElement - для сложных случаев, когда другие методы не подходят."
|
|
1043
|
+
|
|
1044
|
+
---
|
|
1045
|
+
|
|
1046
|
+
### [9:30-10:00] Summary
|
|
1047
|
+
|
|
1048
|
+
**Text to read:**
|
|
1049
|
+
|
|
1050
|
+
"Итак, группа Advanced:
|
|
1051
|
+
- Девять мощных инструментов
|
|
1052
|
+
- executeScript, setStyles, setViewport, getViewport, navigateTo
|
|
1053
|
+
- И AI-powered: analyzePage, getAllInteractiveElements, findElementsByText, smartFindElement
|
|
1054
|
+
|
|
1055
|
+
Конфигурация: ENABLED_TOOLS равно core comma interaction comma advanced
|
|
1056
|
+
|
|
1057
|
+
Ключевые инструменты:
|
|
1058
|
+
- analyzePage - для анализа форм. Экономит токены
|
|
1059
|
+
- smartFindElement - для поиска по описанию
|
|
1060
|
+
|
|
1061
|
+
Для записи и воспроизведения сценариев добавьте группу recorder. Об этом в следующем видео.
|
|
1062
|
+
|
|
1063
|
+
Спасибо за просмотр!"
|
|
1064
|
+
|
|
1065
|
+
---
|
|
1066
|
+
|
|
1067
|
+
## Video 6: Recorder Group (10-12 minutes)
|
|
1068
|
+
|
|
1069
|
+
### [0:00-0:30] Opening
|
|
1070
|
+
|
|
1071
|
+
**Text to read:**
|
|
1072
|
+
|
|
1073
|
+
"Привет! В этом видео мы разберем группу Recorder - самую объемную и мощную группу.
|
|
1074
|
+
|
|
1075
|
+
Девять инструментов для записи действий, воспроизведения сценариев и генерации автотестов.
|
|
1076
|
+
|
|
1077
|
+
Это полноценная система автоматизации тестирования.
|
|
1078
|
+
|
|
1079
|
+
Группа Recorder поддерживает:
|
|
1080
|
+
- Запись действий в браузере
|
|
1081
|
+
- Воспроизведение с параметрами
|
|
1082
|
+
- Экспорт в четыре фреймворка: Playwright TypeScript, Playwright Python, Selenium Python, Selenium Java
|
|
1083
|
+
- Генерацию Page Object Model классов
|
|
1084
|
+
|
|
1085
|
+
Давайте начнем с основ."
|
|
1086
|
+
|
|
1087
|
+
---
|
|
1088
|
+
|
|
1089
|
+
### [0:30-2:00] Tool: enableRecorder
|
|
1090
|
+
|
|
1091
|
+
**Text to read:**
|
|
1092
|
+
|
|
1093
|
+
"Первый инструмент - enableRecorder. Он включает UI виджет для записи.
|
|
1094
|
+
|
|
1095
|
+
Давайте включим его."
|
|
1096
|
+
|
|
1097
|
+
**[ACTION: Enable recorder]**
|
|
1098
|
+
|
|
1099
|
+
**Text to read:**
|
|
1100
|
+
|
|
1101
|
+
"AI, enable recorder"
|
|
1102
|
+
|
|
1103
|
+
**[PAUSE while widget loads]**
|
|
1104
|
+
|
|
1105
|
+
**Text to read:**
|
|
1106
|
+
|
|
1107
|
+
"Виджет появился в углу браузера. Вы видите:
|
|
1108
|
+
- Кнопку Start Recording
|
|
1109
|
+
- Поле Scenario Name для названия сценария
|
|
1110
|
+
- Поле Tags для меток
|
|
1111
|
+
- Поле Dependencies для зависимостей от других сценариев
|
|
1112
|
+
- Кнопку Save
|
|
1113
|
+
|
|
1114
|
+
Сценарии хранятся в конфигурационной папке:
|
|
1115
|
+
~/.config/chrometools-mcp/projects/{domain}/scenarios/
|
|
1116
|
+
|
|
1117
|
+
Где domain - это домен текущего сайта. Например, для github.com будет projects/github/scenarios/
|
|
1118
|
+
|
|
1119
|
+
Также есть глобальный индекс всех проектов и сценариев:
|
|
1120
|
+
~/.config/chrometools-mcp/index.json
|
|
1121
|
+
|
|
1122
|
+
Теперь давайте запишем сценарий."
|
|
1123
|
+
|
|
1124
|
+
---
|
|
1125
|
+
|
|
1126
|
+
### [2:00-4:00] Recording a scenario (manual browser interaction)
|
|
1127
|
+
|
|
1128
|
+
**Text to read:**
|
|
1129
|
+
|
|
1130
|
+
"Я нажму Start Recording и выполню последовательность действий.
|
|
1131
|
+
|
|
1132
|
+
Смотрите: я перехожу на страницу входа GitHub."
|
|
1133
|
+
|
|
1134
|
+
**[ACTION: Click Start Recording]**
|
|
1135
|
+
**[ACTION: Navigate to GitHub login]**
|
|
1136
|
+
|
|
1137
|
+
**Text to read:**
|
|
1138
|
+
|
|
1139
|
+
"Теперь заполню имя пользователя."
|
|
1140
|
+
|
|
1141
|
+
**[ACTION: Fill username]**
|
|
1142
|
+
|
|
1143
|
+
**Text to read:**
|
|
1144
|
+
|
|
1145
|
+
"Пароль."
|
|
1146
|
+
|
|
1147
|
+
**[ACTION: Fill password]**
|
|
1148
|
+
|
|
1149
|
+
**Text to read:**
|
|
1150
|
+
|
|
1151
|
+
"И нажму кнопку входа."
|
|
1152
|
+
|
|
1153
|
+
**[ACTION: Click Sign in button]**
|
|
1154
|
+
|
|
1155
|
+
**Text to read:**
|
|
1156
|
+
|
|
1157
|
+
"Отлично. Теперь остановлю запись."
|
|
1158
|
+
|
|
1159
|
+
**[ACTION: Click Stop Recording]**
|
|
1160
|
+
|
|
1161
|
+
**Text to read:**
|
|
1162
|
+
|
|
1163
|
+
"Запись остановлена. Теперь введу название сценария: 'Login to GitHub'"
|
|
1164
|
+
|
|
1165
|
+
**[ACTION: Enter scenario name]**
|
|
1166
|
+
|
|
1167
|
+
**Text to read:**
|
|
1168
|
+
|
|
1169
|
+
"Добавлю теги: auth, login"
|
|
1170
|
+
|
|
1171
|
+
**[ACTION: Add tags]**
|
|
1172
|
+
|
|
1173
|
+
**Text to read:**
|
|
1174
|
+
|
|
1175
|
+
"И сохраню."
|
|
1176
|
+
|
|
1177
|
+
**[ACTION: Click Save]**
|
|
1178
|
+
|
|
1179
|
+
**[PAUSE for confirmation]**
|
|
1180
|
+
|
|
1181
|
+
**Text to read:**
|
|
1182
|
+
|
|
1183
|
+
"Сценарий сохранен. Теперь можем работать с ним через AI."
|
|
1184
|
+
|
|
1185
|
+
---
|
|
1186
|
+
|
|
1187
|
+
### [4:00-5:00] Tool: listScenarios
|
|
1188
|
+
|
|
1189
|
+
**Text to read:**
|
|
1190
|
+
|
|
1191
|
+
"Инструмент listScenarios показывает все сохраненные сценарии.
|
|
1192
|
+
|
|
1193
|
+
Давайте посмотрим."
|
|
1194
|
+
|
|
1195
|
+
**[ACTION: List scenarios]**
|
|
1196
|
+
|
|
1197
|
+
**Text to read:**
|
|
1198
|
+
|
|
1199
|
+
"AI, list all scenarios"
|
|
1200
|
+
|
|
1201
|
+
**[PAUSE for response]**
|
|
1202
|
+
|
|
1203
|
+
**Text to read:**
|
|
1204
|
+
|
|
1205
|
+
"Вот наш сценарий 'Login to GitHub' с метаданными:
|
|
1206
|
+
- Name: название
|
|
1207
|
+
- Description: описание, если добавили
|
|
1208
|
+
- Tags: метки
|
|
1209
|
+
- Actions count: количество действий
|
|
1210
|
+
- Created date: дата создания
|
|
1211
|
+
- Project: к какому проекту относится
|
|
1212
|
+
|
|
1213
|
+
По умолчанию показываются сценарии текущего проекта.
|
|
1214
|
+
|
|
1215
|
+
Параметр allProjects: true - показать сценарии из ВСЕХ проектов."
|
|
1216
|
+
|
|
1217
|
+
---
|
|
1218
|
+
|
|
1219
|
+
### [5:00-5:30] Tool: searchScenarios
|
|
1220
|
+
|
|
1221
|
+
**Text to read:**
|
|
1222
|
+
|
|
1223
|
+
"Инструмент searchScenarios ищет сценарии по тексту или тегам.
|
|
1224
|
+
|
|
1225
|
+
Давайте найдем все сценарии с тегом 'login'."
|
|
1226
|
+
|
|
1227
|
+
**[ACTION: Search by tag]**
|
|
1228
|
+
|
|
1229
|
+
**Text to read:**
|
|
1230
|
+
|
|
1231
|
+
"AI, search scenarios with tag 'login'"
|
|
1232
|
+
|
|
1233
|
+
**[PAUSE]**
|
|
1234
|
+
|
|
1235
|
+
**Text to read:**
|
|
1236
|
+
|
|
1237
|
+
"Нашли наш сценарий.
|
|
1238
|
+
|
|
1239
|
+
Также можно искать по тексту в названии или описании.
|
|
1240
|
+
|
|
1241
|
+
Параметр allProjects: искать во всех проектах."
|
|
1242
|
+
|
|
1243
|
+
---
|
|
1244
|
+
|
|
1245
|
+
### [5:30-6:00] Tool: getScenarioInfo
|
|
1246
|
+
|
|
1247
|
+
**Text to read:**
|
|
1248
|
+
|
|
1249
|
+
"Инструмент getScenarioInfo возвращает детальную информацию о сценарии.
|
|
1250
|
+
|
|
1251
|
+
Давайте посмотрим детали нашего сценария."
|
|
1252
|
+
|
|
1253
|
+
**[ACTION: Get info]**
|
|
1254
|
+
|
|
1255
|
+
**Text to read:**
|
|
1256
|
+
|
|
1257
|
+
"AI, get scenario info for 'Login to GitHub'"
|
|
1258
|
+
|
|
1259
|
+
**[PAUSE]**
|
|
1260
|
+
|
|
1261
|
+
**Text to read:**
|
|
1262
|
+
|
|
1263
|
+
"Вот что мы получили:
|
|
1264
|
+
- Список всех действий: navigate, type, click - в порядке выполнения
|
|
1265
|
+
- Параметры, если используются
|
|
1266
|
+
- Зависимости от других сценариев, если есть
|
|
1267
|
+
- Секреты не показаны по умолчанию
|
|
1268
|
+
|
|
1269
|
+
Параметр includeSecrets: true - показать секреты. Используйте осторожно."
|
|
1270
|
+
|
|
1271
|
+
---
|
|
1272
|
+
|
|
1273
|
+
### [6:00-7:00] Tool: executeScenario
|
|
1274
|
+
|
|
1275
|
+
**Text to read:**
|
|
1276
|
+
|
|
1277
|
+
"Инструмент executeScenario воспроизводит сценарий.
|
|
1278
|
+
|
|
1279
|
+
Это автоматическое повторение всех записанных действий.
|
|
1280
|
+
|
|
1281
|
+
Давайте выполним наш сценарий."
|
|
1282
|
+
|
|
1283
|
+
**[ACTION: Execute scenario]**
|
|
1284
|
+
|
|
1285
|
+
**Text to read:**
|
|
1286
|
+
|
|
1287
|
+
"AI, execute scenario 'Login to GitHub' with parameters: username equals 'testuser', password equals 'hidden'"
|
|
1288
|
+
|
|
1289
|
+
**[PAUSE while scenario executes]**
|
|
1290
|
+
|
|
1291
|
+
**Text to read:**
|
|
1292
|
+
|
|
1293
|
+
"Сценарий выполняется автоматически. Все действия повторяются в том же порядке.
|
|
1294
|
+
|
|
1295
|
+
Параметры:
|
|
1296
|
+
- name: название сценария
|
|
1297
|
+
- parameters: объект с параметрами для замены переменных
|
|
1298
|
+
- executeDependencies: выполнить зависимости перед этим сценарием. По умолчанию true
|
|
1299
|
+
- projectId: ID проекта для disambiguation, если сценарии с одинаковым именем в разных проектах
|
|
1300
|
+
|
|
1301
|
+
Очень удобно для regression testing."
|
|
1302
|
+
|
|
1303
|
+
---
|
|
1304
|
+
|
|
1305
|
+
### [7:00-8:30] Tool: exportScenarioAsCode
|
|
1306
|
+
|
|
1307
|
+
**Text to read:**
|
|
1308
|
+
|
|
1309
|
+
"Инструмент exportScenarioAsCode - это жемчужина Recorder группы.
|
|
1310
|
+
|
|
1311
|
+
Он генерирует готовый код автотеста из записанного сценария.
|
|
1312
|
+
|
|
1313
|
+
Поддерживает четыре фреймворка:
|
|
1314
|
+
- playwright-typescript
|
|
1315
|
+
- playwright-python
|
|
1316
|
+
- selenium-python
|
|
1317
|
+
- selenium-java
|
|
1318
|
+
|
|
1319
|
+
Давайте экспортируем наш сценарий в Playwright TypeScript."
|
|
1320
|
+
|
|
1321
|
+
**[ACTION: Export as code]**
|
|
1322
|
+
|
|
1323
|
+
**Text to read:**
|
|
1324
|
+
|
|
1325
|
+
"AI, export 'Login to GitHub' as Playwright TypeScript"
|
|
1326
|
+
|
|
1327
|
+
**[PAUSE for code generation]**
|
|
1328
|
+
|
|
1329
|
+
**Text to read:**
|
|
1330
|
+
|
|
1331
|
+
"Вот сгенерированный тест:
|
|
1332
|
+
- Готовый Playwright тест
|
|
1333
|
+
- Чистые селекторы - без CSS modules и styled-components хэшей
|
|
1334
|
+
- Комментарии, объясняющие каждый шаг
|
|
1335
|
+
- Suggested filename для сохранения
|
|
1336
|
+
|
|
1337
|
+
Это НОВЫЙ файл. Для добавления в существующий используйте appendScenarioToFile.
|
|
1338
|
+
|
|
1339
|
+
Параметры:
|
|
1340
|
+
- scenarioName: название сценария
|
|
1341
|
+
- language: фреймворк
|
|
1342
|
+
- cleanSelectors: очистить нестабильные селекторы. По умолчанию true
|
|
1343
|
+
- includeComments: добавить комментарии. По умолчанию true
|
|
1344
|
+
- generatePageObject: также сгенерировать Page Object класс. По умолчанию false
|
|
1345
|
+
|
|
1346
|
+
Давайте попробуем с Page Object."
|
|
1347
|
+
|
|
1348
|
+
**[ACTION: Export with POM]**
|
|
1349
|
+
|
|
1350
|
+
**Text to read:**
|
|
1351
|
+
|
|
1352
|
+
"AI, export with Page Object, generatePageObject equals true"
|
|
1353
|
+
|
|
1354
|
+
**[PAUSE]**
|
|
1355
|
+
|
|
1356
|
+
**Text to read:**
|
|
1357
|
+
|
|
1358
|
+
"Теперь два файла:
|
|
1359
|
+
- Тестовый файл, использующий Page Object
|
|
1360
|
+
- Page Object класс с методами и селекторами
|
|
1361
|
+
|
|
1362
|
+
Готово для использования в проекте."
|
|
1363
|
+
|
|
1364
|
+
---
|
|
1365
|
+
|
|
1366
|
+
### [8:30-10:00] Tool: appendScenarioToFile
|
|
1367
|
+
|
|
1368
|
+
**Text to read:**
|
|
1369
|
+
|
|
1370
|
+
"Инструмент appendScenarioToFile добавляет тест в СУЩЕСТВУЮЩИЙ файл.
|
|
1371
|
+
|
|
1372
|
+
В отличие от exportScenarioAsCode, который создает НОВЫЙ файл, appendScenarioToFile НЕ перезаписывает существующие тесты.
|
|
1373
|
+
|
|
1374
|
+
Давайте добавим наш сценарий в файл auth.spec.ts."
|
|
1375
|
+
|
|
1376
|
+
**[ACTION: Append to file]**
|
|
1377
|
+
|
|
1378
|
+
**Text to read:**
|
|
1379
|
+
|
|
1380
|
+
"AI, append 'Login to GitHub' to existing test file ./tests/auth.spec.ts"
|
|
1381
|
+
|
|
1382
|
+
**[PAUSE while appending]**
|
|
1383
|
+
|
|
1384
|
+
**Text to read:**
|
|
1385
|
+
|
|
1386
|
+
"Тест добавлен в конец файла. Существующие тесты не тронуты.
|
|
1387
|
+
|
|
1388
|
+
Можно контролировать позицию вставки.
|
|
1389
|
+
|
|
1390
|
+
Параметр insertPosition:
|
|
1391
|
+
- 'end': в конец файла. По умолчанию
|
|
1392
|
+
- 'before': перед указанным тестом
|
|
1393
|
+
- 'after': после указанного теста
|
|
1394
|
+
|
|
1395
|
+
Для before и after нужен параметр referenceTestName.
|
|
1396
|
+
|
|
1397
|
+
Давайте вставим перед тестом 'should logout'."
|
|
1398
|
+
|
|
1399
|
+
**[ACTION: Append before test]**
|
|
1400
|
+
|
|
1401
|
+
**Text to read:**
|
|
1402
|
+
|
|
1403
|
+
"AI, append 'Login to GitHub' before test 'should logout'"
|
|
1404
|
+
|
|
1405
|
+
**[PAUSE]**
|
|
1406
|
+
|
|
1407
|
+
**Text to read:**
|
|
1408
|
+
|
|
1409
|
+
"Тест вставлен в нужное место.
|
|
1410
|
+
|
|
1411
|
+
Другие параметры:
|
|
1412
|
+
- language: фреймворк
|
|
1413
|
+
- testName: переопределить название теста
|
|
1414
|
+
- cleanSelectors, includeComments, generatePageObject: как у exportScenarioAsCode
|
|
1415
|
+
|
|
1416
|
+
Это мощный инструмент для добавления тестов в существующий test suite."
|
|
1417
|
+
|
|
1418
|
+
---
|
|
1419
|
+
|
|
1420
|
+
### [10:00-11:00] Tool: generatePageObject
|
|
1421
|
+
|
|
1422
|
+
**Text to read:**
|
|
1423
|
+
|
|
1424
|
+
"Инструмент generatePageObject генерирует Page Object Model класс для ТЕКУЩЕЙ страницы.
|
|
1425
|
+
|
|
1426
|
+
Он анализирует страницу, находит все интерактивные элементы и создает класс.
|
|
1427
|
+
|
|
1428
|
+
Давайте сгенерируем Page Object для текущей страницы."
|
|
1429
|
+
|
|
1430
|
+
**[ACTION: Generate POM]**
|
|
1431
|
+
|
|
1432
|
+
**Text to read:**
|
|
1433
|
+
|
|
1434
|
+
"AI, generate Page Object Model for current page in Playwright TypeScript"
|
|
1435
|
+
|
|
1436
|
+
**[PAUSE while generating]**
|
|
1437
|
+
|
|
1438
|
+
**Text to read:**
|
|
1439
|
+
|
|
1440
|
+
"Вот что сгенерировано:
|
|
1441
|
+
- Класс с умным названием на основе заголовка страницы
|
|
1442
|
+
- Элементы сгруппированы по секциям: header, navigation, form, footer
|
|
1443
|
+
- Умные имена для элементов: usernameInput, submitButton, loginLink
|
|
1444
|
+
- Helper методы для типовых действий
|
|
1445
|
+
|
|
1446
|
+
Параметры:
|
|
1447
|
+
- framework: фреймворк. По умолчанию playwright-typescript
|
|
1448
|
+
- className: переопределить имя класса. Иначе генерируется автоматически
|
|
1449
|
+
- groupElements: группировать по секциям. По умолчанию true
|
|
1450
|
+
- includeComments: комментарии. По умолчанию true
|
|
1451
|
+
|
|
1452
|
+
Без группировки получим плоский список элементов.
|
|
1453
|
+
|
|
1454
|
+
Это экономит часы ручного написания Page Objects."
|
|
1455
|
+
|
|
1456
|
+
---
|
|
1457
|
+
|
|
1458
|
+
### [11:00-11:30] Tool: deleteScenario
|
|
1459
|
+
|
|
1460
|
+
**Text to read:**
|
|
1461
|
+
|
|
1462
|
+
"Последний инструмент - deleteScenario. Он удаляет сценарий.
|
|
1463
|
+
|
|
1464
|
+
Давайте удалим тестовый сценарий."
|
|
1465
|
+
|
|
1466
|
+
**[ACTION: Delete scenario]**
|
|
1467
|
+
|
|
1468
|
+
**Text to read:**
|
|
1469
|
+
|
|
1470
|
+
"AI, delete scenario 'test scenario'"
|
|
1471
|
+
|
|
1472
|
+
**[PAUSE]**
|
|
1473
|
+
|
|
1474
|
+
**Text to read:**
|
|
1475
|
+
|
|
1476
|
+
"Сценарий удален.
|
|
1477
|
+
|
|
1478
|
+
Удаляется и сценарий, и все связанные секреты.
|
|
1479
|
+
|
|
1480
|
+
Операция необратима."
|
|
1481
|
+
|
|
1482
|
+
---
|
|
1483
|
+
|
|
1484
|
+
### [11:30-12:00] Summary
|
|
1485
|
+
|
|
1486
|
+
**Text to read:**
|
|
1487
|
+
|
|
1488
|
+
"Итак, группа Recorder:
|
|
1489
|
+
- Девять инструментов для автоматизации тестирования
|
|
1490
|
+
- Запись в браузере, воспроизведение, генерация кода
|
|
1491
|
+
- Четыре фреймворка: Playwright и Selenium, TypeScript, Python, Java
|
|
1492
|
+
- Page Object Model генерация
|
|
1493
|
+
|
|
1494
|
+
Конфигурация: ENABLED_TOOLS равно core comma interaction comma inspection comma recorder
|
|
1495
|
+
|
|
1496
|
+
Workflow:
|
|
1497
|
+
1. enableRecorder - включить виджет
|
|
1498
|
+
2. Записать сценарий вручную
|
|
1499
|
+
3. executeScenario - проверить воспроизведение
|
|
1500
|
+
4. exportScenarioAsCode или appendScenarioToFile - сгенерировать тесты
|
|
1501
|
+
|
|
1502
|
+
Глобальный индекс: ~/.config/chrometools-mcp/index.json
|
|
1503
|
+
|
|
1504
|
+
Для интеграции с Figma добавьте группу figma. Об этом в следующем видео.
|
|
1505
|
+
|
|
1506
|
+
Спасибо за просмотр!"
|
|
1507
|
+
|
|
1508
|
+
---
|
|
1509
|
+
|
|
1510
|
+
## Video 7: Figma Group (8-10 minutes)
|
|
1511
|
+
|
|
1512
|
+
### [0:00-0:30] Opening
|
|
1513
|
+
|
|
1514
|
+
**Text to read:**
|
|
1515
|
+
|
|
1516
|
+
"Привет! В последнем видео мы разберем группу Figma - интеграцию с Figma для дизайн-валидации.
|
|
1517
|
+
|
|
1518
|
+
Девять инструментов для pixel-perfect сравнения дизайна и реализации.
|
|
1519
|
+
|
|
1520
|
+
Группа Figma позволяет:
|
|
1521
|
+
- Экспортировать фреймы из Figma
|
|
1522
|
+
- Сравнивать с реализацией в браузере
|
|
1523
|
+
- Извлекать дизайн-токены
|
|
1524
|
+
- Анализировать Design System
|
|
1525
|
+
|
|
1526
|
+
ВАЖНО: для работы нужен Figma Personal Access Token.
|
|
1527
|
+
|
|
1528
|
+
Настройте его в переменной окружения FIGMA_TOKEN в конфигурации MCP клиента."
|
|
1529
|
+
|
|
1530
|
+
**[ACTION: Show env configuration with FIGMA_TOKEN]**
|
|
1531
|
+
|
|
1532
|
+
---
|
|
1533
|
+
|
|
1534
|
+
### [0:30-1:00] Tool: parseFigmaUrl
|
|
1535
|
+
|
|
1536
|
+
**Text to read:**
|
|
1537
|
+
|
|
1538
|
+
"Первый инструмент - parseFigmaUrl. Он парсит Figma URL и извлекает fileKey и nodeId.
|
|
1539
|
+
|
|
1540
|
+
Эти параметры нужны для всех остальных инструментов.
|
|
1541
|
+
|
|
1542
|
+
Давайте распарсим URL."
|
|
1543
|
+
|
|
1544
|
+
**[ACTION: Parse URL]**
|
|
1545
|
+
|
|
1546
|
+
**Text to read:**
|
|
1547
|
+
|
|
1548
|
+
"AI, parse Figma URL 'https://www.figma.com/file/ABC123/Design?node-id=1-2'"
|
|
1549
|
+
|
|
1550
|
+
**[PAUSE]**
|
|
1551
|
+
|
|
1552
|
+
**Text to read:**
|
|
1553
|
+
|
|
1554
|
+
"Получили:
|
|
1555
|
+
- fileKey: ABC123
|
|
1556
|
+
- nodeId: 1-2
|
|
1557
|
+
|
|
1558
|
+
Используйте эти значения в других инструментах."
|
|
1559
|
+
|
|
1560
|
+
---
|
|
1561
|
+
|
|
1562
|
+
### [1:00-2:00] Tool: listFigmaPages
|
|
1563
|
+
|
|
1564
|
+
**Text to read:**
|
|
1565
|
+
|
|
1566
|
+
"Инструмент listFigmaPages показывает структуру Figma файла.
|
|
1567
|
+
|
|
1568
|
+
Это должен быть ПЕРВЫЙ инструмент при работе с новым файлом.
|
|
1569
|
+
|
|
1570
|
+
Давайте изучим файл."
|
|
1571
|
+
|
|
1572
|
+
**[ACTION: List pages]**
|
|
1573
|
+
|
|
1574
|
+
**Text to read:**
|
|
1575
|
+
|
|
1576
|
+
"AI, list all pages and frames in Figma file ABC123"
|
|
1577
|
+
|
|
1578
|
+
**[PAUSE]**
|
|
1579
|
+
|
|
1580
|
+
**Text to read:**
|
|
1581
|
+
|
|
1582
|
+
"Вот дерево файла:
|
|
1583
|
+
- Pages: страницы в файле
|
|
1584
|
+
- Frames: фреймы на каждой странице
|
|
1585
|
+
- Components: компоненты внутри фреймов
|
|
1586
|
+
|
|
1587
|
+
Каждый элемент с nodeId.
|
|
1588
|
+
|
|
1589
|
+
Это карта файла. Используйте для навигации и поиска нужных фреймов."
|
|
1590
|
+
|
|
1591
|
+
---
|
|
1592
|
+
|
|
1593
|
+
### [2:00-2:30] Tool: searchFigmaFrames
|
|
1594
|
+
|
|
1595
|
+
**Text to read:**
|
|
1596
|
+
|
|
1597
|
+
"Инструмент searchFigmaFrames ищет фреймы по названию.
|
|
1598
|
+
|
|
1599
|
+
Удобно, когда в файле сотни фреймов.
|
|
1600
|
+
|
|
1601
|
+
Давайте найдем все кнопки."
|
|
1602
|
+
|
|
1603
|
+
**[ACTION: Search frames]**
|
|
1604
|
+
|
|
1605
|
+
**Text to read:**
|
|
1606
|
+
|
|
1607
|
+
"AI, search for frames with name 'Button' in Figma file"
|
|
1608
|
+
|
|
1609
|
+
**[PAUSE]**
|
|
1610
|
+
|
|
1611
|
+
**Text to read:**
|
|
1612
|
+
|
|
1613
|
+
"Нашли все фреймы с 'Button' в названии.
|
|
1614
|
+
|
|
1615
|
+
Для каждого: name и nodeId.
|
|
1616
|
+
|
|
1617
|
+
Поиск case-insensitive и ищет по всем страницам."
|
|
1618
|
+
|
|
1619
|
+
---
|
|
1620
|
+
|
|
1621
|
+
### [2:30-3:30] Tool: getFigmaFrame
|
|
1622
|
+
|
|
1623
|
+
**Text to read:**
|
|
1624
|
+
|
|
1625
|
+
"Инструмент getFigmaFrame экспортирует фрейм как изображение.
|
|
1626
|
+
|
|
1627
|
+
Поддерживает PNG, JPEG и SVG форматы.
|
|
1628
|
+
|
|
1629
|
+
Давайте экспортируем кнопку."
|
|
1630
|
+
|
|
1631
|
+
**[ACTION: Get frame]**
|
|
1632
|
+
|
|
1633
|
+
**Text to read:**
|
|
1634
|
+
|
|
1635
|
+
"AI, get Figma frame ABC123 slash node-id-123 as PNG with scale 2"
|
|
1636
|
+
|
|
1637
|
+
**[PAUSE while exporting]**
|
|
1638
|
+
|
|
1639
|
+
**Text to read:**
|
|
1640
|
+
|
|
1641
|
+
"Вот изображение кнопки из Figma.
|
|
1642
|
+
|
|
1643
|
+
Параметры:
|
|
1644
|
+
- fileKey и nodeId: идентификаторы
|
|
1645
|
+
- format: png, jpg, svg. По умолчанию png
|
|
1646
|
+
- scale: от нуль точка один до четырех. По умолчанию два. Масштаб экспорта
|
|
1647
|
+
- figmaToken: можно передать токен явно. Иначе используется из env
|
|
1648
|
+
|
|
1649
|
+
SVG формат полезен для векторной графики.
|
|
1650
|
+
|
|
1651
|
+
Давайте попробуем SVG."
|
|
1652
|
+
|
|
1653
|
+
**[ACTION: Get as SVG]**
|
|
1654
|
+
|
|
1655
|
+
**Text to read:**
|
|
1656
|
+
|
|
1657
|
+
"AI, get as SVG"
|
|
1658
|
+
|
|
1659
|
+
**[PAUSE]**
|
|
1660
|
+
|
|
1661
|
+
**Text to read:**
|
|
1662
|
+
|
|
1663
|
+
"SVG код. Можно использовать напрямую в вебе."
|
|
1664
|
+
|
|
1665
|
+
---
|
|
1666
|
+
|
|
1667
|
+
### [3:30-4:30] Tool: getFigmaSpecs
|
|
1668
|
+
|
|
1669
|
+
**Text to read:**
|
|
1670
|
+
|
|
1671
|
+
"Инструмент getFigmaSpecs извлекает дизайн-спецификации фрейма.
|
|
1672
|
+
|
|
1673
|
+
Это дизайн-токены для разработки.
|
|
1674
|
+
|
|
1675
|
+
Давайте получим спеки кнопки."
|
|
1676
|
+
|
|
1677
|
+
**[ACTION: Get specs]**
|
|
1678
|
+
|
|
1679
|
+
**Text to read:**
|
|
1680
|
+
|
|
1681
|
+
"AI, get design specs for Figma frame"
|
|
1682
|
+
|
|
1683
|
+
**[PAUSE]**
|
|
1684
|
+
|
|
1685
|
+
**Text to read:**
|
|
1686
|
+
|
|
1687
|
+
"Вот что извлечено:
|
|
1688
|
+
- Colors: цвета в hex и rgba
|
|
1689
|
+
- Fonts: шрифт, размер, вес
|
|
1690
|
+
- Dimensions: ширина и высота
|
|
1691
|
+
- Spacing: padding и margins
|
|
1692
|
+
|
|
1693
|
+
Это точные значения из Figma.
|
|
1694
|
+
|
|
1695
|
+
Используйте для:
|
|
1696
|
+
- Создания CSS переменных
|
|
1697
|
+
- Генерации design tokens
|
|
1698
|
+
- Проверки соответствия реализации дизайну"
|
|
1699
|
+
|
|
1700
|
+
---
|
|
1701
|
+
|
|
1702
|
+
### [4:30-6:00] Tool: compareFigmaToElement ⭐
|
|
1703
|
+
|
|
1704
|
+
**Text to read:**
|
|
1705
|
+
|
|
1706
|
+
"Теперь КЛЮЧЕВОЙ инструмент группы - compareFigmaToElement.
|
|
1707
|
+
|
|
1708
|
+
Это pixel-perfect сравнение дизайна Figma с реализацией в браузере.
|
|
1709
|
+
|
|
1710
|
+
У нас открыта реализованная страница с кнопкой. Давайте сравним её с дизайном."
|
|
1711
|
+
|
|
1712
|
+
**[ACTION: Open implemented page]**
|
|
1713
|
+
|
|
1714
|
+
**Text to read:**
|
|
1715
|
+
|
|
1716
|
+
"AI, compare Figma frame ABC123 slash node-id with element '.hero-button'"
|
|
1717
|
+
|
|
1718
|
+
**[PAUSE while comparing]**
|
|
1719
|
+
|
|
1720
|
+
**Text to read:**
|
|
1721
|
+
|
|
1722
|
+
"Вот результат сравнения:
|
|
1723
|
+
- Diff процент: насколько различаются изображения
|
|
1724
|
+
- Diff изображение: наложение с подсветкой различий
|
|
1725
|
+
- Threshold: порог различия. По умолчанию ноль точка ноль пять, то есть пять процентов
|
|
1726
|
+
|
|
1727
|
+
Если diff меньше threshold - считается идентичным.
|
|
1728
|
+
|
|
1729
|
+
В нашем случае есть различия. Видите красные области? Это pixel differences."
|
|
1730
|
+
|
|
1731
|
+
**[ACTION: Point out differences on screen]**
|
|
1732
|
+
|
|
1733
|
+
**Text to read:**
|
|
1734
|
+
|
|
1735
|
+
"Здесь padding отличается. Здесь цвет чуть-чуть другой.
|
|
1736
|
+
|
|
1737
|
+
Параметры:
|
|
1738
|
+
- fileKey, nodeId: Figma идентификаторы
|
|
1739
|
+
- selector: CSS селектор элемента в браузере
|
|
1740
|
+
- threshold: порог. От нуля до единицы. По умолчанию ноль точка ноль пять
|
|
1741
|
+
- figmaScale: масштаб Figma экспорта
|
|
1742
|
+
- figmaToken: опциональный токен
|
|
1743
|
+
|
|
1744
|
+
Это незаменимо для:
|
|
1745
|
+
- Design QA
|
|
1746
|
+
- Pixel-perfect реализации
|
|
1747
|
+
- Regression testing дизайна"
|
|
1748
|
+
|
|
1749
|
+
---
|
|
1750
|
+
|
|
1751
|
+
### [6:00-7:00] Tool: getFigmaComponents
|
|
1752
|
+
|
|
1753
|
+
**Text to read:**
|
|
1754
|
+
|
|
1755
|
+
"Инструмент getFigmaComponents извлекает все компоненты из Figma файла.
|
|
1756
|
+
|
|
1757
|
+
Это для работы с Design System.
|
|
1758
|
+
|
|
1759
|
+
Давайте получим компоненты."
|
|
1760
|
+
|
|
1761
|
+
**[ACTION: Get components]**
|
|
1762
|
+
|
|
1763
|
+
**Text to read:**
|
|
1764
|
+
|
|
1765
|
+
"AI, get all components from Figma file"
|
|
1766
|
+
|
|
1767
|
+
**[PAUSE]**
|
|
1768
|
+
|
|
1769
|
+
**Text to read:**
|
|
1770
|
+
|
|
1771
|
+
"Список всех компонентов:
|
|
1772
|
+
- Name: название
|
|
1773
|
+
- NodeId: идентификатор
|
|
1774
|
+
- Description: описание, если есть
|
|
1775
|
+
|
|
1776
|
+
Это каталог Design System.
|
|
1777
|
+
|
|
1778
|
+
Можно использовать для:
|
|
1779
|
+
- Документации компонентов
|
|
1780
|
+
- Генерации component library
|
|
1781
|
+
- Инвентаризации дизайна"
|
|
1782
|
+
|
|
1783
|
+
---
|
|
1784
|
+
|
|
1785
|
+
### [7:00-8:00] Tool: getFigmaStyles
|
|
1786
|
+
|
|
1787
|
+
**Text to read:**
|
|
1788
|
+
|
|
1789
|
+
"Инструмент getFigmaStyles извлекает все стили из Figma.
|
|
1790
|
+
|
|
1791
|
+
Стили - это глобальные дизайн-токены: цвета, типографика, эффекты, сетки.
|
|
1792
|
+
|
|
1793
|
+
Давайте получим их."
|
|
1794
|
+
|
|
1795
|
+
**[ACTION: Get styles]**
|
|
1796
|
+
|
|
1797
|
+
**Text to read:**
|
|
1798
|
+
|
|
1799
|
+
"AI, get all styles from Figma file"
|
|
1800
|
+
|
|
1801
|
+
**[PAUSE]**
|
|
1802
|
+
|
|
1803
|
+
**Text to read:**
|
|
1804
|
+
|
|
1805
|
+
"Вот все стили файла:
|
|
1806
|
+
- Color styles: палитра цветов
|
|
1807
|
+
- Text styles: типографические стили
|
|
1808
|
+
- Effect styles: тени, blur
|
|
1809
|
+
- Grid styles: сетки для layout
|
|
1810
|
+
|
|
1811
|
+
Каждый стиль с названием и значениями.
|
|
1812
|
+
|
|
1813
|
+
Используйте для:
|
|
1814
|
+
- Генерации CSS variables
|
|
1815
|
+
- Создания design tokens JSON
|
|
1816
|
+
- Синхронизации дизайна и кода"
|
|
1817
|
+
|
|
1818
|
+
---
|
|
1819
|
+
|
|
1820
|
+
### [8:00-9:00] Tool: getFigmaColorPalette
|
|
1821
|
+
|
|
1822
|
+
**Text to read:**
|
|
1823
|
+
|
|
1824
|
+
"Инструмент getFigmaColorPalette извлекает уникальную цветовую палитру файла.
|
|
1825
|
+
|
|
1826
|
+
В отличие от getFigmaStyles, который возвращает именованные стили, colorPalette возвращает ВСЕ уникальные цвета.
|
|
1827
|
+
|
|
1828
|
+
Давайте получим палитру."
|
|
1829
|
+
|
|
1830
|
+
**[ACTION: Get color palette]**
|
|
1831
|
+
|
|
1832
|
+
**Text to read:**
|
|
1833
|
+
|
|
1834
|
+
"AI, get color palette from Figma file"
|
|
1835
|
+
|
|
1836
|
+
**[PAUSE]**
|
|
1837
|
+
|
|
1838
|
+
**Text to read:**
|
|
1839
|
+
|
|
1840
|
+
"Список всех уникальных цветов:
|
|
1841
|
+
- Hex код
|
|
1842
|
+
- RGBA значения
|
|
1843
|
+
- Usage count: сколько раз используется
|
|
1844
|
+
|
|
1845
|
+
Цвета отсортированы по частоте использования.
|
|
1846
|
+
|
|
1847
|
+
Полезно для:
|
|
1848
|
+
- Документации цветовой схемы
|
|
1849
|
+
- Оптимизации палитры
|
|
1850
|
+
- Поиска несогласованности в цветах"
|
|
1851
|
+
|
|
1852
|
+
---
|
|
1853
|
+
|
|
1854
|
+
### [9:00-10:00] Summary and Workflow
|
|
1855
|
+
|
|
1856
|
+
**Text to read:**
|
|
1857
|
+
|
|
1858
|
+
"Итак, группа Figma:
|
|
1859
|
+
- Девять инструментов для дизайн-валидации
|
|
1860
|
+
- Требуется FIGMA_TOKEN в env
|
|
1861
|
+
|
|
1862
|
+
Конфигурация: ENABLED_TOOLS равно core comma figma
|
|
1863
|
+
|
|
1864
|
+
Основной use case - compareFigmaToElement для pixel-perfect валидации.
|
|
1865
|
+
|
|
1866
|
+
Рекомендуемый workflow:
|
|
1867
|
+
1. listFigmaPages - изучить структуру файла
|
|
1868
|
+
2. searchFigmaFrames - найти нужный фрейм по названию
|
|
1869
|
+
3. compareFigmaToElement - сравнить с реализацией
|
|
1870
|
+
4. Если есть различия - getFigmaSpecs для точных значений
|
|
1871
|
+
|
|
1872
|
+
Дополнительно:
|
|
1873
|
+
- getFigmaComponents - для документации Design System
|
|
1874
|
+
- getFigmaStyles - для design tokens
|
|
1875
|
+
- getFigmaColorPalette - для анализа цветов
|
|
1876
|
+
|
|
1877
|
+
Это мощная интеграция дизайна и разработки."
|
|
1878
|
+
|
|
1879
|
+
---
|
|
1880
|
+
|
|
1881
|
+
### [10:00-10:30] Series Conclusion
|
|
1882
|
+
|
|
1883
|
+
**Text to read:**
|
|
1884
|
+
|
|
1885
|
+
"Мы разобрали все семь групп инструментов ChromeTools MCP.
|
|
1886
|
+
|
|
1887
|
+
Напомню экономию токенов:
|
|
1888
|
+
- Все 43 инструмента: ~28,000 токенов
|
|
1889
|
+
- Базовая конфигурация (core, interaction, inspection): ~8,000 токенов - экономия 71%
|
|
1890
|
+
- С AI (core, interaction, advanced): ~11,000 токенов - экономия 61%
|
|
1891
|
+
|
|
1892
|
+
Выбирайте группы под ваш use case.
|
|
1893
|
+
|
|
1894
|
+
Документация: ссылка в описании
|
|
1895
|
+
Установка: npx chrometools-mcp@latest
|
|
1896
|
+
GitHub: github.com/docentovich/chrometools-mcp
|
|
1897
|
+
|
|
1898
|
+
Спасибо за просмотр серии!"
|
|
1899
|
+
|
|
1900
|
+
---
|
|
1901
|
+
|
|
1902
|
+
## Bonus Video: Configuration Comparison (3-4 minutes)
|
|
1903
|
+
|
|
1904
|
+
### Opening
|
|
1905
|
+
|
|
1906
|
+
**Text to read:**
|
|
1907
|
+
|
|
1908
|
+
"Привет! В этом бонусном видео мы сравним разные конфигурации и поможем вам выбрать подходящую.
|
|
1909
|
+
|
|
1910
|
+
Давайте рассмотрим таблицу экономии токенов."
|
|
1911
|
+
|
|
1912
|
+
**[ACTION: Show comparison table on screen]**
|
|
1913
|
+
|
|
1914
|
+
---
|
|
1915
|
+
|
|
1916
|
+
### Configuration Comparison
|
|
1917
|
+
|
|
1918
|
+
**Text to read:**
|
|
1919
|
+
|
|
1920
|
+
"Конфигурация 'Все группы':
|
|
1921
|
+
- Семь групп, сорок три инструмента
|
|
1922
|
+
- Примерно двадцать восемь тысяч токенов
|
|
1923
|
+
- Это четырнадцать процентов контекста
|
|
1924
|
+
- Экономия: ноль процентов - это baseline
|
|
1925
|
+
|
|
1926
|
+
Конфигурация 'Базовая':
|
|
1927
|
+
- core, interaction, inspection
|
|
1928
|
+
- Двенадцать инструментов
|
|
1929
|
+
- Примерно восемь тысяч токенов
|
|
1930
|
+
- Экономия: семьдесят один процент
|
|
1931
|
+
|
|
1932
|
+
Конфигурация 'С AI':
|
|
1933
|
+
- core, interaction, advanced
|
|
1934
|
+
- Шестнадцать инструментов
|
|
1935
|
+
- Примерно одиннадцать тысяч токенов
|
|
1936
|
+
- Экономия: шестьдесят один процент
|
|
1937
|
+
|
|
1938
|
+
Конфигурация 'С отладкой':
|
|
1939
|
+
- core, interaction, inspection, debug
|
|
1940
|
+
- Шестнадцать инструментов
|
|
1941
|
+
- Примерно одиннадцать тысяч токенов
|
|
1942
|
+
- Экономия: шестьдесят один процент
|
|
1943
|
+
|
|
1944
|
+
Конфигурация 'Только Figma':
|
|
1945
|
+
- core, figma
|
|
1946
|
+
- Одиннадцать инструментов
|
|
1947
|
+
- Примерно семь с половиной тысяч токенов
|
|
1948
|
+
- Экономия: семьдесят три процента
|
|
1949
|
+
|
|
1950
|
+
Конфигурация 'Полная автоматизация':
|
|
1951
|
+
- core, interaction, inspection, debug, advanced, recorder
|
|
1952
|
+
- Тридцать четыре инструмента
|
|
1953
|
+
- Примерно двадцать четыре тысячи токенов
|
|
1954
|
+
- Экономия: четырнадцать процентов"
|
|
1955
|
+
|
|
1956
|
+
---
|
|
1957
|
+
|
|
1958
|
+
### Recommendations
|
|
1959
|
+
|
|
1960
|
+
**Text to read:**
|
|
1961
|
+
|
|
1962
|
+
"Рекомендации по выбору:
|
|
1963
|
+
|
|
1964
|
+
Вы новичок в ChromeTools? Начните с базовой: core comma interaction comma inspection.
|
|
1965
|
+
Это покрывает девяносто процентов задач автоматизации.
|
|
1966
|
+
|
|
1967
|
+
Вы опытный пользователь и хотите AI-powered инструменты? Используйте: core comma interaction comma advanced.
|
|
1968
|
+
Получите analyzePage и smartFindElement.
|
|
1969
|
+
|
|
1970
|
+
Вы занимаетесь тестированием? Полная автоматизация: core comma interaction comma inspection comma debug comma recorder.
|
|
1971
|
+
Все для записи, отладки и генерации тестов.
|
|
1972
|
+
|
|
1973
|
+
Вы дизайнер или занимаетесь дизайн-валидацией? Только Figma: core comma figma.
|
|
1974
|
+
Минимум инструментов, максимум фокуса.
|
|
1975
|
+
|
|
1976
|
+
Не уверены? Начните с базовой. Добавляйте группы по мере необходимости."
|
|
1977
|
+
|
|
1978
|
+
---
|
|
1979
|
+
|
|
1980
|
+
### Practical Example
|
|
1981
|
+
|
|
1982
|
+
**Text to read:**
|
|
1983
|
+
|
|
1984
|
+
"Практический пример.
|
|
1985
|
+
|
|
1986
|
+
Представим: у вас бюджет сто тысяч токенов на задачу.
|
|
1987
|
+
|
|
1988
|
+
С полным набором (28k токенов на инструменты):
|
|
1989
|
+
- Остается семьдесят две тысячи токенов для работы
|
|
1990
|
+
|
|
1991
|
+
С базовой конфигурацией (8k токенов):
|
|
1992
|
+
- Остается девяносто две тысячи токенов для работы
|
|
1993
|
+
|
|
1994
|
+
Разница: двадцать тысяч токенов.
|
|
1995
|
+
|
|
1996
|
+
Это может быть:
|
|
1997
|
+
- Десять дополнительных скриншотов
|
|
1998
|
+
- Двадцать дополнительных запросов к AI
|
|
1999
|
+
- Анализ десяти дополнительных файлов
|
|
2000
|
+
|
|
2001
|
+
Выбирайте конфигурацию осознанно."
|
|
2002
|
+
|
|
2003
|
+
---
|
|
2004
|
+
|
|
2005
|
+
### Summary
|
|
2006
|
+
|
|
2007
|
+
**Text to read:**
|
|
2008
|
+
|
|
2009
|
+
"Итоги:
|
|
2010
|
+
- Экономия токенов - главная причина фильтрации
|
|
2011
|
+
- Начните с базовой конфигурации
|
|
2012
|
+
- Добавляйте группы по необходимости
|
|
2013
|
+
- Не включайте все группы, если не используете
|
|
2014
|
+
|
|
2015
|
+
Установка:
|
|
2016
|
+
npx chrometools-mcp@latest
|
|
2017
|
+
|
|
2018
|
+
Конфигурация в:
|
|
2019
|
+
~/.claude.json для Claude Code
|
|
2020
|
+
~/.claude/mcp_config.json для Claude Desktop
|
|
2021
|
+
|
|
2022
|
+
Добавьте поле env с ENABLED_TOOLS.
|
|
2023
|
+
|
|
2024
|
+
Пример:
|
|
2025
|
+
{
|
|
2026
|
+
\"env\": {
|
|
2027
|
+
\"ENABLED_TOOLS\": \"core,interaction,inspection\"
|
|
2028
|
+
}
|
|
2029
|
+
}
|
|
2030
|
+
|
|
2031
|
+
Документация: ссылка в описании
|
|
2032
|
+
GitHub: github.com/docentovich/chrometools-mcp
|
|
2033
|
+
|
|
2034
|
+
Спасибо за просмотр!"
|
|
2035
|
+
|
|
2036
|
+
---
|
|
2037
|
+
|
|
2038
|
+
## General Tips for All Videos
|
|
2039
|
+
|
|
2040
|
+
### Pacing and Delivery
|
|
2041
|
+
|
|
2042
|
+
**Slow down at:**
|
|
2043
|
+
- Technical terms (e.g., "персистентная сессия", "box model", "pixel-perfect")
|
|
2044
|
+
- Numbers and statistics (e.g., "экономия семьдесят один процент")
|
|
2045
|
+
- Code examples and parameters
|
|
2046
|
+
- URLs and file paths
|
|
2047
|
+
|
|
2048
|
+
**Pause after:**
|
|
2049
|
+
- Asking AI to do something (wait for response)
|
|
2050
|
+
- Demonstrating action in browser (let viewer see result)
|
|
2051
|
+
- Showing code or configuration (let viewer read)
|
|
2052
|
+
|
|
2053
|
+
**Emphasize:**
|
|
2054
|
+
- Key benefits (e.g., "экономия токенов")
|
|
2055
|
+
- Important warnings (e.g., "ВАЖНО", "ТОЛЬКО когда")
|
|
2056
|
+
- Best practices (e.g., "используйте analyzePage вместо screenshot")
|
|
2057
|
+
|
|
2058
|
+
### Common Phrases
|
|
2059
|
+
|
|
2060
|
+
When transitioning between tools:
|
|
2061
|
+
- "Следующий инструмент..."
|
|
2062
|
+
- "Теперь давайте посмотрим..."
|
|
2063
|
+
- "Перейдем к..."
|
|
2064
|
+
|
|
2065
|
+
When showing parameters:
|
|
2066
|
+
- "Параметры:"
|
|
2067
|
+
- "По умолчанию..."
|
|
2068
|
+
- "Можно указать..."
|
|
2069
|
+
|
|
2070
|
+
When demonstrating:
|
|
2071
|
+
- "Давайте попробуем..."
|
|
2072
|
+
- "Как видите..."
|
|
2073
|
+
- "Обратите внимание..."
|
|
2074
|
+
|
|
2075
|
+
When summarizing:
|
|
2076
|
+
- "Итак..."
|
|
2077
|
+
- "Ключевые моменты:"
|
|
2078
|
+
- "Запомните..."
|
|
2079
|
+
|
|
2080
|
+
### Visual Cues to Add
|
|
2081
|
+
|
|
2082
|
+
Throughout videos, add on-screen text for:
|
|
2083
|
+
- Tool names when first mentioned
|
|
2084
|
+
- Parameter names and values
|
|
2085
|
+
- Token usage numbers
|
|
2086
|
+
- File paths
|
|
2087
|
+
- URLs
|
|
2088
|
+
- Key concepts
|
|
2089
|
+
|
|
2090
|
+
Use highlighting for:
|
|
2091
|
+
- Important warnings
|
|
2092
|
+
- Best practices
|
|
2093
|
+
- Token savings
|
|
2094
|
+
- Configuration examples
|
|
2095
|
+
|
|
2096
|
+
### End Screen Elements
|
|
2097
|
+
|
|
2098
|
+
Every video should end with:
|
|
2099
|
+
1. Summary slide with key points
|
|
2100
|
+
2. Configuration example
|
|
2101
|
+
3. Token savings percentage
|
|
2102
|
+
4. Links:
|
|
2103
|
+
- Documentation
|
|
2104
|
+
- GitHub repository
|
|
2105
|
+
- npm package
|
|
2106
|
+
5. Next video teaser (except last one)
|
|
2107
|
+
6. Subscribe/like reminder
|
|
2108
|
+
|
|
2109
|
+
---
|
|
2110
|
+
|
|
2111
|
+
**End of Scripts**
|
|
2112
|
+
|
|
2113
|
+
Total estimated recording time: ~50-60 minutes of content across 7 videos
|
|
2114
|
+
Recommended upload schedule: One video every 2-3 days for better engagement
|
|
2115
|
+
|
|
2116
|
+
Good luck with your recordings!
|