JeCabrera commited on
Commit
c0b0dd7
·
verified ·
1 Parent(s): 9550ad2

Upload 14 files

Browse files
Files changed (4) hide show
  1. README.md +2 -2
  2. app.py +106 -11
  3. generator_bullets.py +579 -0
  4. headline_generator.py +444 -308
README.md CHANGED
@@ -1,11 +1,11 @@
1
  ---
2
  license: afl-3.0
3
- title: FB ADS Generator CopyXpert 2G
4
  sdk: streamlit
5
  emoji: 🏆
6
  colorFrom: red
7
  colorTo: yellow
8
  pinned: true
9
- sdk_version: 1.43.2
10
  short_description: Transform your audience's thoughts into persuasive bullets
11
  ---
 
1
  ---
2
  license: afl-3.0
3
+ title: Bullet_Generator 2G
4
  sdk: streamlit
5
  emoji: 🏆
6
  colorFrom: red
7
  colorTo: yellow
8
  pinned: true
9
+ sdk_version: 1.42.2
10
  short_description: Transform your audience's thoughts into persuasive bullets
11
  ---
app.py CHANGED
@@ -14,6 +14,7 @@ import PyPDF2
14
  import docx
15
  from PIL import Image
16
  import io
 
17
 
18
  # Cargar las variables de entorno
19
  load_dotenv()
@@ -30,19 +31,93 @@ def get_model(temperature):
30
  return genai.GenerativeModel('gemini-2.0-flash', generation_config=generation_config)
31
 
32
  # Function to generate Facebook ads
33
- def generate_fb_ad(target_audience, product, temperature, selected_formula, selected_angle, selected_persona, story_prompt="", ad_objective=None, file_content="", image_parts=None, max_file_chars=50000):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  if not target_audience or not product:
35
  return "Por favor, completa todos los campos requeridos."
36
 
 
 
 
 
37
  # Enfatizar el tema de la historia si se proporciona
38
  emphasized_story_prompt = story_prompt
39
  if story_prompt and story_prompt.strip():
40
- # Añadir énfasis al tema para que el modelo le dé más importancia
41
  emphasized_story_prompt = story_prompt.strip()
42
 
43
  model = get_model(temperature)
44
 
