Агент тестирования

Проверка интерфейса, которая учится один раз: снимите страницу и объясните проблему словами — дальше агент сам проверяет это правилами и сравнивает каждую сборку с одобренным эталоном

Агент тестирования — программа для проверки вашего сайта, приложения или внутренней системы, которую вы запускаете на своём сервере. Вы открываете страницу в Chrome, снимаете экран и объясняете словами, что не так, — ИИ превращает замечание в правило: маленькую проверку, которая дальше выполняется прямо в браузере. Правило работает быстро, ничего не стоит и находит ту же проблему на всех похожих страницах, поэтому чем дольше продукт работает, тем меньше в нём ИИ и тем дешевле обходятся проверки. Из правил и записанных действий собираются тесты, тесты запускаются по расписанию — выполнять их умеет встроенный исполнитель прямо в контейнере, поэтому отдельный компьютер с Chrome не обязателен, — каждый шаг оставляет снимок-доказательство, одинаковые ошибки склеиваются в одну проблему, а сломавшиеся проверки агент чинит сам. А ещё продукт сравнивает каждую сборку с одобренным эталоном: сдвиг вёрстки, поменявшийся цвет или пропавший блок видно на картинке, хотя описать их правилом трудно. Отличия рассматривает человек — ИИ лишь подсказывает. А если чего-то не хватает, продукт можно расширить своими скриптами на Python: файл в папке проекта становится шагом теста, движком сравнения или обработчиком завершённого прогона — пересобирать продукт для этого не нужно. А найти нужное — правило, экран, проблему или файл знаний — помогает поиск по всему приложению: начните печатать в поле боковой панели.

Экраны одной кнопкой: снимок видимой области, адрес, заголовок и структура страницы сохраняются сразу

Замечания словами прямо на странице: «кнопка не видна на тёмном фоне» — и всё, без формулировок для машины

ИИ превращает одно замечание в проверку целого класса проблем, а не одной страницы

Проверка — обычный код на JavaScript, работает в браузере без обращения к модели: быстро и бесплатно

Навык test-manager идёт в комплекте и сам подсказывает агенту, как писать проверки

Копилка знаний проекта: агент дописывает в неё, что уже понял про ваш интерфейс

Типы экранов: вход, оплата, кабинет — проверки привязываются к нужным страницам

Съёмка для визуального теста: снимок всей страницы, стабилизация от мерцания и маски на динамические области

Эталоны под контролем: у каждого хранится история версий и видно, кто и когда одобрил

Скрипты расширяют продукт без пересборки: файл Python в папке проекта становится шагом теста, движком сравнения или обработчиком прогона

Прогоны из коробки: встроенный исполнитель в контейнере выполняет тесты без отдельного Chrome и дополнения

Действия: записал один раз вход и переходы — и повторяем на любом запуске

Действия словами: опишите, что нужно сделать, — агент напишет скрипт, вы прогоните и подтвердите

Тесты: последовательность шагов «открыть страницу → выполнить действия → проверить правила»

Расписание: проверка каждый день или в выбранные дни недели и часы

Доказательства: снимок экрана у каждого шага, включая неудачные

Проблемы: одинаковые ошибки склеиваются в одну строку с числом повторов

Сводка «что требует внимания»: значки по проектам и переход в нужную вкладку

Сборки вместо одиночных запусков: у каждой есть ветка, режим и состояние ревью

Разбор проблем сборки: одинаковые падения собираются в группы с понятным пояснением

Тест целиком из скриптов идёт без браузера: проверки адресов API, баз данных и файлов работают по расписанию как обычные тесты

Поиск по всему приложению: проекты, экраны, правила, тесты, проблемы, скрипты, знания и файлы документации — в одном поле ⌘K

Автоисправление: сломался скрипт проверки — агент починит сам и пометит «нужна проверка»

Внешний доступ: список проблем и смена статуса по ключу — для агента-программиста

Чат с ИИ-агентом внутри продукта: разборы, правки, вопросы по интерфейсу

Живая страница: модель может посмотреть и потрогать вашу открытую вкладку Chrome

Всё на вашем сервере: один контейнер, данные и снимки остаются у вас

Проекты — папки под контролем git: проверки, действия и тесты — обычные файлы

Лицензия нужна только для отправки сообщения агенту: проверки и запуски работают всегда

