Сайт на JavaScript: щоб пошуковик бачив те саме, що людина
Індексація сайту на JavaScript ламається в одному місці: бот забирає першу відповідь сервера, а контенту в ній ще немає — його збере браузер уже на пристрої. Далі адреса стає в чергу на виконання сценаріїв, і поки вона там стоїть, сторінки у видачі немає. Ми знімаємо два документи — той, що приходить пошуковому агенту, і той, що приходить браузеру, — і зводимо їх до однакового змісту. Спосіб обираємо після заміру, а не до нього: пререндер, попередня генерація і серверний рендеринг різняться за вартістю супроводу в рази.
безкоштовна перевірка того, що отримує бот, 2–3 робочих дні
Перед кошторисом
боту й людині йде однаковий за змістом контент — інакше це вже ризик санкцій
Жорстка умова
згадок у відповідях AI-асистентів: правил відбору не публікує жоден вендор
Чого не обіцяємо
Кому підходить
Ситуації, у яких ця послуга дає результат
Ситуація 1 з 5
Сайт відкривається нормально, а в пошуку його майже немає
Класичний розклад для інтерфейсу-застосунку. Людина заходить і бачить каталог, бот заходить і бачить порожній контейнер із підключеним скриптом. У Search Console такі адреси зазвичай лежать у статусі «просканована, наразі не проіндексована» — і це не покарання, а просто відсутність тексту, який можна було б проіндексувати.
Розберемо вашу ситуацію на безкоштовному аудиті
Ситуація 2 з 5
Контент сторінки приходить окремим запитом після завантаження
Опис послуги, характеристики, ціна тягнуться з API вже після того, як розмітка віддана. Для відвідувача це чверть секунди, для першої відповіді сервера — порожнеча. Перевіряється це за хвилину: запитайте адресу без виконання сценаріїв і подивіться, чи є в тілі відповіді ваш заголовок.
Ситуація 3 з 5
Навігація зроблена на обробниках подій, а не на посиланнях
Кнопка, яка міняє маршрут програмно, для бота не існує: він шукає href і не знаходить нічого. Сайт може мати тисячу сторінок, а бот дійде до чотирьох, на які ведуть звичайні посилання з шапки.
Ситуація 4 з 5
Вам важливо, щоб контент читали не лише пошукові системи
Асистенти й AI-режими пошуку ходять власними агентами і здебільшого сценарії не виконують — бачать те саме, що бот у першій відповіді. Тут одразу межа: читабельність ми забезпечуємо, згадку в чиїйсь відповіді не обіцяємо, бо правил відбору не публікує ніхто, а обсяг переходів звідти поки що малий.
Ситуація 5 з 5
Розробник каже, що Google усе виконує, і формально він правий
Google справді виконує сценарії. Питання в тому, коли й наскільки повно: другий прохід ставиться в чергу, строк якої не публікується і від вас не залежить. На десятку сторінок це не помітно, на кількох тисячах — помітно дуже.
Кейси
Задачі та результат у цифрах — усі показники зняті нашим виміром
клініка пластичної хірургії та естетичної медицини
Задача
Інтерфейс зроблений як застосунок на JavaScript. Треба було, щоб пошуковик і агенти асистентів отримували сторінку з текстом, а не порожню оболонку.
Рішення
Пошуковим агентам віддається повністю зібраний документ; медична розмітка, дані лікаря й хлібні крихти лежать у первинній відповіді; політика для AI-кравлерів винесена в окремі файли.
Результат
Браузер отримує оболонку 3,0 КБ без заголовка й опису за 198 мс, пошуковий бот — зібраний документ 126 КБ (24 КБ у стисненому вигляді) за 145 мс до першого байта і 178 мс до повного документа; сторінка «про нас» — 86 КБ. Карта сайту на 89 адрес, 10 типів структурованих даних, серед них MedicalClinic, Physician і BreadcrumbList. llms.txt на 22 810 байт, robots.txt закриває тренувальні агенти й пускає ті, що ведуть живий трафік. Знайдений дефект: вбудований сніпет диспетчера тегів самоблокується — умова виходу порівнює ідентифікатор сам із собою, тож контейнер не вантажиться взагалі, і аналітики на сайті фактично немає. Розбіжність: у портфоліо заявлено Next.js, за фактом React і Vite. Вимір 31.07.2026.
український виробник негорючих стінових панелей
Задача
Зробити так, щоб характеристики продукції знаходились у пошуку без дзвінка менеджеру.
Рішення
Сайт віддає готовий документ із сервера; дані про організацію, адресу, кількісні характеристики й пошуковий сценарій присутні в первинній відповіді.
Результат
164 адреси в карті сайту, 164 унікальні — жодного дубля. Перша відповідь 244 мс на головній і 208 мс у каталозі продукції, повний документ за 429 мс при вазі 528 КБ. 8 типів структурованих даних: Organization, PostalAddress, Country, QuantitativeValue, SearchAction, WebSite, ImageObject, EntryPoint. robots.txt лишає відкритим каталог і закриває службові розділи /api/, /admin/, /_next/. Заявлений у портфоліо стек збігається з фактичним — у нашій вибірці це радше виняток. Вимір 01.08.2026.
Що входить
Повний перелік робіт і того, що ви отримуєте на виході
Знімаємо дві відповіді на кожному типі сторінки — для пошукового агента й для браузера — і показуємо різницю в байтах і в змісті: далі розмова йде по документу, а не по відчуттях
Обираємо спосіб віддачі готового документа під ваш застосунок і називаємо, що кожен коштує не тільки на впровадженні, а й у супроводі
Переносимо назву сторінки, опис і канонічну адресу в первинну відповідь — сніпет у видачі складається з вашого тексту, а не з випадкового уривка
Віддаємо структуровані дані просто в розмітці: вставлені скриптом доходять до пошуковика не завжди
Перетворюємо навігацію на звичайні посилання — бот отримує шлях углиб каталогу без виконання жодного сценарію
Звіряємо зміст двох відповідей рядок у рядок: саме цей пункт тримає роботу в безпечній зоні
Міряємо час до готового документа для бота після впровадження й фіксуємо цифру письмово
Розділяємо в robots.txt агентів, що ведуть живий трафік, і тих, що збирають дані на тренування — рішення ваше, реалізація наша
Складаємо llms.txt як стислу карту контенту для асистентів: у виміряному нами сайті клініки цей файл важить 22 810 байт
Ставимо ключові адреси на перевірку в Search Console і 30 днів дивимось звіт індексації
Коли ця послуга не підходить
Що не входить у роботу — щоб не було сюрпризів на здачі
Переписування фронтенду на інший фреймворк
Розробка нового інтерфейсу
Обіцянки щодо згадок у відповідях AI-асистентів
Робота з контентом і текстами
Як проходить робота
Прозорі етапи з погодженням на кожному кроці
Загальний строк:10–30 днів
1
Замір поточного стану
2–3 робочих дні
Запитуємо ключові адреси різними агентами й кладемо відповіді поруч: розмір, наявність заголовка й опису, структуровані дані, посилання. На виході — документ із двома колонками, де видно, чого боту не дістається.
2
Вибір способу й межі роботи
1–2 робочих дні
Фіксуємо перелік сторінок, які справді мають бути в пошуку, і спосіб віддачі під них. Тут же ухвалюється рішення щодо AI-агентів: кого пускати, кого обмежити. Це позиція бізнесу, ми лише показуємо наслідки кожного варіанта.
3
Впровадження віддачі готового документа
5–15 робочих днів
Пререндер за агентом або серверний рендеринг маршрутів. Починаємо з одного типу сторінки на тестовому контурі й рухаємось далі лише тоді, коли на ньому відповідь для бота збігається за змістом із браузерною.
4
Метатеги, розмітка й посилання
2–5 робочих днів
Назва, опис, канонічна адреса і структуровані дані переїжджають у первинну відповідь, навігація отримує звичайні посилання. Орієнтир із нашого виміру: у сайті виробника панелей у первинній відповіді лежить 8 типів структурованих даних.
5
Звірка змісту й заміри
1–3 робочих дні
Порівнюємо рядок у рядок, що бачить бот і що людина: розбіжність у змісті — це вже не оптимізація, а ризик. Міряємо час до першого байта й до повного документа для бота, цифри лишаються у вас письмово.
6
Спостереження за індексацією
30 календарних днів
Ключові адреси йдуть на перевірку в Search Console, далі дивимось звіт: скільки сторінок змінило статус і як швидко. Місяць — це не запас часу, це період, за який звіт узагалі встигає зреагувати.
Безкоштовна перевірка того, що отримує бот замість вашої сторінки
Перевірка проста й наочна: ми запитуємо ваші сторінки так, як це робить пошуковик, і порівнюємо відповідь із тим, що бачить браузер. Різниця між цими двома документами і є розмір проблеми.
Що міряємо
Розмір відповіді для бота проти браузераСкільки байтів отримує кожен. Ми міряли сайт, де браузеру приходила оболонка на 3,0 КБ, а пошуковому боту — повністю зібраний документ на 126 КБ.
Наявність контенту в первинній відповідіЧи є в ній заголовок, опис, тексти й посилання — чи все це збирається вже на пристрої.
Метатеги й розміткаЧи потрапляють у первинну відповідь назва сторінки, опис і структуровані дані. Розмітка, вставлена скриптом, доходить не завжди.
Внутрішні посиланняЧи існують вони в розмітці як звичайні посилання. Навігація, побудована на обробниках подій, для бота не існує.
Поведінка для AI-агентівАсистенти здебільшого не виконують сценарії на сторінці. Якщо контент збирається на пристрої, для них сайт порожній.
Час до готового документаЗа скільки бот отримує повну відповідь. У виміряному випадку це 145 мс до першого байта і 178 мс до повного документа — тобто пререндер може бути й швидким.
Що ви отримуєте на руки
Порівняння двох відповідей — для бота й для браузера — з розмірами й вмістом.
Перелік того, що не доходить до пошуковика зараз.
Варіанти рішення з поясненням, що кожен коштує в підтримці, а не лише на впровадженні.
Розмова на 30–40 хвилин по документу.
Строк: 2–3 робочих дні
Чому це безкоштовно
Бо перевірка займає години, а різниця у вартості рішень кратна. Продавати серверний рендеринг там, де достатньо пререндеру, ми не хочемо.
Що далі
Далі — оцінка обраного варіанта по етапах. Один із варіантів завжди «нічого не робити»: якщо бот уже отримує повний документ, роботи немає.
Форма коротка: контакт і адреса сайту
Працюємо офіційно
Договір, акт і рахунок — на кожен проєкт, а не тільки на великий. Без документів у вас немає ні прав на роботу, ні підстави провести витрати.
Договір, акт і гарантія 30 днів
На кожен проєкт письмовий договір: обсяг, строки, сума, порядок приймання. Після здачі — акт і рахунок, а далі 30 календарних днів гарантії: помилки з нашої вини усуваємо безоплатно. Усне з дзвінка дублюємо письмово того ж дня — домовленість, якої немає в тексті, не рахується.
ФОП і безготівковий розрахунок
Виконавець — зареєстрований ФОП. Оплата на рахунок із закривними документами, які бухгалтерія проведе як витрати. Курс для гривневої оплати фіксується договором, а не з’ясовується постфактум.
Права й доступи — ваші
Код, дизайн і матеріали переходять до вас після повної оплати. Домен, хостинг, репозиторій, аналітику й рекламні кабінети оформлюємо на вас — щоб сайт не залежав від підрядника. NDA підписуємо на запит, після завершення свої доступи видаляємо самі.
Портал клієнта замість переписки
На час роботи ви отримуєте доступ до порталу: договори, рахунки, акти й стан проєкту в одному місці. Документи формуються з даних угоди, тому реквізити й суми в них не розходяться, а про оплати й дедлайни нагадує система, а не пам’ять менеджера.
Замовники з Європи
Серед робіт — проєкти для Норвегії, Болгарії та Іспанії: болгарський магазин трьома мовами з кур’єрською доставкою, іспанський з оплатою карткою й переказом, норвезький сайт клініки. Це видно в портфоліо, а не тільки в описі.
Цифри, які можна перевірити
Кожен кейс у портфоліо — з посиланням на живий сайт і технічним виміром: швидкість відповіді, вага сторінки, обсяг каталогу, знайдені дефекти. Ці цифри можна зняти самому й звірити з нашими.
Спершу аудит, потім сума
Прайсу на сайті немає навмисно: обсяг тієї самої роботи у двох клієнтів відрізняється в рази, і цифра «від» нічого не пояснює. Спершу безкоштовний розбір — рахуємо ваші сторінки, дублі й швидкість, — потім називаємо суму й строк і фіксуємо їх у договорі.
Кажемо «ні», коли не впевнені
Якщо задача не наша, строк нереальний або послуга вам просто не потрібна — скажемо це першим листом, а не після передоплати. Гарантій позицій у пошуку не даємо: їх не дає ніхто, а обіцянка без механізму — це продаж, а не робота.
NDA підписуємо на запит. Після завершення співпраці наші доступи до ваших сервісів видаляємо самі й повідомляємо про це.
Не знайшли свій випадок?
Опишіть, як це влаштовано у вас, — відповімо, чи підходить «JS-рендеринг для пошуку» і що це означає у вашій ситуації. Без брифу й без дзвінка: одне питання, одна відповідь.
Що впливає на вартість
Чому дві однакові на вигляд задачі рахуються по-різному — і що саме ми міряємо на аудиті
Який спосіб віддачі підходить саме вамПререндер лягає поверх наявного застосунку й чіпає лише шар віддачі. Перехід на серверний рендеринг переписує маршрути й роботу з даними. Різниця між цими двома варіантами вимірюється не відсотками.
Скільки типів сторінок мають бути в пошукуГоловна, категорія, картка, стаття — кожен тип розбирається окремо: свої дані, свої метатеги, своя розмітка. Двадцять маршрутів у застосунку не означають двадцять типів; зазвичай їх чотири-шість, і саме це число рухає кошторис.
Звідки береться контент сторінкиОдин запит до вашого ж API — готовий документ збирається просто. Три джерела, частина з яких відповідає лише після дії користувача, — кожне доводиться розбирати окремо, і саме тут строк починає рости.
Хто веде фронтендЄ розробник, який знає застосунок, — ми віддаємо правки й перевіряємо результат. Немає — входимо в чужий код, і перший тиждень іде на те, щоб зрозуміти, як він збирається.
Чи потрібен нагляд за шаром віддачіПререндер ламається тихо: віддає стару сторінку без жодної помилки, і помічають це через місяці. Моніторинг цього шару ми виносимо окремим рядком, а не ховаємо в «супровід».
Технології та інтеграції
На чому будуємо і з чим це з’єднується
Стек
Серверний рендеринг — найчистіший варіант: документ збирається на сервері. Ціна питання — навантаження, якого раніше не було, і потреба в кеші
Попередня генерація на збірці — найшвидша віддача, але кожна зміна тексту вимагає перезбірки. Каталогу, що змінюється щогодини, не підходить
Пререндер за агентом — стає поверх готового застосунку за дні. Це окремий шар, і ламається він тихо: віддає стару сторінку без жодної помилки
Next.js — тримає всі три режими на рівні маршруту. Але переїзд на нього з Vite — це переїзд застосунку, а не налаштування
Search Console, перевірка URL — єдине місце, де видно, що Google справді отримав. Показує одну адресу за раз і з відкладенням
llms.txt і robots.txt — керують доступом агентів. Сила в них лише над тими, хто їх поважає: механізму примусу тут немає
Інтеграції
Google Search Console
Bing Webmaster Tools
GA4
Cloudflare
Готовий документ проти надії на чергу рендерингу
Чим цей варіант відрізняється від «Лишити як є: Google сам виконає сценарії»
Лишити як є: Google сам виконає сценаріїНаш підхід
Коли контент стає видимим ботупісля другого проходу, строк якого не публікується і від вас не залежитьу першій же відповіді сервера
Інші читачі вашого контентуздебільшого сценарії не виконують і бачать порожній контейнерBing, асистенти й агенти отримують те саме, що Google
Що видно з браузераусе виглядає нормально, поки хтось не запитає сторінку як ботрізниця зафіксована в документі з двома колонками
Ціна рішеннянуль витрат зараз і невідомий строк появи сторінок в індексівпровадження плюс шар, який доведеться супроводжувати
Що потрібно від вас
Без цього не почнемо — краще підготувати заздалегідь
1Адресу сайту й дві-три сторінки, які для вас найважливіші: з них починається замір.
2Доступ до коду фронтенду або до розробника, який його супроводжує.
3Розуміння, які екрани мають бути в пошуку: не всі маршрути застосунку туди потрібні, і зайві краще відсікти на старті.
4Доступ до Search Console — без нього ми бачимо свій замір, але не бачимо, що з цим зробив Google.
5Рішення щодо AI-кравлерів: пускати, обмежувати чи закривати. Це позиція бізнесу, а не техніки, і ухвалити її має людина з вашого боку.
Якщо чогось із цього немає — скажіть, підкажемо, як зібрати або зробимо самі окремою задачею.
Часті питання
Те, що питають найчастіше — з конкретними відповідями
Google же виконує JavaScript — навіщо тоді все це?
Виконує, але у два проходи. Перший забирає розмітку, другий ставить адресу в чергу на виконання сценаріїв, і строк цієї черги не публікується. На сайті з десятка сторінок різницю ви не помітите; на кількох тисячах вона перетворюється на місяці, протягом яких частина каталогу просто не існує для видачі. Друга частина відповіді важливіша: Google — не єдиний читач. Bing, агенти асистентів, парсери маркетплейсів і сервіси, які будують попередній перегляд посилання в месенджері, здебільшого сценарії не виконують узагалі.
пререндер для ботів — це не приховування контенту?
Ні, поки боту й людині йде однаковий за змістом документ. Порушенням є показ ботові одного тексту, а відвідувачу — іншого; форма подачі при цьому може відрізнятись, і це нормально. Тому в наших етапах є окремий пункт звірки: ми порівнюємо два документи рядок у рядок і письмово фіксуємо, що вони збігаються. Якщо у вас є бажання підсунути боту додаткові ключові слова, яких людина не побачить, — це не до нас, і не тому, що ми обережні, а тому, що прилітає за це саме вам.
що вибрати: серверний рендеринг чи пререндер для ботів?
Залежить від застосунку й від того, скільки ви готові платити за супровід. Серверний рендеринг чистіший: документ збирається на сервері для всіх однаково, окремого шару немає. Але він зачіпає маршрути й роботу з даними, і сервер починає нести навантаження, якого раніше не було. Пререндер ставиться поверх готового застосунку за дні й коштує менше — ціна в тому, що це додатковий шар, який ламається без жодного повідомлення: сторінка віддається стара, помилки немає, помічають через місяць. Ми називаємо обидві цифри, впровадження й нагляд, і рішення лишається у вас.
як зрозуміти, що проблема саме в рендерингу?
Запитати сторінку двічі — як браузер і як пошуковий агент — і покласти відповіді поруч. У виміряному нами сайті клініки браузер отримує оболонку на 3,0 КБ, у якій немає ні заголовка, ні опису, а пошуковий бот — зібраний документ на 126 КБ. Деталь, яка збиває з пантелику: боту при цьому відповідають ШВИДШЕ, ніж браузеру — 145 мс проти 198 мс, бо готовий документ уже лежить, а оболонку ще треба зібрати. З браузера все виглядає бездоганно, і саме тому проблему знаходять пізно.
у Search Console сторінки в статусі «просканована, наразі не проіндексована» — це воно?
Часто так, але не завжди. Цей статус означає, що бот адресу забрав і вирішив поки не класти в індекс. Причин дві великі групи: у відповіді не було контенту (це наш випадок) або контент був, але виглядає надто схожим на сусідні сторінки чи надто порожнім по суті. Розрізняється це за хвилину: подивіться в інструменті перевірки URL, що саме бачив бот. Якщо там оболонка без тексту — питання до рендерингу. Якщо текст є, а індексації немає — питання вже до контенту, і це інша послуга.
чи впливає це на видимість в AI-асистентах?
Впливає на можливість, не на результат. Агенти читають те, що віддано в розмітці одразу; якщо там порожньо, вас процитувати нічим. Але жодних обіцянок щодо згадок ми не даємо: правил відбору не публікує жоден вендор, гарантій немає ні в кого, а обсяг переходів звідти поки що малий порівняно зі звичайним пошуком. Це робота на випередження з невідомою віддачею, і ми говоримо про неї саме так. Окремо про блокування тренувальних агентів: воно не прибирає ваш контент із моделей, які вже навчені.
чи доведеться переписувати сайт на інший фреймворк?
У більшості випадків ні, і ми навмисно починаємо не з цього. Спершу перевіряємо, чи ваш поточний застосунок уміє віддавати готовий документ хоча б на потрібних маршрутах — часто вміє, просто цим ніхто не займався. Порада, яку ми даємо частіше за інші: не міняйте фреймворк заради пошуку. Переїзд з одного стека на інший — це переїзд усього застосунку з новими помилками, і поруч із ним пререндер на чотирьох типах сторінок виглядає як робота на тиждень. Переписування фронтенду в цю послугу не входить узагалі.
скільки це триває і коли буде видно ефект?
Самі роботи — 10–30 робочих днів залежно від обраного способу: пререндер швидший, серверний рендеринг зачіпає архітектуру, і строк там залежить від того, наскільки застосунок до неї готовий. Ефект в індексі рухається повільніше за роботи: після змін адреси йдуть на перевірку, і місяць ми просто дивимось звіт. Це не наша повільність — це швидкість, з якою пошуковик переобходить сайт, і прискорити її ззовні неможливо.
Надішліть адресу сайту й дві-три сторінки, які для вас найважливіші.
У відповідь — дві відповіді сервера поруч: та, що отримує браузер, і та, що отримує пошуковий агент, з розмірами й переліком того, чого в другій бракує. Якщо там уже все на місці, скажемо це першим же листом.
Прайса на сайті немає навмисно: обсяг тієї самої роботи у двох клієнтів відрізняється в рази, і цифра «від» у такому разі нічого не пояснює. Спершу безкоштовний аудит — рахуємо ваші сторінки, дублі й швидкість, — потім називаємо суму й строк і фіксуємо їх у договорі.