Schema без плагінів: масова генерація розмітки через Google Sheets
Для великого інтернет-магазину мікророзмітка часто стає тим завданням, яке всі розуміють, але постійно відкладають. Причина проста: коли товарів тисячі, ручне додавання JSON-LD у шаблони або через адмінку стає повільним, а плагіни не завжди дають той рівень контролю, який потрібен SEO-фахівцю або вебмайстру. У результаті частина сторінок живе без Product, частина — з урізаною схемою, а BreadcrumbList або взагалі відсутній, або працює нестабільно.

Саме тут і починається нормальний engineering approach. Не навантажувати CMS зайвими модулями, а винести генерацію даних туди, де зручно ними керувати: у Google Sheets. Якщо таблиця вже містить назву товару, URL, ціну, валюту, бренд і ланцюжок хлібних крихт, цього достатньо, щоб збирати готовий JSON-LD автоматично. А далі — або імпортувати його на сайт, або вставляти через шаблон, GTM чи базу даних.
Чому саме JSON-LD, а не черговий плагін

У цій задачі важлива не “магія розширених сніпетів”, а чистота реалізації. Плагіни часто тягнуть за собою шаблонну логіку: одні й ті самі поля для всіх типів сторінок, обмежені налаштування, дублювання розмітки, конфлікти з темою або іншими SEO-модулями. На невеликому сайті це ще терпимо. На великому e-commerce це швидко перетворюється на технічний борг.
JSON-LD дає іншу модель роботи. Ви тримаєте дані окремо, формуєте код передбачувано і точно знаєте, що саме виходить у фіналі. Це особливо корисно там, де каталог великий, CMS самописна, або магазин працює на OpenCart чи WordPress, але власник не хоче вантажити сервер ще одним “універсальним рішенням”.
Якщо ви вже вибудовуєте масові SEO-процеси через таблиці, логічно також подивитися статтю про масову генерацію SEO-тегів через Google Sheets. Вона добре стикується з цією темою: спочатку ви стандартизуєте мета-теги, далі — структуровані дані.
Що підготувати в Google Sheets
База має бути дуже простою. Для Product і BreadcrumbList достатньо таких колонок:
- A — Назва товару
- B — URL
- C — Ціна
- D — Валюта
- E — Бренд
- F — Наявність
- G — Категорія 1
- H — Категорія 2
- I — Назва поточної сторінки
- J — JSON-LD Product
- K — JSON-LD BreadcrumbList
Цього вже вистачає, щоб зібрати керований генератор Schema.org JSON-LD без плагінів. Якщо у вас є рейтинг і кількість відгуків, можна додати ще дві колонки. Якщо ні — не вигадуйте їх штучно. У мікророзмітці краще менше, але правдиво.
Обов’язкові та рекомендовані поля: не плутайте ці поняття
Одна з найчастіших технічних помилок — намагатися одразу напхати в розмітку все, що тільки існує в Schema.org. Але на практиці потрібно розділяти дві речі:
- поля, без яких Google не зможе нормально прочитати або використати ваш тип розмітки;
- поля, які не є критичними, але роблять результат повнішим.
Для Product це особливо важливо. Якщо сторінка не є сторінкою одного товару, а є списком товарів або категорією, чекати стабільного rich result під Product не варто. Такі сторінки краще не змішувати з реальною товарною розміткою. Тобто не все, що технічно можна розмітити, потрібно розмічати саме як Product.
З BreadcrumbList логіка ще простіша: це ланцюжок сторінок, який має показати ієрархію шляху. Якщо хлібні крихти хаотичні, різняться між шаблонами або не збігаються з реальною навігацією сайту, Google отримає не підказку, а шум.
Магія автоматизації: один скрипт для двох типів розмітки

