JeCabrera commited on
Commit
53d3e7c
·
verified ·
1 Parent(s): bdd470b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +224 -83
app.py CHANGED
@@ -2,7 +2,6 @@ from dotenv import load_dotenv
2
  import streamlit as st
3
  import os
4
  import google.generativeai as genai
5
- import random
6
 
7
  # Cargar las variables de entorno
8
  load_dotenv()
@@ -10,77 +9,184 @@ load_dotenv()
10
  # Configurar la API de Google
11
  genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
12
 
13
- # Función para obtener una mención del producto de manera probabilística
14
- def get_random_product_mention():
15
- mentions = ["Indirecta", "Metafórica"]
16
- probabilities = [0.50, 0.50]
17
- return random.choices(mentions, probabilities)[0]
18
-
19
- # Crear la instrucción de mención basada en la opción seleccionada
20
- def get_mention_instruction(product_mention, product):
21
- if product_mention == "Indirecta":
22
- return f"Referencia sutilmente el producto '{product}' como una posible solución al problema del lector sin nombrarlo explícitamente."
23
- elif product_mention == "Metafórica":
24
- return f"Introduce el producto '{product}' usando una metáfora, conectándolo simbólicamente a la solución que necesita el lector."
25
- return ""
26
-
27
  # Fórmulas con ejemplos y explicaciones
