Веб-студия «SeoУслуга» · Первая версия: декабрь 2024 · Обновлено: сентябрь 2026
Содержание
- Задача и требования к решению
- 2024 год: генератор YML + Webasyst Shop-Script
- 2026 год: эволюция в плагин SeoUsluga YML Importer 2.0
- Почему YML-фид остаётся основой
- Архитектура современного решения
- Этап 1 — Генератор YML-фида
- Этап 2 — Плагин SeoUsluga YML Importer 2.0
- Магия под капотом: как склеиваются вариации
- Автоматизация, Cron и ручной запуск
- Результаты на практике
- Выводы и применимость
Задача и требования к решению
Когда ассортимент магазина вырастает до тысяч позиций со сложной структурой вариаций (размеры, цвета, составы ткани, материалы), ручное управление каталогом становится крайне неэффективным. Цены, остатки и характеристики меняются ежедневно, а каждое обновление требует времени, внимания и ресурсов. Мы поставили задачу настроить перенос каталога Wildberries в собственный магазин и регулярное обновление товарных данных. Важны понятная структура моделей для покупателей, управляемость обновлений и контроль ошибок импорта.
В техническом плане это означало решение сразу нескольких сложных задач одновременно. Во-первых, нужно было импортировать нужные товары из выбранного фида и проверять пропущенные записи. Во-вторых, сохранить правильную структуру вариаций: одна модель товара должна представляться одной карточкой с удобным переключателем размеров и цветов, а не множеством дублирующихся страниц. В-третьих, обеспечить регулярную синхронизацию цен и остатков по расписанию — с периодичностью, которую позволяет источник данных и расписание выполнения. В-четвёртых, разделить поля для импорта и ручной SEO-работы: проверять, что повторный импорт не перезаписывает отредактированные названия, описания, изображения и метаданные. И наконец — дать возможность работать с несколькими фидами от разных поставщиков одновременно, с индивидуальными настройками для каждой задачи.
Расширяя контекст, важно отметить, что такая система должна быть не просто техническим инструментом, а полноценной инфраструктурой, которая позволяет уменьшить ручную работу с каталогом. Если API Wildberries недоступен, ранее сформированный фид может оставаться доступным, но его цены и остатки устаревают: перед повторным импортом нужно проверить время генерации и журнал ошибок.
Ключевые требования, которые мы реализовали:
- Импорт выбранных позиций и контроль пропусков и ошибок по журналу
- Автоматическая склейка вариаций в одну карточку (Variable Product WooCommerce)
- Синхронизация цен и остатков по гибкому расписанию
- Настройки обновления полей и проверка сохранности SEO-контента
- Поддержка нескольких задач импорта с индивидуальными настройками
- Логирование запусков, проверка свежести фида и обработка сбоев
2024 год: генератор YML + Webasyst Shop-Script
В 2024 году мы разработали первый инструмент: генератор YML-фида по официальному API Wildberries. Он автоматически собирал товары с актуальными остатками и ценами, формировал файл /wb/file.yml и передавал данные в Webasyst Shop-Script. Решение работало стабильно: цены и остатки обновлялись по расписанию, каталог синхронизировался без ручного труда. Однако вариации (размеры, цвета) оставались отдельными карточками — требовалась ручная связка атрибутов внутри CMS. Это было хорошим стартом, но для больших каталогов не хватало автоматизации.
Основной скрипт auto_generate.php подключался к API по токену, использовал шаблон template.xml, сохранял готовый фид в file.yml. Админка secure-admin/admin.php позволяла ввести токен, URL API, категории, сохранить настройки и запустить генерацию вручную. Cron запускал скрипт каждые 3 часа (команда /usr/local/bin/php7.4 /home/…/auto_generate.php). Лог module.log фиксировал всё: запуски, количество товаров, ошибки (401, 500, timeout). Права на запись требовались только для file.yml и module.log. Чек-лист развертывания был прост: копируем папку /wb/, вставляем токен, генерируем, проверяем лог, добавляем cron.
Расширяя, в первой версии мы фокусировались на базовой синхронизации, но уже тогда заложили основу для будущих улучшений, таких как group_id. Это позволило быстро перейти к версии 2026 года, когда потребовалась полная автоматизация вариаций.
2026 год: эволюция в плагин SeoUsluga YML Importer 2.0
В 2026 году мы вернулись к генератору, значительно его улучшили (добавили автоматическое присвоение group_id для группировки моделей) и разработали новый профессиональный плагин для WooCommerce — SeoUsluga YML Importer 2.0. Это был полный рефакторинг: современный интерфейс на Bootstrap 5, полная адаптивность, индивидуальные настройки для каждой задачи, батчинг по 50 товаров, умное кэширование изображений и расширенное логирование последних 50 импортов. Структура плагина продумана до мелочей: главный файл seousluga-yml-importer.php, папки assets/ с CSS/JS, includes/admin с class-admin-page.php, class-forms.php, class-table.php, core с class-settings.php, class-task-manager.php, import с class-importer.php, class-xml-parser.php, class-product-importer.php, class-image-handler.php.
Теперь связка работает как единая система: генератор создаёт YML-фид → плагин парсит его и автоматически создаёт Variable Product с правильными вариациями. Группировка размеров в карточке модели помогает сократить дубли страниц и упростить выбор товара; для SEO, GEO и AEO отдельно проверяют индексируемые URL, уникальные описания и соответствие карточки поисковому запросу.
Расширяя, версия 2.0.0 включает полный рефакторинг, новый интерфейс на Bootstrap 5, индивидуальные настройки задач, улучшенную производительность, расширенную статистику и безопасность. Всё это делает плагин не просто инструментом, а полноценной системой для автоматизации каталога.
Почему YML-фид остаётся основой
Мы выбрали архитектуру «API → промежуточный YML-фид → WooCommerce», потому что YML — это XML-формат товарного фида; в данном проекте он служит промежуточным форматом обмена. Он даёт множество преимуществ:
- Разделение этапов: сначала проверяем передачу данных в WooCommerce; для других площадок отдельно проверяем их формат фида, обязательные поля и правила публикации
- Абсолютный контроль: фид формируется и хранится на вашем сервере, мы можем фильтровать и обогащать его до того, как он попадёт на витрину
- Контроль сбоев: при ошибке API сохранённый файл можно использовать для просмотра данных, но перед обновлением цен и остатков надо оценить его свежесть
- Простота отладки: XML легко читать, проверять и редактировать
Промежуточный фид упрощает диагностику: можно сравнить данные источника с тем, что импортировано в магазин. Подключение нового канала продаж не гарантируется тем же файлом и требует отдельной проверки схемы данных.
Архитектура современного решения
Наш программный комплекс состоит из двух независимых компонентов, между которыми передаётся товарный фид; доступ к его URL следует ограничить и проверить при внедрении:
↓
2. Модуль-генератор YML-фида (PHP)
↓
3. Плагин SeoUsluga YML Importer 2.0.0
↓
4. WooCommerce с вариациями
↓
5. Карточка товара на сайте с выбором размера
Этап 1 — Генератор YML-фида
На стороне сервера мы развернули легковесный обработчик — YML Generator. Он подключается к кабинету продавца через официальный API-токен. В панели генератора можно тонко настроить выгрузку: выбрать нужные склады, бренды или конкретные категории из словаря WB.
Генератор запрашивает массив данных у Wildberries и «на лету» формирует правильный XML-документ. Главная технологическая фишка генератора — он анализирует товары и присваивает позициям одной модели единый идентификатор group_id. Ниже схематичный фрагмент структуры YML; идентификаторы, цены и остатки в примере иллюстративны:
<offers>
<!-- Размер 42 -->
<offer id="1230098787" group_id="821225556" available="true">
<price>6000</price>
<stock>4</stock>
<name>Медицинский костюм с брюками палаццо</name>
<param name="Размер">42</param>
<picture>https://.../images/big/1.webp</picture>
</offer>
<!-- Размер 44 -->
<offer id="1230098788" group_id="821225556" available="true">
<price>6000</price>
<stock>5</stock>
<name>Медицинский костюм с брюками палаццо</name>
<param name="Размер">44</param>
<picture>https://.../images/big/1.webp</picture>
</offer>
</offers> Этап 2 — Плагин SeoUsluga YML Importer 2.0
На втором этапе плагин SeoUsluga YML Importer (версия 2.0.0) читает фид и создаёт или обновляет товары WooCommerce. На скриншоте настроек по умолчанию виден тип «Обычный товар (Simple)»: для модели с размерами нужно отдельно выбрать и проверить вариативный сценарий импорта и группировку по group_id.
Возможности импортёра
- Пошаговый импорт (Батчинг): Разбиение импорта на части (например, по 50 товаров) снижает риск таймаута, но не отменяет тест на реальном объёме каталога и контроль ошибок 502/504.
- Умное кэширование изображений: Если у 8 размеров одного костюма загружены одинаковые 10 фотографий на WB, повторное использование изображений может снизить число одинаковых файлов в медиатеке. Проверяйте этот результат после импорта: способ привязки зависит от настроек и структуры фида.
- Индивидуальные настройки задач и разные наценки: Вы можете создать несколько отдельных задач импорта (например, для разных фидов от разных поставщиков или для дропшиппинга). Каждая задача имеет свой
uidи свои настройки. В одной задаче вы можете задать наценку +15% к цене WB, а в другой (от другого поставщика) — фиксированную наценку +500 рублей с красивым округлением.
Умное обновление существующих товаров (Smart Update)
Частый вопрос от SEO-специалистов: «А как плагин понимает, какие поля товаров не нужно обновлять? Вдруг он затрет мои уникальные SEO-тексты?»
Мы предусмотрели это. В настройках каждой задачи есть блок оптимизации. Вы можете принудительно отключить обновление названий, описаний, изображений и категорий для уже созданных товаров. Плагин будет сопоставлять товары по offer_id в базе данных (в таблице postmeta) и обновлять только цены и остатки. После настройки выполните повторный импорт на тестовой карточке и проверьте сохранность названия, описания, изображения и SEO-метаданных: защита зависит от выбора полей обновления.
Магия под капотом: как склеиваются вариации
Это технологическое сердце нашего решения. Как только импортер парсит фид и видит тег group_id="821225556", он запускает специальный алгоритм объединения:
- Вместо создания простых товаров, он создает в WooCommerce один родительский Вариативный товар (Variable Product).
- Он сканирует все теги
<param>и автоматически регистрирует глобальные атрибуты (Размер, Пол, Состав, Тип посадки). - Находит атрибут «Размер», проставляет ему внутреннюю галочку «Используется для вариаций».
- Затем он складывает все 8 размеров внутрь родительского товара как дочерние вариации (Child Products), жестко привязывая к каждой свой уникальный
offer_id, точный остаток (stock) и штрихкод.
Автоматизация, Cron и ручной запуск
Загрузить товары один раз недостаточно. Цены и остатки на маркетплейсе — это «живой» организм. Наш менеджер задач глубоко интегрирован во встроенный планировщик WP-Cron.
В панели администратора выбирают интервал и действие при обновлении. Расписание WP-Cron зависит от посещений сайта; если нужна предсказуемая частота, настройте серверный планировщик и проверьте фактическое время запуска в журнале. Перед синхронизацией остатков проверяйте свежесть фида, а удаление или скрытие отсутствующих товаров включайте только после теста на копии каталога.
Можно ли запустить обновление вручную, не дожидаясь Cron?
Да, безусловно. Если вы только что поменяли цены на Wildberries и хотите, чтобы запустить проверку и обновление на сайте вне расписания (например, перед запуском контекстной рекламы), вам не нужно ждать расписания. В интерфейсе плагина напротив каждой задачи есть кнопка «Запустить принудительно». Также быструю ручную генерацию можно инициировать прямо из скрипта-генератора.
Кроме того, плагин ведет подробный логгинг (историю последних 50 импортов). Вы всегда видите: сколько позиций было добавлено, сколько обновлено, а сколько пропущено, и не было ли ошибок со стороны API маркетплейса.
Результаты на практике
На скриншотах показаны настройка импорта, атрибуты WooCommerce, история задач и карточка товара с выбором размеров. Это иллюстрирует работу связки, но не подтверждает долю охвата каталога, экономию времени или рост продаж; такие показатели требуют отдельного отчёта.
показана карточка с выбором размера
показана история задач импорта
показаны атрибуты и вариации в админке
Выводы и применимость
Связка генератора фида и импортёра показывает один из способов перенести каталог Wildberries в WooCommerce. Она не переносит «бизнес» целиком: заказы, отзывы, продвижение и условия продаж требуют отдельных решений. Для SEO, GEO и AEO нужен собственный сайт с понятными карточками, актуальными данными и проверенной структурой индексации. По теме выбора каналов продаж читайте сравнение интернет-магазина и маркетплейса.
Кому жизненно необходимо такое решение:
- Успешным селлерам WB/Ozon, которые уперлись в «потолок» маркетплейсов и хотят растить собственный бренд (D2C).
- Продавцам одежды, обуви, косметики и любых товаров с размерными/цветовыми сетками (вариациями).
- Владельцам бизнеса, которые не хотят раздувать ФОТ и нанимать людей для ручного ведения каталога.
- Специалистам по SEO, которым нужна чистая структура сайта без каннибализации запросов и дублей страниц.
Хотите такую же автоматизацию, чтобы убрать рутину и упростить управление каталогом?
Если вам нужно перенести каталог или наладить его обновление, посмотрите услугу синхронизации товаров и опишите источник данных, объём каталога, вариации и частоту обновления. Мы оценим состав работ и ограничения для вашего проекта без обещаний универсального решения.





















