Перейти до основного вмісту

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.txtllms.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, гірший, ніж жодного.