Skip to main content
Glama
rycerzes

brightdata-gatekeeper

by rycerzes

brightdata-gatekeeper

Проверка на основе доказательств для самовосстановления Bright Data Scraper Studio.

Bright Data чинит сломанные скрейперы. Но он не решает, правильно ли исправление. Это решает Gatekeeper: он обнаруживает поломку, создаёт бриф на восстановление, затем сверяет предложенное исправление со строками, записанными, пока скрейпер был здоров, и отклоняет его, если они расходятся.

Видео выход

https://gatekeeper.rycerz.es

Цель мутаций

https://recalls.rycerz.es

Пошаговое руководство

docs/DEMO.md

Демо-видео

video/out/gatekeeper-demo.mp4 — 83 с, сгенерировано из HTML, а не запись с экрана

Какой пробел это закрывает

В документации самого CLI Bright Data это сказано прямым текстом:

Детектор — это вы. CLI никогда не решает сам, что скрейпер сломан, — вы смотрите на результат и решаете. […] Расплывчатые промпты дают расплывчатые исправления.

scraper heal переписывает шаблон коллектора и останавливается у гейта подтверждения. approve фиксирует результат. --auto-approve пропускает вопрос. Ответ никто не проверяет.

Что есть у Bright Data

Что добавляет Gatekeeper

scraper run

Детектор — обнаруживает поломки, которые всё ещё возвращают HTTP 200

scraper heal "<prompt>"

Генератор брифа — типизированный список полей с диагнозом

гейт, approve, --reject

Ревьюер — сверяет превью с эталонными строками

run → validate → diagnose → brief → heal → verify → approve or reject → re-brief

У этого цикла нет другой точки входа. Python SDK Bright Data охватывает trigger/poll/fetch для Scraper Studio, но не heal или approve; его MCP-сервер с 69 инструментами вообще не содержит инструментов Scraper Studio. Gatekeeper поставляет MCP-сервер, поэтому агент может управлять циклом.

Related MCP server: UI Debugger MCP

Результат, который имеет значение

На живом коллекторе с намеренно сломанной страницей heal от Bright Data восстановил четыре поля корректно и молча уронил пятое в null. units объявлено необязательным, поэтому все проверки схем, типов и диапазонов прошли — ноль выявленных поломок.

--auto-approve would : APPROVE   preview passes every field check
gatekeeper decided   : REJECT    2/2 golden rows disagree
                                 units: expected '118500', preview has 'null'

--auto-approve зафиксировал бы скрейпер, который молча перестал собирать значения units. Причина отклонения попала в следующий бриф, повторная попытка сошлась с эталоном по каждой сравниваемой строке, и исправление было проверено на свежем боевом запуске.

Quick start

uv sync --all-extras
npm install -g @brightdata/cli        # Node >= 20
cp .env.example .env                  # add BRIGHTDATA_API_KEY

gatekeeper doctor                     # check the setup
gatekeeper spec add specs/mutant-recalls.json
gatekeeper status                     # survey every collector
gatekeeper check   <collector_id>     # detect
gatekeeper golden  <collector_id>     # record known-good rows
gatekeeper heal    <collector_id>     # run the loop
gatekeeper history <collector_id>     # why a fix was committed or rejected
gatekeeper serve                      # dashboard on :8000

В роли MCP-сервера, чтобы агент мог вести цикл:

claude mcp add gatekeeper -- gatekeeper mcp

preview_heal_brief показывает промпт, который будет отправлен, не расходуя задачу AI-Flow.

Правила цикла

  • Никогда не доверяй коду возврата. Запуск с кодом 200 и пустыми полями — именно тот сбой, который важен.

  • Никогда не лечи блок. blocked и dead_page — тревожный сигнал, но не изменение вёрстки.

  • Никогда не подтверждай без доказательств. Нет эталонных строк — значит воздержаться, а не подтвердить.

  • Проверяй после фиксации. Превью — обещание, боевой запуск — доказательство.

Коллекторы

Четыре управляемых коллектора, три из них — реальные сайты, ни один не входит в 1743 готовых скрейпера Bright Data — gatekeeper coverage <url> проверяет это, а не просто утверждает.

Коллектор

Цель

Строкец

Примечание

mutant-recalls

recalls.rycerz.es

8

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

arxiv-cs-lg

biorxiv.org

950

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

hn-front-page

news.ycombinator.com

59

Вложенный output, уплощённый через row_path

lobsters

lobste.rs

125

Пришёл уже сломанным: 114 строк, все поля отсутствуют

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

Структура

src/gatekeeper/
  detector/    rules, baselines, engine — decides a scraper broke
  brief/       diagnosis → typed heal prompt
  approver/    judges a preview against golden rows
  brightdata/  bdata CLI wrapper, envelopes, coverage check
  controller   the closed loop
  mcp          agent-callable tools
  api, static  the dashboard
mutant/        the mutation target, deployed as a Worker

Тесты

$ pytest -q
138 passed

Без сети и без кредитов: CLI bdata подменяется заглушкой на границе подпроцесса, а цикл гоняется на скриптовом клиенте, поэтому вся машина состояний — включая сценарий «отклонить и сойтись заново» — проверяется автономном.

Примечания

Развёртывание и публикация панели без учётных данных: docs/DEPLOY.md. Чего живой API научил нас сверх документации: docs/FINDINGS.md.

MIT.

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Browser-backed QA with evidence and fix-ready reports for coding agents.

  • Turn the web into structured, reliable, actionable enterprise data for AI Agents

  • Stealth scraping & search. Bypasses Cloudflare, DataDome & LinkedIn via Cyborg HITL approach.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rycerzes/brightdata-gatekeeper'

If you have feedback or need assistance with the MCP directory API, please join our Discord server