Страница спам-политик Google в последний раз обновлялась 28 августа 2026. Для тех, кто генерирует страницы, важен один её раздел:
Scaled content abuse is when many pages are generated for the primary purpose of manipulating search rankings and not helping users.
Под ним список примеров, и в одном из них синонимизация названа прямо:
Scraping feeds, search results, or other content to generate many pages (including through automated transformations like synonymizing, translating, or other obfuscation techniques), where little value is provided to users
Синонимизация названа рядом с переводом, обе как техники обфускации. Если у вас работает движок spintax, эта фраза называет одно из того, что умеет ваш инструмент, и вопрос не в том, осуждает ли Google сам инструмент. Вопрос в том, подпадают ли ваши страницы под это описание. Это можно измерить, и результат замера неудобный: метрики, которыми принято доказывать «уникальность» страниц, поощряют именно ту схему, которую Google называет по имени.
Как это применяют: то, что известно от самого Google
В 2026 году вышло три спам-обновления, и для каждого Search Status Dashboard указывает сроки: с 24 по 25 марта, с 24 по 26 июня и с 18 по 21 августа. На странице августовского инцидента сказано только, что обновление действует по всему миру и на всех языках. На какую политику опирается обновление, Google не сообщает, а в отчёте Search Console, где перечислены ручные санкции, нет пункта с названием scaled content abuse. Термин встречается там один раз, внутри пункта о серьёзных проблемах со спамом, рядом с более старым пунктом о малосодержательных страницах без добавленной ценности.
Зато Google объясняет, как политику следует читать. Из поста марта 2024 года, которым её ввели:
This abusive practice is typically focused on creating large amounts of unoriginal content that provides little to no value to users, no matter how it’s created.
И о том, о чём спрашивают все:
Our new policy is meant to help people focus more clearly on the idea that producing content at scale is abusive if done for the purpose of manipulating search rankings and that this applies whether automation or humans are involved.
Нарушение не в методе. Нарушение в страницах и в том, зачем они сделаны. Вторую половину никакой замер не увидит; первую можно выразить в цифрах, и это как раз то, что синонимайзер делает с набором страниц.
Пятьдесят страниц, один каркас
Пул — пятьдесят страниц одной услуги, сантехника, по городам, примерно по 70 слов каждая; так устроена тысяча программатик-сайтов. В каркасе 32 места, где можно включить набор синонимов, по три варианта в каждом. Движок — открытый @spintax/core, метрика собрана из тех же двух составляющих, по которым его нода для n8n оценивает уникальность пула: шинглы по пять слов над нормализованным текстом и сходство Jaccard между множествами шинглов. Здесь сходство считается для каждой пары страниц и усредняется. Две одинаковые страницы дают 1.000; страницы без единого общего отрезка из пяти слов дают 0.
| Включённых синонимических слотов | Среднее попарное сходство | Что изменилось на странице |
|---|---|---|
| 0 | 0.599 | только название города, четыре раза |
| 4 | 0.511 | четыре фразы |
| 8 | 0.434 | |
| 16 | 0.300 | |
| 24 | 0.142 | |
| 32 | 0.037 | почти каждое второе слово |
При 32 слотах у пятидесяти страниц почти не остаётся общего, что могла бы увидеть шингл-метрика. На бумаге каркас даёт 3 в степени 32 различных рендеров, около 1.85e15. Каждый из них предлагает ту же услугу в том же городе. Там, где синоним меняет обещание, «в тот же день» против «на следующий», это решил не человек, а жребий. Читатель, увидевший одну страницу, видел предложение на всех остальных. Это та схема, которую описывает пример из политики, и число, похожее на успех, 0.037, описывает её же. Google не публикует ни порога, ни метрики; число показывает лишь то, что метрика такого рода не отличает эту схему от её противоположности.
Теперь в обратную сторону. Тот же каркас, вообще без синонимов, но на каждый город пять значений, привязанных к переменным, на месте фактов: почтовый индекс, год открытия филиала, число выполненных заказов, обычное время приезда, местный рейтинг. В скрипте они синтетические, и для того, что здесь измеряется, формы текста, этого достаточно; для того, что не измеряется, правдивы ли они, нет.
| Пул | Среднее попарное сходство |
|---|---|
| Пять значений на город, без синонимов | 0.405 |
| Значения, три формы предложения в каждом слоте, порядок предложений перемешан | 0.051 |
Страницы со значениями получают по уникальности оценку хуже, чем синонимизированные: 0.405 против 0.037. По метрике подозрительны те страницы, которые построены, чтобы сообщить что-то о Бойсе, а чисты те, которые говорят каждому городу одно и то же разными прилагательными. Оценка уникальности измеряет плотность вариаций. Есть ли странице что сказать, она не измеряет.
Тест удалением
Есть тест, который показывает, откуда берутся различия. Замените каждое значение, пришедшее из данных, включая город, заглушкой и посчитайте снова. Останется шаблон, а шаблон и есть то, что читатель получает на каждой странице.
| Пул, значения удалены | Среднее попарное сходство |
|---|---|
| 32 синонимических слота | 0.071 |
| Пять фактов, без синонимов | 1.000 |
| Факты плюс формы предложений и порядок | 0.103 |
Пул со значениями схлопывается до 1.000, и иначе быть не может: без значений это один текст пятьдесят раз. Это честно, потому что значения и были различиями. Синонимизированный пул остаётся на 0.071, хотя значений в нём не осталось, и в этом весь смысл. Он никогда не нёс информации, поэтому и удаление информации его не меняет.
Правило, которое из этого следует, короткое. Удалите каждое значение, пришедшее из данных. Если осталось пятьдесят страниц, различия шли из шаблона, и это та схема, что в примере Google. Если осталась одна страница, различия шли из набора данных и стоят столько, сколько стоит набор; стоят ли чего-то сами страницы, тест не скажет. Весь эксперимент — один файл, measure.mjs, ему нужны Node и движок из npm, пул он рендерит примерно за секунду:
npm install @spintax/core@0.6.1
node measure.mjs
Где проходит граница
| Схема | Пример у Google | Что может сказать движок |
|---|---|---|
| Один каркас, синонимические слоты, название города | синонимизация как обфускация | ничего полезного: в этом шаблоне оценка улучшалась с каждым включённым слотом, что бы синонимы ни добавляли |
| Один каркас, факты на страницу из набора данных | шаблон вокруг данных; политика спрашивает, помогают ли данные читателю | тест удалением показывает, идут ли различия из данных |
| Несколько каркасов, факты, перемешанная структура | тот же вопрос, с прозой получше | уникальность пула и линт, только по форме |
| Тысячи страниц, любой вариант выше, никто их не читает | “many pages generated for the primary purpose of manipulating search rankings” | ничего: масштаба и намерения в тексте нет |
Сторонние разборы августовского обновления, опубликованные GSQi 31 августа, описывают сайты последнего типа: программатик-страницы по разным странам с разделами, написанными AI; у одного сайта больше 1.5 миллиона проиндексированных URL и примерно 85 процентов программатик-контента. Это цифры их мониторинга, не Google, и ни один разбор не говорит, какая политика была применена. Но форму они описывают, и это верхняя строка таблицы, только в масштабе.
Где это ломается
Всё, что выше, измеряет форму. Шингл-метрику спиннер обходит за вечер, это первый результат. Тест удалением одними синонимами не обойти, но его можно пройти мусором: набор выдуманных рейтингов и придуманного времени приезда прошёл бы его, а откуда взялось значение, скрипт не проверяет. Это рассуждение, а не строка в таблице, и потому тест отвечает на вопрос «есть ли здесь данные», а не «хороши ли эти данные». Линт находит слово, повторённое в двух слотах, и местоимение, оставшееся без существительного; ложное утверждение он не найдёт.
И ни одна метрика не знает, зачем страницы существуют. Определение Google опирается на цель, “the primary purpose of manipulating search rankings”, а цели в тексте нет. У каталога с тысячей товаров тысяча страниц, потому что товаров тысяча. У сайта с тысячей городов тысяча страниц, потому что кто-то внёс тысячу городов в таблицу. Движок рендерит и то, и другое.
Для чего тогда spintax
Прочтение, которое выдерживает цифры, такое: spintax — это слой упаковки для данных, а не их замена. Переменные, условия и согласование по числу нужны, чтобы один шаблон мог сказать правду о каждой из тысячи записей и грамматика при этом не разваливалась; гайды по авторингу на spintax.net учат именно в этом порядке: сначала данные, синонимы в последнюю очередь. Шаблон с тридцатью синонимическими слотами и одной переменной — это случай из политики. Шаблон с пятью переменными и тремя формами предложения — это товарный фид, на который надета проза. В холодных письмах та же арифметика работает в обратную сторону: там вопрос, каким наименьшим числом групп обходится объём рассылки; это измерено отдельно.
Инструменты держатся той же линии. Операция уникальности в ноде для n8n сообщает долю общих шинглов пула, и её документация прямо говорит, что это число может и чего не может: один шаблон даёт 0.962, шесть шаблонов при том же размере пула дают 0.017, и добавление вариантов того же шаблона ничего не исправляет, потому что каркас задан шаблоном. Это та же строка про 32 слота, только с другой стороны.
Где заканчивается ручной путь
Для одного шаблона и одной таблицы тест удалением и скрипт выше — вся работа: отрендерить, удалить, сравнить, прочитать несколько страниц глазами. Труднее становится, когда пул собирается в конвейере: черновик шаблона пишет модель, факты подаёт фид, и страницу 812 никто не читает. В этой точке проверка должна жить внутри конвейера, а не после него, и именно это делает нода Spintax для n8n: проверяет черновик, рендерит пул, прогоняет линт по каждому рендеру, меряет уникальность пула и возвращает модели то, что не прошло, с указанием проблемного токена. Движок под ней — тот же открытый пакет, которым мерила эта статья. Её проверка уникальности отдаёт footprint пула и пары почти совпадающих страниц, это две другие агрегации, не попарное среднее, которое приводится здесь, так что её цифры читаются в своей шкале. Тест удалением в неё не встроен; он остаётся скриптом, который вы запускаете сами.