Вердикт всегда за человеком: ИИ только подсказывает, а одобряет или отклоняет ревьюер

Покрытие и карта приложения: видно, что уже защищено проверками, а что ещё нет

Каждый запуск скрипта оставляет запись в журнале: точка подключения, источник, статус и хвост ошибки при сбое

В простое тихо: фоновые задачи просыпаются по событию, а не по таймеру, а через 15 минут простоя память возвращается серверу

Автоисправление включается галочкой в тесте: агент чинит проверки не всегда, а когда это разрешено — по умолчанию выключено

Экраны: как страница выглядит сейчас

Галерея экранов проекта «Турист — Витрина»: 39 снимков страниц витрины со снимком, адресом и типом экрана

Экран — это снимок видимой области плюс адрес, заголовок и структура страницы

Снимок делается одной кнопкой из панели дополнения и сохраняется сразу — без промежуточного «Проверить и сохранить»

У каждого снимка видно, откуда он пришёл: снят вручную, сделан действием или получен в запуске

Картинка хранится в базе вместе с проектом — файлы не разбрасываются по диску

Замечания словами — и проверка готова

Страница экрана проекта: снимок карточки товара, адрес и размер вьюпорта, панель «Комментарии», тип экрана и проверки, которые к этому экрану применяются

Замечание пишется обычным текстом: «кнопка не видна на тёмном фоне» — без формулировок для машины

Нажмите «Вызвать агента» — в чат подставится отчёт: замечания, снимок, знания и правила проекта

В ответ приходит готовое правило — маленькая проверка, которую можно тут же прогнать

Замечание не разбирается само: разбор запускает человек, чтобы ничего не тратилось впустую

Проверки без ИИ: быстро, бесплатно, каждый день

Вкладка «Правила» проекта: 10 правил с описанием, областью действия, отметкой «проверено» и итогом последней проверки

Правило — небольшой скрипт, который браузер выполняет сам, без обращения к модели

Проверка укладывается в пару секунд, поэтому её можно гонять при каждом выпуске

Чем больше правил накоплено, тем меньше остаётся работы для ИИ — проверки дешевеют

Правило видит контраст, размеры, количество и текст элементов, а не только «элемент есть»

Действия: вход, оплата, кабинет — записал и повторяй

Вкладка «Действия» проекта: 4 записанных действия — заполнить форму без отправки, открыть карточку товара, открыть путеводитель eSIM, перейти в категорию

Включите запись в панели, работайте как обычно, остановите — шаги покажутся списком

Пароли в файлы не попадают: вместо значения подставляется переменная из настроек проекта

Действие можно описать словами — агент напишет скрипт, вы прогоните и подтвердите

Шаги выполняются по одной строке, без циклов и условий, — так переходы между страницами переживаются надёжно

Тесты: шаги и порядок

Вкладка «Тесты» проекта: 4 теста со схемой шагов, числом шагов, длительностью и итогом последнего прогона

Тест — последовательность: открыть страницу, выполнить действие, проверить правила

Шаги собираются в интерфейсе, каждый проверяется при сохранении: сослаться на удалённое действие не получится

У шага есть «продолжать при ошибке» — для тех мест, где одна ошибка не должна останавливать всё

Тест живёт обычным файлом в папке проекта и попадает в вашу историю правок

У шага может быть объявление съёмки — тогда запуск теста превращается в сборку со сравнением с эталонами

Запуски: очередь, исполнитель, доказательства

Страница сборки №16: состояние «Запустить: ошибка», исполнитель, блок проверок с итогом «1 из 10», вкладки «Обзор», «Триаж» и «Отчёт», история сборок и шаги запуска

Запуск попадает в очередь на сервере, и его забирает первый свободный исполнитель: встроенный (безоконный, в контейнере) или Chrome с дополнением в режиме исполнителя — так называется настройка, при которой проверки выполняет именно этот браузер

Очередь не ждёт: оба исполнителя стоят у её двери, и запущенный прогон забирается за миллисекунды, а не через несколько секунд

Гонки не бывает: прогон забирает кто-то один. У встроенного исполнителя и Chrome — разные семейства эталонов, поэтому движок выбирают на проект; первая сборка на другом движке придёт как новые эталоны