45
- # Crear la instrucción base
46
  ad_instruction = create_fb_ad_instruction(
47
  target_audience,
48
  product,
@@ -50,8 +125,9 @@ def generate_fb_ad(target_audience, product, temperature, selected_formula, sele
50
  selected_angle,
51
  selected_persona,
52
  ad_objective,
53
- language="español", # Fixed to Spanish
54
- story_prompt=emphasized_story_prompt # Usar el tema enfatizado
 
55
  )
56
 
57
  # Si hay contenido de archivo, añadirlo a la instrucción
@@ -61,7 +137,6 @@ def generate_fb_ad(target_audience, product, temperature, selected_formula, sele
61
  # Si hay un tema específico, ajustar la temperatura para mayor coherencia
62
  effective_temperature = temperature
63
  if story_prompt and story_prompt.strip():
64
- # Reducir ligeramente la temperatura para mantener más enfoque en el tema
65
  effective_temperature = max(0.1, temperature * 0.9)
66
 
67
  # Generar el contenido con o sin imagen
@@ -225,6 +300,18 @@ if submit_ad:
225
  # Mostrar el spinner en la segunda columna
226
  with col2:
227
  with st.spinner('Generando anuncio...'):
 
 
 
 
 
 
 
 
 
 
 
 
228
  generated_ad = generate_fb_ad(
229
  ad_target_audience,
230
  ad_product,
@@ -232,11 +319,12 @@ if submit_ad:
232
  ad_formula,
233
  emotional_angle,
234
  ad_persona,
235
- input_prompt, # Pass the new story prompt
236
  selected_objective,
237
  file_content if 'file_content' in locals() and file_content else "",
238
  image_parts if 'image_parts' in locals() and is_image else None,
239
- 50000 # Nuevo límite de caracteres para archivos
 
240
  )
241
 
242
  if not isinstance(generated_ad, str):
@@ -245,9 +333,10 @@ if submit_ad:
245
  # Store the generated ad in session state to preserve it
246
  st.session_state.current_ad = generated_ad
247
 
248
- # Display the ad
249
  st.markdown(f"""
250
  <div style="{styles['results_container']}">
 
251
  <h3>Anuncio Generado:</h3>
252
  <p>{generated_ad}</p>
253
  </div>
@@ -260,10 +349,13 @@ if submit_ad:
260
  import datetime
261
  timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
262
 
 
 
 
263
  # Botón de descarga with timestamp in filename
264
  st.download_button(
265
  label="DESCARGAR ANUNCIO",
266
- data=generated_ad,
267
  file_name=f"anuncio_facebook_{timestamp}.txt",
268
  mime="text/plain"
269
  )
@@ -296,4 +388,7 @@ elif 'current_ad' in st.session_state:
296
 
297
  # Agregar firma del autor al final de la página
298
  st.markdown('---')
299
- st.markdown('Made with ❤️ by Jesús Cabrera')
 
 
 
 
14
  import docx
15
  from PIL import Image
16
  import io
17
+ from headline_generator import generate_headlines_with_model
18
 
19
  # Cargar las variables de entorno
20
  load_dotenv()
 
31
  return genai.GenerativeModel('gemini-2.0-flash', generation_config=generation_config)
32
 
33
  # Function to generate Facebook ads
34
+ # Import necessary modules at the top
35
+ from headline_formulas import headline_formulas
36
+ import random
37
+
38
+ # Function to generate headlines and select one randomly
39
+ def generate_and_select_headline(target_audience, product, temperature, selected_angle):
40
+ # Get the model
41
+ model = get_model(temperature)
42
+
43
+ # Select a random formula for the headline
44
+ formula_name = random.choice(list(headline_formulas.keys()))
45
+ selected_formula = headline_formulas[formula_name]
46
+
47
+ # Generate 3 headlines
48
+ headlines = generate_headlines_with_model(
49
+ model=model,
50
+ target_audience=target_audience,
51
+ product=product,
52
+ selected_formula=selected_formula,
53
+ selected_angle=selected_angle,
54
+ number_of_headlines=3
55
+ )
56
+
57
+ # Parse the headlines (assuming they come in a numbered format)
58
+ headline_list = []
59
+ for line in headlines.strip().split('\n'):
60
+ if line.strip() and line[0].isdigit() and '.' in line:
61
+ # Extract the headline text after the number and period
62
+ headline_text = line.split('.', 1)[1].strip()
63
+ headline_list.append(headline_text)
64
+
65
+ # If we couldn't parse any headlines, return a default one
66
+ if not headline_list:
67
+ return f"Descubre cómo {product} puede transformar tu vida como {target_audience}"
68
+
69
+ # Select a random headline from the generated ones
70
+ selected_headline = random.choice(headline_list)
71
+ return selected_headline
72
+
73
+ def generate_headline(target_audience=None, product=None, temperature=1.0, angle=None):
74
+ # Check if UI variables exist, otherwise use parameters
75
+ try:
76
+ target_audience = target_audience or ad_target_audience
77
+ product = product or ad_product
78
+ temperature = temperature or ad_temperature
79
+ angle = angle or emotional_angle_key
80
+ except NameError:
81
+ # If UI variables don't exist yet, use the provided parameters
82
+ pass
83
+
84
+ # Obtener el modelo usando la función existente
85
+ model = get_model(temperature)
86
+
87
+ # Remove duplicate imports and use the ones at the top of the file
88
+ formula_name = random.choice(list(headline_formulas.keys()))
89
+ selected_formula = headline_formulas[formula_name]
90
+
91
+ # Generar el titular usando el modelo ya inicializado
92
+ headline = generate_headlines_with_model(
93
+ model=model,
94
+ target_audience=target_audience,
95
+ product=product,
96
+ selected_formula=selected_formula,
97
+ selected_angle=angle
98
+ )
99
+
100
+ return headline
101
+
102
+ # Modify the generate_fb_ad function to accept a headline parameter
103
+ def generate_fb_ad(target_audience, product, temperature, selected_formula, selected_angle,
104
+ selected_persona, story_prompt="", ad_objective=None, file_content="",
105
+ image_parts=None, max_file_chars=50000, headline=None):
106
  if not target_audience or not product:
107
  return "Por favor, completa todos los campos requeridos."
108
 
109
+ # Generate a headline if none is provided
110
+ if not headline:
111
+ headline = generate_and_select_headline(target_audience, product, temperature, selected_angle)
112
+
113
  # Enfatizar el tema de la historia si se proporciona
114
  emphasized_story_prompt = story_prompt
115
  if story_prompt and story_prompt.strip():
 
116
  emphasized_story_prompt = story_prompt.strip()
117
 
118
  model = get_model(temperature)
119
 
120
+ # Crear la instrucción base, ahora incluyendo el titular
121
  ad_instruction = create_fb_ad_instruction(
122
  target_audience,
123
  product,
 
125
  selected_angle,
126
  selected_persona,
127
  ad_objective,
128
+ language="español",
129
+ story_prompt=emphasized_story_prompt,
130
+ headline=headline # Pass the headline to the instruction creator
131
  )
132
 
133
  # Si hay contenido de archivo, añadirlo a la instrucción
 
137
  # Si hay un tema específico, ajustar la temperatura para mayor coherencia
138
  effective_temperature = temperature
139
  if story_prompt and story_prompt.strip():
 
140
  effective_temperature = max(0.1, temperature * 0.9)
141
 
142
  # Generar el contenido con o sin imagen
 
300
  # Mostrar el spinner en la segunda columna
301
  with col2:
302
  with st.spinner('Generando anuncio...'):
303
+ # Generate a headline first
304
+ headline = generate_and_select_headline(
305
+ ad_target_audience,
306
+ ad_product,
307
+ ad_temperature,
308
+ emotional_angle
309
+ )
310
+
311
+ # Store the headline in session state
312
+ st.session_state.current_headline = headline
313
+
314
+ # Generate the ad with the headline
315
  generated_ad = generate_fb_ad(
316
  ad_target_audience,
317
  ad_product,
 
319
  ad_formula,
320
  emotional_angle,
321
  ad_persona,
322
+ input_prompt,
323
  selected_objective,
324
  file_content if 'file_content' in locals() and file_content else "",
325
  image_parts if 'image_parts' in locals() and is_image else None,
326
+ 50000,
327
+ headline # Pass the generated headline
328
  )
329
 
330
  if not isinstance(generated_ad, str):
 
333
  # Store the generated ad in session state to preserve it
334
  st.session_state.current_ad = generated_ad
335
 
336
+ # Display the headline and ad
337
  st.markdown(f"""
338
  <div style="{styles['results_container']}">
339
+ <h2>{headline}</h2>
340
  <h3>Anuncio Generado:</h3>
341
  <p>{generated_ad}</p>
342
  </div>
 
349
  import datetime
350
  timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
351
 
352
+ # Prepare content with headline for download
353
+ download_content = f"TITULAR: {headline}\n\n{generated_ad}"
354
+
355
  # Botón de descarga with timestamp in filename
356
  st.download_button(
357
  label="DESCARGAR ANUNCIO",
358
+ data=download_content,
359
  file_name=f"anuncio_facebook_{timestamp}.txt",
360
  mime="text/plain"
361
  )
 
388
 
389
  # Agregar firma del autor al final de la página
390
  st.markdown('---')
391
+ st.markdown('Made with ❤️ by Jesús Cabrera')
392
+
393
+ # Ejemplo de uso dentro de una función existente o en un nuevo endpoint
394
+ # Move this function up to be with the other utility functions
generator_bullets.py ADDED
@@ -0,0 +1,579 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import random
2
+
3
+ def create_bullet_instruction(product_service=None, uploaded_content=None, target_audience=None, skills=None, selected_formula_name=None):
4
+ """
5
+ Creates the instruction for generating benefit bullets.
6
+ The model will randomly choose between different bullet formulas.
7
+
8
+ Args:
9
+ target_audience: Description of the target audience
10
+ product_service: Kind of product or service
11
+ uploaded_content: Content from uploaded files (if any)
12
+ skills: User's skills and expertise
13
+ selected_formula_name: Name of the formula selected for the main offer
14
+
15
+ Returns:
16
+ str: The complete instruction for generating bullets
17
+ """
18
+ # Base instruction that applies to all formulas
19
+ # Modify the FORMAT RULES section in the base_instruction
20
+ # Modify the introduction options for bullets
21
+ base_instruction = """
22
+ IMPORTANT: After creating the main offer, add a section with 5 powerful benefit bullets that reinforce the promise.
23
+
24
+ Start the bullets section with one of these creative introductions and a space before the first bullet:
25
+
26
+ "**5 Cambios poderosos que notorás:**" or
27
+ "**Lo que descurirás en este viaje:**" or
28
+ "**Tu nueva realidad incluye:**"
29
+
30
+ For the benefit bullets section:
31
+
32
+ You are a world-class expert copywriter, experienced in creating benefits that emotionally connect and address the desires, problems, and motivations of the target audience.
33
+
34
+ OBJECTIVE:
35
+ - Generate 5 convincing and specific benefit bullets in Spanish
36
+ - Connect emotionally with the audience
37
+ - Address real desires, problems, and motivations
38
+ - Maintain natural and conversational language
39
+ - Orient each benefit towards action
40
+
41
+ FORMAT RULES (CRITICAL - MUST FOLLOW EXACTLY):
42
+ - Start the section with "**BENEFICIOS:**" in bold
43
+ - Each benefit must start with "• " (bullet point followed by a space)
44
+ - The first verb or action phrase of each bullet must be in bold using "**bold text**"
45
+ - One benefit per line with exactly one empty line between bullets
46
+ - Never include colons (:) in bullets
47
+ - Never use exclamation marks (!) in any bullet
48
+ - Each benefit must be a complete and concise phrase
49
+ - Do not use any emojis in the bullets
50
+ - Use natural, conversational language
51
+ - ALL bullets must follow exactly the same formatting pattern
52
+ - The spacing between bullets must be exactly the same (one empty line)
53
+
54
+ EXAMPLE FORMAT:
55
+ **BENEFICIOS:**
56
+
57
+ • **Participa con confianza** en reuniones internacionales y expresa tus ideas con fluidez en tan solo 4 semanas, sin depender de traductores.
58
+
59
+ • **Supera el miedo** a cometer errores y proyecta una imagen profesional y segura al comunicarte en inglés, gracias a nuestras sesiones de práctica intensiva.
60
+
61
+ • **Accede a oportunidades** de ascenso y aumenta tu salario hasta en un 30% al dominar el inglés para negocios, respaldado por nuestra garantía de resultados.
62
+
63
+ AVATAR ANALYSIS INSTRUCTIONS:
64
+
65
+ STEP 1: ANALYZE THE AVATAR DEEPLY
66
+ - Identify their specific pains, fears, objections, limiting beliefs, and problems
67
+ - Look for emotional triggers that might prevent them from taking action
68
+ - Determine what keeps them awake at night regarding this problem
69
+ - Identify what they've tried before that hasn't worked
70
+ - Understand their timeline expectations and what might make them hesitate
71
+ - EXTRACT SPECIFIC DETAILS from the avatar description AND uploaded content
72
+
73
+ STEP 2: IDENTIFY CORE PROBLEMS AND DESIRES
74
+ - List the 5 most pressing problems this avatar faces
75
+ - Determine which problems are most urgent vs. most important
76
+ - Identify the emotional impact of each problem on their daily life
77
+ - Discover what they truly desire as the ultimate outcome
78
+ - Understand what specific results would make them feel successful
79
+
80
+ STEP 3: MAP SOLUTIONS TO PROBLEMS
81
+ - For each core problem, identify a specific solution your product/service provides
82
+ - Determine exactly how your solution addresses their pain points
83
+ - Calculate specific metrics that demonstrate the effectiveness of each solution
84
+ - Identify the timeframe in which they can expect results
85
+ - Connect each solution to their emotional desires and aspirations
86
+
87
+ STEP 4: CREATE BENEFIT BULLETS THAT TRANSFORM PROBLEMS INTO RESULTS
88
+ - Craft each bullet to directly address one specific problem identified
89
+ - Include exact numbers, percentages, or timeframes for measurable outcomes
90
+ - Incorporate emotional triggers that resonate with their deepest desires
91
+ - Add proof elements that overcome their specific objections
92
+ - Ensure each bullet provides a clear, tangible solution they can visualize
93
+
94
+ FORMAT RULES:
95
+ - Each benefit must start with "• " (bullet point followed by a space)
96
+ - Make the first part of each bullet (main concept) in bold using "**bold text**" format
97
+ - One benefit per line
98
+ - Add exactly 1.2em of spacing between bullets (add an empty line between each bullet)
99
+ - No explanations or categories
100
+ - Never include : symbols in bullets
101
+ - Never use exclamation marks (!) in any bullet
102
+ - Each benefit must be a complete and concise phrase
103
+ - Do not use any emojis in the bullets
104
+ - Use natural, conversational language (avoid formal or technical jargon)
105
+ - Maintain consistent formatting across all bullets
106
+
107
+ EXAMPLE FORMAT:
108
+ • **Desbloquea tu fluidez en inglés** y participa con confianza en reuniones de alto nivel desde la primera semana.
109
+
110
+ • **Supera el miedo a cometer errores** y proyecta una imagen profesional y segura al comunicarte en inglés.
111
+
112
+ IMPORTANT:
113
+ - Each benefit must be ultra-specific with concrete, measurable outcomes
114
+ - NEVER use generic phrases like "mejorar tu vida" or "aumentar tu productividad"
115
+ - Always include specific numbers, percentages, or exact timeframes
116
+ - Each bullet must solve a very specific problem with a detailed solution
117
+ - Include at least one bullet that directly counters a common objection with evidence
118
+ - Each bullet should contain a clear call to action with a specific next step
119
+ - Avoid all generalizations - be precise about exactly what the user will get
120
+ - Maintain a persuasive but honest tone with verifiable claims
121
+ - Focus on tangible and measurable results that can be verified
122
+ - Ensure each bullet addresses a different aspect of the offer
123
+ - Write in a natural, conversational tone as if speaking directly to the reader
124
+ - Never use exclamation marks in the bullets
125
+ """
126
+
127
+ # Add guidance based on available information
128
+ guidance = ""
129
+
130
+ # Check different combinations of available information
131
+ if not target_audience and not product_service and not uploaded_content:
132
+ return """
133
+ ADVERTENCIA: No se ha proporcionado ninguna información para generar los bullets.
134
+
135
+ Para obtener bullets más efectivos y personalizados, por favor proporciona al menos uno de los siguientes:
136
+ - Descripción del público objetivo (avatar)
137
+ - Nombre del producto o servicio
138
+ - Contenido adicional relevante
139
+
140
+ Sin esta información, los bullets generados serán genéricos y posiblemente menos efectivos para tu oferta específica.
141
+ """
142
+ elif not target_audience and not product_service and uploaded_content:
143
+ # Only uploaded content provided
144
+ guidance = """
145
+ NOTA IMPORTANTE: Solo se ha proporcionado contenido adicional sin detalles específicos del público objetivo o producto.
146
+ Analiza cuidadosamente el contenido subido para:
147
+ - Identificar el público objetivo probable a partir del contexto
148
+ - Determinar el producto/servicio que probablemente se está ofreciendo
149
+ - Extraer puntos de dolor, objeciones y necesidades mencionadas en el contenido
150
+ - Crear beneficios que aborden específicamente los problemas identificados en el contenido
151
+ """
152
+ elif target_audience and not product_service and not uploaded_content:
153
+ # Only avatar description provided
154
+ guidance = """
155
+ NOTA IMPORTANTE: Solo se ha proporcionado información del público objetivo, sin detalles del producto ni contenido adicional.
156
+ Enfócate en crear beneficios que:
157
+ - Aborden los puntos de dolor específicos mencionados en la descripción del avatar
158
+ - Resuelvan las objeciones comunes que este público suele tener
159
+ - Proporcionen soluciones a los problemas específicos de este público
160
+ - Conecten emocionalmente con las motivaciones de este avatar
161
+ """
162
+ elif product_service and not target_audience and not uploaded_content:
163
+ # Only product name provided
164
+ guidance = """
165
+ NOTA IMPORTANTE: Solo se ha proporcionado información del producto, sin detalles del público objetivo ni contenido adicional.
166
+ Enfócate en crear beneficios que:
167
+ - Destaquen las características únicas de este producto específico
168
+ - Aborden objeciones comunes relacionadas con este tipo de producto
169
+ - Muestren resultados medibles que este producto puede proporcionar
170
+ - Diferencien este producto de alternativas genéricas
171
+ """
172
+ elif target_audience and product_service and not uploaded_content:
173
+ # Avatar and product provided, no uploaded content
174
+ guidance = """
175
+ NOTA IMPORTANTE: Se ha proporcionado información tanto del público objetivo como del producto, pero no hay contenido adicional.
176
+ Crea beneficios altamente dirigidos que:
177
+ - Conecten las características específicas del producto con las necesidades del avatar
178
+ - Aborden las objeciones más probables que este público tendría sobre este producto
179
+ - Muestren cómo este producto específico resuelve los problemas concretos de este avatar
180
+ - Destaquen los resultados medibles que este público específico obtendrá con este producto
181
+ """
182
+ elif target_audience and uploaded_content and not product_service:
183
+ # Avatar and uploaded content provided, no product
184
+ guidance = """
185
+ NOTA IMPORTANTE: Se ha proporcionado información del público objetivo y contenido adicional, pero no hay detalles específicos del producto.
186
+ Analiza ambas fuentes para:
187
+ - Inferir el producto/servicio probable del contexto
188
+ - Identificar puntos de dolor específicos mencionados tanto en la descripción del avatar como en el contenido subido
189
+ - Crear beneficios que aborden las necesidades y objeciones más prominentes
190
+ - Asegurar que los beneficios sean relevantes tanto para el avatar como para el contexto del contenido
191
+ """
192
+ elif product_service and uploaded_content and not target_audience:
193
+ # Product and uploaded content provided, no avatar
194
+ guidance = """
195
+ NOTA IMPORTANTE: Se ha proporcionado información del producto y contenido adicional, pero no hay detalles del público objetivo.
196
+ Analiza ambas fuentes para:
197
+ - Inferir el público objetivo probable del contexto
198
+ - Identificar cómo el producto aborda las necesidades mencionadas en el contenido subido
199
+ - Crear beneficios que destaquen cómo el producto resuelve problemas específicos mencionados en el contenido
200
+ - Enfocarte en resultados medibles que el producto puede proporcionar según el contexto
201
+ """
202
+ elif target_audience and product_service and uploaded_content:
203
+ # All information provided
204
+ guidance = """
205
+ NOTA IMPORTANTE: Se ha proporcionado información completa sobre el público objetivo, producto y contenido adicional.
206
+ Utiliza todas las fuentes para:
207
+ - Crear beneficios ultra-específicos que conecten perfectamente el producto con las necesidades del avatar
208
+ - Extraer detalles concretos del contenido subido para hacer los beneficios más relevantes y personalizados
209
+ - Abordar objeciones específicas mencionadas en cualquiera de las fuentes
210
+ - Crear beneficios que destaquen exactamente cómo este producto resuelve los problemas concretos de este avatar
211
+ """
212
+
213
+ # Add information about available inputs
214
+ input_information = f"""
215
+
216
+ AVAILABLE INFORMATION FOR ANALYSIS:
217
+
218
+ 1. TARGET AUDIENCE DESCRIPTION:
219
+ {target_audience if target_audience else "No specific target audience provided."}
220
+
221
+ 2. PRODUCT/SERVICE NAME:
222
+ {product_service if product_service else "No specific product or service provided."}
223
+
224
+ 3. UPLOADED CONTENT:
225
+ {uploaded_content if uploaded_content else "No additional content uploaded."}
226
+
227
+ 4. SKILLS AND EXPERTISE:
228
+ {skills if skills else "No specific skills provided."}
229
+
230
+ {guidance}
231
+
232
+ IMPORTANT: Analyze ALL available information above to create bullets that specifically address the needs, desires, and objections of this audience for this specific product/service.
233
+ """
234
+
235
+ # Rest of the function remains the same...
236
+ # Multiple formula instructions (unchanged)
237
+ # Add this as a new formula option in the formula_instructions section
238
+ formula_instructions = """
239
+ IMPORTANT: Choose ONE of the following bullet formulas at random and use it consistently for ALL 5 bullets:
240
+
241
+ FORMULA 1 - STANDARD BENEFIT:
242
+ - Must be relevant to a specific segment of your target audience
243
+ - Must show a specific result with exact numbers or percentages
244
+ - Must include a precise emotional element tied to a specific desire
245
+ - Must eliminate a specific objection with evidence
246
+ - Must inspire immediate action with a clear next step
247
+
248
+ EXAMPLE FORMAT FOR FORMULA 1:
249
+ •Transforma tu estrategia de email marketing con plantillas que aumentan la tasa de apertura un 37% en 14 días, incluso si nunca has escrito una campaña exitosa.
250
+
251
+ FORMULA 2 - 3 EN 1 (FEATURE + BENEFIT + MEANING):
252
+ Formula: [Feature + Benefit + Meaning]
253
+
254
+ This formula creates an instant connection by linking three key elements:
255
+ 1. Feature: A specific, tangible characteristic of your offer
256
+ 2. Benefit: The exact, measurable result it delivers
257
+ 3. Meaning: The precise transformation in their life
258
+
259
+ Instructions for Creating Connection Bullets:
260
+ 1. Identify Your Core Feature:
261
+ - What specific component makes your offer unique?
262
+ - What exact characteristic can be measured?
263
+ - What concrete element can they use immediately?
264
+
265
+ 2. Transform into Benefits:
266
+ - What specific metric will improve?
267
+ - What exact problem will it solve?
268
+ - What measurable outcome will they achieve?
269
+
270
+ 3. Add Deeper Meaning:
271
+ - How exactly will it transform their specific situation?
272
+ - What precise emotional impact will they experience?
273
+ - What concrete identity shift will occur?
274
+
275
+ Structure Formats:
276
+ 1. "[Specific Feature] para que puedas [Measurable Benefit] con lo que [Concrete Meaning]"
277
+ 2. "Con [Specific Feature] podrás [Measurable Benefit] permitiéndote [Concrete Meaning]"
278
+ 3. "Gracias a [Specific Feature] lograrás [Measurable Benefit] haciendo que [Concrete Meaning]"
279
+ 4. "Mediante [Specific Feature] conseguirás [Measurable Benefit] lo que significa [Concrete Meaning]"
280
+ 5. "Usando [Specific Feature] alcanzarás [Measurable Benefit] transformando [Concrete Meaning]"
281
+
282
+ EXAMPLES FOR FORMULA 2:
283
+ • El Sistema de inmersión bilingüe de 21 días para que puedas mantener conversaciones de 15 minutos en inglés con lo que por fin dejarás de depender de traductores en tus reuniones internacionales.
284
+
285
+ • Con nuestro algoritmo de enfoque profundo de 3 pasos podrás completar proyectos en 4 horas en lugar de 8 permitiéndote disfrutar 20 horas adicionales semanales con tu familia.
286
+
287
+ • Gracias a nuestra tecnología de reprogramación mental de 28 días lograrás superar el miedo a hablar en público haciendo que te sientas seguro al presentar ante audiencias de hasta 500 personas.
288
+
289
+ • Mediante nuestro framework de creatividad de 5 fases conseguirás generar 10 ideas innovadoras por sesión lo que significa que nunca más perderás oportunidades de negocio por falta de propuestas.
290
+
291
+ • Usando nuestro sistema de automatización de tareas alcanzarás una reducción del 68% en tiempo administrativo transformando 15 horas semanales de trabajo tedioso en tiempo productivo para hacer crecer tu negocio.
292
+
293
+ FORMULA 3 - ANTI-PROCRASTINACIÓN (ACTION + RESULT + TIME):
294
+ Formula: [Action + Result + Time]
295
+
296
+ This formula uses a clear action followed by a direct result and the time in which that result will be achieved. You can modify the order of elements as needed.
297
+
298
+ Instructions:
299
+ 1. Establish the clear action that the user must take (specific action with details)
300
+ 2. Define the exact result with numbers/percentages that the user will obtain
301
+ 3. Indicate the precise time period with exact days/weeks/months
302
+
303
+ Response Format (choose one for each bullet):
304
+ 1. Action + Result + Time
305
+ 2. Action + Time + Result
306
+ 3. Result + Action + Time
307
+ 4. Result + Time + Action
308
+ 5. Time + Action + Result
309
+ 6. Time + Result + Action
310
+ 7. Result + Time + Action
311
+
312
+ EXAMPLES FOR FORMULA 3:
313
+ • Implementa nuestra estrategia de email marketing y aumenta tus ventas un 27% en los próximos 30 días, incluso si tu lista tiene menos de 500 suscriptores.
314
+
315
+ • Aplica las 3 técnicas de copywriting en tus próximos 5 posts y en 14 días verás un incremento del 42% en engagement, eliminando por completo los comentarios negativos.
316
+
317
+ • Tu tasa de conversión aumentará del 2% al 5.7% cuando implementes nuestro sistema de embudos en los próximos 21 días, sin necesidad de aumentar tu presupuesto publicitario.
318
+
319
+ • En 28 días exactos dominarás las 7 habilidades fundamentales de negociación aplicando nuestro método paso a paso, incluso si actualmente cedes en cada discusión.
320
+
321
+ • 8 semanas es todo lo que necesitas para transformar tu cuerpo con nuestro programa de 15 minutos diarios, reduciendo hasta 8 kg de grasa y aumentando tu energía un 65% desde la primera semana.
322
+
323
+ FORMULA 4 - NÚMERICA SUPREMA:
324
+ La Fórmula Suprema de Istvanova combina 5 elementos clave más artículos plurales para crear bullets persuasivos e interesantes:
325
+
326
+ 1. Artículos Plurales (Art):
327
+ - Los (para masculino plural)
328
+ - Las (para femenino plural)
329
+ - Dan naturalidad y autoridad al texto
330
+
331
+ 2. Números (N):
332
+ - Específicos y creíbles (3, 5, 7, 10...)
333
+ - Crean estructura y expectativas claras
334
+ - Se combinan con artículos: "Los 5...", "Las 3..."
335
+
336
+ 3. Adjetivo (A):
337
+ - Emocionales y descriptivos
338
+ - Conectan con deseos/miedos específicos
339
+ - Ejemplos: comprobados, científicos, revolucionarios
340
+
341
+ 4. Palabra Clave (P):
342
+ - Término central del beneficio en plural
343
+ - Fácil de entender y recordar
344
+ - Ejemplos: métodos, estrategias, técnicas, secretos
345
+
346
+ 5. Razón (R):
347
+ - Justifica el beneficio con datos concretos
348
+ - Añade credibilidad con evidencia específica
349
+ - Conecta con la motivación específica del lector
350
+
351
+ 6. Promesa (P):
352
+ - Resultado específico y medible con números
353
+ - Timeframe realista con días/semanas exactas
354
+ - Beneficio final atractivo y verificable
355
+
356
+ EXAMPLES FOR FORMULA 4:
357
+ • Los 3 rituales científicamente probados para reducir tu estrés un 47% en 14 días, validados por la Universidad de Stanford.
358
+
359
+ • Las 5 rutinas efectivas para fortalecer tu core en solo 12 minutos diarios, eliminando el dolor lumbar en el 89% de los casos.
360
+
361
+ • Las 7 hábitos esenciales para aumentar tu productividad un 63%, permitiéndote completar en 4 horas lo que antes hacías en 8.
362
+
363
+ • Las 3 técnicas comprobadas para dormir 7 horas ininterrumpidas basadas en neurociencia, que han ayudado a 1,243 personas con insomnio crónico.
364
+
365
+ • Los 5 movimientos efectivos para fortalecer tu core sin equipamiento, que activan un 78% más de fibras musculares que los ejercicios tradicionales.
366
+
367
+ FORMULA 5 - EL TRIÁNGULO DE ORO:
368
+ Formula: [Benefit 1 + Benefit 2 + Great Promise]
369
+
370
+ This formula creates high-impact bullets by combining three key benefits persuasively:
371
+ 1. Benefit 1: The first benefit that addresses an immediate client need
372
+ 2. Benefit 2: An additional benefit that generates more value
373
+ 3. Great Promise: The main or most impactful promise that closes the proposal
374
+
375
+ Instructions for Creating Powerful Bullets:
376
+ 1. Identify Your Audience's Great Dream:
377
+ - What's their ultimate aspiration?
378
+ - What keeps them awake at night?
379
+ - What's their ideal scenario?
380
+ - What transformation do they deeply desire?
381
+
382
+ 2. Structure Your Benefits:
383
+ - Write in a natural, conversational tone (like talking to a friend)
384
+ - Flow elements together without forced pauses or commas
385
+ - Make transitions smooth and invisible
386
+ - Keep the rhythm flowing from start to finish
387
+
388
+ 3. Craft Your Benefits:
389
+ - Benefit 1: Hook them with their biggest pain point using casual language
390
+ - Benefit 2: Build momentum with an exciting complementary gain
391
+ - Great Promise: Deliver the knockout punch that makes them say "I need this!"
392
+
393
+ 4. Tips for Maximum Impact:
394
+ - Write like you speak (but better)
395
+ - Avoid formal language or stiff transitions
396
+ - Make each element flow naturally into the next
397
+ - Create a rhythm that pulls the reader through
398
+ - Use conversational connectors instead of commas
399
+ - Read it aloud - if you stumble, rewrite it
400
+ - Make it so engaging they can't stop reading
401
+ - Keep the energy high from start to finish
402
+
403
+ Structure Formats:
404
+ 1. "[benefit 1] [benefit 2] [great promise]"
405
+ 2. "[benefit 2] [benefit 1] [great promise]"
406
+ 3. "[great promise] [benefit 2] [benefit 1]"
407
+ 4. "[great promise] [benefit 1] [benefit 2]"
408
+ 5. "[benefit 1] [benefit 2] [great promise]"
409
+ 6. "[benefit 1] + question + [benefit 2] + [great promise]"
410
+ 7. "question + [benefit 1] + [benefit 2] + [great promise]"
411
+ 8. "[benefit 1] + while + [benefit 2] + and also + [great promise]"
412
+ 9. "Not only + [benefit 1] + but also + [benefit 2] + and best of all + [great promise]"
413
+ 10. "Imagine + [benefit 1] + at the same time as + [benefit 2] + and finally + [great promise]"
414
+ 11. "From + [benefit 1] + going through + [benefit 2] + until + [great promise]"
415
+ 12. "First + [benefit 1] + then + [benefit 2] + and at the end + [great promise]"
416
+ 13. "Start with + [benefit 1] + transform with + [benefit 2] + culminate with + [great promise]"
417
+ 14. "Tired of the opposite of [benefit 1]? + Discover + [benefit 2] + and achieve + [great promise]"
418
+ 15. "Finally + [benefit 1] + plus + [benefit 2] + and as a bonus + [great promise]"
419
+
420
+ EXAMPLES FOR FORMULA 5:
421
+ • Reduce tu estrés laboral en un 42% mientras aumentas tu productividad un 37% y transforma tu carrera profesional con nuestro sistema de gestión del tiempo basado en neurociencia aplicada.
422
+
423
+ • Domina 5 idiomas extranjeros mientras duermes 8 horas ininterrumpidas y activa el 89% de tu potencial cerebral con nuestro revolucionario programa de aprendizaje durante el sueño profundo.
424
+
425
+ • No solo eliminarás el dolor de espalda crónico en 14 días sino que también fortalecerás tu core un 78% y lo mejor de todo es que recuperarás la capacidad de disfrutar actividades que creías imposibles.
426
+
427
+ • ¿Cansado de perder tiempo en reuniones improductivas? Descubre cómo reducir tu jornada laboral 3 horas diarias y consigue resultados un 65% superiores con nuestro framework de productividad cuántica.
428
+
429
+ • Imagina generar 10 ideas innovadoras por día al mismo tiempo que reduces tu estrés un 47% y finalmente te conviertes en el referente creativo de tu industria con nuestro método de pensamiento lateral estructurado.
430
+
431
+ Remember to choose just ONE formula and apply it consistently to all 5 bullets.
432
+
433
+ ORMULA 6 - PERSUASIÓN PROGRESIVA (DOLOR + BENEFICIO + CURIOSIDAD + CONTRASTE + ACCIÓN):
434
+ Esta fórmula crea bullets altamente persuasivos siguiendo una estructura psicológica de 5 pasos:
435
+
436
+ 1. Dolor/Problema Específico:
437
+ - Comienza identificando un dolor o problema concreto del avatar
438
+ - Puede formularse como pregunta o afirmación directa
439
+ - Debe tocar un punto emocional específico y reconocible
440
+ - Ejemplos de inicio: "¿Cansado de...", "Si has intentado...", "Cuando te enfrentas a..."
441
+
442
+ 2. Beneficio Tangible:
443
+ - Presenta la solución de forma concreta y medible
444
+ - Incluye números específicos cuando sea posible (porcentajes, días, resultados)
445
+ - Muestra la transformación de forma visual y palpable
446
+ - Conecta directamente con el problema mencionado
447
+
448
+ 3. Elemento de Curiosidad:
449
+ - Añade un giro inesperado o sorprendente
450
+ - Utiliza frases que generen intriga
451
+ - Menciona un método poco conocido o contraintuitivo
452
+ - Ejemplos: "el truco que nadie te ha contado", "la técnica contraintuitiva que..."
453
+
454
+ 4. Eliminación de Objeciones:
455
+ - Anticipa y neutraliza resistencias comunes
456
+ - Muestra cómo se logra el resultado sin los obstáculos temidos
457
+ - Utiliza contrastes: "sin necesidad de...", "aunque nunca antes hayas..."
458
+ - Elimina la fricción mental para la acción
459
+
460
+ 5. Llamada a la Acción/Urgencia:
461
+ - Cierra con un elemento de acción inmediata
462
+ - Usa verbos en presente o imperativo
463
+ - Añade un elemento de tiempo para crear urgencia
464
+ - Conecta la acción con un resultado rápido y visible
465
+
466
+ Estructura Flexible:
467
+ - No es necesario seguir el orden exacto de los 5 elementos
468
+ - Asegúrate de incluir al menos 4 de los 5 elementos en cada bullet
469
+ - Adapta la estructura según el tipo de producto/servicio
470
+ - Mantén un tono conversacional y fluido entre los elementos
471
+
472
+ EXAMPLES FOR FORMULA 6:
473
+ • ¿Te bloqueas al hablar en público y ves cómo tu negocio pierde oportunidades? Descubre la técnica de 3 pasos que te hará comunicar con autoridad en 14 días, usando el mismo truco mental que los mejores conferencistas aplican antes de subir al escenario, sin memorizar discursos ni sonar como un robot.
474
+
475
+ • Transforma tu metabolismo lento en una máquina quemagrasa con nuestro protocolo de 8 minutos diarios que activa un 64% más de células musculares que el ejercicio tradicional, gracias al descubrimiento científico que contradice todo lo que creías sobre perder peso, incluso si tienes más de 40 años y has fracasado con todas las dietas anteriores.
476
+
477
+ • Cuando tu negocio se estanca en los mismos números mes tras mes, necesitas el sistema de escalabilidad en 3 fases que ha permitido a 1,247 emprendedores duplicar sus ingresos en 90 días, aplicando la estrategia contraintuitiva de reducir servicios en lugar de añadirlos, sin contratar personal adicional ni trabajar más horas que ahora.
478
+
479
+ • Si tus campañas de email marketing generan menos del 2% de conversión, implementa nuestra fórmula de asuntos irresistibles que aumenta la tasa de apertura un 47% desde el primer envío, utilizando el principio psicológico que las grandes marcas ocultan a propósito, sin necesidad de tener una lista grande ni conocimientos técnicos avanzados.
480
+
481
+ • ¿Frustrado porque tu contenido en redes sociales no genera clientes reales? Aplica hoy mismo nuestro framework de contenido estratégico que convierte seguidores en compradores en un ciclo de 21 días, mediante la técnica del "puente de valor" que pocos conocen pero todos los influencers rentables utilizan, aunque nunca antes hayas vendido nada a través de tus redes.
482
+ """
483
+
484
+ # Combine base instruction with formula instructions
485
+ complete_instruction = base_instruction + input_information + formula_instructions
486
+
487
+ return complete_instruction
488
+
489
+
490
+ def get_random_bullet_formula():
491
+ """
492
+ Randomly selects a bullet formula type to ensure variety in generated bullets.
493
+ Extracts formula names automatically from the instruction text.
494
+
495
+ Returns:
496
+ str: The name of the randomly selected formula
497
+ """
498
+ # Get the full instruction text
499
+ full_instruction = create_bullet_instruction()
500
+
501
+ # Extract formula names using regex pattern matching
502
+ import re
503
+
504
+ # Pattern to find formula names (looks for "FORMULA X - NAME:")
505
+ formula_pattern = r"FORMULA\s+\d+\s+-\s+([^:]+):"
506
+
507
+ # Find all matches in the instruction text
508
+ formula_matches = re.findall(formula_pattern, full_instruction)
509
+
510
+ # If no formulas found, fallback to manual list
511
+ if not formula_matches:
512
+ formulas = [
513
+ "STANDARD BENEFIT",
514
+ "3 EN 1 (FEATURE + BENEFIT + MEANING)",
515
+ "ANTI-PROCRASTINACIÓN (ACTION + RESULT + TIME)",
516
+ "NÚMERICA SUPREMA",
517
+ "EL TRIÁNGULO DE ORO"
518
+ ]
519
+ else:
520
+ formulas = formula_matches
521
+
522
+ # Select a random formula
523
+ selected_formula = random.choice(formulas)
524
+
525
+ return selected_formula
526
+
527
+
528
+ def create_bullet_instruction_with_formula(target_audience=None, product_service=None, uploaded_content=None, skills=None, selected_formula_name=None):
529
+ """
530
+ Creates the instruction for generating benefit bullets with a specific
531
+ randomly selected formula to ensure consistency.
532
+
533
+ Args:
534
+ target_audience: Description of the target audience
535
+ product_service: Name of the product or service
536
+ uploaded_content: Content from uploaded files (if any)
537
+ skills: User's skills and expertise
538
+ selected_formula_name: Name of the formula selected for the main offer
539
+
540
+ Returns:
541
+ str: The complete instruction for generating bullets with the selected formula
542
+ """
543
+ # Check if any information is provided
544
+ if not target_audience and not product_service and not uploaded_content and not skills:
545
+ return """
546
+ ADVERTENCIA: No se ha proporcionado ninguna información para generar los bullets.
547
+
548
+ Para obtener bullets más efectivos y personalizados, por favor proporciona al menos uno de los siguientes:
549
+ - Descripción del público objetivo (avatar)
550
+ - Nombre del producto o servicio
551
+ - Contenido adicional relevante
552
+ - Habilidades y experiencia
553
+
554
+ Sin esta información, los bullets generados serán genéricos y posiblemente menos efectivos para tu oferta específica.
555
+ """
556
+
557
+ # Get base instruction
558
+ base_instruction = create_bullet_instruction(
559
+ target_audience=target_audience,
560
+ product_service=product_service,
561
+ uploaded_content=uploaded_content,
562
+ skills=skills,
563
+ selected_formula_name=selected_formula_name # Pass the formula name
564
+ )
565
+
566
+ # Get a random formula
567
+ selected_bullet_formula = get_random_bullet_formula()
568
+
569
+ # Add specific instruction to use the selected formula
570
+ formula_directive = f"""
571
+
572
+ IMPORTANT OVERRIDE: For this specific task, you MUST use FORMULA {selected_bullet_formula}
573
+ for ALL 5 bullets. Do not choose randomly - you must use this exact formula consistently.
574
+ """
575
+
576
+ # Combine instructions
577
+ complete_instruction = base_instruction + formula_directive
578
+
579
+ return complete_instruction
headline_generator.py CHANGED
@@ -1,8 +1,8 @@
1
  import random
2
 
3
- def generate_random_headlines(target_audience, product, angle=None, story_prompt=None, language="español"):
4
  """
5
- Genera titulares aleatorios para anuncios de Facebook basados en plantillas predefinidas.
6
 
7
  Args:
8
  target_audience: Descripción del público objetivo
@@ -10,325 +10,461 @@ def generate_random_headlines(target_audience, product, angle=None, story_prompt
10
  angle: El ángulo estratégico seleccionado (opcional)
11
  story_prompt: Tema específico para la historia del anuncio (opcional)
12
  language: Idioma objetivo para el anuncio (default: "español")
 
 
13
 
14
  Returns:
15
  list: Lista de titulares aleatorios con diferentes estructuras
16
  """
17
 
18
- # Categorías de plantillas para asegurar variedad
19
- headline_categories = {
20
- "pregunta": [
21
- "¿{problema} {tiempo}? {solución}",
22
- "¿Cansado de {problema}? {descubrimiento}",
23
- "¿Sabías que {dato_sorprendente} puede {beneficio}?",
24
- "¿Por qué {grupo_personas} están {acción_positiva}?",
25
- ],
26
- "declaración": [
27
- "El método {adjetivo} que está revolucionando {industria}",
28
- "El secreto {adjetivo} detrás de {resultado_deseado}",
29
- "{beneficio_principal} en solo {tiempo}: El método que está cambiando {industria}",
30
- "La fórmula {adjetivo} para {beneficio} que funciona incluso si {situación_negativa}",
31
- ],
32
- "historia": [
33
- "De {situación_negativa} a {situación_positiva}: La historia que está cambiando {industria}",
34
- "Cómo {persona_común} logró {resultado_extraordinario} sin {método_común}",
35
- "La estrategia de {tiempo} que transformó {área} para miles de {grupo_personas}",
36
- ],
37
- "advertencia": [
38
- "Alerta: {problema_común} está {consecuencia_negativa}",
39
- "Advertencia: {hábito_común} podría estar {consecuencia}",
40
- "La verdad incómoda sobre {tema} que nadie menciona",
41
- "{número} señales de que {problema} está afectando tu {área_vida}",
42
- ],
43
- "curiosidad": [
44
- "Lo que {expertos} no quieren que sepas sobre {tema}",
45
- "Descubierto: El {elemento} que {beneficio_principal} en solo {tiempo_corto}",
46
- "El sorprendente vínculo entre {tema} y {resultado_deseado}",
47
- "La técnica olvidada que está transformando {industria}",
48
- ],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  }
50
-
51
- # Variables para personalizar los titulares según el contexto
52
- variables = {
53
- # Problemas comunes según el público objetivo
54
- "problema": [
55
- "no ver resultados",
56
- "perder tiempo y dinero",
57
- "sentir frustración",
58
- "quedarse estancado",
59
- "ver a otros avanzar mientras uno se queda atrás"
60
- ],
61
-
62
- # Tiempos
63
- "tiempo": [
64
- "después de tanto esfuerzo",
65
- "a pesar de intentarlo todo",
66
- "cuando más se necesita",
67
- "en momentos críticos"
68
- ],
69
-
70
- # Soluciones o descubrimientos
71
- "solución": [
72
- "Esto está cambiando las reglas del juego",
73
- "Este enfoque está transformando resultados",
74
- "Esta estrategia podría ser la respuesta"
75
- ],
76
-
77
- "descubrimiento": [
78
- "Este descubrimiento está sorprendiendo a expertos",
79
- "Esta innovación está cambiando paradigmas",
80
- "Este método está revolucionando la industria"
81
- ],
82
-
83
- # Datos sorprendentes
84
- "dato_sorprendente": [
85
- "un simple cambio de enfoque",
86
- "una técnica olvidada",
87
- "un método poco conocido",
88
- "un principio ignorado por la mayoría"
89
- ],
90
-
91
- # Beneficios
92
- "beneficio": [
93
- "transformar completamente resultados",
94
- "multiplicar efectividad",
95
- "eliminar obstáculos persistentes",
96
- "crear avances significativos"
97
- ],
98
-
99
- # Grupos de personas
100
- "grupo_personas": [
101
- "profesionales comunes",
102
- "personas sin experiencia previa",
103
- "quienes antes fracasaban",
104
- "principiantes"
105
- ],
106
-
107
- # Acciones positivas
108
- "acción_positiva": [
109
- "logrando resultados extraordinarios",
110
- "transformando su situación",
111
- "superando obstáculos históricos",
112
- "alcanzando metas que parecían imposibles"
113
- ],
114
-
115
- # Problemas comunes
116
- "problema_común": [
117
- "lo que todos hacen",
118
- "el enfoque tradicional",
119
- "el método convencional",
120
- "la estrategia que todos siguen"
121
- ],
122
-
123
- # Consecuencias negativas
124
- "consecuencia_negativa": [
125
- "saboteando el potencial",
126
- "limitando los resultados",
127
- "bloqueando el progreso",
128
- "creando obstáculos invisibles"
129
- ],
130
-
131
- # Hábitos comunes
132
- "hábito_común": [
133
- "este hábito diario",
134
- "esta práctica común",
135
- "esta rutina aparentemente inofensiva",
136
- "esta estrategia popular"
137
- ],
138
-
139
- # Consecuencias
140
- "consecuencia": [
141
- "estar saboteando los esfuerzos",
142
- "estar creando el efecto contrario",
143
- "estar limitando el potencial",
144
- "estar generando resultados opuestos"
145
- ],
146
-
147
- # Temas
148
- "tema": [
149
- f"{product}",
150
- "resultados reales",
151
- "éxito sostenible",
152
- "transformación verdadera"
153
- ],
154
-
155
- # Números
156
- "número": [
157
- "3", "5", "7", "9"
158
- ],
159
-
160
- # Áreas de vida
161
- "área_vida": [
162
- "potencial",
163
- "resultados",
164
- "progreso",
165
- "crecimiento"
166
- ],
167
-
168
- # Situaciones negativas
169
- "situación_negativa": [
170
- "frustración constante",
171
- "resultados mediocres",
172
- "estancamiento",
173
- "intentos fallidos"
174
- ],
175
-
176
- # Situaciones positivas
177
- "situación_positiva": [
178
- "resultados extraordinarios",
179
- "éxito consistente",
180
- "avance continuo",
181
- "transformación completa"
182
- ],
183
-
184
- # Industrias
185
- "industria": [
186
- "la forma de ver resultados",
187
- "la manera de lograr objetivos",
188
- "el enfoque hacia el éxito",
189
- "la perspectiva sobre el progreso"
190
- ],
191
-
192
- # Persona común
193
- "persona_común": [
194
- "alguien sin ventajas especiales",
195
- "una persona común",
196
- "quien menos lo esperaba",
197
- "alguien que antes fracasaba"
198
- ],
199
 
200
- # Resultados extraordinarios
201
- "resultado_extraordinario": [
202
- "transformar completamente su situación",
203
- "multiplicar sus resultados",
204
- "lograr lo que parecía imposible",
205
- "crear un avance significativo"
206
- ],
 
 
 
 
 
 
 
 
 
207
 
208
- # Métodos comunes
209
- "método_común": [
210
- "usar métodos complicados",
211
- "invertir fortunas",
212
- "sacrificar tiempo valioso",
213
- "seguir el camino tradicional"
214
- ],
215
 
216
- # Adjetivos
217
- "adjetivo": [
218
- "poco conocido",
219
- "revolucionario",
220
- "contraintuitivo",
221
- "sorprendente"
222
- ],
223
 
224
- # Resultados deseados
225
- "resultado_deseado": [
226
- "lograr resultados reales",
227
- "crear transformación verdadera",
228
- "generar avances significativos",
229
- "superar obstáculos persistentes"
230
- ],
231
 
232
- # Expertos/competidores
233
- "expertos": [
234
- "muchos expertos",
235
- "la mayoría de asesores",
236
- "quienes venden soluciones tradicionales",
237
- "los defensores del método convencional"
238
- ],
239
 
240
- # Elementos
241
- "elemento": [
242
- "principio",
243
- "enfoque",
244
- "método",
245
- "sistema"
246
- ],
247
 
248
- # Beneficio principal
249
- "beneficio_principal": [
250
- "transforma resultados",
251
- "elimina obstáculos",
252
- "multiplica efectividad",
253
- "genera avances significativos"
254
- ],
255
 
256
- # Tiempo corto
257
- "tiempo_corto": [
258
- "semanas",
259
- "días",
260
- "pasos simples",
261
- "un proceso sencillo"
262
- ],
 
263
 
264
- # Obstáculos comunes
265
- "obstáculo_común": [
266
- "complicaciones innecesarias",
267
- "inversiones costosas",
268
- "métodos complejos",
269
- "sacrificios excesivos"
270
- ],
271
 
272
- # Áreas específicas
273
- "área": [
274
- "productividad",
275
- "confianza",
276
- "habilidades",
277
- "resultados"
278
- ],
279
- }
280
-
281
- # Personalizar variables según el ángulo seleccionado si existe
282
- if angle and 'keywords' in angle:
283
- for keyword in angle['keywords']:
284
- if "beneficio" in variables:
285
- variables["beneficio"].append(keyword)
286
- if "tema" in variables:
287
- variables["tema"].append(keyword)
288
-
289
- # Personalizar variables según el story_prompt si existe
290
- if story_prompt:
291
- if "tema" in variables:
292
- variables["tema"].append(story_prompt)
293
- if "beneficio" in variables:
294
- variables["beneficio"].append(f"resolver {story_prompt}")
295
-
296
- # Función para reemplazar variables en una plantilla
297
- def fill_template(template):
298
- filled_template = template
299
- for var_name in variables:
300
- if "{" + var_name + "}" in template:
301
- filled_template = filled_template.replace(
302
- "{" + var_name + "}",
303
- random.choice(variables[var_name])
304
- )
305
- return filled_template
306
-
307
- # Generar titulares de diferentes categorías para asegurar variedad
308
- headlines = []
309
-
310
- # Seleccionar categorías diferentes para cada anuncio
311
- categories = list(headline_categories.keys())
312
- random.shuffle(categories)
313
-
314
- # Asegurar que tenemos al menos 3 categorías diferentes
315
- selected_categories = categories[:min(3, len(categories))]
316
-
317
- # Generar un titular de cada categoría seleccionada
318
- for category in selected_categories:
319
- template = random.choice(headline_categories[category])
320
- headline = fill_template(template)
321
- headlines.append(headline)
322
-
323
- # Si necesitamos más titulares, generar adicionales de categorías aleatorias
324
- while len(headlines) < 9: # Generar 9 titulares (3 para cada anuncio)
325
- category = random.choice(categories)
326
- templates = headline_categories[category]
327
- template = random.choice(templates)
328
- headline = fill_template(template)
329
-
330
- # Evitar duplicados
331
- if headline not in headlines:
332
- headlines.append(headline)
333
-
334
- return headlines
 
1
  import random
2
 
3
+ def generate_random_headlines(target_audience, product, angle=None, story_prompt=None, language="español", model=None, number_of_headlines=3):
4
  """
5
+ Genera titulares aleatorios para anuncios de Facebook basados en fórmulas persuasivas.
6
 
7
  Args:
8
  target_audience: Descripción del público objetivo
 
10
  angle: El ángulo estratégico seleccionado (opcional)
11
  story_prompt: Tema específico para la historia del anuncio (opcional)
12
  language: Idioma objetivo para el anuncio (default: "español")
13
+ model: El modelo de IA a utilizar (si se proporciona)
14
+ number_of_headlines: Número de titulares a generar (default: 3)
15
 
16
  Returns:
17
  list: Lista de titulares aleatorios con diferentes estructuras
18
  """
19
 
20
+ # Definir las fórmulas de titulares
21
+ headline_formulas = {
22
+ "GPS": {
23
+ "description": """
24
+ La fórmula GPS (Goal-Period-Solution) crea titulares persuasivos mezclando humor y seriedad, usando lenguaje simple y directo:
25
+ 1. **Meta** (Goal):
26
+ ¿Qué desea lograr el lector?
27
+ - Resultado deseable
28
+ - Transformación llamativa
29
+ - Logro interesante
30
+ - Mejora notable
31
+ 2. **Periodo** (Period):
32
+ ¿En qué marco temporal?
33
+ - Momento cotidiano
34
+ - Rutina diaria
35
+ - Actividad común
36
+ - Situación familiar
37
+ 3. **Superación de Obstáculo** (Solution):
38
+ Conectores variados con toque de humor:
39
+ - sin (ausencia)
40
+ - incluso si (desafío)
41
+ - aunque (contraste)
42
+ - a pesar de (adversidad)
43
+ - cuando (circunstancia)
44
+ - aun con (limitación)
45
+ - mientras (simultaneidad)
46
+ - por más que (intensidad)
47
+ El titular debe ser comprensible y ocasionalmente divertido.
48
+ """,
49
+ "examples": [
50
+ # Humor + Cotidiano
51
+ "Domina el arte de la inversión mientras te cepillas los dientes incluso si confundes Excel con PowerPoint",
52
+
53
+ # Situación Graciosa
54
+ "Aprende un nuevo idioma durante tus visitas al baño aunque solo sepas decir gracias y por favor",
55
+
56
+ # Exageración Divertida
57
+ "Conquista el miedo a hablar en público durante el desayuno a pesar de que te tiemblen hasta las pestañas",
58
+
59
+ # Contraste Humorístico
60
+ "Desarrolla músculos preparando café cuando levantar la taza te parece ejercicio extremo",
61
+
62
+ # Situación Relatable
63
+ "Domina la fotografía profesional en el supermercado aun con ese celular que sobrevivió tres caídas",
64
+
65
+ # Humor Cotidiano
66
+ "Cultiva un huerto mientras contestas emails aunque tu única planta sobreviviente sea de plástico",
67
+
68
+ # Autorreferencial
69
+ "Escribe tu bestseller mientras te duchas por más que tu gato sea tu único fan",
70
+
71
+ # Situación Común
72
+ "Aprende meditación lavando platos ni siquiera necesitas ponerte en pose pretzel",
73
+
74
+ # Exageración
75
+ "Domina el trading paseando al perro incluso si las matemáticas te dan alergia",
76
+
77
+ # Contraste Divertido
78
+ "Transforma tu postura en videollamadas aunque tu silla parezca instrumento de tortura medieval",
79
+
80
+ # Situación Familiar
81
+ "Aprende a tocar la guitarra cocinando aunque tus vecinos amenacen con mudarse",
82
+
83
+ # Humor Autoderrisivo
84
+ "Mejora tu inglés cantando en la ducha a pesar de que suenes como gato en febrero",
85
+
86
+ # Realidad Común
87
+ "Desarrolla tu marca personal haciendo la colada cuando Instagram te parece ciencia espacial",
88
+
89
+ # Situación Real
90
+ "Domina el networking comprando el pan aun con tu talento para olvidar nombres",
91
+
92
+ # Humor + Verdad
93
+ "Construye tu portfolio mientras ves series aunque tu sofá tenga poderes hipnóticos",
94
+
95
+ # Exageración Graciosa
96
+ "Aprende programación jugando con tus hijos por más que tu computadora sea del jurásico",
97
+
98
+ # Situación Cotidiana
99
+ "Domina la cocina saludable ordenando tu escritorio incluso si hervir agua es tu especialidad",
100
+
101
+ # Realidad + Humor
102
+ "Conquista Instagram esperando el metro hasta con fotos de tu almuerzo congelado",
103
+
104
+ # Contraste Gracioso
105
+ "Transforma tu rutina de ejercicios contestando emails incluso si tu idea de deporte es buscar el control remoto",
106
+
107
+ # Humor + Aspiración
108
+ "Desarrolla músculos de acero haciendo las compras aunque las bolsas del super sean tu único peso"
109
+ ]
110
+ },
111
+ "Númerica Suprema": {
112
+ "description": """
113
+ La Fórmula Suprema de Istvanova combina 5 elementos clave más artículos plurales para crear titulares persuasivos:
114
+ 1. **Artículos Plurales** (Art):
115
+ - Los (para masculino plural)
116
+ - Las (para femenino plural)
117
+ - Dan naturalidad y autoridad al texto
118
+ - Ejemplos: "Los 7 métodos...", "Las 3 técnicas..."
119
+ 2. **Números** (N):
120
+ - Específicos y creíbles (3, 5, 7, 10...)
121
+ - Crean estructura y expectativas claras
122
+ - Se combinan con artículos: "Los 5...", "Las 3..."
123
+ 3. **Adjetivo** (A):
124
+ - Emocionales y descriptivos
125
+ - Conectan con deseos/miedos
126
+ - Ejemplos: poderosos, simples, efectivos, revolucionarios
127
+ 4. **Palabra Clave** (P):
128
+ - Término central del beneficio en plural
129
+ - Fácil de entender y recordar
130
+ - Ejemplos: métodos, estrategias, técnicas, secretos
131
+ 5. **Razón** (R):
132
+ - Justifica el beneficio
133
+ - Añade credibilidad
134
+ - Conecta con la motivación del lector
135
+ 6. **Promesa** (P):
136
+ - Resultado específico y medible
137
+ - Timeframe realista
138
+ - Beneficio final atractivo
139
+ Formatos:
140
+ - Corto: Art plural + N + A + P + P
141
+ - Medio: Art plural + N + A + P + R + P
142
+ - Largo: Art plural + N + A + P + R detallada + P específica
143
+ """,
144
+ "examples": [
145
+ "Los 3 rituales probados para dormir mejor.",
146
+ "Las 5 rutinas efectivas para fortalecer tu core.",
147
+ "Los 7 hábitos esenciales para aumentar productividad.",
148
+ "Las 3 técnicas comprobadas para dormir mejor basadas en neurociencia.",
149
+ "Los 5 movimientos efectivos para fortalecer tu core sin equipamiento.",
150
+ "Las 7 estrategias esenciales para aumentar productividad sin estrés.",
151
+ "Los 3 métodos científicos para dormir mejor basados en los últimos descubrimientos de la neurociencia del sueño que transformarán tus noches.",
152
+ "Las 5 secuencias efectivas para fortalecer tu core descubiertas por fisioterapeutas olímpicos que puedes hacer en casa.",
153
+ "Los 7 sistemas revolucionarios para aumentar productividad desarrollados por CEOs que duplicarán tus resultados."
154
+ ],
155
+ "variaciones_estructura": {
156
+ "básica": "Art plural + N + A + P + P",
157
+ "intermedia": "Art plural + N + A + P + R + P",
158
+ "avanzada": "Art plural + N + A + P + R detallada + P específica"
159
+ },
160
+ "uso_articulos_plurales": {
161
+ "masculino_plural": {
162
+ "artículo": "los",
163
+ "ejemplos_palabras": "métodos, sistemas, pasos, secretos, trucos, hábitos"
164
+ },
165
+ "femenino_plural": {
166
+ "artículo": "las",
167
+ "ejemplos_palabras": "técnicas, estrategias, rutinas, tácticas, claves"
168
+ }
169
+ },
170
+ "consejos_uso": [
171
+ "Usa siempre la forma plural para mayor impacto",
172
+ "Alterna entre 'los' y 'las' según la palabra clave",
173
+ "Mantén coherencia en el género a lo largo del bullet",
174
+ "Combina artículos con números de forma natural",
175
+ "Asegura que la palabra clave esté en plural"
176
+ ]
177
+ },
178
+ "AIDA": {
179
+ "description": """
180
+ La fórmula AIDA se aplica de manera flexible y estratégica, combinando 1-4 elementos para titulares impactantes y naturales:
181
+ 1. **Atención** (A):
182
+ Ganchos de apertura poderosos:
183
+ - "¿Sabías que...?" + dato sorprendente
184
+ - Mini-historia disruptiva
185
+ - Idea contraintuitiva
186
+ - Descubrimiento inesperado
187
+ - Analogía poderosa
188
+ - "La mayoría no sabe que..."
189
+ - "Contrario a lo que piensas..."
190
+ - "Me sorprendió descubrir que..."
191
+ 2. **Interés** (I):
192
+ Desarrollo del gancho inicial:
193
+ - Detalles específicos y relevantes
194
+ - Conexión problema-solución inesperada
195
+ - Beneficios únicos y memorables
196
+ - Puente situación actual-resultado
197
+ - "La razón es simple..."
198
+ - "Lo fascinante es que..."
199
+ - "Y lo mejor de todo..."
200
+ - "Lo que hace la diferencia es..."
201
+ 3. **Deseo** (D):
202
+ Amplificación emocional:
203
+ - Imagen vivida del resultado
204
+ - Experiencia personalizada
205
+ - Prueba social natural
206
+ - Toque de exclusividad
207
+ - Conexión emocional profunda
208
+ - "Imagina poder..."
209
+ - "Piensa cómo sería..."
210
+ - "Esto significa que podrás..."
211
+ 4. **Acción** (A):
212
+ Cierre natural:
213
+ - Siguiente paso simple
214
+ - Baja fricción para comenzar
215
+ - Gratificación inmediata
216
+ - Primer paso sencillo
217
+ - Seguridad fluida
218
+ - "Pruébalo hoy mismo..."
219
+ - "Comienza con un simple..."
220
+ - "Solo necesitas..."
221
+ Combinaciones estratégicas:
222
+ - A + I: Para despertar curiosidad y explicar el valor
223
+ - A + D: Para conectar problema con deseo
224
+ - I + D: Para construir deseo desde la lógica
225
+ - I + D + A: Para construir convicción y motivar
226
+ - A + I + D: Para educar, intrigar y crear anhelo
227
+ Cada titular debe mantener un tono conversacional y evitar parecer una fórmula obvia.
228
+ """,
229
+ "examples": [
230
+ # A (dato sorprendente) + I (conexión) + D (prueba social) + A (paso simple)
231
+ "¿Sabías que el 83% de los emprendedores exitosos dedican menos de 2 horas al día a reuniones? Lo fascinante es que usan un método japonés de gestión que les permite triplicar su productividad, y puedes empezar hoy mismo.",
232
+
233
+ # A (contraintuitivo) + I (beneficio) + D (resultado) + A (inicio)
234
+ "La mayoría no sabe que existe una técnica de ventas basada en videojuegos, está revolucionando el mercado B2B, genera resultados inmediatos y puedes aprenderla en 20 minutos.",
235
+
236
+ # A (disruptivo) + I (detalle) + D (resultado)
237
+ "Contrario a lo que piensas, el momento más productivo del día no es por la mañana, sino durante una ventana de tiempo inesperada que duplicará tu capacidad de concentración.",
238
+
239
+ # A (descubrimiento) + I (solución) + D (prueba)
240
+ "Me sorprendió descubrir que los mejores vendedores nunca memorizan scripts, usan una técnica secreta de improvisación.",
241
+
242
+ # I (método único) + D (transformación) + A (acción)
243
+ "Esta técnica revolucionaria de aprendizaje está transformando cómo los profesionales dominan nuevas habilidades, pruébala hoy con solo 10 minutos.",
244
+
245
+ # I (innovación) + D (beneficio) + A (inicio)
246
+ "El método del empresario silencioso cambia las reglas del networking moderno, empieza con un simple ejercicio.",
247
+
248
+ # A (pregunta gancho) + D (resultado) + A (implementación)
249
+ "¿Sabías que existe un ritual zen que está transformando la productividad en Silicon Valley? Implementalo mañana mismo.",
250
+
251
+ # A (analogía) + D (promesa) + A (descubrimiento)
252
+ "Como el bambú japonés, este método crece silenciosamente hasta que explota en resultados, descubre cómo en 5 minutos.",
253
+
254
+ # A (mayoría) + I (validación) + A (acción)
255
+ "La mayoría desconoce el mejor momento para tomar decisiones importantes, la ciencia lo confirma, implementa este descubrimiento hoy.",
256
+
257
+ # A (mini-cambio) + I (resultado) + A (inicio)
258
+ "Un pequeño cambio en tu rutina de email desencadenará mejoras exponenciales, comienza ahora."
259
+
260
+ # A + I + D + A (metáfora natural)
261
+ "Como el bambú japonés, este método crece invisible hasta explotar en resultados que transformarán tu negocio",
262
+
263
+ # A + I + D + A (analogía deportiva)
264
+ "Los atletas olímpicos entrenan menos horas pero logran más que sus rivales gracias a esta técnica de productividad japonesa",
265
+
266
+ # A + I + D (metáfora de naturaleza)
267
+ "Al igual que las abejas construyen colmenas perfectas, este sistema organiza tu tiempo en patrones de máxima eficiencia",
268
+
269
+ # A + I + D (analogía artística)
270
+ "Como un director de orquesta que guía sin palabras, este método de ventas fluye naturalmente en cada conversación",
271
+
272
+ # I + D + A (metáfora de agua)
273
+ "Este sistema de aprendizaje fluye como un río, adaptándose naturalmente a tu estilo mientras potencia tus habilidades",
274
+
275
+ # I + D + A (analogía arquitectónica)
276
+ "Como los antiguos arquitectos japoneses que construían sin clavos, este método de networking conecta sin forzar relaciones",
277
+
278
+ # A + D + A (metáfora zen)
279
+ "Similar al jardín zen que revela su belleza gradualmente, esta rutina matutina despliega tu potencial día tras día",
280
+
281
+ # A + D + A (analogía natural)
282
+ "Como el roble que crece firme ante las tormentas, este método fortalece tu productividad en tiempos de caos",
283
+
284
+ # A + I + A (metáfora lunar)
285
+ "Al igual que la luna influye en las mareas, la neurociencia revela los ciclos naturales de tu productividad máxima",
286
+
287
+ # A + I + A (analogía culinaria)
288
+ "Como un chef que transforma ingredientes simples en obras maestras, este sistema eleva tu rutina diaria a resultados extraordinarios" ]
289
+ },
290
+ "4U": {
291
+ "description": """
292
+ La fórmula 4U se aplica de manera flexible y estratégica, combinando 1-4 elementos para crear titulares impactantes y naturales:
293
+ 1. **Útil** (Useful):
294
+ Beneficios prácticos y tangibles:
295
+ - "Cómo conseguir..." + resultado específico
296
+ - "La guía paso a paso para..."
297
+ - "El método probado que..."
298
+ - "Descubre la forma de..."
299
+ - "Aprende a..." + beneficio concreto
300
+ - "La solución definitiva para..."
301
+ - "El sistema que te permite..."
302
+ - "La estrategia que garantiza..."
303
+ 2. **Urgente** (Urgent):
304
+ Motivadores de acción inmediata:
305
+ - "Última oportunidad para..."
306
+ - "Solo disponible hasta..."
307
+ - "Antes de que sea tarde..."
308
+ - "Mientras aún hay tiempo..."
309
+ - "No esperes a que..."
310
+ - "Aprovecha ahora..."
311
+ - "La oferta expira en..."
312
+ - "Date prisa antes de que..."
313
+ 3. **Único** (Unique):
314
+ Diferenciadores memorables:
315
+ - "El método poco conocido..."
316
+ - "La técnica contraintuitiva..."
317
+ - "El descubrimiento sorprendente..."
318
+ - "La estrategia secreta..."
319
+ - "El sistema revolucionario..."
320
+ - "El enfoque innovador..."
321
+ - "La solución inesperada..."
322
+ - "El método exclusivo..."
323
+ 4. **Ultra-específico** (Ultra-specific):
324
+ Detalles precisos y medibles:
325
+ - Números exactos: "27 técnicas..."
326
+ - Tiempos concretos: "13 minutos..."
327
+ - Resultados medibles: "63% más..."
328
+ - Pasos definidos: "3 pasos..."
329
+ - Datos precisos: "8.3 veces más..."
330
+ - Métricas claras: "2.5x más rápido..."
331
+ - Cantidades específicas: "97 personas..."
332
+ - Plazos definidos: "21 días..."
333
+ Combinaciones estratégicas:
334
+ - Útil + Ultra-específico: Para audiencias prácticas y orientadas a resultados
335
+ - Urgente + Único: Para ofertas especiales y lanzamientos
336
+ - Único + Ultra-específico: Para diferenciación basada en datos
337
+ - Útil + Urgente: Para motivar acción inmediata
338
+ - Útil + Único + Ultra-específico: Para establecer autoridad y credibilidad
339
+ - Útil + Urgente + Ultra-específico: Para ofertas con beneficios medibles
340
+ - Único + Urgente + Ultra-específico: Para lanzamientos exclusivos
341
+ - Útil + Único + Urgente: Para ofertas transformadoras
342
+ - Las 4U juntas: Para máximo impacto en ofertas premium
343
+ Cada titular debe mantener un tono conversacional y evitar parecer una fórmula obvia.
344
+ """,
345
+ "examples": [
346
+ # Útil + Ultra-específico (Para audiencias prácticas y orientadas a resultados)
347
+ "Aprende 347 palabras en alemán memorizando solo 12 minutos al día mientras cocinas",
348
+ "Cultiva 27 tipos de hierbas aromáticas en 1.5 metros cuadrados de balcón generando 180 euros mensuales",
349
+ "Automatiza 89% de tus tareas administrativas dedicando 31 minutos cada lunes",
350
+
351
+ # Urgente + Único (Para ofertas especiales y lanzamientos)
352
+ "Un cartero rural comparte su sistema de gestión del tiempo antes de su retiro definitivo",
353
+ "La última clase del profesor más longevo de Oxford revela su método de memorización",
354
+ "El manuscrito perdido de un monje escriba sale a la luz tras 80 años en el Vaticano",
355
+
356
+ # Único + Ultra-específico (Para diferenciación basada en datos)
357
+ "Un grupo de 1457 abuelas italianas entrena una IA para reconocer pasta al dente con 99.7% de precisión",
358
+ "La técnica de un bibliotecario jubilado cataloga 47893 libros en 73 días usando fichas de colores",
359
+ "Un taxista noruego fotografía 12437 auroras boreales usando un iPhone 6 y tres filtros caseros",
360
+
361
+ # Útil + Urgente (Para motivar acción inmediata)
362
+ "Aprende a crear tu huerto urbano antes de que suban los precios de las verduras",
363
+ "Asegura tu plaza en el programa de ahorro energético antes del aumento de tarifas",
364
+ "Registra tu marca personal mientras el dominio premium sigue disponible",
365
+
366
+ # Útil + Único + Ultra-específico (Para establecer autoridad y credibilidad)
367
+ "La técnica de un cartero rural ayuda a 1893 personas a organizar su tiempo usando solo 17 minutos cada mañana",
368
+ "Un bibliotecario retirado genera 12437 euros vendiendo libros antiguos por menos de 3 euros cada uno",
369
+ "Una abuela italiana entrena algoritmos que reducen el tiempo de cocción un 82% manteniendo el sabor tradicional",
370
+
371
+ # Útil + Urgente + Ultra-específico (Para ofertas con beneficios medibles)
372
+ "Aprende 478 palabras en japonés en 21 días antes del aumento de precio del programa",
373
+ "Automatiza 95% de tu contabilidad en 7 días previo a la nueva normativa fiscal",
374
+ "Genera 7 fuentes de ingresos pasivos en 30 días antes del cambio en las regulaciones",
375
+
376
+ # Único + Urgente + Ultra-específico (Para lanzamientos exclusivos)
377
+ "El sistema de un monje copista digitaliza 7345 manuscritos en 31 días últimas plazas disponibles",
378
+ "La fórmula de un taxista fotografía 893 auroras boreales perfectas registro exclusivo esta semana",
379
+ "El método de un bibliotecario jubilado organiza 47893 archivos en 73 días acceso limitado",
380
+
381
+ # Útil + Único + Urgente (Para ofertas transformadoras)
382
+ "La técnica de un cartero rural transforma tu productividad antes del fin de semana",
383
+ "El sistema de una abuela italiana revoluciona tu forma de cocinar registro beta por 24 horas",
384
+ "El método de un bibliotecario maximiza tu capacidad de aprendizaje plazas limitadas"
385
+ ],
386
+ "consejos_uso": [
387
+ "Asegura que cada elemento U refuerce a los demás",
388
+ "Mantén un equilibrio entre urgencia y credibilidad",
389
+ "Usa datos específicos para aumentar la confianza",
390
+ "Adapta el orden de los elementos según tu audiencia",
391
+ "Evita exageraciones que puedan generar desconfianza",
392
+ "Combina los elementos de forma natural y fluida",
393
+ "Asegúrate de que cada elemento añada valor real",
394
+ "Prueba diferentes combinaciones para encontrar las más efectivas"
395
+ ]
396
+ }
397
  }
398
+
399
+ # Función para generar titulares usando el modelo de IA
400
+ def generate_headlines_with_model(model, target_audience, product, selected_formula=None, selected_angle="NINGUNO", number_of_headlines=3):
401
+ """
402
+ Genera titulares usando un modelo de lenguaje avanzado.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
403
 
404
+ Args:
405
+ model: El modelo de lenguaje a utilizar (ya inicializado)
406
+ target_audience: Descripción del público objetivo
407
+ product: El producto o servicio que se anuncia
408
+ selected_formula: La fórmula seleccionada para generar los titulares (si es None, se selecciona al azar)
409
+ selected_angle: El ángulo estratégico seleccionado (default: "NINGUNO")
410
+ number_of_headlines: Número de titulares a generar (default: 3)
411
+
412
+ Returns:
413
+ str: Los titulares generados en formato numerado
414
+ """
415
+ # Si no se proporciona una fórmula, seleccionar una al azar
416
+ if selected_formula is None:
417
+ formula_name = random.choice(list(headline_formulas.keys()))
418
+ selected_formula = headline_formulas[formula_name]
419
+ print(f"Fórmula seleccionada aleatoriamente: {formula_name}")
420
 
421
+ # Crear la instrucción para generar los titulares
422
+ headlines_instruction = f"""
423
+ Actúa como un experto en copywriting y marketing digital especializado en titulares persuasivos.
 
 
 
 
424
 
425
+ Genera exactamente {number_of_headlines} titulares persuasivos para un anuncio de Facebook dirigido a {target_audience} sobre {product}.
 
 
 
 
 
 
426
 
427
+ Utiliza la siguiente fórmula de copywriting como guía:
428
+ {selected_formula['description']}
 
 
 
 
 
429
 
430
+ Ejemplos de titulares con esta fórmula:
431
+ {selected_formula['examples'][:3]}
 
 
 
 
 
432
 
433
+ """
 
 
 
 
 
 
434
 
435
+ # Añadir el ángulo emocional si se proporciona
436
+ if selected_angle and selected_angle != "NINGUNO":
437
+ headlines_instruction += f"""
438
+ Incorpora este ángulo emocional en los titulares:
439
+ {selected_angle}
440
+ """
 
441
 
442
+ # Instrucciones finales para el formato
443
+ headlines_instruction += """
444
+ Importante:
445
+ 1. Numera cada titular (1., 2., 3., etc.)
446
+ 2. Cada titular debe ser único y persuasivo
447
+ 3. Adapta la fórmula al producto y audiencia específicos
448
+ 4. No uses comillas ni símbolos especiales innecesarios
449
+ 5. Mantén un tono conversacional y natural
450
 
451
+ Solo devuelve los titulares numerados, sin explicaciones adicionales.
452
+ """
 
 
 
 
 
453
 
454
+ # Usar el modelo para generar los titulares
455
+ try:
456
+ chat_session = model.start_chat(
457
+ history=[
458
+ {
459
+ "role": "user",
460
+ "parts": [headlines_instruction],
461
+ },
462
+ ]
463
+ )
464
+
465
+ response = chat_session.send_message(headlines_instruction)
466
+ generated_headlines = response.text
467
+
468
+ return generated_headlines
469
+ except Exception as e:
470
+ return f"Error al generar titulares: {str(e)}"