Как техническое задание с Кворка превратилось в генератор SEO-контента

Увидел на Кворке заказ на сотни SEO-страниц — и вместо того, чтобы писать их руками, за вечер собрал с Клодом инструмент, который делает это сам.

23 июля 2026 г.3 мин чтенияAI-агентыВайбкодингКейс

Я листал Кворк без особого плана — просто смотрел, какие заказы вообще есть. Наткнулся на техническое задание: клиенту нужно было наполнить сайт SEO-страницами под кучу ключевых запросов. Заголовок, мета-описание, блоки текста, FAQ, картинка — и так по каждому ключу из списка. Работа понятная, но её там было на сотни страниц. Руками — неделя, не меньше. А на Кворке за такие заказы обычно платят фиксированно: сколько бы страниц ни ушло на переписывание вручную, цена в заказе от этого не меняется. Значит, каждый лишний час работы руками — это просто вычет из моего же гонорара, а не что-то, за что доплатят отдельно.

Руками я делать не стал. Скинул техническое задание в Клод почти как есть и спросил, как это автоматизировать. Дальше пошло быстрее, чем я рассчитывал.

За вечер собрался рабочий инструмент — отдельный Python-проект, назвал его content-generator. Логика внутри простая. На входе — CSV с ключевыми словами: keyword, slug, category, и любые доп. колонки, какие нужны. На выходе — для каждой строки готовая страница. Текст пишет gpt-4o-mini через Structured Outputs: модель обязана вернуть строго заданный JSON — title, description, h1, блоки контента, FAQ, — а не что-то похожее на JSON. Картинки отдельно, через gpt-image-1, сразу сжимаются в webp.

Первым полигоном стала аренда спецтехники: экскаваторы, техника под ключ, всё в этом духе. Ключи вроде «аренда экскаватора в Москве» — ровно то, под что писалось исходное ТЗ. Прогнал двадцать строк, посмотрел на результат, поправил формулировки — но не в коде, а в отдельных текстовых файлах с промптами, чтобы не трогать логику каждый раз, когда не нравится фраза.

Дальше начались вопросы, которых на бумаге не видно. Что если сеть оборвётся на трёхсотой строке из тысячи заявленных в ТЗ? Что если упрёшься в лимит запросов к API на середине прогона? Пришлось добавить то, чего в задании никто не просил. Инструмент запоминает, какие строки уже готовы, и при повторном запуске их не трогает — бюджет по кругу не тратится. Строки, упавшие с ошибкой, можно перегнать отдельно одним флагом. И отдельный прогон совсем без обращения к API — посмотреть, что промпт собрался правильно, прежде чем платить хоть цент.

Это не забота инженера о надёжности ради надёжности. При фиксированной цене за заказ каждый впустую потраченный вызов API вычитается из моей же маржи, а не из бюджета клиента. Обрыв на середине без возможности продолжить с того же места означал бы платить за одни и те же страницы дважды — не абстрактный риск, а конкретная дыра в и без того скромном гонораре с фриланс-биржи.

Внутри тринадцать модулей: загрузка CSV, лимит запросов, обработка изображений, сборка промптов, отслеживание прогресса — обычный код рабочего инструмента, не черновик на один раз. Сейчас он тянет до тысячи ключевых слов за один запуск, с настраиваемой параллельностью — от одной строки за раз до предела, который выдержит тариф.

Из этой же истории родилось и коммерческое предложение — под ту самую аренду спецтехники, с примерами страниц, которые реально сгенерировал инструмент, а не с макетом для презентации. Отправил я его уже или нет — вопрос отдельный. Но сам факт, что от чужого технического задания до готового демо для клиента прошёл один вечер, а не неделя поиска фрилансера-копирайтера, — ради этого я вообще сел разбираться.

Ничего революционного в самой идее генератора SEO-текстов нет, таких инструментов полно в открытом доступе, и часть из них наверняка сильнее моего. Разница в другом: я не садился делать продукт. Я хотел закрыть один конкретный заказ и не переписывать вручную одно и то же по сто раз. Продукт получился побочным эффектом лени в хорошем смысле — нежелания второй раз делать то, что уже один раз надоело.

И это не первый раз, когда так выходит. Неделей раньше из установки чужого готового скилла для SEO-аудита выросла первая платная услуга, которую я вообще предложил клиенту. Тут — та же схема, только с другим типом задачи: не аудит, а генерация. Я всё меньше верю в то, что продукт нужно придумывать заранее, сидя с чистым листом. Проще наткнуться на чужую скучную задачу, которую не хочется делать руками, и посмотреть, что получится, если её не делать руками.