JeCabrera commited on
Commit
812621f
·
verified ·
1 Parent(s): 94d9940

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +241 -56
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,23 +9,9 @@ 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
  benefits_formulas = {
29
- "plantilla": {
30
  "description": """
31
  Crea bullets de beneficios que respondan estas tres preguntas clave:
32
  1. ¿Qué es lo que el lector quiere conseguir?
@@ -39,40 +24,152 @@ benefits_formulas = {
39
  "Ahorra para salir de viaje en tres meses, sin sacrificar esas noches de cine."
40
  ]
41
  },
42
- "formula_suprema_istvanova": {
43
- "description": """
44
- La estructura de la fórmula Suprema de Istvanova es: Números + Adjetivo + Palabra Clave + Razón + Promesa.
45
- Crea bullets points o beneficios con beneficios específicos y atractivos que conectan emocionalmente con {target_audience} y cumple con estos elementos:
46
- 1. **Números**: Se escriben con el fin de declarar que existen cierto números de artículos.
47
- 2. **Adjetivo**: Añaden emoción y atractivo al mensaje.
48
- 3. **Palabra Clave**: Reflejan el beneficio principal o tema clave.
49
- 4. **Razón**: Justifican el beneficio o valor del producto.
50
- 5. **Promesa**: Muestran el resultado o beneficio que el lector puede esperar.
51
- Cada uno de estos elementos se integra de manera natural y no forzada cuando se crean los bullets points así como los examples.
52
- """,
53
- "examples": [
54
- "5 métodos simples para duplicar tus ventas en menos de 30 días.",
55
- "8 trucos secretos para que tu perro obedezca en una semana.",
56
- "10 técnicas fáciles que mejorarán tu relación antes de un mes."
57
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  },
59
- "formula_aida": {
60
- "description": """
61
- La estructura de la fórmula AIDA para crear bullets points con beneficios es: Atención + Interés + Deseo + Acción.
62
- Crea bullets points o beneficios que sigan estos pasos:
63
- - **Atención**: Captura de inmediato el interés o atención de {target_audience} por medio de un dato insólito o increíble, le habla de una situación problemática o un deseo de {target_audience}.
64
- - **Interés**: Detalla cómo el beneficio del {product} soluciona un problema específico o cómo facilita la obtención de un deseo de {target_audience}.
65
- - **Deseo**: Despierta el anhelo por lograr el resultado prometido.
66
- - **Acción**: Inspira al lector a actuar para obtener el beneficio.
67
- Todos estos elementos se integran de manera natural y no forzada al crear los bullets points o beneficios. Los bullets points están escritos de una manera conversacional y natural como en "examples".
68
- """,
69
- "examples": [
70
- "Descubre cómo atraer clientes automáticamente, sin experiencia previa.",
71
- "Imagina tener un cuerpo en forma disfrutando lo que te gusta comer.",
72
- "Empieza hoy mismo y experimenta resultados en solo 7 días."
73
- ]
74
  },
75
- "formula_3_en_1": {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  "description": """
77
  La fórmula 3 en 1 para empezar a conectar con las personas combina:
78
  1. **Característica**: Describe las propiedades tangibles del producto o servicio. Por ejemplo, "Este software tiene una función de automatización única".
@@ -90,8 +187,6 @@ benefits_formulas = {
90
 
91
  # Función para generar bullets de beneficios
92
  def generate_benefits(number_of_benefits, target_audience, product, temperature, selected_formula):
93
- product_mention = get_random_product_mention()
94
- mention_instruction = get_mention_instruction(product_mention, product)
95
 
96
  # Crear la configuración del modelo
97
  generation_config = {
@@ -99,17 +194,56 @@ def generate_benefits(number_of_benefits, target_audience, product, temperature,
99
  "top_p": 0.65, # Considerar un poco menos de palabras probables
100
  "top_k": 360, # Aumentar las palabras candidatas para más variedad
101
  "max_output_tokens": 8196, # Mantenerlo igual, pero puedes aumentar si deseas más detalle
102
- "response_mime_type": "text/plain",
103
  }
104
 
105
  model = genai.GenerativeModel(
106
  model_name="gemini-2.0-flash",
107
  generation_config=generation_config,
108
- system_instruction="You are a world-class copywriter, with expertise in crafting benefits that connect emotionally and address the desires, problems, and motivations of {target_audience}. Your task is to generate compelling and specific benefit bullets in Spanish based on a given formula. Always respond with a numbered list format, and ensure each benefit is relevant, concise, action-oriented with a natural language and conversational way. Do not include explanations or categories in your output. Never include these symbols : when you create bullets"
109
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  # Crear un mensaje para el modelo, destacando la audiencia, el producto, la fórmula seleccionada y los ejemplos
112
  benefits_instruction = (
 
113
  f"Tu tarea es crear {number_of_benefits} beneficios irresistibles diseñados para {target_audience}. "
114
  f"El objetivo es mostrar cómo {product} puede transformar la vida del lector, conectando de forma natural y emocional. "
115
  f"Evita usar menciones literales o repetitivas, y destaca soluciones concretas, mostrando cómo el producto elimina obstáculos o satisface deseos reales. "
@@ -118,7 +252,6 @@ def generate_benefits(number_of_benefits, target_audience, product, temperature,
118
  f"- {selected_formula['examples'][0]}\n"
119
  f"- {selected_formula['examples'][1]}\n"
120
  f"- {selected_formula['examples'][2]}\n\n"
121
- f"Y no olvides integrar esta instrucción de manera fluida: {mention_instruction}. "
122
  f"Tu objetivo es inspirar deseo y acción, evitando explicaciones o categorías en la respuesta."
123
  )
124
 
@@ -137,6 +270,58 @@ def generate_benefits(number_of_benefits, target_audience, product, temperature,
137
  # Configurar la interfaz de usuario con Streamlit
138
  st.set_page_config(page_title="Bullet Benefits Generator", layout="wide")
139
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
  # Centrar el título y el subtítulo
141
  st.markdown("<h1 style='text-align: center;'>Bullet Benefits Generator</h1>", unsafe_allow_html=True)
142
  st.markdown("<h4 style='text-align: center;'>Transforma características en beneficios irresistibles que conectan emocionalmente con tu audiencia.</h4>", unsafe_allow_html=True)
@@ -193,7 +378,7 @@ if submit:
193
  # Obtener la respuesta del modelo
194
  generated_benefits = generate_benefits(number_of_benefits, target_audience, product, temperature, selected_formula)
195
  col2.markdown(f"""
196
- <div style="padding: 10px; border: 1px solid #ddd; border-radius: 8px;">
197
  <h3>Beneficios Generados:</h3>
198
  <p>{generated_benefits}</p>
199
  </div>
@@ -201,4 +386,4 @@ if submit:
201
  except Exception as e:
202
  col2.error(f"Error al generar beneficios: {e}")
203
  else:
204
- col2.warning("Por favor, completa todos los campos antes de generar beneficios.")
 
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
  benefits_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?
 
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".
 
187
 
188
  # Función para generar bullets de beneficios
189
  def generate_benefits(number_of_benefits, 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
+
204
+ # Incluir las instrucciones del sistema en el prompt principal
205
+ system_prompt = """Eres un copywriter experto de clase mundial, con experiencia en crear beneficios que conectan emocionalmente y abordan los deseos, problemas y motivaciones de la audiencia objetivo.
206
+
207
+ OBJETIVO:
208
+ - Generar bullets de beneficios convincentes y específicos en español
209
+ - Conectar emocionalmente con la audiencia
210
+ - Abordar deseos, problemas y motivaciones reales
211
+ - Mantener un lenguaje natural y conversacional
212
+ - Orientar cada beneficio a la acción
213
+
214
+ REGLAS DE FORMATO:
215
+ - Cada beneficio debe comenzar con "• "
216
+ - Un beneficio por línea
217
+ - Sin números al inicio
218
+ - Sin explicaciones ni categorías
219
+ - Añadir un salto de línea entre cada beneficio
220
+ - Nunca incluir símbolos : en los bullets
221
+ - Cada beneficio debe ser una frase completa y concisa
222
+
223
+ ESTRUCTURA DE CADA BENEFICIO:
224
+ - Debe ser relevante para la audiencia objetivo
225
+ - Debe mostrar un resultado específico
226
+ - Debe incluir un elemento emocional
227
+ - Debe eliminar una objeción o dolor
228
+ - Debe inspirar acción inmediata
229
 
230
+ EJEMPLO DE FORMATO:
231
+ • Transforma tu negocio con estrategias probadas que duplican tus ingresos en 90 días, sin sacrificar tu tiempo en familia.
232
+
233
+ • Domina las técnicas más efectivas para conquistar tu mercado, mientras mantienes el equilibrio entre trabajo y vida personal.
234
+
235
+ • Implementa sistemas automatizados que hacen crecer tu empresa incluso mientras duermes, eliminando la necesidad de trabajar más horas.
236
+
237
+ IMPORTANTE:
238
+ - Cada beneficio debe ser único y específico
239
+ - Evitar repeticiones y generalidades
240
+ - Mantener un tono persuasivo pero honesto
241
+ - Adaptar el lenguaje al nivel de comprensión de la audiencia
242
+ - Enfocarse en resultados tangibles y medibles"""
243
+
244
  # Crear un mensaje para el modelo, destacando la audiencia, el producto, la fórmula seleccionada y los ejemplos
245
  benefits_instruction = (
246
+ f"{system_prompt}\n\n"
247
  f"Tu tarea es crear {number_of_benefits} beneficios irresistibles diseñados para {target_audience}. "
248
  f"El objetivo es mostrar cómo {product} puede transformar la vida del lector, conectando de forma natural y emocional. "
249
  f"Evita usar menciones literales o repetitivas, y destaca soluciones concretas, mostrando cómo el producto elimina obstáculos o satisface deseos reales. "
 
252
  f"- {selected_formula['examples'][0]}\n"
253
  f"- {selected_formula['examples'][1]}\n"
254
  f"- {selected_formula['examples'][2]}\n\n"
 
255
  f"Tu objetivo es inspirar deseo y acción, evitando explicaciones o categorías en la respuesta."
256
  )
257
 
 
270
  # Configurar la interfaz de usuario con Streamlit
271
  st.set_page_config(page_title="Bullet Benefits Generator", layout="wide")
272
 
273
+ # Leer el contenido del archivo manual.md
274
+ with open("manual.md", "r", encoding="utf-8") as file:
275
+ manual_content = file.read()
276
+
277
+ # Mostrar el contenido del manual en el sidebar
278
+ st.sidebar.markdown(manual_content)
279
+
280
+ # Ocultar elementos de la interfaz
281
+ st.markdown("""
282
+ <style>
283
+ /* Ocultar menú hamburguesa */
284
+ #MainMenu {visibility: visible;}
285
+
286
+ /* Ocultar botón de Fork, GitHub y menú de tres puntos */
287
+ .stDeployButton {display: none;}
288
+ [data-testid="stToolbar"] {display: none;}
289
+ .css-14xtw13 {display: none;}
290
+ .css-pkbazv {display: none;}
291
+
292
+ /* Ocultar footer */
293
+ footer {visibility: hidden;}
294
+
295
+ /* Ocultar header */
296
+ header {visibility: none;}
297
+
298
+ /* Ocultar marca de agua de Streamlit */
299
+ #stStreamlitFooterContainer {visibility: hidden;}
300
+
301
+ /* Ocultar íconos inferiores */
302
+ .viewerBadge_link__1S137 {display: none;}
303
+ .viewerBadge_container__1QSob {display: none;}
304
+
305
+ /* Reducir espacio superior */
306
+ .block-container {
307
+ padding-top: 1rem;
308
+ padding-bottom: 5rem;
309
+ }
310
+
311
+ /* Ajustar espaciado del título */
312
+ h1 {
313
+ margin-top: -2rem;
314
+ padding-top: 2.5rem;
315
+ }
316
+
317
+ /* Ajustar espaciado del subtítulo */
318
+ h4 {
319
+ margin-top: 0.5rem;
320
+ padding-top: 0rem;
321
+ }
322
+ </style>
323
+ """, unsafe_allow_html=True)
324
+
325
  # Centrar el título y el subtítulo
326
  st.markdown("<h1 style='text-align: center;'>Bullet Benefits Generator</h1>", unsafe_allow_html=True)
327
  st.markdown("<h4 style='text-align: center;'>Transforma características en beneficios irresistibles que conectan emocionalmente con tu audiencia.</h4>", unsafe_allow_html=True)
 
378
  # Obtener la respuesta del modelo
379
  generated_benefits = generate_benefits(number_of_benefits, target_audience, product, temperature, selected_formula)
380
  col2.markdown(f"""
381
+ <div style="padding: 5px; border: 1px solid #ddd; border-radius: 8px;">
382
  <h3>Beneficios Generados:</h3>
383
  <p>{generated_benefits}</p>
384
  </div>
 
386
  except Exception as e:
387
  col2.error(f"Error al generar beneficios: {e}")
388
  else:
389
+ col2.warning("Por favor, completa todos los campos antes de generar beneficios.")