Разработка системы AI-генерации контента для соцсетей
AI-система генерирует посты для ВКонтакте, Telegram, Instagram, LinkedIn, TikTok с учётом специфики каждой платформы: формат, длина, хэштеги, время публикации, адаптация одного сообщения под все каналы.
Мультиканальный генератор постов
from openai import AsyncOpenAI
from dataclasses import dataclass
client = AsyncOpenAI()
@dataclass
class ContentBrief:
core_message: str
brand_voice: str # официальный, дружелюбный, экспертный, провокационный
goal: str # awareness, engagement, clicks, conversions
media: list[str] = None # URL изображений/видео
PLATFORM_SPECS = {
"telegram": {
"max_length": 4096,
"formatting": "HTML (bold, italic, links)",
"hashtags": "минимально, только самые важные",
"style": "информативный, ценность в тексте",
"emoji": "умеренно"
},
"vk": {
"max_length": 16384,
"formatting": "plaintext + wiki-разметка",
"hashtags": "2-5 в конце поста",
"style": "разговорный, community-ориентированный",
"emoji": "да"
},
"instagram": {
"max_length": 2200,
"formatting": "plaintext, абзацы с пустыми строками",
"hashtags": "до 30, в конце или в комментарии",
"style": "визуально-описательный, lifestyle",
"emoji": "активно"
},
"linkedin": {
"max_length": 3000,
"formatting": "plaintext, структурированно",
"hashtags": "3-5 профессиональных",
"style": "профессиональный, B2B, thought leadership",
"emoji": "минимально"
},
"tiktok": {
"max_length": 2200, # описание
"formatting": "коротко и цепко",
"hashtags": "5-10 трендовых + нишевых",
"style": "неформальный, молодёжный, хук в начале",
"emoji": "активно"
}
}
async def generate_social_post(
brief: ContentBrief,
platform: str,
post_type: str = "standard" # standard, story, reel, thread
) -> dict:
specs = PLATFORM_SPECS.get(platform, PLATFORM_SPECS["vk"])
response = await client.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "system",
"content": f"""Ты — SMM-специалист для платформы {platform}.
Напиши пост согласно спецификациям платформы:
{json.dumps(specs, ensure_ascii=False)}
Голос бренда: {brief.brand_voice}.
Цель поста: {brief.goal}.
Структура ответа JSON:
{{
text: "готовый текст поста",
hashtags: ["..."],
best_time_to_post: "рекомендация по времени",
media_recommendation: "что лучше прикрепить",
estimated_reach: "оценка охвата low/medium/high"
}}"""
}, {
"role": "user",
"content": f"Сообщение для передачи: {brief.core_message}"
}],
response_format={"type": "json_object"}
)
return json.loads(response.choices[0].message.content)
async def repurpose_for_all_platforms(brief: ContentBrief) -> dict:
"""Адаптируем одно сообщение под все платформы"""
platforms = ["telegram", "vk", "instagram", "linkedin"]
tasks = [generate_social_post(brief, platform) for platform in platforms]
results = await asyncio.gather(*tasks)
return {platform: result for platform, result in zip(platforms, results)}
Генерация контент-плана
async def generate_monthly_content_calendar(
brand: dict,
month: str,
posts_per_week: int = 5,
platforms: list[str] = None
) -> list[dict]:
response = await client.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "system",
"content": f"""Создай контент-план на месяц.
Постов в неделю: {posts_per_week}.
Платформы: {', '.join(platforms or ['telegram', 'vk'])}.
Используй контент-микс: 40% полезный контент, 30% развлекательный, 20% продающий, 10% новости.
Для каждого поста: дата, платформа, тип, тема, краткий тезис, хэштеги.
Верни JSON массив."""
}, {
"role": "user",
"content": f"Бренд: {json.dumps(brand, ensure_ascii=False)}\nМесяц: {month}"
}],
response_format={"type": "json_object"}
)
return json.loads(response.choices[0].message.content)["calendar"]
Реакция на тренды
async def generate_trend_reaction_post(
trending_topic: str,
brand_angle: str,
platform: str
) -> dict:
"""Создаём пост на актуальную тему с угла бренда"""
response = await client.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "system",
"content": f"Создай newsjacking пост: свяжи тренд с брендом органично, без притянутости. Платформа: {platform}."
}, {
"role": "user",
"content": f"Тренд: {trending_topic}\nАнгл бренда: {brand_angle}"
}]
)
return {"text": response.choices[0].message.content, "platform": platform}
Сроки: генератор постов с адаптацией под 3–4 платформы — 1–2 недели. Полноценный SMM-инструмент с контент-планом, авторасписанием и аналитикой — 4–6 недель.







