brightdata-gatekeeper
brightdata-gatekeeper
Проверка на основе доказательств для самовосстановления Bright Data Scraper Studio.
Bright Data чинит сломанные скрейперы. Но он не решает, правильно ли исправление. Это решает Gatekeeper: он обнаруживает поломку, создаёт бриф на восстановление, затем сверяет предложенное исправление со строками, записанными, пока скрейпер был здоров, и отклоняет его, если они расходятся.
Видео выход | |
Цель мутаций | |
Пошаговое руководство | |
Демо-видео | video/out/gatekeeper-demo.mp4 — 83 с, сгенерировано из HTML, а не запись с экрана |
Какой пробел это закрывает
В документации самого CLI Bright Data это сказано прямым текстом:
Детектор — это вы. CLI никогда не решает сам, что скрейпер сломан, — вы смотрите на результат и решаете. […] Расплывчатые промпты дают расплывчатые исправления.
scraper heal переписывает шаблон коллектора и останавливается у гейта подтверждения. approve фиксирует результат. --auto-approve пропускает вопрос. Ответ никто не проверяет.
Что есть у Bright Data | Что добавляет Gatekeeper |
| Детектор — обнаруживает поломки, которые всё ещё возвращают HTTP 200 |
| Генератор брифа — типизированный список полей с диагнозом |
гейт, | Ревьюер — сверяет превью с эталонными строками |
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 mcppreview_heal_brief показывает промпт, который будет отправлен, не расходуя задачу AI-Flow.
Правила цикла
Никогда не доверяй коду возврата. Запуск с кодом 200 и пустыми полями — именно тот сбой, который важен.
Никогда не лечи блок.
blockedиdead_page— тревожный сигнал, но не изменение вёрстки.Никогда не подтверждай без доказательств. Нет эталонных строк — значит воздержаться, а не подтвердить.
Проверяй после фиксации. Превью — обещание, боевой запуск — доказательство.
Коллекторы
Четыре управляемых коллектора, три из них — реальные сайты, ни один не входит в 1743 готовых скрейпера Bright Data — gatekeeper coverage <url> проверяет это, а не просто утверждает.
Коллектор | Цель | Строкец | Примечание |
| recalls.rycerz.es | 8 | Ломается по требованию; пять макетов, одинаковые значения |
| biorxiv.org | 950 | Стабильная личность, поэтому эталонные строки к переживают изменения |
| news.ycombinator.com | 59 | Вложенный output, уплощённый через |
| 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.
This server cannot be installed
Maintenance
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
- FlicenseAqualityDmaintenanceAutomated Playwright E2E test repair powered by a self-improving, governed MCP server that runs failing tests, collects failure artifacts, reasons about root causes, validates and applies fixes, and re-runs to verify.12
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to autonomously debug UIs by delegating high-level stories to a small agent that drives browsers or desktop apps and reports structured pass/fail findings with evidence.1492MIT
- AlicenseAqualityCmaintenanceEnables agents to resolve data incidents by preparing remediation, inspecting verification results, and staging for human approval, while integrating with DataHub for evidence.5Apache 2.0
- FlicenseNot gradedqualityDmaintenanceDetects brittle Playwright selectors and provides healing suggestions, action receipts, human approvals, and failure exports.
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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