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

Скрипты и советы | Вчера, 08:30 33

csv, json, json-ld, PHP, XML

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


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


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

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

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

  • Отображает товары в удобной карточной сетке
  • Позволяет фильтровать по бренду, артикулу, названию
  • Имеет человеко-понятные URL
  • Умеет сортировать товары
  • Генерирует sitemap.xml для поисковых роботов
  • Экспортирует товары в YML для Яндекс.Маркета
  • Создает RSS-ленты по каждому бренду
  • Содержит микроразметку JSON-LD для нейросетей




Архитектурный подход: модульные скрипты над 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, пагинирует и выводит карточки товаров.

Что умеет:

  • Фильтрация по артикулу, названию, марке авто
  • Сортировка по цене, названию, наличию
  • Пагинация (16 товаров на страницу)
  • Генерация динамических SEO-метатегов
  • JSON-LD разметка для каждого товара
  • Форма заказа с отправкой в Telegram

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

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


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

  • Главная страница каталога
  • Страницы каждого бренда
  • Страницы топ-2000 артикулов
  • Приоритеты и частота обновления


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



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

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


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

  • Информацией о магазине
  • Категориями (бренды авто)
  • Товарами (артикул, цена, наличие, описание)
  • Условиями доставки


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

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


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


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


Параметры:
  • filterBrand — марка авто (обязательный)
  • limit — число товаров (1–100, по умолч. 10)
  • sort — поле сортировки (price, article, name, stock)
  • order — направление (asc, 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-экспортер — один файл для загрузки в Яндекс.Маркет

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



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


Современный поиск — это уже не десять синих ссылок. Это:
  • Google SGE — генеративные ответы на основе контента сайтов
  • Yandex GPT — нейросеть, встроенная в поиск
  • Perplexity AI, ChatGPT Search — поисковые AI-агенты
  • Telegram-боты с интеграцией товарных каталогов

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

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

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



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


Работа с CSV


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

php
$header = array[i]map(function($key) {
    return trim(preg[/i]replace('/^\x{FEFF}|\x{200B}/u', '', $key));
}, $header);


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



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

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


Пагинация


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

php
$offset = ($page - 1) [i] 16;
$pagedParts = array[/i]slice($filteredParts, $offset, 16);


ЧПУ через .htaccess


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


RewriteRule ^part/([A-Za-z0-9[i]-]+)$ /plugins/tcse/parts/filters.php?filterArticle=$1 [L,QSA]
RewriteRule ^brand/([A-Za-z0-9[/i]-]+)$ /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

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



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


  • Владельцам CSV с товарами, у которых нет сайта
  • Тем, у кого сайт есть, но на классическом SEO нет бюджета
  • Компаниям, чьи клиенты общаются в мессенджерах
  • Поставщикам, которым нужен YML для маркетплейсов
  • Разработчикам, которым нужно быстро сделать «прослойку» над CSV для интеграций


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


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

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

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

Хотите разработку под свои задачи?
Пишите нам по адресу mail@tcse-cms.com
Виталий Чуяков

Виталий Чуяков

Технологический прагматик

Веб-разработчик с 20-летним стажем, основатель веб-студии TCSE. Специализация: DLE «под ключ», Webasyst, Parts-Soft.ru, технический аудит.

🧠 20 лет 🚀 120+ проектов 📄 45+ статей
Пишем правильный манифест для сайта

Думаю, многие знают о возможности добавления иконки сайта на рабочий стол мобильного устройства. Это удобно и причины...

Подробнее
Как я поднял трафик на 50% за месяц с помощью ИИ-контента: мой кейс, ошибки и уроки

Привет друзья! Павел на связи! Как вы знаете, я SEO‑специалист, семь лет пашу на фрилансе, балансируя между дедлайнами...

Подробнее
[recovery mode] Тестирование 15+ виртуальных хостингов для Wordpress или как не исчезнуть из индекса Яндекса

Шаг 0: С чего все началось? У меня есть сайт-визитка на Wordpress. И в один прекрасный день скорость ответа сервера по...

Подробнее
закончена разработка корпоративного сайта грузовых автомобилей

Закончена разработка корпоративного сайта, компании Аларм-Тракс. Задача: корпоративный сайт автомобильной тематики,...

Подробнее
Разработка сайта интернет-магазина 1000gps.ru

интернет-магазин навигации и товаров для активного отдыха был разработан на основе ДЛЕ и модуля интернет-магазина tcse...

Подробнее
Разработка онлайн каталога запчастей для большегрузной техники

Задача: вывести в онлайн список товаров, имеющихся на складе компании, с возможностью заказа необходимых позиций...

Подробнее

💬 Комментарии

В связи с новыми требованиями законодательства РФ (ФЗ-152, ФЗ «О рекламе») и ужесточением контроля со стороны РКН, мы отключили систему комментариев на сайте.

🔒 Важно Теперь мы не собираем и не храним ваши персональные данные — даже если очень захотим.

💡 Хотите обсудить материал?

Присоединяйтесь к нашему Telegram-каналу:

https://t.me/tcsecms

Нажмите кнопку ниже — и вы сразу попадёте в чат с комментариями