Публикация статей на любой сайт
Сервис пишет SEO-статью и отправляет её POST-запросом на адрес, который вы указали. В теле приходит готовый HTML, заголовок, ЧПУ, мета-теги, картинки ссылками, вопросы FAQ и микроразметка. Обработчик на вашей стороне — это тридцать строк кода, и он одинаков для любого стека.
Публикация на произвольный сайт входит в тарифы от Starter.
Как это работает
Подключаете сайт
Указываете адрес будущего обработчика и получаете секретный ключ. Ключ нужен, чтобы ваш сервер мог убедиться: запрос действительно от нас, а не от постороннего.
Ставите обработчик
Берёте готовый файл под свой стек или отдаёте задачу ИИ-ассистенту — контракт для этого открытый. Обработчик проверяет подпись и сохраняет статью так, как принято в вашем проекте.
Статьи приходят сами
Дальше вмешиваться не нужно: генерация по расписанию, отправка сразу после готовности. Если сайт не ответил, мы повторим попытку шесть раз в течение восьми часов, а в журнале будет видно почему.
Проверка подписи
Это единственная обязательная часть обработчика. Тело читается сырым до разбора JSON — подписаны именно эти байты, пересобранный JSON даст другую подпись.
# Python
expected = hmac.new(secret.encode(), f"{timestamp}.".encode() + raw, hashlib.sha256).hexdigest()
valid = any(hmac.compare_digest(expected, s[3:])
for s in signature_header.split(",") if s.strip().startswith("v1="))
// PHP
$expected = hash_hmac('sha256', $timestamp . '.' . $raw, SEOWRITER_SECRET);
foreach (explode(',', $signatureHeader) as $part) {
if (strpos(trim($part), 'v1=') === 0 && hash_equals($expected, substr(trim($part), 3))) { $valid = true; }
}
// Node.js
const expected = createHmac("sha256", secret).update(`${timestamp}.${raw}`).digest("hex");
const valid = header.split(",").map(p => p.trim()).filter(p => p.startsWith("v1="))
.some(p => timingSafeEqual(Buffer.from(expected), Buffer.from(p.slice(3))));Что приходит в каждой статье
Не только HTML: всё, что нужно странице, приходит отдельными полями — разбирать текст регулярками не придётся.
| article.id | Постоянный идентификатор статьи. Обновляйте запись по нему — тогда повторная доставка не создаст дубль |
| article.status | draft или publish — публиковать сразу или оставить черновиком |
| article.title, h1, slug | Заголовок, H1 и ЧПУ статьи |
| article.content_html | Готовый HTML статьи вместе с микроразметкой внутри |
| article.meta | Мета-заголовок и описание для тега title и meta description |
| article.cover | Обложка: адрес, alt и признак того, постоянная ли ссылка |
| article.images | Картинки из текста. У каждой помечено, лежит она у нас или на стороннем сервисе |
| article.faq | Вопросы и ответы — если рисуете свой блок FAQ, не разбирая HTML |
| article.json_ld | Блоки микроразметки Schema.org отдельными объектами |
| article.category | Категория, если она задана в настройках сайта |
Кому подходит доставка вебхуком
Разработчикам своих проектов
Сайт написан руками или собран на фреймворке, готовой интеграции для него не существует и не появится. Обработчик занимает тридцать строк и живёт в вашем репозитории вместе с остальным кодом.
Агентствам с разношёрстными клиентами
У одного клиента WordPress, у другого самописная админка, у третьего Next.js. Вебхук снимает вопрос «а поддерживаете ли вы такую CMS»: подходит любая, и все клиентские сайты ведутся из одного кабинета.
Headless-проектам и статике
Контент лежит в своей базе или в headless-CMS, а страницы собираются на деплое. Обработчик сохраняет статью и запускает пересборку — публикация появляется без ручного коммита.
Вручную и через вебхук
Статью всегда можно перенести руками — вопрос в том, сколько это стоит времени на дистанции.
| Вручную | Через вебхук | |
|---|---|---|
| Перенос статьи на сайт | Копирование текста, картинок и мета-тегов руками | Приходит готовым за секунды после генерации |
| Время на одну статью | 20–30 минут на перенос и вёрстку | Ноль: человек не участвует |
| Картинки и обложка | Скачать, загрузить, проставить alt | Приходят ссылками, обложка отдельным полем |
| Микроразметка и FAQ | Собирать вручную или забыть | Готовые блоки Schema.org отдельными полями |
| Публикация по расписанию | Нужен человек в нужный час | Идёт сама, хоть ночью |
| Если сайт лежал | Статья ждёт, пока про неё вспомнят | Шесть повторов за восемь часов и журнал доставок |
Безопасность
- Каждый запрос подписан ключом, который знаете только вы и мы.
- Время подписи не даёт переиграть перехваченный запрос: всё старше пяти минут отвергается.
- Отправляем только по https и не идём по переадресациям.
- Ключ можно перевыпустить: сутки после этого запросы подписаны старым и новым сразу, чтобы обработчик успел обновиться.
Поручите подключение своему ИИ
Скопируйте задание в Claude Code, Cursor или Codex прямо в своём проекте: в нём описан контракт без секретов, и ассистент встроит обработчик по правилам вашей кодовой базы.
В моём проекте нужен серверный обработчик вебхука от сервиса SEO Writer.
Добавь POST-эндпоинт по адресу /api/seowriter, используя текущий стек проекта, его роутинг и ORM.
Не создавай отдельный микросервис, если в проекте уже есть серверная часть.
Запрос приходит с заголовками:
X-SEOWriter-Event: article.published | article.updated | ping
X-SEOWriter-Timestamp: unix-время в секундах
X-SEOWriter-Signature: v1=<hex>[,v1=<hex>]
X-SEOWriter-Delivery: идентификатор доставки, одинаковый на всех повторах
Тело запроса — JSON вида:
{ "event": "article.published",
"article": { "id": "uuid", "status": "draft|publish", "title": "...", "h1": "...", "slug": "...",
"content_html": "...", "excerpt": "...", "meta": {"title": "...", "description": "..."},
"cover": {"url": "...", "alt": "..."}, "images": [{"url": "...", "alt": "..."}],
"faq": [{"question": "...", "answer": "..."}], "json_ld": [...] } }
Реализуй по шагам:
1. Прочитай тело как сырые байты или текст ДО разбора JSON.
2. Посчитай HMAC-SHA256 от строки "{timestamp}.{сырое тело}" с ключом из переменной окружения SEOWRITER_SECRET.
3. Заголовок подписи может содержать несколько значений v1= через запятую — проверь КАЖДОЕ, любое совпадение считается верным. Сравнивай безопасным сравнением, не обычным равенством.
4. Отклони запрос кодом 401, если подпись не сошлась или если время отличается от текущего больше чем на 300 секунд.
5. На событие ping ответь 200 и JSON {"success": true}.
6. На article.published и article.updated сохрани статью в существующую модель публикаций проекта, обновляя запись по article.id — повторная доставка не должна создавать дубль. Для тела страницы используй content_html как готовый HTML.
7. Ответь 200 и JSON {"ok": true, "url": "<адрес опубликованной статьи>"} — адрес нужен сервису для внутренней перелинковки.
8. Отвечай быстро: тяжёлую обработку выноси в фоновую задачу.
Ограничения:
- не хардкодь секрет, читай его из переменной окружения;
- не отключай проверку подписи даже временно;
- не отвечай переадресацией;
- принимай только POST.
В конце скажи, какой полный адрес эндпоинта получится после деплоя и куда добавить SEOWRITER_SECRET.Частые вопросы
Чем это отличается от готовой интеграции с CMS?
Для WordPress, 1С-Битрикс, InSales и Joomla ничего писать не нужно — там подключение по логину и паролю. Вебхук нужен всем остальным: самописным сайтам, проектам на Next.js, Laravel, Django, headless-связкам. Результат одинаковый, отличается только способ доставки.
Что приходит в запросе?
Готовый HTML статьи, заголовок и H1, ЧПУ, мета-заголовок и описание, обложка и картинки ссылками, вопросы с ответами для блока FAQ, микроразметка Schema.org, категория и постоянный идентификатор статьи. Идентификатор не меняется — по нему обновляйте запись, чтобы повторная отправка не создала дубль.
Что будет, если мой сайт временно недоступен?
Статья никуда не денется: она сохранена у нас, а доставка повторится через минуту, пять минут, полчаса, два часа и шесть часов. Каждая попытка видна в журнале вместе с ответом вашего сервера. Если сайт не отвечает совсем, отправка встанет на паузу и придёт письмо — потом можно отправить накопившееся вручную.
Насколько это безопасно?
Каждый запрос подписан ключом, который знаете только вы и мы, а время подписи не даёт повторно воспроизвести перехваченный запрос. Отправляем только по https и не идём по переадресациям. Ключ можно перевыпустить в любой момент: сутки после этого запросы подписываются старым и новым одновременно, чтобы обработчик успел обновиться без простоя.
Можно ли поручить подключение ИИ-ассистенту?
Да, это штатный сценарий. На странице есть готовое задание для Claude Code, Cursor или Codex: в нём описан контракт без секретов, чтобы ассистент встроил обработчик в ваш проект по его правилам — с вашей ORM, маршрутизацией и моделью публикаций.
Что говорят пользователи
Реальные результаты от реальных людей
«Я веду футбольный блог уже более 5 лет и всегда сам писал или нанимал авторов по 2 000–3 000 рублей за статью. Попробовал SEO Writer скептически. Через месяц в индексе было 23 новых статьи, через три — трафик вырос на 60%. Сейчас плачу за тариф Starter и экономлю около 40 000 ₽ в месяц на текстах. Качество — реально не хуже хорошего копирайтера, структура правильная и логичная.»
«Контент всегда был узким местом - клиентов берём быстро, а авторов под каждый проект искать долго. SEO Writer закрыл эту проблему полностью. Настроили 8 сайтов, каждый пишет по 3–4 статьи в неделю. Особенно ценим сервис за то, что Битрикс и InSales поддерживаются нативно, так как у половины клиентов именно они. Ни один западный инструмент этого не умеет.»
«У нас магазин на Insales и товаров много, а блог стоял пустой три года. Подключили SEO Writer, за два месяца вышло 27 статей под информационные запросы. Сейчас из органики приходит около 30% новых клиентов, раньше использовали только контекст. Нравится, что статьи сами ставят внутренние ссылки на наши товары и категории, не нужно ничего делать руками.»
«Ваш сервис супер, поддержка отвал башки, спасибо!»
Тарифы
Начните бесплатно, масштабируйтесь по мере роста
Free
- 3 статей в месяц
- 1 сайт
- Системные API ключи
- Подбор тем: 1 в месяц
- Редактор статьи с историей версий
Starter
- 15 статей в месяц
- 2 сайта
- Системные API ключи
- Подбор тем: 4 в месяц
- Редактор статьи с историей версий
- Свои API ключи
- Планировщик
- Яндекс.Вебмастер в кабинете
- «Дописать раздел»: 30 в месяц
- «Улучшить статью» по запросам Вебмастера
- Рерайт для сторонних площадок
- Генерация обложек
Pro
- 50 статей в месяц
- 5 сайтов
- Системные API ключи
- Подбор тем: 10 в месяц
- Редактор статьи с историей версий
- Свои API ключи
- Планировщик
- Яндекс.Вебмастер в кабинете
- «Дописать раздел»: 100 в месяц
- «Улучшить статью» по запросам Вебмастера
- Рерайт для сторонних площадок
- Генерация обложек
Agency
- 150 статей в месяц
- 20 сайтов
- Системные API ключи
- Подбор тем: 30 в месяц
- Редактор статьи с историей версий
- Свои API ключи
- Планировщик
- Яндекс.Вебмастер в кабинете
- «Дописать раздел»: 300 в месяц
- «Улучшить статью» по запросам Вебмастера
- Рерайт для сторонних площадок
- Генерация обложек
- API доступ (скоро)
- Приоритетная поддержка
Оплата через ЮKassa · Карты, СБП, ЮMoney · Без автопродления · 30 дней доступа
Смотрите также
А если у вас популярная CMS
Для этих платформ обработчик писать не нужно — подключение занимает пару минут по логину и паролю.
Ваш сайт начнёт наполняться сам
Подключение занимает полчаса вместе с обработчиком. Дальше статьи приходят по расписанию, а вы видите каждую доставку в кабинете.
Создать аккаунт бесплатно →Полезные статьи
28 октября 2026
Тошнота текста: что это, как считать и какие нормы
Что такое тошнота текста, как вычисляют классическую и академическую тошноту, чем водность отличается от «воды» и какие ориентиры дают Advego и text.ru.
Читать27 октября 2026
Лучшие нейросети для написания текста: сравнение 2026 года
Какую выбрать в 2026 году: GigaChat, Алиса, DeepSeek, Qwen, ChatGPT, Claude и Gemini. Доступ без VPN, оплата в рублях, бесплатный режим, цены на октябрь 2026.
Читать26 октября 2026
Микроразметка Schema.org: что это и как внедрить на сайт
Что такое микроразметка Schema.org, почему JSON-LD удобнее Microdata, что понимают Яндекс и Google на октябрь 2026 и как проверить разметку.
Читать