OpenCLI — превращает любой сайт в CLI и даёт AI-агентам доступ к вашему залогиненному Chrome
📂 Исходный код на GitHubOpenCLI превращает любой веб-сайт в CLI и позволяет AI-агентам работать через ваш залогиненный Chrome. Три сценария: готовые адаптеры для 100+ сайтов, скилл opencli-browser для управления браузером агентом, и opencli-adapter-author для написания новых адаптеров. Работает как CLI-хаб для локальных инструментов (gh, docker, discord, Notion) и адаптеров для Electron-приложений (Cursor, Codex, ChatGPT). Apache-2.0.
OpenCLI — это инструмент, который превращает любой веб-сайт в CLI и даёт AI-агентам возможность работать через ваш залогиненный Chrome. Вместо того чтобы держать для каждого сайта отдельный парсер или MCP-сервер, OpenCLI предлагает единую поверхность: браузер как исполнитель, CLI как интерфейс, а агент или человек как управляющий. Проект с открытым исходным кодом (Apache-2.0), ~29k звёзд на GitHub, устанавливается через npm или в виде десктоп-приложения OpenCLIApp.
Три сценария автоматизации
OpenCLI закрывает три разных задачи одним инструментом:
- Готовые адаптеры для сайтов вроде Bilibili, Zhihu, Xiaohongshu, Reddit, HackerNews, Twitter/X и ещё более чем 100 площадок. Каждый сайт — это набор детерминированных команд, которые можно вызывать из терминала или скрипта.
- Работа AI-агентов с любым сайтом — через скилл
opencli-browserагент (Claude Code, Cursor и другие) получает примитивы для навигации, кликов, заполнения форм и извлечения данных через ваш залогиненный браузер. - Написание новых адаптеров — скилл
opencli-adapter-authorведёт от первой разведки сайта до рабочего адаптера и его верификации.
Дополнительно OpenCLI работает как CLI-хаб для локальных инструментов (gh, docker, longbridge, tg, discord, wx, ntn для Notion и других, которые можно зарегистрировать самостоятельно) и имеет адаптеры для десктоп-приложений на Electron: Cursor, Trae CN, Codex, Antigravity, ChatGPT и Trae SOLO.
Установка и настройка
Для десктопного использования рекомендуется OpenCLIApp — он поставляет рантайм, держит установленной команду opencli и даёт системный трей с настройками, диагностикой, обновлениями и поддержанием браузерной сессии. Для CLI-only / CI / серверов — глобальная установка через npm (требуется Node.js >= 20.18.1):
node --version
npm install -g @jackwener/opencli
Подключение к Chrome идёт через лёгкое расширение Browser Bridge плюс локальный демон, который стартует автоматически. Расширение ставится из Chrome Web Store или вручную из архива со страницы Releases. После установки стоит проверить связку:
opencli doctor
Если используется несколько профилей Chrome, каждому профилю можно дать имя и переключаться между ними:
opencli profile list
opencli profile rename <contextId> work
opencli profile use work
opencli --profile work browser main state
Первые команды выглядят так:
opencli list
opencli hackernews top --limit 5
opencli bilibili hot --limit 5
Для людей: надёжный CLI вместо живой сессии
opencli list показывает все зарегистрированные команды, opencli <site> <command> запускает встроенный или сгенерированный адаптер, opencli external register mycli подключает любой локальный CLI к той же поверхности обнаружения, а opencli doctor помогает диагностировать проблемы с подключением к браузеру.
Для AI-агентов: работа через залогиненный браузер
Команды opencli browser рассчитаны в первую очередь на AI-агентов, а не на ручной запуск. Скиллы устанавливаются одной командой:
npx skills add jackwener/opencli
Или по отдельности:
npx skills add jackwener/opencli --skill opencli-adapter-author
npx skills add jackwener/opencli --skill opencli-autofix
npx skills add jackwener/opencli --skill opencli-browser
npx skills add jackwener/opencli --skill opencli-browser-sitemap
npx skills add jackwener/opencli --skill opencli-sitemap-author
npx skills add jackwener/opencli --skill opencli-usage
После установки скилла opencli-browser агент может:
- Навигировать по любому URL в вашем залогиненном браузере
- Читать содержимое страницы через структурированные DOM-слепки (не скриншоты)
- Взаимодействовать — кликать кнопки, заполнять формы, выбирать опции, нажимать клавиши
- Извлекать данные со страницы или перехватывать ответы сетевых API
- Ожидать появления элементов, текста или перехода страницы
Доступны команды: open, state, click, type, fill, select, keys, wait, get, find, extract, frames, screenshot, scroll, back, eval, network, tab list, tab new, tab select, tab close, init, verify и close.
Команды opencli browser требуют позиционный аргумент <session> сразу после browser. Например, opencli browser work open <url> и opencli browser work tab new [url] возвращают target ID. Через opencli browser work tab list можно посмотреть target ID вкладок, а --tab <targetId> направляет команду в конкретную вкладку.
Какой скилл когда использовать
| Скилл | Когда использовать | Пример промпта |
|---|---|---|
| opencli-adapter-author | Написать переиспользуемый адаптер для нового сайта или добавить команду к существующему | «Write an adapter for douyin trending» |
| opencli-autofix | Починить сломанный адаптер, когда встроенная команда падает | «opencli zhihu hot is returning empty — fix it» |
| opencli-browser | Управлять живой страницей Chrome ad-hoc — навигация, формы, клики, извлечение | «Help me check my Xiaohongshu notifications» |
| opencli-browser-sitemap | Использовать контекст sitemap сайта при работе в браузере | «Use the sitemap to navigate this website without blind clicking» |
| opencli-sitemap-author | Создавать или обновлять знания о sitemap для браузерных агентов | «Record the stable workflow you just discovered for this site» |
| opencli-usage | Быстрая справка по командам и сайтам | «What commands does OpenCLI have for Twitter?» |
Написание нового адаптера
Когда нужного сайта нет в списке, скилл opencli-adapter-author проводит весь путь end-to-end:
- Разведка сайта и выбор паттерна — SPA / SSR / JSONP / Token / Streaming.
- Поиск правильного эндпоинта — через сетевую инспекцию, стартовое состояние, поиск в бандле, трассировку токена или interceptor fallback.
- Выбор авторизации —
PUBLIC/COOKIE/INTERCEPT/UI/LOCAL. - Декодирование полей ответа и проектирование колонок вывода.
opencli browser recon analyze <url>→opencli browser recon init <site>/<name>→ написание адаптера →opencli browser recon verify <site>/<name>.
Знания о сайте сохраняются в ~/.opencli/sites/<site>/, так что следующий адаптер для того же сайта стартует уже с контекстом.
Расширение OpenCLI
| Задача | Рекомендуемый путь |
|---|---|
| Держать личные команды в своём git-репозитории | opencli plugin create + opencli plugin install file://... |
| Быстро набросать приватный локальный адаптер | opencli browser init <site>/<command> в ~/.opencli/clis/ |
| Изменить официальный адаптер локально | opencli adapter eject <site> + opencli adapter reset <site> |
| Опубликовать или поставить сторонние команды | opencli plugin install github:user/repo |
| Обернуть существующий локальный бинарник | opencli external register <name> |
Форматы вывода и коды выхода
Все встроенные команды поддерживают --format / -f со значениями table (по умолчанию), json, yaml, md и csv:
opencli bilibili hot -f json # Pipe to jq or LLMs
opencli bilibili hot -f csv # Spreadsheet-friendly
opencli bilibili hot -v # Verbose: show pipeline debug steps
Коды выхода следуют Unix sysexits.h, так что CI и скрипты могут ветвиться по типу ошибки: 0 — успех, 66 — пустой результат, 69 — Browser Bridge недоступен, 75 — таймаут, 77 — требуется авторизация, 78 — ошибка конфигурации, 130 — Ctrl-C.
Скачивание медиа
OpenCLI умеет скачивать изображения, видео и статьи с поддерживаемых платформ: Xiaohongshu (изображения и видео), RedNote, Bilibili (видео, требуется yt-dlp), Twitter (медиа пользователя или отдельного твита), Douban (постеры), Pixiv (оригинальное качество), 1688, Xiaoyuzhou (аудио и транскрипты), Zhihu (статьи и ответы в Markdown) и Weixin (статьи в Markdown). Для видео сначала ставится yt-dlp:
brew install yt-dlp
opencli xiaohongshu download "https://www.xiaohongshu.com/search_result/<id>?xsec_token=..." --output ./xhs
opencli twitter download elonmusk --limit 20 --output ./twitter
Конфигурация
| Переменная | Значение по умолчанию | Описание |
|---|---|---|
OPENCLI_PROFILE |
— | Алиас/contextId профиля Browser Bridge при нескольких подключённых профилях Chrome |
OPENCLI_WINDOW |
по умолчанию команды | foreground или background для размещения окна |
OPENCLI_SITE_SESSION |
по умолчанию адаптера | ephemeral или persistent для сессии сайта |
OPENCLI_BROWSER_CONNECT_TIMEOUT |
45 |
Секунды ожидания подключения к браузеру |
OPENCLI_BROWSER_COMMAND_TIMEOUT |
60 |
Секунды ожидания одной команды браузера |
OPENCLI_CDP_ENDPOINT |
— | CDP-эндпоинт для удалённого браузера или Electron-приложений |
OPENCLI_VERBOSE |
false |
Подробное логирование (работает и флаг -v) |
Плагины
Сторонние адаптеры подключаются через opencli plugin install github:user/repo, а управляются командами plugin list / plugin update --all / plugin uninstall. Среди примеров — opencli-plugin-github-trending (тренды GitHub), opencli-plugin-hot-digest (агрегатор трендов нескольких платформ), opencli-plugin-juejin (горячие статьи Juejin), opencli-plugin-vk (лента, стена и поиск VK) и opencli-plugin-x-article-publisher (публикация Markdown с локальными картинками как X long-form статей).
Диагностика
Типичные проблемы: «Extension not connected» — расширение Browser Bridge не установлено или отключено в chrome://extensions; «attach failed» — мешает другое расширение, стоит временно отключить их; пустые данные или «Unauthorized» — истёкла сессия логина, надо заново войти на сайт; ошибки Node API — нужен Node.js >= 20.18.1. Состояние демона проверяется через curl localhost:19825/status, логи — через curl localhost:19825/logs.
Источник: https://github.com/jackwener/OpenCLI