Нейросеть для SMM: контент-план и посты пачкой через API
Контент-план на месяц и тридцать постов в одном стиле за один скрипт. Показываем, как описать голос бренда, генерировать пачкой и проверять результат.
5 мин · · автоматизация · бизнес
Нейросеть для SMM чаще всего используют так: открывают чат, просят «пост про скидки» и получают текст, который подошёл бы любому бренду. Проблема не в модели, а в том, что ей не дали голос бренда и структуру. Если описать их один раз и запускать генерацию скриптом, получается контент-план на месяц и серия постов в одном стиле. Ниже схема из четырёх шагов и код, который её реализует.
Нейросеть для SMM, шаг 1: описываем голос бренда один раз
Голос бренда это не «дружелюбный и экспертный». Модели нужны правила, которые можно проверить. Соберите файл brand.md примерно такого вида:
- Кто говорит и кому. «Магазин товаров для кофе, говорим с домашними любителями на "вы"».
- Тон. Коротко, без восклицательных знаков, без слов «уникальный» и «лучший».
- Формат. Длина поста 400–700 знаков, заголовок в первой строке, максимум один эмодзи или ни одного.
- Запреты. Темы и слова, которые нельзя использовать, обещания, которые нельзя давать.
- Три-пять реальных удачных постов как образец. Примеры работают лучше любых прилагательных.
Этот блок будет стабильной частью каждого запроса. Важная деталь: он не меняется между запросами, а значит его можно кэшировать, о чём ниже.
Шаг 2. Контент-план в виде JSON
Просите не «план на месяц текстом», а структуру, которую подхватит скрипт:
import json
import os
import anthropic
client = anthropic.Anthropic(
base_url="https://api.zukko.pro",
api_key=os.environ["ZUKKO_API_KEY"],
)
BRAND = open("brand.md", encoding="utf-8").read()
def make_plan(month, goals, events):
prompt = (
f"Месяц: {month}\nЦели: {goals}\nПоводы и события: {events}\n\n"
"Составь контент-план на 30 дней. Верни JSON-массив объектов: "Обратите внимание на base URL: для официального Anthropic SDK он без /v1, SDK добавляет путь сам. Если вы работаете через OpenAI SDK, адрес будет https://api.zukko.pro/v1, но скидку за кэш для Claude в этом формате шлюз не увидит, подробнее в статье про кэш в двух форматах.
Что проверить в плане, прежде чем идти дальше: нет ли двух одинаковых тем, распределены ли рубрики, учтены ли ваши реальные даты акций. Поводы и события модель сама не знает: даты распродаж, релизов и праздников подавайте в запросе.
Шаг 3. Посты пачкой
Теперь для каждой строки плана генерируем текст. Правило: один пост, один запрос. Так проще повторить неудачный и не терять всю пачку.
def write_post(item):
prompt = (
f"Рубрика: {item['rubric']}\nТема: {item['topic']}\n"
f"Цель: {item['goal']}\nФормат: {item['format']}\n"
f"Первая фраза: {item['hook']}\n\n"
"Напиши пост строго по правилам голоса бренда. "
"Не выдумывай цены, сроки и характеристики, которых нет в брифе. "
"Если данных не хватает, напиши в конце строку 'НУЖНО УТОЧНИТЬ: ...'."
)
msg = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=800,
system=[{"type": "text", "text": BRAND,
"cache_control": {"type": "ephemeral"}}],
messages=[{"role": "user", "content": prompt}],
)
return msg.content[0].text
plan = make_plan("ноябрь", "рост подписчиков", "распродажа 11.11")
posts = [{"day": it["day"], "text": write_post(it)} for it in plan]Блок BRAND помечен как кэшируемый: у Anthropic кэш срабатывает, когда повторяющаяся часть запроса достаточно длинная и идёт в начале, подробные условия смотрите в документации Anthropic. Тогда со второго запроса этот блок читается из кэша по более низкой цене.
Шаг 4. Автоматическая проверка перед публикацией
Ставьте простой фильтр между генерацией и календарём публикаций:
- длина в заданных пределах;
- нет слов из списка запрещённых;
- нет строки «НУЖНО УТОЧНИТЬ», иначе пост уходит человеку;
- числа и даты в тексте совпадают с брифом (проверка регулярным выражением);
- нет повторяющихся первых фраз у соседних постов.
Затем идёт ручная вычитка. Модель пишет гладко, но не знает, что вы вчера отвечали подписчикам в комментариях и что у вас закончился один из товаров. Ответственность за публикацию остаётся на вас. Если нужны варианты для A/B, повторите запрос с другой «первой фразой» и разной temperature; для параметров сэмплирования см. статью temperature и top_p.
Какую модель выбрать для постов
Вкус у модели не измерить, поэтому возьмите один и тот же бриф и сравните три модели вслепую на десяти постах. Цены на 18 октября 2026 (Zukko, за 1M токенов, вход / выход):
| Модель | Цена | Индекс силы |
|---|---|---|
glm-5.3-flash | $0.04 / $0.04 | 42 |
gpt-6.1-sol | $0.27 / $1.32 | 52 |
claude-sonnet-5-5 | $0.4 / $2 | 48 |
Индекс силы это Intelligence Index от Artificial Analysis, он не говорит, как модель пишет на русском в вашем тоне. Решает слепой тест.
Сколько стоит месяц постов
Допущения: 30 постов, на каждый 1500 токенов входа (из них 1200 токенов блок бренда и 300 токенов задание) и 400 токенов выхода. Формула: (вход × цена входа + выход × цена выхода) / 1 000 000, а с кэшем добавляются строки записи и чтения кэша по их ценам. Для расчёта с кэшем допускаем, что блок бренда проходит минимальный порог длины для кэширования.
claude-sonnet-5-5без кэша: 45 000 × 0.4 / 1 000 000 + 12 000 × 2 / 1 000 000 = 0.018 + 0.024 = $0.042.claude-sonnet-5-5с кэшем в Anthropic-формате: свежий вход 30 × 300 = 9 000 токенов, 9 000 × 0.4 / 1 000 000 = 0.0036; запись кэша 1 200 × 0.5 / 1 000 000 = 0.0006; чтение 29 × 1 200 = 34 800 токенов, 34 800 × 0.05 / 1 000 000 = 0.00174; выход 0.024. Итого около $0.030.gpt-6.1-sol: 45 000 × 0.27 / 1 000 000 + 12 000 × 1.32 / 1 000 000 = 0.01215 + 0.01584, около $0.028.glm-5.3-flash: (45 000 + 12 000) × 0.04 / 1 000 000, около $0.0023.
Контент-план на 30 дней добавит ещё один запрос на несколько тысяч токенов, это центы. При такой разнице в цене экономить стоит на ручной правке, а не на модели. Текущие цены смотрите в GET https://api.zukko.pro/v1/models.
Подключение
Создайте ключ в кабинете, задайте ему дневной лимит в долларах и сохраните в переменной окружения. Формат запроса из примеров описан в справке по /v1/messages. Баланс пополняется от $1 через СБП (платёжная страница добавляет 8,5%), криптовалюту или карту MasterCard.
Частые вопросы
Как сделать, чтобы посты не звучали как написанные нейросетью?
Дайте реальные образцы, а не описание тона, запретите штампы списком и вычитывайте текст. Самый сильный рычаг это примеры ваших лучших постов в блоке бренда.
Можно ли без подписки на сервисы получать нейросеть для создания текстов?
Да, по API вы платите только за токены, подписки нет. Бесплатного безлимитного доступа это не означает: каждый запрос тарифицируется, но для постов это доли цента.
Нужно ли помечать тексты как созданные ИИ?
Правила разметки зависят от площадки и юрисдикции. Сверьтесь с правилами соцсети, на которой публикуетесь.
Сколько вариантов на пост просить?
Три для сравнения хватает. Больше только увеличивает ручную работу по отбору.
zukko
Платите в 25×
меньше
за Claude Code & ChatGPT
Один ключ fetch_* и base URL api.zukko.pro — в Cursor, Claude Code, Codex и любом SDK.
Похожие статьи
- Нейросеть для тестировщика: тест-кейсы, чек-листы и баг-репортыКак QA-инженеру использовать модель для тест-кейсов, чек-листов и баг-репортов, проверять полноту покрытия и не получить придуманные требования.
- Обезличивание данных перед отправкой в нейросеть: практический подходПерсональные данные не нужно отправлять модели, чтобы она обработала документ. Показываем, как заменять их метками, возвращать в ответ и проверять, что ничего не просочилось.
- Нейросеть для HR: вакансии, письма кандидатам и разбор резюмеМодель может готовить черновики вакансий и писем и делать первичный разбор резюме. Разбираем, что отдавать, как работать с персональными данными кандидатов и как не допустить предвзятых решений.
- Генерация FAQ нейросетью: вопросы из обращений и ответы по базе знанийХороший FAQ строится на том, что клиенты правда спрашивают. Показываем пайплайн: группируем обращения, отвечаем по базе знаний со ссылкой на источник и проверяем результат.