Skip to main content
Glama
site-motion-capture

site-motion-capture

by SankofaForge

site-motion-capture

Этот MCP-сервер записывает движение веб-сайта в реальном времени на арендованной Vast.ai GPU VM. Он использует существующий рекордер Playwright на этой VM и копирует WebM-видео и jank-отчёт на локальную машину.

Используйте design-inspiration, чтобы найти сайты-кандидаты. Применяйте этот сервер после того, как сайт выбран и нужно исследовать его поведение в реальном времени.

Инструменты

  • capture_site_motion записывает поведение при загрузке страницы, прокрутке и, опционально, при наведении или клике. Для десктопных записей по умолчанию используется разрешение 1920×1080. Он возвращает локальные и удалённые пути артефактов. MCP-сервер поддерживает WebM-энкодер Playwright на целевом битрейте 8 Мбит/с, чтобы текст и мелкие детали интерфейса оставались различимыми. По умолчанию он отклоняет согласия на необязательные cookie и фиксирует это действие в jank-отчёте.

  • check_capture_gpu проверяет и nvidia-smi, и WebGL-рендерер Chromium.

Related MCP server: EasyPlaywrightMCP

Политика согласия и взаимодействий

По умолчанию в записях используется consent_mode: "reject". Доступны следующие публичные опции:

  • reject отклоняет необязательные cookie и фиксирует это действие.

  • accept принимает все cookie только при явном указании consent_accept_approved: true. В противном случае он не выполняется (fail closed).

  • none не трогает страницу и не пытается обработать согласия.

  • granular последовательно применяет селекторы настроек, необязательных cookie и сохранения.

Рекордер использует незаписываемый preflight-контекст, а затем переносит состояние его хранилища в записываемый контекст. Он проверяет оба контекста, включая дочерние фреймы. Для reject, accept и granular результат получает статус verified, только когда после требуемого действия диалог согласия исчез. В этом случае dismissed становится true. Если безопасный элемент управления не найден, исход — no-safe-action. Если диалог остался или слепая зона не позволяет провести проверку, результат не получает статус verified. В режиме none отсутствие диалога означает verified: true, dismissed: false и исход no-consent-surface. Наличие диалога означает verified: false, dismissed: false и исход consent-surface-present. Если страница блокирует проверку согласия или прокрутки, рекордер ограничивает эту проверку и сообщает consent-check-timeout с записью о слепой зоне; видео всё равно может быть опубликовано, но его нельзя считать проверенным по согласию. Отчёт хранит режим, действие, селектор, фазу, фрейм, причину, количество попыток, бюджет и количество кликов.

Для нестандартного элемента управления передайте consent_selector. Это должен быть явный, стабильный CSS-селектор целевого элемента управления. То же правило действует для hover_selector и click_selector. Селекторы не пересекают границы iframe. Автоматическое обнаружение может пропустить элементы в shadow-DOM и элементы, скрытые за закрытыми shadow root.

consent_wait_ms задаёт, сколько рекордер ждёт диалог. Установите consent_preflight: false, чтобы пропустить незаписываемый проход. Инструкции по локализации должны быть написаны на английском языке и включать явный селектор для каждого локализованного элемента управления. Не полагайтесь только на переведённый видимый текст.

Ограничивайте каждую запись 8-секундным бюджетом взаимодействий. Проход обнаружения по умолчанию использует не более шести кликов. Для требуемых взаимодействий за пределами этого прохода добавляйте явные селекторы. Автоматическое обнаружение выполняется по принципу best-effort и не доказывает, что каждое взаимодействие было записано.

Локальный name — это стабильная основа имени файла для скопированных файлов .webm и .jank.json. Это не удалённый ID запуска. При сравнении запусков сохраняйте локальное имя стабильным. Для удалённых логов и очистки используйте удалённый ID запуска. Используйте overwrite: false, когда это доступно, чтобы существующая локальная запись сохранялась. Очистка сообщает один статус для каждого артефакта: removed, missing, skipped или failed. Сбой очистки не означает, что запись не удалась.

Среда выполнения

У сервера нет npm-зависимостей. Лаунчер подгружает ~/.zsh_secrets для получения API-ключа Vast и окружения Vast CLI. API-ключ не фигурирует в конфигурации MCP.

Лаунчер определяет SSH-эндпоинт для инстанса 48790763 с помощью Vast CLI. Переопределите его через VAST_INSTANCE_ID или SITE_MOTION_SSH_URL, если VM для записи изменится.

Удалённый рекордер должен находиться по пути /workspace/site-motion-capture и предоставлять capture.mjs и check-gpu-renderer.mjs.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers