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

Формат Spefix (рекомендовано)

Це наш власний формат, оптимізований для e-commerce платформ. Формат Spefix дозволяє передавати інформацію про ваш каталог товарів у структурованому вигляді для індексування та пошуку.

Коренева структура

Рекомендована структура

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<categories>
<!-- Визначення категорій товарів -->
</categories>
<offers>
<!-- Товарні пропозиції -->
</offers>
</catalog>

Альтернативна застаріла Структура

<yml_catalog>
<shop>
<categories>...</categories>
<offers>...</offers>
</shop>
</yml_catalog>
попередження

Альтернативна структура все ще підтримується для зворотної сумісності, але не рекомендується для нових інтеграцій. Використовуйте рекомендовану структуру з елементом <catalog>.


Структура категорій

У форматі Spefix ієрархічна структура категорій визначається в елементі <categories>. Кожна категорія може мати батьківську категорію, що дозволяє створювати гнучкі дерева категорій для організації товарів.

Поля категорії

Кожен елемент <category> має наступну структуру:

<category id="123" parent_id="100" url="https://example.com/category">
Назва категорії
</category>
Атрибут/ПолеТипОбов'язковеОпис
@idStringТакУнікальний ідентифікатор категорії
@parent_idStringНіID батьківської категорії для створення ієрархії. Якщо не вказано, категорія вважається кореневою.
@urlStringНіURL сторінки категорії у вашому магазині. Рекомендується вказувати для покращення UX.
#textStringТакНазва категорії. Текст, що відображатиметься користувачам у пошуку та навігації.
попередження

Унікальність ідентифікаторів дуже важлива. Якщо два елементи матимуть однаковий 'id', це може призвести до помилок при парсингу файлу та некоректної роботи пошуку.

Приклад

Нижче наведено приклад повного розділу <categories> з кількома рівнями вкладеності:

<categories>
<category id="1" url="https://example.com/electronics">Електроніка</category>
<category id="2" parent_id="1" url="https://example.com/electronics/phones">Смартфони</category>
<category id="3" parent_id="1" url="https://example.com/electronics/laptops">Ноутбуки</category>
<category id="4" parent_id="2" url="https://example.com/electronics/phones/iphone">iPhone</category>
<category id="5" parent_id="2" url="https://example.com/electronics/phones/android">Android</category>
</categories>

Пояснення прикладу:

  • Категорія з id="1" є кореневою (немає parent_id)
  • Категорії з id="2" та id="3" є дочірніми від категорії Електроніка (мають parent_id="1")
  • Категорії з id="4" та id="5" є дочірніми від категорії Смартфони (мають parent_id="2")
порада

При створенні структури категорій рекомендується дотримуватися логічної ієрархії. Наприклад, якщо у вас є категорія "Смартфони", її дочірніми категоріями можуть бути "iPhone", "Samsung", "Xiaomi" тощо. Це покращує навігацію та пошук для користувачів.


Структура пропозиції (товару)

Розділ <offers> містить інформацію про кожен товар у вашому каталозі. Кожен товар представлений елементом <offer> з набором полів, що описують його характеристики, ціну, доступність та інші параметри.

Обов'язкові поля

Кожна товарна пропозиція повинна містити мінімальний набір обов'язкових полів для коректної індексації та відображення у пошуку.

<offer id="product123" available="true">
<name>Назва товару</name>
<price>999.99</price>
<url>https://example.com/product</url>
<picture>https://example.com/image.jpg</picture>
</offer>

Детальний опис обов'язкових полів:

ПолеТипОбов'язковеОпис
@id або idStringТакУнікальний ідентифікатор товару
nameStringТакНазва товару. Має бути зрозумілою та описовою (рекомендується 50-150 символів).
priceNumberТакПоточна ціна товару. Використовуйте крапку як десятковий роздільник.
urlStringТакПовна URL-адреса сторінки товару в інтернет-магазині.
picture або image_urlStringТакURL основного зображення товару. Може бути масивом для кількох зображень.
попередження

Всі обов'язкові поля повинні бути заповнені. Відсутність будь-якого з цих полів призведе до того, що товар не буде проіндексований і не відображатиметься у пошуку.

Рекомендовані поля

Ці поля не є обов'язковими, але їх використання значно покращує якість пошуку та користувацький досвід.

ПолеТипОписЗа замовчуванням
@availableStringНаявність товару: "true", "1", "yes"false
@price_rangeStringВмикає режим діапазону цін *false
skuStringАртикул товару (Stock Keeping Unit). Використовується для унікальної ідентифікації товару в системі обліку.-
category_idString/ArrayID категорії(й), до якої належить товар. Повинен відповідати id з розділу <categories>.-
currency_codeStringКод валюти за стандартом ISO 4217 (наприклад, "UAH", "USD", "EUR")."UAH"
vendorStringНазва бренду/виробника-
descriptionStringОпис товару-
порада

Використання поля @available дозволяє контролювати, які товари відображаються у пошуку. Товари з available="false" можуть не показуватися користувачам або позначатися як недоступні.

Режим діапазону цін

Якщо встановлено @price_range="true", система інтерпретує ціни спеціальним чином:

  • <old_price> → відображається як "від X ₴"
  • <price> → відображається як "до Y ₴"
  • Обидва поля → "від X до Y ₴"

Приклад

<offer available="true" price_range="true">
<old_price>15999</old_price>
</offer>

Результат у інтерфейсі: (від 15 999 ₴)

Увага

Режим діапазону працює лише при наявності атрибута price_range="true". Без нього <old_price> інтерпретується як стара ціна (з закресленням), а <price> — як поточна.

Додаткові поля

Додаткові поля надають більше можливостей для конфігурації товарів, створення варіантів, додавання міток та атрибутів.

ПолеТипОпис
old_priceNumberПопередня ціна товару (до знижки). Використовується для відображення строї ціни.
@group_idStringІдентифікатор групи товарів. Використовується для об'єднання варіантів одного товару (розмір, колір тощо).
@is_mainStringПозначає основний товар у групі варіантів: "true", "1", "yes". Застосовується разом з @group_id.
labelString/ArrayМітки або бейджі товару (наприклад, "Новинка", "Хіт продажів", "-20%").
keywordsStringКлючові слова для покращення пошуку, розділені комами.
attributeArrayМасив атрибутів/параметрів товару (розмір, колір, матеріал тощо).
примітка

Поле @group_id дозволяє групувати варіанти одного товару (наприклад, різні кольори або розміри). При цьому один з товарів повинен мати атрибут @is_main="true", який визначатиме основний варіант для відображення.


Атрибути товару

Атрибути дозволяють додавати додаткові характеристики товарів, які можуть використовуватися для покращення пошуку, фільтрації та відображення товарів у результатах пошуку.

Структура атрибута

Кожен атрибут додається у вигляді окремого елементу <attribute> усередині тегу <offer>:

<attribute name="Колір" filter="true">Червоний</attribute>
<attribute name="Розмір">XL</attribute>
<attribute name="Матеріал" filter="true">Бавовна</attribute>
АтрибутТипОпис
@nameStringНазва атрибута. Використовується для ідентифікації параметра (наприклад, "Колір", "Розмір", "Матеріал"). Повинна бути зрозумілою та короткою.
@filterStringЧи дозволено використовувати атрибут для фільтрації у пошуку. Допустимі значення: "true" (включено), "false" (виключено). Якщо не вказано — за замовчуванням вважається "false".
#textStringЗначення атрибута (конкретна характеристика товару).
порада

Використовуйте атрибут filter="true" для характеристик, за якими користувачі найчастіше фільтрують товари (колір, розмір, бренд, матеріал тощо). Це покращить користувацький досвід при пошуку.

Приклад вживання

<offer id="12345">
<name>Ноутбук ASUS ROG Strix G15</name>
<!-- інші обов'язкові поля -->
<attribute name="Процесор" filter="true">Intel Core i7-12700H</attribute>
<attribute name="Оперативна пам'ять" filter="true">16 GB</attribute>
<attribute name="SSD" filter="true">512 GB</attribute>
<attribute name="Відеокарта" filter="true">NVIDIA RTX 3060</attribute>
<attribute name="Діагональ екрана">15.6"</attribute>
<attribute name="Роздільна здатність">1920×1080 (Full HD)</attribute>
<attribute name="Операційна система">Windows 11</attribute>
</offer>
попередження

Непідтримувані типи атрибутів: Формат Spefix не підтримує типи даних, які передбачають числа, булеві значення або вибір за допомогою true/false у значеннях атрибутів. Всі значення мають бути текстом. Наприклад, замість:

<attribute name="У наявності">true</attribute>

використовуйте:

<attribute name="Доступність">В наявності</attribute>

Оптимізація

Не використовуйте атрибути для дублювання інформації, яка вже міститься в назві або описі.

<!-- Неправильно -->
<name>Червона футболка</name>
<attribute name="Колір">Червоний</attribute>

<!-- Правильно -->
<name>Футболка з принтом</name>
<attribute name="Колір">Червоний</attribute>

Атрибути повинні додавати додаткову цінність, а не дублюватися.


Мітки товару

Мітки - це візуальні бейджі/теги, які додають до товару додаткову інформацію та відображаються на товарних картках.

Проста мітка (лише текст)

Ви можете додати просту мітку, використовуючи тег <label> з текстом мітки:

<label>Новинка</label>
<label>Розпродаж</label>

Мітка з кольором:

Для міток, які потребують відображення кольору, використовуйте атрибут color з шестнадцятковим кодом кольору:

<label color="#FF0000">Гаряча пропозиція</label>
<label color="#00FF00">Еко-товар</label>
АтрибутТипОбов'язковеОпис
colorStringНіШестнадцятковий код кольору мітки. Якщо не вказано, мітка відображається без кольору.
порада

Мітки з кольором можуть підкреслити важливі акції або характеристики товару. Використовуйте їх для підвищення атрактивності товару на сторінці.


Повний приклад

