
Превратите любое веб-приложение в API. Расширение для Chrome перехватывает трафик браузера, автоматически генерирует схемы и позволяет ИИ воспроизводить API напрямую. Официальный API не требуется.
Превратите любое веб-приложение в API. Не нужен официальный API. Не требуется автоматизация браузера.
Neo — это расширение Chrome, которое пассивно перехватывает все API-вызовы вашего браузера, изучает их шаблоны и позволяет ИИ (или вам) воспроизводить их напрямую.
Сегодня у ИИ-агентов, работающих с веб-приложениями, есть два варианта, и оба плохие:
| Подход | Боль |
|---|---|
| Официальные API | У большинства SaaS его нет, или он раскрывает только 10% функций |
| Автоматизация браузера | Скриншот → OCR → клик. Медленно, хрупко, ломается при каждом изменении UI |
Neo — это третий путь. У каждого веб-приложения уже есть полный внутренний API — фронтенд вызывает его каждый раз, когда вы что-то кликаете. Neo перехватывает эти вызовы и делает их воспроизводимыми.
v2: Теперь с автоматизацией UI. Neo v2 добавляет слой UI на основе дерева доступности — snapshot, click, fill, type, press, hover, scroll, select, screenshot, get, wait. Когда API существует — используйте его напрямую. Когда его нет — Neo может управлять UI через тот же CLI. Один инструмент, оба слоя.
Обычный просмотр → Neo записывает весь API-трафик → Схема генерируется автоматически → ИИ воспроизводит API напрямую
→ Или управляет UI через дерево доступности
Расширение Chrome перехватывает все вызовы fetch() и XMLHttpRequest — URL, заголовки, тела запросов/ответов, время, а также то, какой DOM-элемент инициировал вызов.
Запустите neo-schema на домене, чтобы автоматически сгенерировать карту его API: конечные точки, необходимые заголовки аутентификации, параметры запроса, структура ответа, коды ошибок.
Выполняйте API-вызовы в контексте вкладки браузера через Chrome DevTools Protocol. Куки, CSRF-токены, аутентификация сессии — всё наследуется автоматически. Управление токенами не требуется.
| Браузер | Тип | Лучше всего подходит |
|---|---|---|
| Chrome / Chromium | Полноценный браузер | Захват API + автоматизация UI (по умолчанию) |
| Lightpanda | Безголовый (Zig) | ИИ-агенты, скрапинг — в 11 раз быстрее, в 9 раз меньше памяти |
git clone https://github.com/4ier/neo.git
cd neo && npm install && npm run build
npm link # делает `neo` доступным глобально
Загрузите расширение:
chrome://extensionsextension/dist/# Установка Lightpanda
curl -L -o lightpanda https://github.com/lightpanda-io/browser/releases/download/nightly/lightpanda-x86_64-linux
chmod +x lightpanda && sudo mv lightpanda /usr/local/bin/
# Настройка Neo для использования Lightpanda
# В ~/.neo/config.json:
# { "chromePath": "/usr/local/bin/lightpanda", "browserType": "lightpanda", "cdpPort": 9222 }
neo start # запуск сервера CDP Lightpanda
neo connect # подключение к нему
neo open https://example.com
neo snapshot # полное дерево доступности
Все команды проходят через единый CLI: neo <command>.
Требуется браузер с включённым CDP (Chrome DevTools Protocol).
# --- Подключение и сессии ---
neo connect [port] # Подключение к CDP, сохранение сессии
neo connect --electron <app-name> # Автообнаружение порта CDP Electron-приложения
neo launch <app> [--port N] # Запуск Electron-приложения с включённым CDP
neo discover # Поиск доступных конечных точек CDP на localhost
neo sessions # Список сохранённых сессий
neo tab # Список целей CDP в активной сессии
neo tab <index> | neo tab --url <pattern> # Переключение активной цели вкладки
neo inject [--persist] [--tab pattern] # Внедрение скрипта захвата Neo в цель
# --- Захват и трафик ---
neo status # Обзор захваченных данных
neo capture summary # Краткий обзор
neo capture list github.com --limit 10 # Показывает ID для воспроизведения/детализации
neo capture list --since 1h # Фильтр по времени
neo capture domains
neo capture search "CreateTweet" --method POST
neo capture watch x.com # Просмотр в реальном времени (как tail -f)
neo capture stats x.com # Разбивка по методам/статусам/времени
neo capture export x.com --since 2h > x.json
neo capture export x.com --format har > x.har # HAR 1.2 для Postman/devtools
neo capture import x-captures.json
neo capture prune --older-than 7d
neo capture gc x.com [--dry-run] # Умное удаление дубликатов
# --- Воспроизведение и выполнение API ---
neo replay <capture-id> --tab x.com # Воспроизведение захваченного вызова
neo exec <url> --method POST --body '{...}' --tab example.com --auto-headers
neo api x.com HomeTimeline # Умный вызов (поиск схемы + автоаутентификация)
# --- Схема и анализ ---
neo schema generate x.com # Генерация из захваченных данных
neo schema generate --all # Пакетная обработка всех доменов
neo schema show x.com [--json]
neo schema openapi x.com # Экспорт спецификации OpenAPI 3.0
neo schema diff x.com # Изменения по сравнению с предыдущей версией
neo schema coverage # Домены с/без схем
neo label x.com [--dry-run] # Семантические метки конечных точек
neo flows x.com [--window 5000] # Шаблоны последовательностей API-вызовов
neo deps x.com [--min-confidence 1] # Зависимости данных «ответ→запрос»
neo workflow discover|show|run <name> # Обнаружение и воспроизведение многошаговых рабочих процессов
neo suggest x.com # Анализ возможностей с помощью ИИ
neo export-skill x.com # Генерация SKILL.md, готового для агента
# --- Автоматизация UI (v2) ---
neo snapshot [-i] [-C] [--json] # Дерево доступности с @ref
neo click @ref [--new-tab] # Клик по элементу по @ref
neo fill @ref "text" # Очистить + заполнить поле ввода
neo type @ref "text" # Дописать текст в поле ввода
neo press <key> # Клавиша клавиатуры (поддерживаются Ctrl+a, Enter и т.д.)
neo hover @ref # Наведение на элемент
neo scroll <dir> [px] [--selector css] # Прокрутка по направлению
neo select @ref "value" # Установить значение выпадающего списка
neo screenshot [path] [--full] [--annotate] # Сделать скриншот
neo get text @ref | neo get url | neo get title # Извлечь информацию
neo wait @ref | neo wait --load networkidle | neo wait <ms> # Ожидание элемента/загрузки/времени
# --- Взаимодействие со страницей ---
neo read github.com # Извлечение читаемого текста
neo eval "document.title" --tab github.com # Выполнение JS на странице
neo open https://example.com # Открыть URL
# --- Мок и мост ---
neo mock x.com [--port 8080 --latency 200] # Мок-сервер из схемы
neo bridge [--json] [--interactive] # Поток захвата в реальном времени через WebSocket
# --- Диагностика ---
neo doctor # Проверка Chrome, расширения, схем
neo reload # Перезагрузка расширения из CLI
neo tabs [filter] # Список открытых вкладок Chrome
Neo предназначен не только для Chrome. Любое приложение с поддержкой CDP работает — включая Electron-приложения:
# Запуск VS Code с CDP и подключение
neo launch code --port 9230
neo snapshot # Просмотр дерева доступности VS Code
neo click @14 # Клик по пункту меню
# Или подключение к уже запущенному Electron-приложению
neo connect --electron slack
# Внедрение скрипта захвата Neo в любую цель CDP
neo inject --persist # Сохраняется при навигации по страницам
neo inject --tab slack # Целевая вкладка
Сессии сохраняются автоматически. Переключайтесь между ними с помощью --session:
neo --session vscode snapshot
neo --session chrome api x.com HomeTimeline
Neo v2 добавляет полноценный слой взаимодействия с UI, построенный на дереве доступности — без скриншотов, координат и сопоставления пикселей:
# 1. Сделайте снимок — каждый интерактивный элемент получает @ref
neo snapshot
# @1 button "Sign in"
# @2 textbox "Search"
# @3 link "Pricing"
# 2. Взаимодействуйте по @ref
neo click @1
neo fill @2 "AI agents"
neo press Enter
neo screenshot results.png --full
Это даёт ИИ-агентам быстрый и семантический способ взаимодействия с любым UI. Комбинируйте с захватом API для двухканального подхода: используйте API, когда они существуют, и переключайтесь на UI, когда их нет.
Мост создаёт постоянный WebSocket-канал между расширением и CLI. Расширение автоматически подключается к ws://127.0.0.1:9234 и передаёт каждый захват в реальном времени. В интерактивном режиме вы можете напрямую запрашивать расширение: ping, status, capture.count, capture.list, capture.domains, capture.search, capture.clear.
┌─────────────────────────────────────┐
│ Chrome / Electron App (CDP) │
│ │
│ inject/interceptor.ts │
│ ├─ Monkey-patches fetch & XHR │
│ ├─ Intercepts WebSocket/SSE │
│ ├─ Tracks DOM triggers (click → │
│ │ API correlation) │
│ └─ Records full request/response │
│ │
│ content/index.ts │
│ └─ Bridges page ↔ extension │
│ │
│ background/index.ts │
│ ├─ Persists to IndexedDB (Dexie) │
│ ├─ Per-domain cap (500 entries) │
│ └─ WebSocket Bridge client │
│ │
└──────────────┬──────────────────────┘
│ Chrome DevTools Protocol
┌──────────────┴──────────────────────┐
│ CLI: neo (Node.js) │
│ │
│ Layer 1: API Capture & Replay │
│ ├─ neo capture → traffic management │
│ ├─ neo schema → API discovery │
│ ├─ neo exec → execute in browser │
│ ├─ neo api → smart schema call │
│ ├─ neo replay → re-run captured │
│ └─ neo flows/deps → pattern analysis│
│ │
│ Layer 2: UI Automation (v2) │
│ ├─ neo snapshot → a11y tree + @refs │
│ ├─ neo click/fill/type/press/hover │
│ ├─ neo scroll/select/screenshot │
│ └─ neo get/wait │
│ │
│ Session Management │
│ ├─ neo connect/launch/discover │
│ ├─ neo tab → target switching │
│ └─ neo inject → script injection │
│ │
└──────────────┬──────────────────────┘
│
┌──────────────┴──────────────────────┐
│ AI Agent (OpenClaw / any LLM) │
│ ├─ API-first: schema → exec/api │
│ ├─ UI fallback: snapshot → click │
│ └─ Dual-channel automation │
└──────────────────────────────────────┘
# 1. Просматривайте X обычным образом — Neo захватывает GraphQL-мутации
neo schema show api.x.com
# 2. Найдите конечную точку CreateTweet
neo capture search "CreateTweet" --method POST
# 3. Воспроизведите с оригинальной аутентификацией (куки наследуются автоматически)
neo replay abc123 --tab x.com
# 4. Или создайте новый вызов с автоматически определёнными заголовками аутентификации
neo exec "https://x.com/i/api/graphql/.../CreateTweet" \
--method POST --auto-headers \
--body '{"variables":{"tweet_text":"Hello from Neo!"},...}'
Отслеживание триггеров в Neo связывает взаимодействия с UI с API-вызовами:
neo schema show github.com
# Вывод включает:
# POST /repos/:owner/:repo/star (3x, 280ms)
# ← click button.js-social-form "Star" (3x)
neo capture watch api.openai.com
# 14:23:01 POST 200 /v1/chat/completions (1230ms)
# 14:23:05 SSE_MSG 200 /v1/chat/completions (0ms) [sse]
neo-capture-v01)Перехватчик автоматически игнорирует шум:
Neo работает полностью локально — никаких внешних серверов, телеметрии, данные не покидают вашу машину.
Что захватывает Neo: Каждый вызов fetch/XHR/WebSocket, который делает ваш браузер на любом сайте. Это мощно, но по своей сути инвазивно.
Маскировка заголовков аутентификации (v1.1.0+): Значения заголовков аутентификации (Bearer-токены, CSRF-токены, куки, идентификаторы сессий) маскируются во время захвата до сохранения. IndexedDB хранит только имена заголовков, а не их значения. При выполнении API-вызова с --auto-headers Neo получает живые заголовки аутентификации из браузера в реальном времени через CDP — сохранённые учётные данные никогда не воспроизводятся.
Что вам следует знать:
Рекомендации:
neo capture domainsneo capture clear banksite.comNeo — это инструмент разработчика, который расширяет возможности за счёт увеличения поверхности конфиденциальности. Используйте его осознанно.
neo CLI с подкомандамиneo replay <id> повторно выполняет захваченные вызовыneo api с поиском схемы + автоаутентификациейneo flows обнаруживает последовательности API-вызововMIT
| Аспект | Детали |
|---|
| Область захвата | <all_urls> — Neo видит трафик на любом сайте, включая банковские, почтовые и медицинские порталы |
| Скрипт содержимого | Запускается в мире MAIN (разделяет JS-контекст со страницами) для перехвата fetch/XHR |
| Порт CDP | CLI требует Chrome на порту 9222 — любой локальный процесс может подключиться к этому порту |
| Тела ответов | Сохраняются в IndexedDB (усечены до 100 КБ) — могут содержать личные данные из API-ответов |
| Файлы схем | Хранят только структуру конечных точек (пути, имена заголовков, формы ответов) — никаких учётных данных или пользовательских данных |
| Экспорт | neo capture export по умолчанию маскирует аутентификацию; --include-auth требует явного согласия |
neo deps находит передачу данных «ответ→запрос»neo doctor для проверки настройкиneo export-skill генерирует SKILL.mdneo mock создаёт локальный HTTP-сервер из схемы--all)neo label)neo workflow)neo connect, neo sessions, флаг --sessionneo launch, neo connect --electronneo tab список/переключение целейneo inject с --persist и --tabsnapshot, click, fill, type, press, hover, scroll, select, screenshot, get, wait