Каждый шаг оставляет снимок экрана и результаты проверок — видно, где именно всё сломалось

Вердикт понятный: «пройдено», «проблемы» или «ошибка» — и в каждом случае есть чем подтвердить

Если исполнитель пропал, запуск через полчаса помечается ошибкой и сам не продолжается

Запуск с визуальными проверками называется сборкой: у неё есть ветка, режим и состояние ревью

Расписание: проверка каждое утро

Диалог редактирования расписания: выбор дней недели от понедельника до воскресенья, времена запуска в UTC, включение расписания и выбор теста

Недельная сетка: выберите дни недели и время, когда тест должен запускаться сам

Время считается по часовому поясу проекта — тому, который вы указали при создании

Пропущенные моменты не догоняются: выключенный компьютер — это пропущенный запуск, следующий сработает в своё время

Для расписания нужен постоянно включённый компьютер с Chrome — надёжность проверок равна надёжности этой машины

Проблемы: одна проблема — одна строка

Карточка проблемы: правило и число повторов, блок «Улики (последний сбой)» с текстом ошибки и адресом элемента, кнопки «Открыть сборку» и «Открыть скрин»

Проблемы появляются только из запусков: ручные проверки их не создают, это доказательства, а не проблемы

Одинаковые ошибки склеиваются по отпечатку — проект, правило и обезличенный текст ошибки

В карточке видно последний снимок, элемент, из какого запуска пришло и сколько раз повторялось

Закрытая проблема открывается сама только при повторе той же ошибки, а «игнорируется» — уже никогда

Автоисправление: агент чинит свои проверки

«Журнал ИИ» проекта: два вызова агента, 7 тысяч токенов, бюджеты агента, разбивка по типам analyze_comment и generate_action и таблица вызовов

Если сломалась проверка, а не сайт, агент чинит её сам: получает код, текст ошибки и снимок

Исправление применяется сразу и помечается «исправлено агентом — нужна проверка»

Расход под контролем: одно исправление на цель в час и не больше пяти на проект в сутки

Ответ «это не поломка проверки, страница правда изменилась» — законный результат, тогда ничего не меняется

Автоисправление — это галочка в самом тесте, и по умолчанию она выключена: агент чинит проверки только там, где вы разрешили; поручить ему починку вручную можно в любой момент

Сводка «что требует внимания»

Главная страница со сводкой «Требует внимания»: открытые проблемы и неудачные прогоны, карточка проекта со значками, счётчиками и датой следующего прогона

Сверху общие цифры: открытые проблемы, проблемные запуски за неделю, неподтверждённые правила

Отдельно — исправления без проверки и разборы замечаний, которые не удались или ждут очереди

По каждому проекту только непустые значки; клик открывает проект сразу на нужной вкладке

Цифры обновляются сами, без перезагрузки страницы — и видно, когда следующий запуск по расписанию

Дополнение Chrome: панель прямо на странице

Диалог «Дополнение Chrome»: установка в один клик, три шага установки через chrome://extensions и ручная привязка с ключом и адресом сервера

Дополнение ставится в один клик из «Настройки → Тестирование UI»: сервер записывает папку с готовой привязкой

Панель — перетаскиваемое окно 380×560 на странице: снять экран, проверить правила, записать действие

Проект определяется по адресу страницы — выбирать вручную ничего не нужно

Честно: дополнение приватное, в каталоге Chrome его нет; после обновления сервера папку перезаписывают и нажимают «Обновить» в браузере

Дополнение больше не обязательно для прогонов: их выполняет встроенный исполнитель. Chrome с дополнением нужен для ручной съёмки экранов, записей и прогонов в живом окне

Закрытая панель выгружается из памяти: пока она свёрнута, страница ничего не держит, а отметка связи идёт только при открытой панели

Проблемы уходят агенту-программисту

Раздел «API-токены» в настройках визуального тестирования: токенами управляет владелец, токен авторизует /api/ext для CI, viz CLI и MCP-клиентов

По ключу доступны список и карточка проблемы, включая ссылку на снимок, и смена статуса

Агент-программист читает проблемы, правит код сайта и закрывает их сам

Без ключа адреса отвечают «не настроено», с неправильным ключом — отказ; вход по паролю здесь не действует

Ключ — как пароль: выдавайте его только тем, кому доступ действительно нужен