Нижче наведено повний приклад XML-файлу у форматі Spefix. Цей приклад демонструє всі основні елементи: структуру каталогу, визначення категорій з ієрархією та декілька товарних пропозицій, включаючи варіанти одного товару.

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<categories>
<category id="1" url="https://shop.com/electronics">Електроніка</category>
<category id="10" parent_id="1" url="https://shop.com/electronics/phones">Смартфони</category>
<category id="11" parent_id="1" url="https://shop.com/electronics/laptops">Ноутбуки</category>
</categories>

<offers>
<offer id="12345" available="true" group_id="phone-x" is_main="true" price_range="true">
<name>Смартфон X Pro</name>
<sku>PHN-X-PRO-BLK</sku>
<vendor>TechBrand</vendor>
<category_id>10</category_id>
<price>17999</price>
<old_price>15999</old_price> // old_price тут менший, оскільки позначає ціну "від", а не ціну без знижки
<currency_code>UAH</currency_code>
<url>https://shop.com/products/smartphone-x-pro</url>
<picture>https://shop.com/images/phone-x-1.jpg</picture>
<picture>https://shop.com/images/phone-x-2.jpg</picture>
<description>Найновіший флагманський смартфон з передовими функціями</description>
<label color="#FF0000">Новинка</label>
<label color="#00AA00">Бестселер</label>
<keywords>смартфон,мобільний,5g,флагман</keywords>

<attribute name="Колір" filter="true">Чорний</attribute>
<attribute name="Розмір екрану" filter="true">6.7 дюймів</attribute>
<attribute name="Оперативна пам'ять" filter="true">12 ГБ</attribute>
<attribute name="Накопичувач" filter="true">256 ГБ</attribute>
<attribute name="Батарея">5000 мАг</attribute>
</offer>

<offer id="12346" available="true" group_id="phone-x" is_main="false">
<name>Смартфон X Pro</name>
<sku>PHN-X-PRO-WHT</sku>
<vendor>TechBrand</vendor>
<category_id>10</category_id>
<price>15999</price>
<currency_code>UAH</currency_code>
<url>https://shop.com/products/smartphone-x-pro-white</url>
<picture>https://shop.com/images/phone-x-white.jpg</picture>

<attribute name="Колір" filter="true">Білий</attribute>
<attribute name="Розмір екрану" filter="true">6.7 дюймів</attribute>
<attribute name="Оперативна пам'ять" filter="true">12 ГБ</attribute>
<attribute name="Накопичувач" filter="true">256 ГБ</attribute>
</offer>
</offers>
</catalog>

Конвенції найменування полів

Для забезпечення сумісності та зручності ми підтримуємо два стилі написання назв полів: snake_case (рекомендований) та camelCase (застарілий, але підтримується для зворотної сумісності).

Рекомендовано (snake_case)Застаріле (camelCase)
category_idcategoryId
currency_codecurrencyId
old_priceoldprice
image_urlpicture
skuvendorCode
порада

Ми наполегливо рекомендуємо використовувати стиль snake_case у нових інтеграціях, оскільки він є більш читабельним і відповідає сучасним стандартам. Застарілий стиль camelCase може бути видалений у майбутніх версіях.


Валюти

Якщо ваш фід містить ціни в різних валютах, необхідно оголосити підтримувані валюти та їхні курси відносно гривні в елементі <currencies> у корені <catalog>. Код валюти в елементі <offer> (currency_code) повинен відповідати одному з оголошених id.

Структура

<currencies>
<currency id="UAH" rate="1"/>
<currency id="USD" rate="41.5"/>
<currency id="EUR" rate="44.2"/>
</currencies>
АтрибутТипОбов'язковеОпис
@idStringТакКод валюти за стандартом ISO 4217 (UAH, USD, EUR тощо).
@rateNumberТакКурс валюти відносно гривні (UAH). Для UAH завжди 1.
попередження

Якщо в <offer> вказано <currency_code>USD</currency_code>, але валюта USD не оголошена в <currencies>, ціна товару може бути оброблена некоректно.

Приклад у контексті каталогу

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<currencies>
<currency id="UAH" rate="1"/>
<currency id="USD" rate="41.5"/>
<currency id="EUR" rate="44.2"/>
</currencies>
<categories>
...
</categories>
<offers>
<offer id="1" available="true">
<name>Товар в USD</name>
<price>99.99</price>
<currency_code>USD</currency_code>
...
</offer>
</offers>
</catalog>

Статус наявності

Наявність товару визначається за допомогою атрибута @available в елементі <offer>. Товар вважається доступним, якщо значення цього атрибута дорівнює:

  • "true" (рекомендований варіант)
  • "1" (застарілий варіант)
  • "yes" (застарілий варіант)
<!-- Рекомендований спосіб -->
<offer id="123" available="true">...</offer>
обережно

Підтримка тега <presence> вважається застарілою і може бути видалена в майбутніх версіях. Рекомендується використовувати атрибут @available. Тег <presence> приймав такі текстові значення для позначення наявності:

  • "в наличии" (російською)
  • "в наявності" (українською)
  • "available" (англійською)
  • "є в наявності" (українською)
  • "есть в наличии" (російською)

Приклад застарілого формату:

<offer id="123">
<presence>в наявності</presence>
...
</offer>