Как превратить один CSV-файл в полноценный сайт для эпохи нейросетевого поиска

✍️ =?utf-8?B?0JLQuNGC0LDQu9C40Lkg0KfRg9GP0LrQvtCy?=📅 02.06.2026

Реальный кейс: разработка набора PHP-скриптов для работы с товарными остатками


Проблема: есть CSV, а сайта нет

Представьте ситуацию: у заказчика есть огромный CSV-файл с товарными остатками запчастей. Десятки тысяч строк. Артикулы, названия, цены, наличие, марки автомобилей. Всё это добро лежит в файле, обновляется раз в месяц, но сайта, который мог бы это показать миру — нет.

А если сайт и есть — он либо не работает, либо поисковый трафик к нему давно сошел на нет.

Задача: быстро (и желательно бесплатно) превратить этот CSV в рабочий инструмент — сайт, который:


Архитектурный подход: модульные скрипты над CSV

Вместо полноценной CMS мы создали набор PHP-скриптов, работающих напрямую с CSV. Никакой базы данных, никаких сложных зависимостей. Просто:

` data/sklad.csv — исходный файл остатков filters.php — главная страница каталога rss.php — генерация RSS по брендам sitemap.php — генерация карты сайта yml.php — экспорт в Яндекс.Маркет send.php — обработка заказов в Telegram templates/card.html — шаблон карточки товара .htaccess — ЧПУ-адреса `

Весь код — на чистом PHP без фреймворков. Размещается в подпапке существующего сайта и не конфликтует с основной системой.


Основные скрипты и их возможности

1. Основной каталог — filters.php

Это сердце системы. Скрипт читает CSV, фильтрует по параметрам из URL, пагинирует и выводит карточки товаров.

Что умеет:

Особенность: скрипт сам строит URL для фильтров: ?filterBrand=IVECO&filterArticle=123, а через .htaccess можно сделать красивые адреса вида /brand/IVECO и /part/123.

2. Карта сайта — sitemap.php

Поисковики любят карты сайта. Наш генератор создает валидный XML:

Что важно: sitemap автоматически подключается к основной карте сайта заказчика через специальный скрипт-аппендер.

3. YML для Яндекс.Маркета — yml.php

Экспорт в формате Яндекс.Маркета — это выход на новую аудиторию. Скрипт генерирует YML с:

Достаточно отдать ссылку на yml.php менеджеру маркетплейса.

4. RSS-ленты по брендам — rss.php

Здесь интереснее. Скрипт создает отдельную RSS-ленту для каждой марки автомобиля:

` rss.php?filterBrand=IVECO&limit=20&sort=price&order=desc `

Параметры:

RSS-ленты можно отдавать в агрегаторы, использовать для email-рассылок или подключать в мессенджеры.

5. Микроразметка JSON-LD

В эпоху нейросетевого поиска обычных HTML-тегов мало. Мы добавили в каждый товар и на всю страницу структурированные данные Schema.org:

Для товара: `json { "@type": "Product", "name": "Кольцо уплотнительное", "sku": "000.230", "brand": "IVECO", "offers": { "price": 160, "priceCurrency": "RUB", "availability": "https://schema.org/InStock"; } } `

Для страницы: `json { "@type": "ItemList", "numberOfItems": 128, "itemListElement": [...] } `

Для навигации: `json { "@type": "BreadcrumbList", "itemListElement": [...] } `

Это позволяет нейросетевым алгоритмам (Google SGE, Yandex GPT, Perplexity AI, ChatGPT search) правильно интерпретировать содержимое страницы и использовать его в ответах.


Почему классическое SEO больше не работает

Откровенно: в этой нише поисковый трафик практически отсутствует. Клиенты не забивают в поиск «запчасть артикул 58923». Они идут на маркетплейсы, в телеграм-каналы или просто звонят.

Но это не значит, что сайт не нужен.

Сегодня роль сайта меняется:

  1. Сайт как API — структурированные данные забирают нейросети, маркетплейсы, ценовые агрегаторы
  2. Сайт как паспорт товара — клиент получает ссылку на карточку в мессенджере и видит все характеристики
  3. Сайт как RSS-источник — подписчики получают обновления ассортимента автоматически
  4. Сайт как YML-экспортер — один файл для загрузки в Яндекс.Маркет

Поэтому мы оптимизируем не под «позиции в выдаче», которых нет, а под машинную обработку данных.


Роль нейросетей и структурированных данных

Современный поиск — это уже не десять синих ссылок. Это:

Все эти системы парсят сайты. Но парсят они не «красивый дизайн», а структурированные данные. JSON-LD для них — родной язык.

Если на странице товара есть JSON-LD с артикулом, ценой, наличием и брендом — нейросеть с вероятностью 90% использует эту информацию в своем ответе. Если нет — товар просто исчезает из видимости.

Вывод: в эпоху нулевого поискового трафика бороться за классическое SEO бессмысленно. Оптимизация должна идти под нейросетевые алгоритмы, тематические классификаторы (Яндекс.Маркет, Price.ru) и системы сбора структурированных данных по типу прайс-листов.


Технические детали реализации

Работа с CSV

CSV приходит от заказчика в «кривой» кодировке (UTF-8 с BOM), с разделителем «;». Первая строка — заголовки. Скрипт чистит BOM, нормализует кодировку и приводит данные к единому виду.

`php $header = array_map(function($key) { return trim(preg_replace('/^\x{FEFF}|\x{200B}/u', '', $key)); }, $header); `

Фильтрация на сервере

Фильтры из URL применяются при чтении CSV — это экономит память и ускоряет работу.

`php $filteredParts = array_filter($parts, function($part) use ($filterArticle, $filterBrand) { return (empty($filterArticle) || stripos($part['Артикул'], $filterArticle) !== false) && (empty($filterBrand) || $part['Марка автомобиля'] === $filterBrand); }); `

Пагинация

После фильтрации массив слайсится:

`php $offset = ($page - 1) * 16; $pagedParts = array_slice($filteredParts, $offset, 16); `

ЧПУ через .htaccess

Добавляем правила для красивых адресов:

` RewriteRule ^part/([A-Za-z0-9_-]+)$ /plugins/tcse/parts/filters.php?filterArticle=$1 [L,QSA] RewriteRule ^brand/([A-Za-z0-9_-]+)$ /plugins/tcse/parts/filters.php?filterBrand=$1 [L,QSA] `

Теперь по ссылке /brand/IVECO открывается страница всех запчастей IVECO.


Быстрый старт: что нужно для развертывания

  1. Положить CSV в папку /data/ с именем sklad.csv
  2. Загрузить скрипты в /plugins/tcse/parts/
  3. Настроить .htaccess (правила выше)
  4. Добавить Telegram-бота в send.php
  5. Запустить один раз sitemap.php?update_main=yes

Всё. Сайт готов к работе.


Кому подходит этот подход


Итог: философия работы с данными в 2026 году

Сегодня сайт — это не столько «витрина для клиента», сколько интерфейс к данным для машин. JSON-LD, RSS, YML, sitemap стали важнее, чем дизайн и юзабилити.

Нейросети уже сейчас потребляют структурированный контент. Маркетплейсы тянут YML. RSS-ридеры и Telegram-боты парсят ленты. CSV с остатками — это не «сырые данные», а готовый контент, просто лежащий не в том формате.

Наша задача — помочь этому контенту заговорить на языке, понятном новому поколению поисковых систем.


Статья подготовлена для блога TCSE CMS. Исходные коды скриптов доступны по запросу.