Довідник

Як зробити сайт готовим для агентів

«Готовий для агентів» означає три різні речі для трьох різних типів AI-агентів — і вони накладаються. Ось як саме ми зробили цей валідатор готовим для агентів, із кодом, який ми впровадили, щоб ви могли скопіювати цей підхід.

Існують три незалежні рівні. Впровадьте будь-який із них окремо; разом вони охоплюють краулер, що читає ваш сайт, агента, який керує вашим UI у браузері, та іншого агента, що викликає вас через мережу.

Рівень 1 — llms.txt: контекст для краулерів

Базовий рівень. Простий текстовий файл llms.txt у кореневому каталозі повідомляє AI-краулеру, що являє собою ваш сайт і які сторінки важливі, у порядку пріоритету. Він зчитується під час завантаження — без JavaScript, без протоколу. Почніть звідси: як його створити.

Рівень 2 — WebMCP: інструменти для агентів у браузері

WebMCP дозволяє сторінці надавати AI-агенту, що працює всередині браузера, виклики до інструментів, щоб агент виконував типізовану дію замість того, щоб вгадувати вашу форму. Є два способи, і ми використовуємо обидва.

Декларативний — анотуйте реальну форму, і браузер синтезує з неї інструмент:

<form toolname="open_llms_txt_report"
      tooldescription="Validate a site's llms.txt and open its report.">
  <input name="url" toolparamdescription="Domain or URL to validate">
</form>

Імперативний — зареєструйте інструмент у JavaScript, який повертає структуровані дані безпосередньо:

navigator.modelContext?.registerTool({
  name: "validate_llms_txt",
  description: "Validate a website's llms.txt; returns a 0-100 score and findings.",
  inputSchema: { type: "object", properties: { url: { type: "string" } }, required: ["url"] },
  execute: (input) => fetch("/api/validate?url=" + encodeURIComponent(input.url))
    .then(r => r.json())
    .then(data => ({ content: [{ type: "text", text: JSON.stringify(data) }] }))
});

Захистіть імперативний виклик умовою if (navigator.modelContext), щоб він не виконував жодних дій там, де WebMCP відсутній. Наразі це пробний запуск Chrome origin trial із обмеженим охопленням — сприймайте це як сигнал на майбутнє, а не як трафік.

Рівень 3 — A2A: агент, доступний для виклику іншими агентами

Протокол Agent2Agent (A2A) дозволяє іншим агентам виявляти та викликати ваш сервіс. Ви публікуєте картку агента та підтримуєте її JSON-RPC-ендпоінтом:

// GET /.well-known/agent-card.json
{
  "name": "llms.txt Validator",
  "url": "https://llms-txt-validator.dev/a2a",
  "skills": [{ "id": "validate_llms_txt", "name": "Validate llms.txt" }]
}

url має вказувати на робочий ендпоінт, що підтримує A2A — ми реалізуємо синхронний метод message/send, обгортаючи ту саму логіку валідації як навичку. Картка — це контракт, а не мета-тег.

Єдине правило: не публікуйте сигнал, якого не можете підтримати

Спокусливо додати порожню картку агента або підроблені анотації форми, щоб перевірка стала зеленою. Не робіть цього. Агент, який завантажує вашу картку та викликає неробочий ендпоінт — або запускає інструмент, який нічого не робить — втрачає до вас довіру. Кожен сигнал тут має резолвитися до чогось реального. Саме тому цей валідатор позначає сигнал WebMCP або A2A як «присутній» лише тоді, коли за ним стоїть робоча реалізація.

Як перевірити кожен рівень

Продовжити читання

Перевірте свій llms.txt →