AI-генерація alt-текстів для товарних зображень
Alt-текст у зображення виконує дві функції: допомагає пошуковику зрозуміти вміст сторінки та робить сайт доступним для незрячих користувачів. У більшості інтернет-магазинів alt-теги або порожні, або містять лише назву файлу на кшталт IMG_4821.jpg. Це втрачений SEO-сигнал і порушення доступності. Згідно з WCAG 2.1, порожній alt-атрибут робить зображення декоративним, а інформативні зображення зобов'язані мати опис. Для каталогу з 10 000 товарів ручне заповнення alt — близько 200 годин роботи копірайтера, що обходиться бізнесу у значну суму.
За наявності тисяч товарних зображень задача вирішується автоматично — або на основі даних про товар, або через мультимодальний аналіз самого зображення. Ми реалізували подібні рішення для 30+ інтернет-магазинів за 5 років, гарантуючи приріст органічного трафіку на 10–25%. Економія бюджету на ручній праці для такого каталогу сягає суттєвих значень. Зв'яжіться з нами для оцінки вашого проєкту.
Які проблеми вирішує генерація alt?
- Ручна праця. Писати alt для 10 000 SKU вручну — тижні роботи. Автоматизація скорочує це до годин, а вартість обробки 1000 зображень через AI мінімальна.
- Однотипні alt. Багато хто генерує alt шаблонно: «Зображення товару» — користі для SEO нуль. Потрібні осмислені, унікальні описи, які підвищують релевантність сторінки.
- Порушення WCAG. Порожній alt робить сайт недоступним для незрячих — це юридичні ризики та втрата аудиторії. Правильний alt-текст для товарів — це не просто опис, а SEO-інструмент.
- Динамічні зображення. Часто alt відсутній у картинок, що підвантажуються через JavaScript (наприклад, вибір кольору товару). Це ще один втрачений SEO-сигнал.
Порівняння підходів
| Характеристика | За метаданими | Мультимодальний (GPT-4o Vision) |
|---|---|---|
| Швидкість генерації | Миттєво | 1–2 секунди на зображення |
| Бюджет | Безкоштовно | Низький |
| Якість alt | На основі даних | Описує видимий вміст |
| Ідеально для | Стандартні фото на білому фоні | Lifestyle, складні сцени, кілька об'єктів |
Мультимодальний підхід кращий за метадані в сценаріях, де важливі візуальні деталі: він бачить форму, колір, позу, оточення. При цьому витрати на 50 000 зображень складуть копійки — набагато менше, ніж ручна робота.
Як працює генерація alt?
Підхід 1: за метаданими
function buildAltFromMetadata( product: Product, imageIndex: number, imageType: "main" | "detail" | "lifestyle" ): string { const base = `${product.brand} ${product.name}`; if (imageType === "main") { return `${base} — фото ${imageIndex + 1}`; } if (imageType === "detail") { const feature = product.attributes.detailFeatures?.[imageIndex] ?? "деталь"; return `${base}: ${feature}`; } return `${base} в использовании`; } Простий, детермінований варіант. Не потребує API-викликів, працює миттєво при імпорті товарів.
Підхід 2: мультимодальний (GPT-4o Vision)
import { openai } from "../lib/openai"; async function generateAltFromImage( imageUrl: string, product: Product ): Promise<string> { const response = await openai.chat.completions.create({ model: "gpt-4o-mini", messages: [ { role: "user", content: [ { type: "image_url", image_url: { url: imageUrl, detail: "low" }, // low — дешевше, достатньо для alt }, { type: "text", text: `Write a concise alt text for this product image in Ukrainian. Product: ${product.name}, brand: ${product.brand}, category: ${product.category}. Rules: - 60–120 characters - Describe what is visible in the image, not the product in general - Start with product name only if it's clearly identifiable in the photo - No "фото", "зображення", "картинка" at the start - No markdown, just plain text`, }, ], }, ], max_tokens: 80, temperature: 0.3, }); return response.choices[0].message.content?.trim() ?? ""; } detail: "low" знижує вартість з ~значної до ~мізерної за зображення — достатньо для генерації alt, не потрібен високий дозвіл.
Пакетна обробка зображень
import { Queue, Worker } from "bullmq"; const altQueue = new Queue("alt-generation"); export async function queueImagesForAltGeneration( productIds: string[] ) { const products = await db.products.findMany({ where: { id: { in: productIds } }, include: { images: true }, }); const jobs = products.flatMap((product) => product.images .filter((img) => !img.altText || img.altText === "") .map((img) => ({ name: "generate-alt", data: { imageId: img.id, productId: product.id, imageUrl: img.url }, })) ); await altQueue.addBulk(jobs); } const altWorker = new Worker( "alt-generation", async (job) => { const { imageId, productId, imageUrl } = job.data; const product = await db.products.findById(productId); // Визначаємо, чи потрібен мультимодальний аналіз const useVision = product.imageType === "lifestyle" || product.useVisionForAlt; let altText: string; if (useVision) { altText = await generateAltFromImage(imageUrl, product); } else { const imageIndex = product.images.findIndex((i: any) => i.id === imageId); altText = buildAltFromMetadata(product, imageIndex, "main"); } await db.productImages.update({ where: { id: imageId }, data: { altText, altGeneratedAt: new Date() }, }); }, { connection: redisConnection, concurrency: 20 } ); Як автоматизувати генерацію alt для всього каталогу?
- Аудит поточного стану — виконайте SQL-запит (див. нижче) та визначте кількість зображень без alt.
- Оберіть стратегію: метадані для простих фото, мультимодальний аналіз для складних.
- Розгорніть мікросервіс з чергами BullMQ та інтеграцією з вашою CMS.
- Налаштуйте моніторинг — відстежуйте кількість оброблених зображень та помилки через Sentry.
Типові помилки alt-текстів
| Помилка | Приклад | Як виправити |
|---|---|---|
| Порожній alt | alt="" | Генерувати осмислений текст |
| Alt як ім'я файлу | alt="IMG_4821.jpg" | Використовувати дані товару або нейромережу |
| Занадто довгий | >125 символів | Обмежити 60-120 символами |
| Шаблонний | alt="фото товару" | Додати унікальні деталі (бренд, колір) |
| Не відображає вміст | alt="червона сукня" на фото синьої | Мультимодальний аналіз |
Вбудовування в CMS
Після генерації alt-текст зберігається в таблиці зображень і рендериться в шаблоні. Якщо alt порожній — фолбек на назву товару, але не порожній рядок.
<img src="{{ image.url }}" alt="{{ image.altText }}" loading="lazy" width="{{ image.width }}" height="{{ image.height }}" /> Аудит існуючого каталогу
Перед запуском генерації корисно зрозуміти масштаб проблеми. Виконайте SQL:
SELECT COUNT(*) FILTER (WHERE alt_text IS NULL OR alt_text = '') AS missing_alt, COUNT(*) FILTER (WHERE alt_text = file_name) AS filename_as_alt, COUNT(*) total FROM product_images; Це покаже, скільки зображень потребують обробки і дозволить спланувати навантаження на API.
Склад робіт
- Аудит поточного каталогу зображень (SQL-скрипт, дашборд)
- Вибір оптимальної стратегії: метадані, мультимодал або комбінація
- Розробка мікросервісу генерації alt (Node.js, BullMQ)
- Інтеграція з вашою CMS (кастомна доробка або middleware)
- Налаштування черг та моніторингу (Redis, Sentry)
- Документація процесу та навчання команди
- Підтримка протягом місяця після впровадження
Терміни реалізації — під ключ від 3 до 10 днів залежно від кількості зображень та складності інтеграції. Вартість розраховується індивідуально під ваш проєкт. Отримайте консультацію — зв'яжіться з нами.
Висновок
Автоматична генерація alt — це не про економію, а про SEO-потенціал та доступність. Ми реалізували такі рішення для 30+ інтернет-магазинів за 5 років. Зв'яжіться з нами для оцінки вашого проєкту — підберемо підхід та розрахуємо навантаження.







