Add files via upload

Initial project upload
This commit is contained in:
nini52 authored and GitHub committed 2026-07-08 09:06:08 +03:00
commit 126e76963c
20 files changed
+1227

No files matched your search

Binary file not shown.
+266
View File
@@ -0,0 +1,266 @@
import random
import os
from groq import Groq
from config import GROQ_API_KEY
class ContentGenerator:
def __init__(self):
"""Инициализация генератора контента"""
print("🔄 Инициализация ContentGenerator...")
# Проверяем, есть ли ключ Groq
if GROQ_API_KEY:
try:
self.client = Groq(api_key=GROQ_API_KEY)
self.model = "llama-3.3-70b-versatile"
self.use_groq = True
print("✅ Groq API подключен!")
except Exception as e:
print(f"⚠️ Ошибка подключения Groq: {e}")
self.use_groq = False
else:
print("⚠️ Groq API ключ не найден, использую шаблоны")
self.use_groq = False
# Шаблоны для запасного варианта (если Groq не работает)
self.templates = {
'instagram': [
"🔥 {business_name} — это не просто бизнес, это миссия!\n\n"
"Рассказываю, как мы пришли к тому, что делаем сегодня.\n"
"В {years} лет мы прошли путь от идеи до реализации.\n\n"
"А вы знали, что {business_name} помогает {problem_solution}?\n\n"
"👉 Напиши в комментариях, сталкивался ли ты с этой проблемой!\n\n"
"#бизнес #предприниматель #{hashtag} #историяуспеха",
"📊 {business_name} — цифры, которые вдохновляют!\n\n"
"За {years} лет мы:\n"
"✅ Помогли {clients} клиентам\n"
"✅ Увеличили прибыль на {profit}%\n"
"✅ Выросли в {growth} раз\n\n"
"Хочешь так же? Пиши в DM! 💬\n\n"
"#бизнес #предпринимательство #{hashtag}"
],
'linkedin': [
"🚀 Как {business_name} изменил рынок в {years} году?\n\n"
"Когда мы начинали, казалось, что {problem} — это непреодолимая стена.\n"
"Но мы нашли решение: {solution}\n\n"
"Результат: {result} 📈\n\n"
"Какую бизнес-задачу вы решаете сегодня? Делитесь в комментариях! 💬\n\n"
"#бизнес #лидерство #{hashtag} #growth",
"💡 5 уроков за {years} лет в бизнесе\n\n"
"1️⃣ {lesson1}\n"
"2️⃣ {lesson2}\n"
"3️⃣ {lesson3}\n"
"4️⃣ {lesson4}\n"
"5️⃣ {lesson5}\n\n"
"Какой урок оказался для вас самым важным? 👇\n\n"
"#бизнес #урокипредпринимательства #{hashtag}"
],
'telegram': [
"💬 Привет, друзья! 👋\n\n"
"Сегодня хочу поделиться мыслями о {business_name}.\n\n"
"Многие спрашивают: «Как ты пришел к этому?»\n"
"Ответ прост: {short_story}\n\n"
"А какой бизнес вдохновляет тебя? Пиши в комментариях! 👇\n\n"
"#бизнес #предприниматель #{hashtag}",
"📌 Важный пост для предпринимателей!\n\n"
"В {business_name} мы верим, что {belief}\n\n"
"Поэтому сегодня делюсь {tip} советом:\n"
"{advice}\n\n"
"А какой совет ты бы дал себе в начале пути? 🔥\n\n"
"#бизнес #советы #{hashtag}"
],
'twitter': [
"🧵 Нить: Как {business_name} за {years} лет изменил подход к {industry}\n\n"
"1/ Мы начинали с {start_point}\n"
"2/ Главная проблема была: {problem}\n"
"3/ Решение нашли через {solution}\n"
"4/ Результат: {result}\n"
"5/ Вывод: {lesson}\n\n"
"Согласны? Репост, если цените бизнес-мышление! 🔄\n\n"
"#бизнес #{hashtag}",
"💭 Мысль дня от {business_name}:\n\n"
"{quote}\n\n"
"Как думаете, это правда? 👇\n\n"
"#бизнес #мысли #{hashtag}"
],
'ad': [
"🎯 Хочешь получить {benefit}?\n\n"
"В {business_name} мы знаем, как это сделать!\n\n"
"За {years} лет мы помогли {clients} клиентам достичь {result}\n\n"
"Напиши «ХОЧУ» в комментариях или DM, и я расскажу как! 💬\n\n"
"#реклама #бизнес #{hashtag}"
]
}
print("✅ ContentGenerator готов к работе!")
def generate_post(self, business_type, business_description, platform):
"""
Генерирует контент для соцсетей
Args:
business_type (str): Тип бизнеса
business_description (str): Описание бизнеса
platform (str): Платформа (instagram, linkedin, telegram, twitter, ad)
Returns:
str: Сгенерированный пост
"""
print(f"🔄 Генерация поста для {platform}...")
# Пробуем сгенерировать через Groq
if self.use_groq:
try:
post = self._generate_with_groq(business_type, business_description, platform)
if post and len(post) > 20:
print("✅ Пост сгенерирован через Groq!")
return post
except Exception as e:
print(f"⚠️ Ошибка Groq: {e}, использую шаблоны")
# Если Groq не работает - используем шаблоны
print("🔄 Использую шаблоны...")
return self._generate_with_templates(business_type, business_description, platform)
def _generate_with_groq(self, business_type, business_description, platform):
"""Генерация через Groq API"""
platform_names = {
'instagram': 'Instagram',
'linkedin': 'LinkedIn',
'telegram': 'Telegram',
'twitter': 'Twitter/X',
'ad': 'рекламный пост'
}
prompt = f"""
Ты — профессиональный SMM-специалист и копирайтер.
Напиши интересный, живой пост для {platform_names.get(platform, 'соцсетей')} о бизнесе.
Тип бизнеса: {business_type}
Описание бизнеса: {business_description}
Требования к посту:
- Длина: 100-200 слов (но не больше 200 слов)
- Живой, разговорный стиль
- Полезный контент для предпринимателей
- Призыв к действию в конце
- Используй 2-3 эмодзи
Напиши только текст поста, без лишних пояснений.
Пост должен быть уникальным и интересным.
"""
response = self.client.chat.completions.create(
model=self.model,
messages=[
{"role": "system", "content": "Ты профессиональный копирайтер. Пиши ярко, полезно и вовлекающе."},
{"role": "user", "content": prompt}
],
temperature=0.9,
max_tokens=500
)
return response.choices[0].message.content.strip()
def _generate_with_templates(self, business_type, business_description, platform):
"""Генерация через шаблоны (запасной вариант)"""
# Если платформы нет в шаблонах - используем instagram
if platform not in self.templates:
platform = 'instagram'
# Подготовка данных для шаблона
data = {
'business_name': business_type,
'industry': business_description[:30] if business_description else "твоей нише",
'years': random.randint(2, 15),
'clients': random.randint(50, 5000),
'profit': random.randint(20, 300),
'growth': random.randint(2, 10),
'problem': random.choice([
"не хватало знаний", "было сложно найти клиентов",
"конкуренты давили", "не было системы"
]),
'solution': random.choice([
"инновационный подход", "автоматизация процессов",
"клиентоориентированность", "стратегическое планирование"
]),
'result': random.choice([
"выручка выросла в 3 раза", "число клиентов удвоилось",
"бренд узнали в 5 городах", "создали команду из 30 человек"
]),
'problem_solution': random.choice([
"решает главную проблему предпринимателей",
"помогает бизнесу расти быстрее",
"упрощает сложные процессы",
"делает мир лучше"
]),
'lesson1': "Не бойся пробовать новое",
'lesson2': "Клиент всегда прав (почти всегда)",
'lesson3': "Команда — это всё",
'lesson4': "Без маркетинга никуда",
'lesson5': "Верь в своё дело",
'short_story': random.choice([
"я просто начал и не остановился",
"увидел проблему и решил её",
"поверил в идею, несмотря на сомнения",
"просто делал то, что люблю"
]),
'belief': random.choice([
"успех приходит к тем, кто не боится ошибаться",
"лучший способ предсказать будущее — создать его",
"качество всегда побеждает количество"
]),
'tip': random.choice(["простой", "важный", "ключевой"]),
'advice': random.choice([
"не распыляйся на всё подряд — фокусируйся на главном",
"слушай своих клиентов — они лучшие советчики",
"инвестируй в своё развитие — это окупается",
"не бойся делегировать задачи"
]),
'start_point': random.choice([
"идеи и ноутбука", "небольшого стартапа",
"мечты и энтузиазма", "первых 5 клиентов"
]),
'quote': random.choice([
"Бизнес — это не про деньги, а про ценность, которую ты создаёшь",
"Каждый отказ приближает тебя к успеху",
"Лучший момент начать — прямо сейчас",
"Сложно — значит ты на правильном пути"
]),
'benefit': random.choice([
"прибыль без головной боли",
"стабильный доход",
"финансовую свободу",
"масштабирование бизнеса"
]),
'hashtag': random.choice([
"бизнесрост", "предприниматель", "успех",
"бизнесидеи", "мойбизнес", "развитие"
])
}
# Выбираем случайный шаблон для платформы
template = random.choice(self.templates[platform])
# Заполняем шаблон данными
try:
post = template.format(**data)
except KeyError as e:
# Если какие-то ключи отсутствуют
post = f"📝 Пост для {platform.upper()}\n\n" \
f"Бизнес: {business_type}\n" \
f"Описание: {business_description or 'Не указано'}\n\n" \
f"Расскажи о своём бизнесе в комментариях! 👇\n\n#бизнес #предприниматель"
return post