Чат с ИИ-агентом и живая страница

Панель чата с ИИ-агентом: список задач агента, вызовы инструментов с длительностью и расходом, поле ввода с моделью и навыком test-manager

Чат подключается внешним Pastukhov Agent: адрес и ключ указываются при установке

В чате агент разбирает замечания, пишет действия и чинит сломанные проверки

Модель может посмотреть вашу открытую вкладку — через адрес живой страницы или общий язык браузерных команд

Свои вкладки она закрыть не может: закрываются только те, которые открыл сам агент

Проекты и файлы: всё под git, всё на своём сервере

Вкладка «Настройки» проекта: имя, базовый адрес, описание, часовой пояс и модель агента — поля файла настроек проекта

Проект — папка на диске: настройки, правила, действия, тесты и замечания обычными файлами

Всё это под git: историю правок видно, любую версию можно вернуть, папку можно перенести на другой сервер

Правки в историю вносит человек — сервер сам этого не делает, поэтому вы решаете, что и когда зафиксировано

Ежедневный поток (снимки, запуски, проблемы, расписания) живёт в базе: его слишком много для файлов

Визуальные проверки: сравнение с эталоном

Мастер «Настройка визуального тестирования» (шаг 1 из 8): шаги от подключения агента до вердикта со статусами «выполнено», «в работе» и «обязательный»

Шаг теста заранее объявляет, что снимать: часть экрана, всю страницу, компонент или элемент

Отдельно снимаются структура страницы, стили, дерево доступности и порядок адресов — они ловят то, чего не видно на картинке

Одинаковые снимки сравниваются по отпечатку и не стоят ничего: ИИ подключается только к непонятным случаям

Итог сборки понятен: визуально успех, требуется ревью, провал или нет данных

Проверка сборок и просмотр различий

Вкладка «Проверка» проекта: 13 сборок и фильтры по ветке, режиму, состоянию ревью и статусу

Сборка — запуск с визуальными проверками: у неё есть ветка, режим и состояние ревью

Режимы: полная (все проверки), умная (только затронутые), сравнительная (две среды рядом)

Отличия сравнивают четырьмя способами: рядом, наложением, слайдером и переключателем

У каждого шага остаётся снимок и результаты проверок — видно, где именно сломалось

Ревью: вердикт всегда за человеком

Доска проверки сборки №16: счётчик «разрешено 0 из 0», сообщение «Все изменения разобраны» и возврат к сборке

Доска проверки собирает всё, что ждёт решения, и задачи на исправление

Одобрить, запросить правки, отклонить или поставить задачу — решает человек; ИИ только подсказывает

Массово принимаются только те отличия, безопасность которых доказали строгие правила

Роли и отметка дизайн-ревьюера: кто смотрит, кто решает и кто одобряет общие компоненты

Журнал аудита помнит, кто, что и на каком основании одобрил

Разбор сборок и починка тестов

Вкладка «Триаж» сборки №16: сортировка кластеров, кнопка «Пересобрать кластеры», сухая статистика вместо ИИ-пояснения и бюджеты ИИ

Одинаковые падения собираются в группы по причине — не нужно разбирать одно и то же десять раз

У каждой группы есть пояснение словами; если ИИ недоступен, продукт честно показывает сухую статистику

Подсказка ИИ и вердикт человека хранятся отдельно и никогда не подменяют друг друга

Починка теста проходит через человека: предложение, одобрение, проверочная сборка, откат точного прежнего файла

Покрытие, карта и агентские кампании

Вкладка «Агенты»: кампания агента покрытия с целями, два завершённых агента с расходом токенов, активности, эскалации и бюджеты кампании

Инвентарь «поверхность × состояние»: у каждой строки видно, покрыта ли она тестами и кто ответственный

Решение «сознательно не покрыто» требует причины и даты пересмотра — пустых клеток не бывает

Обход строит карту приложения прямо из браузера; маршруты можно раскрасить по фактическому покрытию

Агентская кампания ведёт от разведки до итога и останавливается, пока человек не одобрит план

CI, отчёт и общие ссылки

Вкладка «Отчёт» сборки №16: печать и выгрузка в HTML, JSON и JUnit, шапка отчёта с итогом проверок и блок «Границы этого отчёта»

Статус сборки читается из конвейера: ожидание, провал или успех — и всегда из живых данных