28
  headline_formulas = {
29
- "plantilla": {
30
  "description": """
31
- Crean titulares creativos y disruptivos que responden estas tres preguntas clave:
32
  1. ¿Qué es lo que el lector quiere conseguir?
33
  2. ¿En qué periodo de tiempo quiere conseguirlo?
34
  3. ¿Cuál es la objeción principal del lector que le impide lograrlo?
35
  """,
36
  "examples": [
37
- "Sin gastar un solo centavo en publicidad, consigue tus primeros 100 clientes en 30 días.",
38
- "En solo 10 minutos al día, pierde esos 5 kilos sin tener que dejar de comer lo que te gusta.",
39
- "Como ahorrar para salir de viaje, en solo tres meses y sin dejar esas noches de cine."
40
  ]
41
  },
42
- "formula_suprema_istvanova": {
43
- "description": """
44
- La fórmula Suprema de Istvanova: Números + Adjetivo + Palabra Clave + Razón + Promesa.
45
- Esta fórmula está diseñada para crear titulares poderosos y atractivos que captan la atención de tu audiencia. Cada elemento de la fórmula cumple una función específica que ayuda a estructurar el mensaje de manera que maximice su efectividad:
46
- 1. **Números**: Los números llaman la atención inmediatamente y hacen que el titular se perciba como más concreto y específico. Los números ayudan a establecer una expectativa clara y medible para el lector. Ejemplos: "5", "10", "25".
47
- 2. **Adjetivo**: Los adjetivos enriquecen el mensaje, añadiendo emoción y color al titular. Un buen adjetivo puede aumentar el atractivo del mensaje y despertar el interés del lector. Ejemplos: "secreto", "fácil", "mejor", "nuevo".
48
- 3. **Palabra Clave**: Esta es la palabra principal o el concepto central alrededor del cual gira el titular. Es el término que refleja el beneficio, la solución o el tema clave del contenido. Ejemplos: "ventas", "productividad", "salud", "éxito".
49
- 4. **Razón**: Aquí es donde explicamos el "por qué" detrás de lo que estamos ofreciendo. La razón proporciona una justificación clara y lógica sobre el beneficio o valor del producto o idea. Ejemplos: "para mejorar tu rendimiento", "para transformar tu vida", "para conseguir más clientes".
50
- 5. **Promesa**: La promesa es el resultado o beneficio que el lector puede esperar obtener. Esta es la parte que debe motivar al lector a actuar, mostrando lo que pueden lograr si siguen el consejo o utilizan el producto. Ejemplos: "te ayudará a duplicar tus ventas", "te hará más feliz y saludable", "transformará tu negocio".
51
- """,
52
- "examples": [
53
- "5 fórmulas secretas para mejorar tus cartas de venta e incrementar tus ventas",
54
- "25 frases del éxito que llevaron a Abraham Lincoln a la presidencia y que te harán un gran líder",
55
- "8 comandos claves que convierten a tu perro travieso en una adorable mascota",
56
- "10 palabras prohibidas que debes evitar que mejorarán la relación con tu pareja antes de un mes"
57
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  },
59
- "formula_aida": {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
  "description": """
61
- La fórmula AIDA: Cuando se crean titualres se ocupa uno o dos de los siguientes elementos: Atención + Interés + Deseo + Acción.
62
- Atención: Es el primer paso y el más importante: debes captar la atención del lector de inmediato. Un buen encabezado debe destacar y despertar el interés, haciendo que el lector quiera seguir leyendo.
63
- Interés: Una vez que tienes su atención, debes mantener su interés proporcionando más detalles relevantes. Aquí es donde el lector empieza a identificarse con el problema o la situación que se le presenta.
64
- Deseo: El siguiente paso es despertar el deseo del lector. Muestra cómo tu solución puede mejorar su vida o resolver su problema de manera atractiva. El lector debe visualizar los beneficios de seguir tu consejo o usar tu producto.
65
- Acción: Finalmente, debes motivar al lector a actuar. Llama a la acción de manera clara y directa para que el lector se sienta impulsado a tomar el siguiente paso.
66
  """,
67
  "examples": [
68
- "¿Cansado de no ver resultados en tu dieta?",
69
- "Descubre cómo perder peso sin dietas extremas ni horas en el gimnasio.",
70
- "Imagina verte en tu mejor forma, sin privarte de lo que te gusta.",
71
- "Comienza ahora con nuestra guía gratis y cambia tu cuerpo de inmediato.",
72
- "Imagina tener un teléfono tan rápido como cuando lo compraste.",
73
- "Te mostramos cómo atraer clientes de manera automática sin tener experiencia previa.",
74
- "¿Cansado de no ver resultados en tu dieta?",
75
- "Imagina tener ventas constantes mientras duermes."
76
  ]
77
  }
78
  }
79
 
80
  # Función para generar titulares
81
  def generate_headlines(number_of_headlines, target_audience, product, temperature, selected_formula):
82
- product_mention = get_random_product_mention()
83
- mention_instruction = get_mention_instruction(product_mention, product)
84
 
85
  # Crear la configuración del modelo
86
  generation_config = {
@@ -88,42 +194,77 @@ def generate_headlines(number_of_headlines, target_audience, product, temperatur
88
  "top_p": 0.65, # Considerar un poco menos de palabras probables
89
  "top_k": 360, # Aumentar las palabras candidatas para más variedad
90
  "max_output_tokens": 8196, # Mantenerlo igual, pero puedes aumentar si deseas más detalle
91
- "response_mime_type": "text/plain",
92
  }
93
 
94
  model = genai.GenerativeModel(
95
- model_name="gemini-1.5-flash",
96
  generation_config=generation_config,
97
- system_instruction="You are a world-class copywriter, with expertise in crafting hooks, headlines, and subject lines that immediately capture the reader's attention, prompting them to open the email or continue reading. Your skill lies in deeply understanding the emotions, desires, and challenges of a specific audience. You are also an expert in creating benefits that connect symptoms with problems, allowing you to design personalized strategies that resonate and motivate action. You know how to use proven structures to attract your target audience, generating interest and creating a powerful connection. Your task is to generate unusual, creative, and fascinating subject lines or headlines that spark curiosity and encourage the reader to engage further. Respond in Spanish and use a numbered list format. Important: Only answer with subject lines, never include explanations or categories, like this: 'La leyenda del padre soltero: Dice que nunca hay tiempo suficiente. El yoga te enseña a usar mejor el tiempo que tienes, incluso cuando te parece imposible (este bullet es curioso).'"
98
- )
99
-
100
- # Crear un mensaje para el modelo, destacando la audiencia, el producto, la fórmula seleccionada y los ejemplos
101
- headlines_instruction = (
102
- f"Tu tarea es crear {number_of_headlines} ganchos o encabezados atractivos diseñados para {target_audience}. "
103
- f"El objetivo es captar la atención de inmediato y generar un gran interés en {product}. Asegúrate de que cada título sea "
104
- f"llamativo, persuasivo y emocionalmente resonante, siguiendo la estructura de la fórmula seleccionada, que puedes ver a continuación: "
105
- f"\n\n{selected_formula['description']}.\n\n"
106
- f"Para hacer los titulares más efectivos, revisa los siguientes ejemplos de cómo esta fórmula puede ser utilizada con éxito:\n"
107
- f"- {selected_formula['examples'][0]}\n"
108
- f"- {selected_formula['examples'][1]}\n"
109
- f"- {selected_formula['examples'][2]}\n\n"
110
- f"Utiliza estos ejemplos como inspiración, pero asegúrate de crear titulares únicos y relevantes para {target_audience} siguiendo la fórmula {selected_formula} seleccionada. "
111
- f"Además, incluye la siguiente mención en todos los titulares generados: {mention_instruction}. "
112
- f"No expliques las fórmulas ni la estructura en la salida, solo proporciona los titulares. "
113
- f"Recuerda, el objetivo es crear titulares que hagan que los lectores deseen saber más y actuar."
114
- )
115
-
116
- chat_session = model.start_chat(
117
- history=[
118
- {
119
- "role": "user",
120
- "parts": [headlines_instruction],
121
- },
122
- ]
123
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
 
125
- response = chat_session.send_message("Genera los titulares") # Enviar mensaje para obtener la respuesta
126
- return response.text # Regresar la respuesta directamente
127
 
128
  # Configurar la interfaz de usuario con Streamlit
129
  st.set_page_config(page_title="Enchanted Hooks", layout="wide")
 
2
  import streamlit as st
3
  import os
4
  import google.generativeai as genai
 
5
 
6
  # Cargar las variables de entorno
7
  load_dotenv()
 
9
  # Configurar la API de Google
10
  genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
11
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  # Fórmulas con ejemplos y explicaciones
13
  headline_formulas = {
14
+ "GPS": {
15
  "description": """
16
+ Crea bullets de beneficios que respondan estas tres preguntas clave:
17
  1. ¿Qué es lo que el lector quiere conseguir?
18
  2. ¿En qué periodo de tiempo quiere conseguirlo?
19
  3. ¿Cuál es la objeción principal del lector que le impide lograrlo?
20
  """,
21
  "examples": [
22
+ "Obtén tus primeros 100 clientes en 30 días, sin gastar un solo centavo en publicidad.",
23
+ "Pierde esos 5 kilos en solo 10 minutos al día, sin dejar de disfrutar tus comidas favoritas.",
24
+ "Ahorra para salir de viaje en tres meses, sin sacrificar esas noches de cine."
25
  ]
26
  },
27
+ "Númerica Suprema": {
28
+ "description": """
29
+ La Fórmula Suprema de Istvanova combina 5 elementos clave más artículos plurales para crear bullets persuasivos:
30
+
31
+ 1. **Artículos Plurales** (Art):
32
+ - Los (para masculino plural)
33
+ - Las (para femenino plural)
34
+ - Dan naturalidad y autoridad al texto
35
+ - Ejemplos: "Los 7 métodos...", "Las 3 técnicas..."
36
+
37
+ 2. **Números** (N):
38
+ - Específicos y creíbles (3, 5, 7, 10...)
39
+ - Crean estructura y expectativas claras
40
+ - Se combinan con artículos: "Los 5...", "Las 3..."
41
+
42
+ 3. **Adjetivo** (A):
43
+ - Emocionales y descriptivos
44
+ - Conectan con deseos/miedos
45
+ - Ejemplos: poderosos, simples, efectivos, revolucionarios
46
+
47
+ 4. **Palabra Clave** (P):
48
+ - Término central del beneficio en plural
49
+ - Fácil de entender y recordar
50
+ - Ejemplos: métodos, estrategias, técnicas, secretos
51
+
52
+ 5. **Razón** (R):
53
+ - Justifica el beneficio
54
+ - Añade credibilidad
55
+ - Conecta con la motivación del lector
56
+
57
+ 6. **Promesa** (P):
58
+ - Resultado específico y medible
59
+ - Timeframe realista
60
+ - Beneficio final atractivo
61
+
62
+ Formatos:
63
+ - Corto: Art plural + N + A + P + P
64
+ - Medio: Art plural + N + A + P + R + P
65
+ - Largo: Art plural + N + A + P + R detallada + P específica
66
+ """,
67
+ "examples": [
68
+ "Los 3 rituales probados para dormir mejor.",
69
+ "Las 5 rutinas efectivas para fortalecer tu core.",
70
+ "Los 7 hábitos esenciales para aumentar productividad.",
71
+ "Las 3 técnicas comprobadas para dormir mejor basadas en neurociencia.",
72
+ "Los 5 movimientos efectivos para fortalecer tu core sin equipamiento.",
73
+ "Las 7 estrategias esenciales para aumentar productividad sin estrés.",
74
+ "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.",
75
+ "Las 5 secuencias efectivas para fortalecer tu core descubiertas por fisioterapeutas olímpicos que puedes hacer en casa.",
76
+ "Los 7 sistemas revolucionarios para aumentar productividad desarrollados por CEOs que duplicarán tus resultados."
77
+ ],
78
+ "variaciones_estructura": {
79
+ "básica": "Art plural + N + A + P + P",
80
+ "intermedia": "Art plural + N + A + P + R + P",
81
+ "avanzada": "Art plural + N + A + P + R detallada + P específica"
82
+ },
83
+ "uso_articulos_plurales": {
84
+ "masculino_plural": {
85
+ "artículo": "los",
86
+ "ejemplos_palabras": "métodos, sistemas, pasos, secretos, trucos, hábitos"
87
+ },
88
+ "femenino_plural": {
89
+ "artículo": "las",
90
+ "ejemplos_palabras": "técnicas, estrategias, rutinas, tácticas, claves"
91
+ }
92
  },
93
+ "consejos_uso": [
94
+ "Usa siempre la forma plural para mayor impacto",
95
+ "Alterna entre 'los' y 'las' según la palabra clave",
96
+ "Mantén coherencia en el género a lo largo del bullet",
97
+ "Combina artículos con números de forma natural",
98
+ "Asegura que la palabra clave esté en plural"
99
+ ]
100
+ },
101
+ "AIDA": {
102
+ "description": """
103
+ La fórmula AIDA se aplica de manera flexible y estratégica, combinando 1-4 elementos para crear bullets impactantes y naturales:
104
+
105
+ 1. **Atención** (A):
106
+ Ganchos de apertura poderosos:
107
+ - "¿Sabías que...?" + dato sorprendente
108
+ - Mini-historia disruptiva
109
+ - Idea contraintuitiva
110
+ - Descubrimiento inesperado
111
+ - Analogía poderosa
112
+ - "La mayoría no sabe que..."
113
+ - "Contrario a lo que piensas..."
114
+ - "Me sorprendió descubrir que..."
115
+
116
+ 2. **Interés** (I):
117
+ Desarrollo del gancho inicial:
118
+ - Detalles específicos y relevantes
119
+ - Conexión problema-solución inesperada
120
+ - Beneficios únicos y memorables
121
+ - Puente situación actual-resultado
122
+ - "La razón es simple..."
123
+ - "Lo fascinante es que..."
124
+ - "Y lo mejor de todo..."
125
+ - "Lo que hace la diferencia es..."
126
+
127
+ 3. **Deseo** (D):
128
+ Amplificación emocional:
129
+ - Imagen vivida del resultado
130
+ - Experiencia personalizada
131
+ - Prueba social natural
132
+ - Toque de exclusividad
133
+ - Conexión emocional profunda
134
+ - "Imagina poder..."
135
+ - "Piensa cómo sería..."
136
+ - "Esto significa que podrás..."
137
+
138
+ 4. **Acción** (A):
139
+ Cierre natural:
140
+ - Siguiente paso simple
141
+ - Baja fricción para comenzar
142
+ - Gratificación inmediata
143
+ - Primer paso sencillo
144
+ - Seguridad fluida
145
+ - "Pruébalo hoy mismo..."
146
+ - "Comienza con un simple..."
147
+ - "Solo necesitas..."
148
+
149
+ Combinaciones estratégicas:
150
+ - A + I: Para despertar curiosidad y explicar el valor
151
+ - A + D: Para conectar problema con deseo
152
+ - I + D: Para construir deseo desde la lógica
153
+ - I + D + A: Para construir convicción y motivar
154
+ - A + I + D: Para educar, intrigar y crear anhelo
155
+
156
+ Cada bullet debe mantener un tono conversacional y evitar parecer una fórmula obvia.
157
+ """,
158
+ "examples": [
159
+ "• Un estudio con deportistas de élite reveló algo sorprendente los atletas que menos entrenaban tenían mejores resultados. La clave está en un ritual de recuperación de 8 minutos que ahora puedes usar en casa.", # A (dato sorprendente) + I (conexión problema-solución)
160
+
161
+ "• Mi cliente más exitoso solía dormir solo 4 horas por noche. Ahora duerme 8 y factura el doble, todo gracias a una rutina matutina que cambió su forma de trabajar.", # A (mini-historia) + I (beneficio único) + D (prueba social)
162
+
163
+ "• Como el bambú chino, que parece no crecer durante años y de repente se dispara hacia arriba, tu negocio está a punto de experimentar ese momento de explosión.", # A (analogía poderosa) + D (imagen vivida)
164
+
165
+ "• La técnica que transformó mi productividad apareció en el lugar más inesperado una clase de cocina italiana. Descubre cómo este método tan simple puede revolucionar tu forma de trabajar.", # A (descubrimiento inesperado) + I (beneficio único)
166
+
167
+ "• Los expertos en productividad estaban equivocados. Las mañanas no son el momento más importante del día. Descubre cuándo ocurre realmente la magia y aprovecha ese momento desde hoy.", # A (contraintuitivo) + I (detalle específico) + A (siguiente paso)
168
+
169
+ "• Imagina despertar cada mañana con tu bandeja de entrada vacía y tus tareas importantes ya organizadas. Este pequeño truco de 5 minutos lo hace posible.", # D (imagen vivida) + I (beneficio) + A (simplicidad)
170
+ ]
171
+ },
172
+ "3 en 1": {
173
  "description": """
174
+ La fórmula 3 en 1 para empezar a conectar con las personas combina:
175
+ 1. **Característica**: Describe las propiedades tangibles del producto o servicio. Por ejemplo, "Este software tiene una función de automatización única".
176
+ 2. **Para qué**: El beneficio inmediato que resuelve un problema o cumple una necesidad. Por ejemplo, "Para que puedas enfocarte en tareas más importantes sin distracciones".
177
+ 3. **Con lo que**: El impacto emocional o práctico a largo plazo que obtiene el cliente. Por ejemplo, "Con lo que podrás disfrutar de un día más productivo y menos estresante".
178
+ Crea bullets points que integren estos elementos para mostrar beneficios de forma clara, emocional y conectada al producto.
179
  """,
180
  "examples": [
181
+ "Una batería de larga duración para que puedas trabajar todo el día con lo que mantienes tu productividad sin interrupciones.",
182
+ "Un sistema de seguridad avanzado para que duermas tranquilo con lo que proteges lo que más valoras.",
183
+ "Un diseño intuitivo para que aprendas rápido con lo que ahorras tiempo y esfuerzos innecesarios."
 
 
 
 
 
184
  ]
185
  }
186
  }
187
 
188
  # Función para generar titulares
189
  def generate_headlines(number_of_headlines, target_audience, product, temperature, selected_formula):
 
 
190
 
191
  # Crear la configuración del modelo
192
  generation_config = {
 
194
  "top_p": 0.65, # Considerar un poco menos de palabras probables
195
  "top_k": 360, # Aumentar las palabras candidatas para más variedad
196
  "max_output_tokens": 8196, # Mantenerlo igual, pero puedes aumentar si deseas más detalle
 
197
  }
198
 
199
  model = genai.GenerativeModel(
200
+ model_name="gemini-2.0-flash",
201
  generation_config=generation_config,
202
+ )
203
+ # Incluir las instrucciones del sistema en el prompt principal
204
+ system_prompt = """You are a world-class copywriter, with expertise in crafting hooks, headlines, and subject lines that immediately capture the reader's attention, prompting them to open the email or continue reading.
205
+
206
+ OBJECTIVE:
207
+ - Generate persuasive and specific headlines in Spanish
208
+ - Spark immediate curiosity
209
+ - Address specific desires and pain points
210
+ - Maintain natural and magnetic language
211
+ - Motivate continued reading
212
+
213
+ FORMAT RULES:
214
+ - Each headline must start with number and period
215
+ - One headline per line
216
+ - No explanations or categories
217
+ - Add a line break between each headline
218
+ - Avoid unnecessary : symbols
219
+ - Each headline must be a complete and intriguing sentence
220
+
221
+ HEADLINE STRUCTURE:
222
+ - Must be relevant to target audience
223
+ - Must promise a specific result
224
+ - Must include an element of curiosity
225
+ - Must eliminate a main objection
226
+ - Must motivate continued reading
227
+
228
+ FORMAT EXAMPLE:
229
+ 1. The uncomfortable truth about business success that no one dares to tell you (and how to use it to your advantage)
230
+
231
+ 2. Why 89% of entrepreneurs fail in their first year (and how you can be in the 11% that succeeds)
232
+
233
+ 3. The millionaires' secret method to double income working half the time
234
+
235
+ IMPORTANT:
236
+ - Each headline must be unique and memorable
237
+ - Avoid clichés and generalities
238
+ - Maintain an intriguing but credible tone
239
+ - Adapt language to the audience
240
+ - Focus on transformative benefits"""
241
+
242
+ # Crear un mensaje para el modelo
243
+ headlines_instruction = (
244
+ f"{system_prompt}\n\n"
245
+ f"Tu tarea es crear {number_of_headlines} titulares irresistibles diseñados para {target_audience}. "
246
+ f"El objetivo es capturar la atención instantáneamente y generar curiosidad sobre {product}. "
247
+ f"Evita menciones obvias del producto y enfócate en despertar interés genuino. "
248
+ f"Usa la fórmula seleccionada como guía:\n\n{selected_formula['description']}\n\n"
249
+ f"Inspírate en estos ejemplos:\n"
250
+ f"1. {selected_formula['examples'][0]}\n"
251
+ f"2. {selected_formula['examples'][1]}\n"
252
+ f"3. {selected_formula['examples'][2]}\n\n"
253
+ f"Tu objetivo es crear titulares tan intrigantes que sea imposible no seguir leyendo."
254
+ )
255
+
256
+ # Crear la sesión de chat
257
+ chat_session = model.start_chat(
258
+ history=[
259
+ {
260
+ "role": "user",
261
+ "parts": [headlines_instruction],
262
+ },
263
+ ]
264
+ )
265
 
266
+ response = chat_session.send_message("Genera los titulares")
267
+ return response.text
268
 
269
  # Configurar la interfaz de usuario con Streamlit
270
  st.set_page_config(page_title="Enchanted Hooks", layout="wide")