Короткий ответ
Из датасета можно за неделю получить тысячу посадочных. Тысяча ли это страниц или одна страница, повторённая тысячу раз, — решается в таблице, задолго до того, как отработает шаблон.
Строка — это обещание, которое странице придётся выполнить
В каталоге услуга называется «Programmatic SEO: сотни посадочных из одной таблицы», категория — «Генерация страниц», цена — $500 – $2 500, а сложность обозначена без смягчений: «Дорого и сложно». Описание объясняет механику прямо и коротко: из одного датасета рождаются сотни или тысячи посадочных под низкочастотные запросы вроде «услуга + город» или «товар + параметр». Всё по-настоящему трудное в таком проекте спрятано ровно в одном слове — датасет, и именно на нём проекты и разваливаются.
Шаблон — самая скучная часть системы, и именно поэтому на нём чаще всего всё и заканчивается. Шаблон это фиксированная фраза с дырками, а дырки, заполненные из колонки с названиями городов, дают одну фразу, повторённую триста раз подряд. Человек, попавший на двенадцатую такую страницу, читает не новую страницу. Он читает ту же самую, где заменили существительное в заголовке, и поисковая система оценивает её ровно на тех же основаниях.
Поэтому вопрос «сколько страниц можно сделать из таблицы» бесполезен. Полезен другой: что знает конкретная строка такого, чего не знает ни одна соседняя. Если строка «Казань» отличается от строки «Самара» только словом в заголовке, в таблице лежит одна страница, а не две. Если они отличаются ценой, сроком доставки, наличием, местным подрядчиком, требованиями и фотографией, снятой в этом городе, — страниц уже две, и, скорее всего, найдётся место ещё для нескольких.
По этому шву проходит вся дальнейшая работа. Дистрибуция — это когда реально существующие внутри бизнеса различия получают устойчивые адреса, до которых дотягивается поиск и которые не стыдно сохранить в закладки. Дублирование — это когда адреса производятся под различия, которых нет нигде, кроме цикла генерации. Внутри пайплайна оба случая выглядят одинаково и собираются одним и тем же кодом. Расходятся они только содержимым строки, а значит, это задача про данные задолго до того, как станет задачей про публикацию.
Массовый малоценный контент: приговор выносят содержанию, а не способу производства
У этого способа провалиться есть официальное имя — злоупотребление масштабной генерацией контента, — и в формулировке важнее всего то, чего в ней нет. Там не написано «сгенерировано». Не написано «автоматически», «по шаблону» или «нейросетью». Там описаны страницы, произведённые в количестве и не дающие ценности тому, кто на них пришёл, а способ производства прямо объявлен несущественным для итогового решения. Лазейки в этом определении нет ни для машины, ни для человека с клавиатурой.
Формулировка неудобна тем, кто искал техническое исключение, и удобна тем, кто строит аккуратно. Написанная руками пустая страница попадает в ту же категорию, что и пустая страница, собранная машиной. Страница, собранная машиной, но несущая реальные остатки, реальные цены, реальные сроки и реальную фотографию, в эту категорию не попадает вовсе, и никакие пояснения о способе сборки этого не изменят — ни в одну сторону, ни в другую.
Практический вывод неприятен для копирайтера и приятен для аналитика: работа по соответствию правилам делается в таблице, а не в тексте. Из пустой строки нельзя выписаться красивым абзацем. Из неё можно только не публиковать страницу. Поэтому в любом серьёзном проекте есть узел, который в простых сборках отсутствует: правило, решающее по каждой строке, хватает ли в ней содержимого на отдельный URL, и заранее определённый маршрут для строк, которые это правило не прошли.
Если поставить такой узел в центр проекта, а не приделать в конце как страховку, меняется всё остальное. Меняется схема данных, потому что правилу нужны поля, которые можно проверить. Меняется структура обхода, потому что отбракованные строки не должны попадать ни в sitemap, ни во внутренние ссылки. И меняется смета — собственно, отсюда и растёт каталожная сложность «Дорого и сложно»: дорого стоит фильтр, а вовсе не цикл, который рендерит страницы.
Пять вещей, без которых строка не заслуживает URL
Первое — самостоятельный спрос. Кто-то должен искать именно это сочетание. Таблица легко перемножит двести услуг на четыреста городов, и все восемьдесят тысяч пар будут существовать, хотя вводить руками будут лишь часть из них. Строки без сигнала спроса — это не страницы, которые плохо работают. Это страницы, на которые никто и не собирался приходить, и единственный измеримый эффект от них приходится на краулинговый бюджет, то есть на скорость обхода всего остального сайта.
Второе — хотя бы один факт, который меняется от строки к строке нетривиально. Не существительное в заголовке, а число, дата, ограничение, имя, правило, действующее здесь и не действующее рядом. Третье — проверяемая сущность за строкой. Если страница утверждает, что услуга есть в этом городе, услуга в этом городе должна быть, потому что быстрее всего проект убивает не алгоритм, а живой человек, обнаруживший, что адрес существует, а предложения за ним нет.
Четвёртое — конкретное следующее действие, принадлежащее именно этой строке: местный контакт, фактическое наличие, нужная форма, честный срок. Один общий призыв на десять тысяч страниц — это честный сигнал о том, что и страницы общие. Пятое — владелец и дата обновления, потому что строка, которая была верна в день публикации и тихо стала неверной через полтора года, — это тот же самый провал, только растянутый во времени и оттого более дорогой.
Пять условий — жёсткий фильтр, и он задуман жёстким. Применённый честно к таблице на двадцать тысяч строк, он обычно оставляет несколько тысяч, и именно эти несколько тысяч оправдывают каталожную вилку $500 – $2 500. Проект, который фильтр не пережил, ничего при этом не потерял: он просто узнал до публикации то, что иначе узнал бы после — в худший момент, при большем бюджете и с гораздо меньшим пространством для манёвра.
Где таблица перестаёт вести себя как таблица
Датасет, аккуратный на экране, на девятитысячной строке ведёт себя совершенно иначе. Появляются пустые ячейки, которых схема не предполагала. Один и тот же город записан тремя способами. Два поставщика меряют одно и то же в разных единицах. В колонке с ценой где-то диапазон, а где-то одно число. Пока таблицу читает человек, это неважно и даже незаметно. Как только значение подставляется прямо в заголовок страницы, важным становится каждое из этих расхождений.
Джойны хуже пропусков. Программатик почти всегда собирается из двух и более источников — каталог и география, фид и спецификация, остатки и правило ценообразования, — и ключ склейки редко бывает таким же чистым, как на первой сотне строк. Строки, которые не склеились, не исчезают сами собой. Они превращаются в страницу с заголовком, одной шаблонной фразой и пустотой под ней — ровно та форма, которую и описывает правило о массовом малоценном контенте.
Защита выглядит неэффектно и при этом работает: проверка данных запускается до рендера, а не после публикации, с явными правилами по каждому полю и явным маршрутом для каждой ошибки. Прошедшие строки становятся страницами. Не прошедшие идут в очередь на ручной разбор, или в сводную страницу, которая честно их агрегирует, или никуда вообще. Единственный вариант, которого быть не должно, — строка, которая тихо не прошла проверку и всё равно стала страницей.
Отсюда и срок в каталоге: «3–7 дней на пилот в 500–1000 страниц», а не полдня. Цикл рендера по действительно чистой таблице занимает как раз полдня, и это единственная простая часть работы. Дни уходят на то, чтобы решить, что для этого конкретного датасета значит слово «чисто», написать проверки, которые это определение удерживают, и глазами прочитать отбракованные строки до того, как хоть один URL увидит краулер.
Метатеги — слой клика, а не слой ценности
Вторая услуга в каталоге — «Массовая генерация title и description через ИИ», категория «Метатеги», цена $150 – $700 за пакет, производительность указана прямо: «3–6 часов на 500 страниц после настройки промпта». Сложность самая мягкая из возможных — «Новичок». Описание не обещает лишнего: сотни title и description переписываются за день, уникальные, в пределах длины, с внятным призывом и без спама; позиции те же, а кликов больше. Последняя половина фразы здесь важнее первой.
Её стоит прочитать медленно, потому что в ней и весь аргумент за услугу, и вся её граница. Метатег не поднимает страницу в выдаче. Он меняет то, сколько людей выберут её из тех, кто её уже видит. Страница на одиннадцатой позиции с прекрасным описанием остаётся на одиннадцатой. Страница на четвёртой, у которой в описании наконец написано, что внутри, забирает другую долю кликов — тех самых, на которые она и так имела полное право.
Поэтому услуги идут именно в таком порядке, а не наоборот. Массовая генерация метатегов поверх набора тонких, почти одинаковых страниц даёт набор тонких, почти одинаковых страниц с хорошими заголовками, а хорошие заголовки просто быстрее приводят людей туда, где им нечего делать. Эффект настоящий, когда на странице что-то есть, и чисто косметический, когда нет, и промпт снаружи эту разницу не различает — различает её только тот, кто смотрел в данные.
Структура цены говорит ровно то же самое. Малый объём считается постранично — «300–800 ₽ за страницу», — а пакеты целиком: «пакет 100 страниц — 15 000–35 000 ₽, 1000 страниц — от 50 000 ₽». Цена страницы падает с ростом объёма потому, что дорого стоит не генерация, а промпт, правила длины и выборка на ручную проверку. По той же самой причине заявленные часы начинают идти только после настройки промпта.
Пилот в 500–1000 страниц — это вопрос, заданный индексу
Каталог здесь необычно точен в границах: «3–7 дней на пилот в 500–1000 страниц». Пилот такого размера — не репетиция настоящей сборки, и относиться к нему как к репетиции вредно и дорого. Это вопрос, заданный поисковой системе на единственном языке, на котором она отвечает: опубликуйте ограниченный честный образец той формы, которую собираетесь производить тиражом, и посмотрите без спора, что индекс с этим образцом сделает за следующие недели.
Ответ читается однозначно и не требует интерпретаций. Страницы обошли и проиндексировали — форма принята, оставшийся риск связан со спросом, а не с качеством. Обошли и не проиндексировали — в строке не хватает содержимого на страницу, что бы ни говорил про неё шаблон, и масштабирование лишь размножит уже полученный отказ. Не обошли вовсе — виноваты внутренние ссылки или sitemap; это сантехника и самая дешёвая в починке из трёх проблем.
Рублёвые ступени в каталоге проведены ровно по этому шву: общая вилка «30 000 – 100 000 ₽», а внутри неё «пилот 500–1000 страниц — 30 000–50 000, масштабирование до 2000–5000 — 70 000–100 000». Вторая ступень выше не потому, что лишние страницы дороже рендерятся: рендер как раз дешевеет. Она выше потому, что на этом объёме фильтр, мониторинг и цикл обновления обязаны работать без ежедневного человеческого присмотра.
Дисциплина, которая делает пилот осмысленным, — отказ масштабироваться по календарю. Первыми публикуются самые сильные строки таблицы, а не случайная выборка, потому что задача пилота — выяснить, работает ли лучший случай, прежде чем платить за средний. Если лучшая тысяча строк не встала в индекс, оставшиеся девятнадцать тысяч — это не план роста, ожидающий бюджета, а таблица, которой не хватает колонок, и лучше узнать это сейчас.
Квартальный план решает, что не будет сгенерировано никогда
Третья услуга — «Контент-план на квартал с брифами под ИИ-выдачу», категория «Контент-стратегия», цена $200 – $700, срок «1–2 дня». Описание конкретно про результат: готовый план на три месяца — какие статьи и посадочные писать, в каком порядке, под какие кластеры и с каким ожидаемым эффектом, причём к каждой теме приложен бриф, по которому автор напишет текст без вашего участия. Это важная деталь: план заканчивается не идеями, а заданиями.
В программатик-проекте план делает то, чего сборка не может сделать сама. Он решает, какие кластеры законно генерируются, а какие нет ни при каких условиях. Сравнительные страницы по сетке характеристик генерируются спокойно. Гайд по норме, изменившейся в прошлом квартале, — нет, и таблица, которая всё-таки попробует, произведёт самые уверенно неверные страницы на сайте. План — это документ, где такое разделение проводится намеренно, а не обнаруживается постфактум.
Бриф превращает разделение из намерения в проверяемое требование. Бриф, в котором названы вопрос страницы, обязательные факты и источник каждого факта, — это спецификация, которую может выполнить человек и по которой можно тестировать конвейер. Он же вскрывает пустые темы заранее: если в брифе не набирается трёх вещей, которые обязаны быть на странице, то и темы нет, а узнать это на этапе планирования не стоит практически ничего.
За $200 – $700 и один-два дня это самая маленькая строка сметы из трёх и одновременно та, что сильнее всего меняет остальные две. Рублёвая линия называет ступени прямо: «мини-стратегия ~15 000, стандарт ~30 000, развёрнутая — 50 000–70 000». Покупается здесь порядок: какие кластеры уходят в пилот, какие пишутся руками, какие ждут следующий квартал. Именно в порядке и лежит большая часть риска всего предприятия.
Арифметика, которую покупатель считает сам
Производительность по метатегам в каталоге указана как «3–6 часов на 500 страниц после настройки промпта». Как пример пересчёта этой вилки на бумаге — это арифметика, которую читатель повторит сам, а не измерение чьего-то проекта, — 2000 страниц при той же скорости укладываются в промежуток от 12 до 24 часов, а 5000 страниц — от 30 до 60. Такую оценку покупатель проверяет до того, как на что-либо соглашается.
То же упражнение на сборке страниц интереснее тем, чего оно не даёт. «3–7 дней» покрывают пилот в 500–1000 страниц, но дни не делятся на страницы, потому что почти вся работа здесь не постраничная. Удвоение количества строк не удваивает срок. Срок двигают число источников и строгость фильтра публикации. Стоимость в этой работе следует за структурой, а не за объёмом, и это стоит проговаривать вслух до подписания сметы.
Отсюда же честное чтение трёх вилок, поставленных рядом. $500 – $2 500 за генерацию страниц, $150 – $700 за пакет метатегов, $200 – $700 за квартальный план: разброс внутри каждой — это расстояние между одним чистым источником и несколькими грязными, между шаблоном и шаблоном с правилами, между планом на один кластер и планом на целый квартал. Объём двигает внутри вилки. Сложность двигает между вилками, и разница ощутимее.
Покупатель, который это усвоил, перестаёт торговаться за цену страницы и начинает задавать более полезный вопрос: какая часть таблицы уже чистая и можно ли сократить число источников до сборки, а не латать их по ходу проекта. Такой разговор двигает смету надёжнее любого торга, потому что меняет саму работу, а не наценку поверх неё, и обе стороны выходят из него с более честным планом.
У каждого способа провалиться есть имя и есть починка
Подмена города: страницы, отличающиеся только именем собственным. Проверяется грубо — возьмите любые две, удалите меняющийся токен и сравните остаток. Если остаток одинаковый, значит, страницы одинаковые, сколько бы знаков в них ни было. Чинится это не синонимайзером и не перефразированием, они лишь маскируют проблему на один апдейт. Чинится добавлением поля, которое действительно различается, или объединением строк в одну страницу, честно описывающую весь набор.
Ферма сирот: тысячи страниц, доступных только из sitemap, без входящих и без исходящих ссылок. Страница, на которую никто не ссылается, читается как страница, которая никому не нужна, а sitemap — это заявка на обход, а не подтверждение ценности. Чинится структурно: хабы по кластерам, ссылки на соседние строки по реальным связям в данных и жёсткий предел того, насколько далеко сгенерированная страница может стоять от ближайшего к ней хаба.
Протухшая таблица: сборка работает, страницы стоят в индексе, а источник больше никто не обновляет. Через полтора года цены неверны сразу на девяти тысячах страниц — это качественно другая проблема, чем одна неверная страница. Чинится назначенным на старте владельцем, записанным рядом со сборкой ритмом обновления и автоматическим снятием с публикации тех строк, у которых вышел срок, а перепроверять их никто так и не стал.
Мираж метатегов: уникальные title и description поверх набора страниц, тела которых неуникальны. В отчёте краулера это выглядит как соответствие требованиям, а для читателя остаётся ровно тем же дублем. Чинится порядком действий — сначала строки, потом метатеги, — и утешает здесь цена вопроса: «3–6 часов на 500 страниц» достаточно дёшевы, чтобы прогнать генерацию второй раз, когда страницы наконец заслужат эти клики.
Вопросы и ответы
Сколько стоит programmatic SEO и сколько занимает первый запуск?
В каталоге генерация посадочных из таблицы стоит $500 – $2 500, срок указан как «3–7 дней на пилот в 500–1000 страниц». Рублёвая вилка — 30 000 – 100 000 ₽, где пилот в 500–1000 страниц стоит 30 000–50 000, а масштабирование до 2000–5000 страниц — 70 000–100 000. Сложность помечена как «Дорого и сложно».
Не сочтут ли страницы, собранные из таблицы, спамом?
Оценивают не способ сборки, а ценность страницы для того, кто на неё пришёл. Сгенерированная страница с реальной ценой, наличием и локальными деталями и шаблон с подставленным городом — это два разных объекта. Именно из-за этого фильтра каталог помечает услугу как «Дорого и сложно», а не как задачу для новичка.
Можно ли обойтись переписыванием title и description вместо переделки страниц?
Лишь отчасти. Массовая генерация метатегов стоит $150 – $700 за пакет и идёт «3–6 часов на 500 страниц после настройки промпта», сложность — «Новичок». Каталог формулирует результат честно: позиции те же, а кликов больше. Это меняет долю кликов, на которые страница уже имеет право, но не добавляет содержимого туда, где его нет.
Нужен ли контент-план на квартал, если данные уже собраны?
План решает то, чего данные о себе не сообщают: что генерировать нельзя. Стоит он $200 – $700, делается за «1–2 дня» и даёт готовый план на три месяца — какие статьи и посадочные писать, в каком порядке и под какие кластеры, с брифом к каждой теме, по которому автор пишет текст без вашего участия.

