FincH12 commited on
Commit
698348e
·
verified ·
1 Parent(s): fd40f81

Upload content_generator.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. content_generator.py +17 -24
content_generator.py CHANGED
@@ -191,36 +191,29 @@ def generate_single_post(news_context, exclude_posts=None):
191
  """
192
  tones = [
193
  "Провокативний стратег (гарячі тейки, злам стереотипів)",
194
- "Глибокий аналітик (ро� settings = settings_manager.load_settings()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
195
  prompt_template = settings.get("PROMPT_SINGLE", "")
196
 
197
  prompt = prompt_template.format(
198
  news_context=news_context,
199
  exclude_str=exclude_str,
200
  tone=tone
201
- )нення, а не привід клікати.
202
- - Заголовки: Пиши заголовки-крючки (hook), що чіпляють увагу, а не нудні заголовки-новини.
203
- - Посилання: КАТЕГОРИЧНО ЗАБОРОНЕНО вставляти будь-які URL або посилання в полі description. Посилання на джерело має повертатися виключно окремо в ключі source_url.
204
- - Хештеги: КАТЕГОРИЧНО ЗАБОРОНЕНО використовувати масові теги (#AI, #Crypto, #ШІ, #Технології). Використовуй лише 1-2 вузьких тега максимум (наприклад, #DeFiУкраїна, #LLMбезпека, #ХарківTech). Розташовуй теги строго в самому кінці тексту.
205
-
206
- 2. РОЛЬ: ART DIRECTOR & UI/UX DESIGNER (Візуал)
207
- - Дизайн фону: Ти створюєш преміальні промпти для генерації зображень (Flux.1). Ти ідеально відчуваєш композицію, тому завжди вимагаєш \"clean negative space\" для читабельності тексту.
208
- - Копірайт для карток: Заголовок картки — до 4 слів (punchy). Тези — до 8 слів, тільки саме \"м'ясо\".
209
-
210
- Поверни результат строго у форматі JSON із наступними ключами:
211
- {{
212
- \"category\": \"одна з трьох категорій: 'AI', 'Business' або 'Crypto'\",
213
- \"bg_prompt\": \"англійською мовою детальний промпт для генерації фону (Flux.1). Premium dark aesthetics, volumetric lighting, glowing elements, background only, smooth clean negative space, absolutely no text\",
214
- \"card_title\": \"короткий заголовок (до 4 слів, без води)\",
215
- \"card_bullets\": [
216
- \"теза 1 (чіткий факт до 8 слів)\",
217
- \"теза 2 (висновок або інсайт до 8 слів)\"
218
- ],
219
- \"description\": \"Супровідний текст посту (до 400 символів). Жива мова з власною позицією, без шаблонів. Жодних посилань/URL у цьому тексті! Строго 1-2 вузьких тега в самому кінці.\",\n \"source_url\": \"коротке посилання на першоджерело новини (обов\'язково)\"
220
- }}
221
-
222
- Повертай ТІЛЬКИ чистий JSON-об'єкт.
223
- """
224
 
225
  print("[Content Generator] Генерация одиночного поста (Persona Skills)...")
226
  raw_res = generate_text_via_gemini(prompt)
 
191
  """
192
  tones = [
193
  "Провокативний стратег (гарячі тейки, злам стереотипів)",
194
+ "Глибокий аналітик (розкладає по поличках складні речі)",
195
+ "Інсайдер-візіонер (розповідає про майбутнє як про доконаний факт)"
196
+ ]
197
+ import random
198
+ tone = random.choice(tones)
199
+
200
+ exclude_str = ""
201
+ if exclude_posts:
202
+ exclude_items = []
203
+ for i, post_text in enumerate(exclude_posts):
204
+ post_preview = post_text.replace('\n', ' ').strip()[:150]
205
+ exclude_items.append(f"- {post_preview}...")
206
+ exclude_list_str = "\n".join(exclude_items)
207
+ exclude_str = f"\nКАТЕГОРИЧНО ЗАБОРОНЕНО обирати теми або новини, про які вже було опубліковано останні пости:\n{exclude_list_str}\nБудь ласка, обери повністю іншу новину з контексту, яка не має жодного відношення до вищеперелічених тем та новин!"
208
+
209
+ settings = settings_manager.load_settings()
210
  prompt_template = settings.get("PROMPT_SINGLE", "")
211
 
212
  prompt = prompt_template.format(
213
  news_context=news_context,
214
  exclude_str=exclude_str,
215
  tone=tone
216
+ )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
217
 
218
  print("[Content Generator] Генерация одиночного поста (Persona Skills)...")
219
  raw_res = generate_text_via_gemini(prompt)