Нижче — базовий Apps Script, який читає дані з рядка таблиці й збирає два готових JSON-LD блоки: Product і BreadcrumbList.
function buildSchemaJsonLd() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const lastRow = sheet.getLastRow();
for (let i = 2; i <= lastRow; i++) {
const name = sheet.getRange(i, 1).getValue(); // A
const url = sheet.getRange(i, 2).getValue(); // B
const price = sheet.getRange(i, 3).getValue(); // C
const currency = sheet.getRange(i, 4).getValue(); // D
const brand = sheet.getRange(i, 5).getValue(); // E
const availability = sheet.getRange(i, 6).getValue(); // F
const cat1 = sheet.getRange(i, 7).getValue(); // G
const cat2 = sheet.getRange(i, 8).getValue(); // H
const pageName = sheet.getRange(i, 9).getValue(); // I
const productSchema = {
"@context": "https://schema.org",
"@type": "Product",
"name": name,
"brand": {
"@type": "Brand",
"name": brand
},
"offers": {
"@type": "Offer",
"url": url,
"priceCurrency": currency,
"price": String(price),
"availability": availability
}
};
const breadcrumbSchema = {
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": cat1,
"item": "https://example.com/" + encodeURIComponent(cat1.toLowerCase())
},
{
"@type": "ListItem",
"position": 2,
"name": cat2,
"item": "https://example.com/" + encodeURIComponent(cat2.toLowerCase())
},
{
"@type": "ListItem",
"position": 3,
"name": pageName,
"item": url
}
]
};
sheet.getRange(i, 10).setValue(JSON.stringify(productSchema, null, 2));
sheet.getRange(i, 11).setValue(JSON.stringify(breadcrumbSchema, null, 2));
}
}
Що тут важливо:
Productзбирається з фактичних полів сторінки;Offerвключає ціну, валюту та availability;BreadcrumbListбудується як чіткий ланцюжок;- готовий JSON записується прямо в комірки, а далі його вже легко експортувати.
Це й є головна перевага підходу: ви не прописуєте розмітку руками по шаблонах, а генеруєте її як дані.
Як впровадити на сайт без перевантаження CMS
Далі є три робочі сценарії.
Перший — імпорт у базу або шаблон сайту. Це найчистіший варіант, якщо є доступ до розробки і ви можете підставляти JSON-LD із готового поля.
Другий — проміжний експорт. Наприклад, таблиця генерує JSON-фрагменти, а окремий скрипт розкладає їх по сторінках або API.
Третій — вставка через GTM. Це найшвидший шлях для тесту, але не завжди найкращий як фінальна архітектура. Для великого магазину краще, коли дані живуть поруч зі сторінкою й контролюються на рівні шаблону, а не через окремий контейнер.
Як перевіряти результат
Після генерації не можна просто “вірити, що все добре”. Кожен тип розмітки потрібно прогнати через Rich Results Test. Це дозволяє швидко побачити:
- чи читається код взагалі;
- чи немає критичних помилок;
- які поля відсутні;
- що є лише рекомендованим покращенням, а що вже ламає валідність.
Практично найзручніший підхід такий:
- згенерували 5–10 тестових рядків;
- вставили JSON-LD на тестові сторінки;
- перевірили їх у Rich Results Test;
- виправили шаблон;
- лише після цього масштабували на весь каталог.
Де тут реальна вигода для SEO
У мікророзмітки є одна сильна сторона: вона добре масштабується, якщо зроблена через дані. Не через “поставили плагін і забули”, а через контрольований шаблон, таблицю і валідацію. Саме тому Google Sheets для SEO розмітки — це не костиль, а нормальний інженерний інструмент.
Для SEO-фахівця це означає менше хаосу в Search Console. Для власника магазину — швидший сайт і менше залежності від сторонніх модулів. Для розробника — зрозумілий JSON-LD, який легко підтримувати й оновлювати.
Schema без плагінів — це не “складніше”, а навпаки чистіше. Ви берете дані, збираєте з них Product і BreadcrumbList, перевіряєте результат і розгортаєте рівно ту розмітку, яка потрібна вашому магазину. Без зайвого навантаження на CMS, без шаблонних SEO-доповнень і без непередбачуваних конфліктів.
У цьому і є технологічний мінімалізм Rocketware: навіщо платити за плагіни та вантажити сервер, якщо можна зробити це елегантно через дані, таблицю і кілька акуратних рядків коду.
Останні статті

SEO-звіт на автопілоті: єдиний дашборд GA4 + Search Console у Google Sheets
У більшості команд SEO-дані живуть у трьох різних місцях. Search Console показує кліки, покази та середню позицію. GA4 дає сесії, користувачів і конверсії. Окремо ще існ…

Google Maps під контролем: як автоматизувати моніторинг відгуків через Google Sheets
Коли у бізнесу 10+ локацій, ручна перевірка відгуків у Google Maps перестає бути рутиною й стає вузьким місцем. Один менеджер не встигає зайти в кожен профіль, другий ві…

Чому ваш сайт не «летить»? 5 критичних помилок у структурі, які вбивають SEO
Можна купити посилання, написати тексти, оновити мета-теги й навіть прискорити окремі сторінки. Але якщо сам каркас сайту зібраний хаотично, зльоту не буде. Уявіть ракет…

Технічний аудит сайту «на стероїдах»: Знаходимо биті посилання за 5 хвилин
Биті посилання — це одна з тих помилок, які довго не кричать про себе, але повільно отруюють SEO. Користувач бачить 404, дратується і йде. Робот бачить зайві переходи, п…

Автоматизація контенту: Як масово генерувати SEO-теги за допомогою ChatGPT API та Google Sheets
Для великого інтернет-магазину одна з найнеприємніших SEO-задач — це мета-теги. Поки каталог росте, сторінок стає вже не десятки, а сотні й тисячі. Частина товарів залиш…

Local SEO 2026: Як потрапити в ТОП-3 Google Maps для українського бізнесу
Коли людина шукає “СТО Львів”, “стоматологія Київ” або “суші поруч”, вона часто клікає не по звичайній видачі, а по блоку з картою. Саме Local Pack, тобто ТОП-3 у Google…