golang

автоматизация браузера и развёртывание функций прямо из терминала

  • среда, 25 февраля 2026 г. в 00:00:14
https://habr.com/ru/articles/1002800/

Notte — платформа для автоматизации браузера. Недавно мы выпустили CLI, который позволяет управлять браузерными сессиями, запускать AI-агентов, извлекать структурированные данные и развёртывать функции автоматизации, всё это прямо из терминала.

В этой статье разберём, что он умеет и как устроен.

Какую проблему мы решали

Большинство рабочих процессов автоматизации браузера начинаются локально. Вы пишете скрипт на Playwright или Puppeteer, он работает на вашей машине, а затем вы тратите время на его переработку под продакшн.

Notte CLI подключается напрямую к облачным браузерным сессиям. Браузер запущен не у вас, он работает у нас. Это означает, что то, что вы делаете в терминале, в точности совпадает с тем, что будет работать в продакшне.

Как работают сессии

Весь CLI построен вокруг сессий. Сессия, это живой экземпляр браузера (headless или headed), запущенный в облаке.

Запустить её можно так:

notte sessions start --headless

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

При запуске сессии поддерживается широкий набор настроек: кастомные viewport'ы, user agent'ы, ротация прокси, решение капч, файловое хранилище, переопределение CDP URL и сохранение профиля браузера.

Видимость

При запуске headless-сессии в выводе появляется viewer URL. Откройте его в браузере, и вы наблюдаете за живой сессией в реальном времени, пока команды выполняются в терминале. Удобно для отладки без переключения в отдельный интерфейс.

По завершении сессии можно экспортировать всё произошедшее в виде Python-кода:

notte sessions workflow-code

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

Взаимодействие со страницей

После запуска сессии можно взаимодействовать со страницами прямо из терминала:

notte page goto "<https://example.com>" notte page observe # возвращает состояние страницы и ID интерактивных элементов notte page click "@B1" # клик по ID элемента notte page fill "@I1" "text" # заполнение поля ввода notte page scrape --instructions "..." # извлечение структурированных данных notte page screenshot

observe особенно полезен — он возвращает текущее состояние страницы вместе с ID элементов, которые можно использовать в последующих командах, без необходимости писать CSS-селекторы или XPath'ы.

AI-агенты

Вместо того чтобы прописывать каждый шаг вручную, можно передать задачу AI-агенту целиком:

notte agents start --task "Go to LinkedIn and extract the last 10 posts from this profile"

Агент работает автономно в рамках активной сессии. Можно проверить его статус, остановить или экспортировать его рабочий процесс в виде кода.

Функции: от терминала до продакшна

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

notte functions create --file workflow.py notte functions run notte functions schedule --cron "0 9 * * *"

Это закрывает разрыв между «тем, что я сделал в терминале» и «тем, что запускается каждое утро в 9:00» — без какой-либо работы с инфраструктурой на вашей стороне.

Работа с AI-ассистентами для написания кода

Если вы используете Claude Code, Cursor, Windsurf или любой другой MCP-совместимый ассистент, CLI можно добавить как skill:

npx skills add nottelabs/notte-cli

Или добавьте следующее в ваш файл AGENTS.md или CLAUDE.md — и ваш coding-агент сможет управлять CLI напрямую:

Use nottefor web automation. Runnotte --help for all commands.

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

Прочие возможности

  • Credential vaults — хранение паролей от сайтов с привязкой к URL, автоматически извлекаемых во время сессий. API-ключи хранятся в системном хранилище ключей (macOS Keychain, GNOME Keyring, KWallet, Windows Credential Manager) и никогда не передаются через командную строку

  • Personas — одноразовые цифровые личности с реальными адресами электронной почты и номерами телефонов, удобны для тестирования процессов регистрации или мультиаккаунтных сценариев

  • Profiles — сохранённое состояние браузера (куки, localStorage), которое можно подключать к сессиям

  • Работа с файлами — загрузка и выгрузка файлов внутри сессий

  • Форматы вывода — по умолчанию удобочитаемые таблицы, output json для скриптинга и пайпинга

Установка

Через Homebrew:

brew install notte

Через Go:

go install github.com/nottelabs/notte-cli/cmd/notte@latest

Или сборка из исходников:

git clone <https://github.com/nottelabs/notte-cli.git> cd notte-cli make build

Вам понадобится API-ключ с console.notte.cc.

Авторизация:

notte auth login

CLI Repo: https://github.com/nottelabs/notte-cli

Notte Repo: https://github.com/nottelabs/notte

Готов ответить на вопросы по реализации или конкретным сценариям использования в комментариях.