Честно: сборка без проверок — это провал, а не автоматическое прохождение

Инструмент viz даёт те же факты из командной строки, а коды выхода — это и есть договор с конвейером

Отчёт печатается вместе с блоком границ — что визуальная проверка ловит, а что нет

Общие ссылки показывают сборку без входа: только чтение, с водяным знаком и сроком действия

Эксплуатация и здоровье системы

Страница «Операции»: счётчики исполнителей, очереди и квот, таблица исполнителей с версией дополнения, версией Chrome и системой

Реестр исполнителей: онлайн, деградация или офлайн и пометка, кто это — встроенный исполнитель или Chrome с дополнением; любого можно поставить на паузу

Очередь показывает, что ждёт: сборки, задачи ИИ, кампании починки, обходы, доставки уведомлений

Лестница бюджетов 50/80/100 предупреждает и блокирует, но никогда не выставляет счёт

Проверки здоровья объясняют, что не работает и что исправить; при сбое отключаются только массовые действия

Перенос данных двигает настройки и эталоны между серверами, но никогда не переносит учётные данные

В простое ничего не тратится: фоновые задачи просыпаются по событию, а через 15 минут простоя память возвращается серверу; снимок памяти и принудительное освобождение — на странице операций

Настройки визуального тестирования

Раздел «Визуальное тестирование» в настройках проекта: список разделов настроек и раздел «Съёмка» с типом съёмки, вьюпортами, масками и игнорируемыми селекторами

Восемь пресетов приложений: один выбор вместо тридцати полей

Пороги и слои проверок: визуальный, текст, сеть, консоль, доступность, дизайн-токены, производительность, адреса

Стабилизация съёмки включена по умолчанию: заморозка времени, отключение анимаций, ожидание шрифтов и тишины сети

Ветки, автоодобрение безопасных отличий и бюджеты ИИ настраиваются под проект

Чек-лист настройки ведёт от подключения агента до первого вердикта и честно показывает, что уже сделано

Скрипты: продукт растёт без пересборки

Вкладка «Скрипты» проекта: скриптов пока нет — видны предупреждение о неподготовленном виртуальном окружении и пояснение, чем может быть Python-скрипт

Скрипт — обычный файл с кодом на Python в папке проекта: рядом с правилами и действиями, хранится вместе с проектом

Правку видно сразу: следующий запуск берёт новую редакцию файла — перезапускать продукт не нужно

Пригодится там, где браузера мало: проверить адрес API, посчитать строки в базе, заглянуть в файл, отправить уведомление по итогам прогона

Скрипт можно подключить шагом теста, движком сравнения снимков, классификатором отличий или обработчиком завершённого прогона

У каждой попытки одна запись в журнале: что запускалось, чем закончилось и сколько длилось; выключатель проекта и общий выключатель останавливают всё разом

Встроенный исполнитель: проверки работают сразу

Тесты выполняются без отдельного компьютера

Раньше проверки по расписанию требовали компьютера с Chrome и нашим дополнением — сервер сам страницы не открывал. Теперь встроенный исполнитель живёт прямо в контейнере: это безоконный браузер, который выполняет тесты сразу после установки. Отдельная машина с Chrome больше не нужна, и расписание работает, даже когда никто не сидит за компьютером.

В простое продукт ничего не держит запущенным: исполнитель просыпается, когда в очереди появляется прогон, и закрывается, когда работа закончена. Дополнение Chrome при этом никуда не пропадает — оно остаётся для ручной съёмки экранов, записей действий, замечаний на живой странице и прогонов, которые нужно видеть глазами.

Прогоны и снимки визуальных сборок выполняются без отдельного компьютера и без дополнения

В простое исполнителя нет вовсе: он запускается к прогону и завершается, когда работа закончена

Только безоконный: посмотреть прогон глазами нельзя — для этого оставляйте Chrome с дополнением

Снимки образуют отдельное семейство эталонов — движок выбирают на проект и не смешивают

Виден в списке исполнителей отдельной строкой, с паузой и возобновлением, как у Chrome

Поиск по всему приложению

Одно поле вместо долгих переходов

