AI-агенти: Markdown, Content Signals, api-catalog
AI-агенти (ChatGPT, Claude, Perplexity та інші) дедалі частіше заходять у магазин самі: шукають товар, звіряють ціну й наявність. Картка «AI / Агенти» системного модуля «Пошукові роботи» віддає їм машинні входи: сторінки в Markdown, ваші умови використання вмісту в robots.txt, повний текст сайту і каталог API.
Доступно з ядра eCMS9 5.0.5-b881 (модуль «Пошукові роботи» 1.1.0). Безкоштовно: модуль входить у ядро. Після оновлення все ввімкнено.
Де знайти
Адмінка → модуль «Пошукові роботи» → картка «AI / Агенти». Налаштування окремі для кожного сайту. Після змін натисніть Зберегти.
Content Signals у robots.txt
Позначка «Content Signals у robots.txt» додає один рядок одразу після
User-agent: *:
User-agent: *
Content-Signal: search=yes, ai-input=yes, ai-train=yes
Для кожного сигналу виберіть так, ні або не заявляти (сигнал не пишеться зовсім):
| Сигнал | Що означає |
|---|---|
search | Пошукова видача з посиланням на сайт |
ai-input | Відповідь AI в реальному часі (пошук для відповіді, RAG) |
ai-train | Навчання або донавчання моделей |
За замовчуванням — «так» для всіх трьох. Щоб ваші тексти не йшли в навчання
моделей, поставте для ai-train «ні». Закритий сайт (опція «Закрити весь сайт
від індексації») лишає одну групу Disallow: / без сигналів.
Також у robots.txt з'являється коментар # llms.txt: https://<сайт>/llms.txt.
Перемикачі
| Перемикач | Що робить |
|---|---|
| Markdown для агентів | Та сама адреса віддає Markdown на Accept: text/markdown; також /<адреса>.md і /index.md для головної. Браузер і пошуковик отримують HTML, як і раніше. |
| Окремий кеш для Markdown (LiteSpeed) | Невеликий блок на початку .htaccess сайту, щоб кеш сторінок LiteSpeed не віддавав агентам збережений HTML. |
| Заголовок Link на головній | Заголовок Link головної (RFC 8288): sitemap, llms.txt, Markdown головної, каталог API. |
| /llms-full.txt | llms.txt разом із повним текстом сторінок (доставка, оплата, гарантія) і описами розділів. |
| /.well-known/api-catalog | Каталог API за RFC 9727 з описом OpenAPI. Працює лише з увімкненим модулем Headless API; інакше адреса відповідає 404. |
Markdown-відповіді
- У Markdown доступні сторінки товарів, категорій, контент-сторінки й головна. Головна містить розділи каталогу й таблицю нових товарів з ціною й наявністю на момент запиту.
- Markdown-відповіді мають
X-Robots-Tag: noindexіLinkна HTML-сторінку якrel="canonical", тож дублями у видачі не стануть. - Кожна відповідь, що залежить від
Accept, маєVary: Accept(наявні значення, як-отAccept-Encoding, зберігаються).
Блок у .htaccess
Блок стоїть між # BEGIN eCMS9 agent-ready і # END eCMS9 agent-ready. Решту
файла модуль не чіпає. Перед першим записом зберігає копію поруч
(.htaccess.bak-<дата>). Якщо вимкнути Markdown для агентів або
Окремий кеш для Markdown, блок зникає, а файл стає байт-у-байт таким, як
був. Немає файла або немає прав на запис — картка показує попередження, нічого
не створюється.
Застосувати блок можна й з консолі:
php spark cms9:robots-sync
MCP-сервер, WebMCP і фід OpenAI
Доступно з ядра eCMS9 5.0.5-b882 (модуль «Пошукові роботи» 1.2.0) і модуля Headless API 2.15.0. Працює, лише коли Headless API встановлено й увімкнено.
| Перемикач | Що робить |
|---|---|
| MCP-сервер | Адреса /api/v1/mcp за протоколом Model Context Protocol. Агент (Claude, ChatGPT, Cursor тощо) підключає магазин як інструмент і сам шукає товари, ціни й наявність. |
| WebMCP на вітрині | Ті самі інструменти для агента, що працює в браузері покупця (navigator.modelContext). У звичайному браузері нічого не завантажується. |
| Фід товарів для OpenAI | /api/v1/feed/openai.jsonl — каталог у форматі специфікації OpenAI для покупок у ChatGPT. |
Інструменти MCP
Лише читання: агент не може додати в кошик, оформити замовлення чи щось змінити.
| Інструмент | Що повертає |
|---|---|
search_products | Пошук товарів: назва, ціна, наявність, посилання (до 20 за раз) |
get_product | Товар за id або адресою (slug): опис, варіанти, фото, доставка |
product_availability | Ціна й залишок варіантів товару зараз |
list_categories | Розділи каталогу |
store_policies | Сторінки доставки, оплати, гарантії, повернення |
store_contacts | Контакти магазину |
search_knowledge | Пошук по інформаційних сторінках магазину (FAQ, доставка, гарантії) |
Ті самі правила, що й для решти Headless API: якщо читання закрито токеном,
MCP теж потребує токена (Authorization: Bearer …), діє ліміт запитів.
WebMCP у такому разі вимикається сам.
Підключення в клієнті, що підтримує віддалені MCP-сервери (Streamable HTTP):
{ "mcpServers": { "shop": { "type": "http", "url": "https://<сайт>/api/v1/mcp" } } }
Фід OpenAI
JSON Lines, один товар на рядок: item_id, title, description, url,
brand (немає — назва магазину), seller_name, image_url, availability,
price (79.99 UAH), sale_price при знижці. Товари без ціни, фото чи
адреси не потрапляють у фід. Оформлення в ChatGPT (is_eligible_checkout)
вимкнено: покупець переходить на сайт. Адресу фіду подайте в програму
продавців OpenAI, коли вона доступна для вашої країни.
MCP-сервер і фід автоматично з'являються в /.well-known/api-catalog і llms.txt.
Соцмережі в «Інформації про сайт»
Налаштування → Інформація про сайт → блок «Соцмережі»: одне поле на
мережу (Facebook, Instagram, Telegram, YouTube, TikTok, X, LinkedIn,
Pinterest). Посилання однакові для всіх мов, тема показує їх без правок
шаблону, а розмітка JSON-LD магазину отримує їх у sameAs — так пошуковики й
агенти пов'язують сайт із вашими сторінками в соцмережах.
Перевірка
curl -sI -H 'Accept: text/markdown' https://<сайт>/ # Content-Type: text/markdown
curl -sI https://<сайт>/ # Link: ...; Vary: Accept
curl -s https://<сайт>/robots.txt | grep Content-Signal
curl -sI https://<сайт>/.well-known/api-catalog # application/linkset+json
Cloudflare
Якщо раніше для цього використовувався Cloudflare (керований robots.txt із
Content Signals, Worker, що перетворює сторінки на Markdown, правила Response
Header із Link), після оновлення їх варто вимкнути: сайт віддає те саме сам,
а Cloudflare перекриватиме налаштування з адмінки.
Питання
Чи зміниться SEO? Ні. HTML, заголовки, мікророзмітка й кеш для людей і
пошуковиків ті самі; Markdown позначений noindex і має канонічне посилання на
HTML.
Чи сповільняться сторінки? Ні. HTML-сторінки, як і раніше, віддаються з кешу LiteSpeed. Markdown генерується на запит і не кешується.
Чому api-catalog віддає 404? Модуль Headless API не встановлено або вимкнено. Каталог, що вказує на відсутній API, гірший, ніж жодного.