# Bergott: API, SEO и данные для агентов

## Источник данных

Основной источник каталога:

`https://api.specus.space/api/bergott/products/`

Фронт запрашивает активные товары через `lib/bergott.ts` и обновляет кэш раз в час. Если API недоступен во время сборки или повторной проверки кэша, используется `public/data/bergott-products.json`.

Переменная окружения:

`SPECUS_API_URL=https://api.specus.space`

## Публичные маршруты

- каталог: `https://specus.space/ru/projects/bergott`;
- товар: `https://specus.space/ru/projects/bergott/{slug}`;
- каталог JSON: `https://specus.space/ru/projects/bergott/catalog.json`;
- товар JSON: `https://specus.space/ru/projects/bergott/{slug}/product.json`;
- Yandex YML: `https://specus.space/feeds/bergott-yandex.yml`;
- Google Merchant RSS: `https://specus.space/feeds/bergott-google.xml`;
- OpenAPI 3.1: `https://api.specus.space/api/bergott/schema/?format=json`;
- документация API: `https://api.specus.space/api/bergott/docs/`;
- краткая карта для агентов: `https://specus.space/llms.txt`;
- полная карта для агентов: `https://specus.space/llms-full.txt`;
- sitemap: `https://specus.space/sitemap.xml`.

JSON-маршруты доступны для чтения и получают `X-Robots-Tag: noindex, follow`, чтобы поисковая выдача вела на HTML-страницы.

## SEO карточки

Каждая карточка формирует:

- уникальные `title` и `description`;
- canonical URL;
- альтернативное представление `application/json`;
- Open Graph и Twitter metadata;
- `Product` и `BreadcrumbList` в JSON-LD. Историческая цена не публикуется как действующий `Offer`; текущие остатки из активности карточки не выводятся;
- видимые SKU, снимок цены, характеристики, источник покупки, ссылку на отзывы Ozon и дату проверки данных;
- внутренние ссылки на связанные товары.

Цена, рейтинг и количество отзывов являются снимком данных. Наличие, доставка и условия покупки проверяются на Ozon по точной ссылке из записи товара.

## Изображения

Рекомендуемый путь:

`public/img/projects/bergott/{sku}.webp`

Для фидов, которые принимают только JPEG или PNG, рядом хранится версия:

`public/img/projects/bergott/{sku}.jpg`

После загрузки файла нужно записать в поле `image_path` соответствующего товара:

`/img/projects/bergott/{sku}.webp`

Фронт автоматически добавит изображение в Open Graph, Twitter metadata и `Product.image` после обновления часового кэша. До появления файла поле `image_path` должно оставаться пустым.

## Индексация

В sitemap включены русская страница коллекции и все активные товары. `lastmod` берется из API. После заметного обновления каталога sitemap следует повторно отправить в Google Search Console и другие используемые панели вебмастеров.

Yandex YML передается в Яндекс Вебмастере как товарный фид. IndexNow сообщает Яндексу и другим участникам протокола об измененных HTML-страницах и машинных маршрутах, но не заменяет добавление сайта, sitemap и фида в кабинетах платформ.

## Границы данных

В новые машинные представления не добавляются неподтвержденные GTIN, доставка, возвраты, остатки или юридическое лицо продавца. Существующие Google/Yandex фиды используют розничные снимки и выводят наличие из активности карточки. Это не проверка остатков. До подключения или повторной передачи в товарные программы им нужен источник актуальных коммерческих данных. Актуальные условия розничной покупки определяет Ozon.

## Публичный слой для агентов / подготовлено 28 октября 2026

Изменения ниже проверены локально и пока не опубликованы. Передача исходников на сервер остановлена автоматической проверкой разрешений; действующий сайт сохраняет предыдущую версию.

- `/ai.txt` — необязательный указатель на публичные источники. Не меняет robots.txt и права на обучение.
- `/ai.json` — описание Specus, стадии проектов, контакты и машинные точки входа.
- `/mcp` — публичный MCP Streamable HTTP на официальном SDK. Четыре действия только для чтения: `get_project_overview`, `search_bergott_products`, `get_bergott_product`, `get_bergott_wholesale_offer`. Подключение клиентом явное; публикация MCP не означает появления в поиске ChatGPT.
- `/{ru|en}/projects/bergott/wholesale/offer.json` — ассортимент, характеристики, процесс, FAQ и шаблон обращения из того же источника, что HTML. Страница объявляет JSON через `rel=alternate`.
- JSON каталога версии 2.1 и JSON товаров сохраняют прежние поля и добавляют происхождение API/резервного снимка и объяснения коммерческих данных. Отдельный `agentRecord` товара обозначает остатки как неизвестные.
- `sourceCheckedAt` означает наблюдение источника, `updatedAt` — изменение записи. Ни запрос API, ни обновление кэша не подтверждают заново цены и остатки. Валидный пустой ответ API не заменяется старыми товарами из резервной копии.
- JSON и MCP не принимают заказы, платежи и не отправляют сообщения. Приватные документы не подключены.

Проверка: production build, ESLint измененных файлов, `node scripts/check-bergott-provenance.cjs`, затем `node scripts/check-public-agent-data.mjs http://127.0.0.1:3022` против запущенной сборки. Общий стандарт и матрица соответствия: `docs/operations/llm-visibility-standard.md` в корне Specus.

## Оптовая страница / 28 октября 2026

- RU: `https://specus.space/ru/projects/bergott/wholesale`.
- EN: `https://specus.space/en/projects/bergott/wholesale`.
- Отдельная `CollectionPage`, `ItemList` и `BreadcrumbList`; взаимные canonical/hreflang и записи sitemap.
- Контакт — существующая публичная почта Specus, обычная mailto-ссылка с редактируемым шаблоном; автоматической отправки и новой формы нет.
- `AggregateRating` из Ozon удален из товарной SEO-разметки. Видимые старые оценки заменены переходом к точной карточке Ozon. В JSON-снимках остаются исторические поля с датой источника; они не означают свежую проверку Ozon.
- Коммерческие условия согласуются индивидуально. Цены, MOQ, сроки, наличие, доставка и продавец оптового направления из розничных снимков не выводятся.