Когда проектов и правил становится много, искать нужное руками долго. Поиск живёт в боковой панели и ищет по всему приложению: правила и действия, тесты, экраны и замечания, проблемы, скрипты, знания проекта и файлы документации. Достаточно начать печатать — находки появляются по мере ввода, сгруппированные по видам, а совпадения по заголовку идут первыми.

Строка результата ведёт туда, где живёт находка: правило откроет нужную вкладку, проблема — свою карточку, а файл знаний покажется прямо в окне, без перехода. Секреты и учётные данные в поиск не попадают — искать по ним нельзя даже случайно.

Одно поле в боковой панели ищет по всему приложению — проектам, экранам, правилам, тестам, проблемам, скриптам и файлам

Горячие клавиши: ⌘K (или Ctrl+K) открывает поиск, Enter — переход к первой находке, Esc — очистка

Находки сгруппированы по видам, совпадения по заголовку — первыми

Файлы знаний и документации открываются на просмотр прямо над находками, без перехода

Русские и английские слова ищутся одинаково; секреты и учётные данные не индексируются

Бесплатный период

Чтобы спокойно оценить продукт, на 30 дней выдаётся бесплатный пробный ключ. Это лицензия отдельного типа (Trial) — она даёт все возможности, включая чат с ИИ-агентом. Без лицензии продукт тоже полностью работоспособен: проекты, экраны, правила, действия, тесты, запуски, расписание, проблемы, автоисправление и сводка работают всегда, а лицензия открывает именно отправку сообщения агенту. Пробный ключ выдаётся по запросу — напишите мне в Telegram с указанием имени и email.

Персональная лицензия

Все возможности Агента тестирования без ограничений для частных лиц: неограниченное количество установок на любых ваших компьютерах и серверах. 19 700 ₽ единоразовый платёж за пожизненную лицензию. 12 месяцев бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена соответствующая лицензия на Pastukhov Agent, который является частью продукта. Лицензия нужна только для отправки сообщения агенту; снимки, проверки, действия, тесты, запуски, расписание, проблемы и сводка работают и без неё.

Корпоративная лицензия

Все возможности Агента тестирования без ограничений для всех сотрудников компании или команды, включая внешних подрядчиков. 49 700 ₽ единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена соответствующая лицензия на Pastukhov Agent, который является частью продукта. Лицензия нужна только для отправки сообщения агенту; всё остальное работает и без неё.

Сервисная лицензия

Неограниченное количество экземпляров Агента тестирования под вашим доменом + полный исходный код с правом изменять его как угодно, обновлять оформление или брендинг в соответствии с вашей компанией или доменом, тесно интегрировать с вашей инфраструктурой. Может использоваться любым посетителем вашего домена как часть ваших сервисов. 97 000 ₽ единоразовый платёж за пожизненную лицензию с 12 месяцами бесплатных обновлений, затем (по желанию) скидка 50% на следующие 12 месяцев обновлений от начальной цены покупки. Лицензирование работает офлайн, ваш ключ действительно пожизненный. В лицензию уже включена сервисная лицензия на Pastukhov Agent, который является частью продукта. Исходный код Agent доступен только при покупке сервисной лицензии на сам Pastukhov Agent. Для бесшовных обновлений рекомендую изменять только брендинг и интеграцию, чтобы минимизировать усилия при слиянии с новыми функциями и исправлениями.

Бесплатные лицензии

В некоторых случаях я готов подарить бесплатную лицензию:

  • если вы нашли баг или уязвимость безопасности в любом из моих продуктов (у меня буквально нет бюджета на платные баг-баунти, к сожалению);
  • если вы предложили дельную идею по улучшению моих продуктов (кодить не обязательно, достаточно полезной идеи — вы получите лицензию, если я включу её в план разработки);
  • если вы активный контрибьютор open-source проектов (я люблю open-source, просто у меня нет времени поддерживать свои продукты как open-source);
  • если вы ведёте популярный блог, Telegram-канал или YouTube-канал о программировании, AI, маркетинге, бизнесе, финансах или IT в целом (упоминание или реклама не требуются, это полностью на ваше усмотрение);
  • если вы активный партнёр-аффилиат (продажи не обязательны, но у вас должен быть хотя бы какой-то контент, посвящённый моим продуктам).

Если что-то из перечисленного про вас, просто напишите мне в Telegram. Укажите имя и email, и я сгенерирую ваш персональный пожизненный лицензионный ключ.