Spaces:
Running
Running
File size: 16,310 Bytes
e00b344 eb6729d e00b344 c7251fe e00b344 c7251fe 812621f c7251fe 812621f fc62042 812621f fc62042 812621f fc62042 c7251fe fc62042 086f7bc c7251fe fc62042 c7251fe 94d9940 c7251fe 812621f 898737f 812621f fc62042 812621f fc62042 0e228f6 fc62042 0e228f6 fc62042 c7251fe 507ca0b c7251fe fc62042 c7251fe f802f3d fc62042 dd547ea c7251fe dd547ea 812621f 8ca01a3 812621f 303e162 812621f d603b99 c7251fe fc62042 e00b344 fc62042 e00b344 c7251fe fc62042 c7251fe fc62042 c7251fe 7abaf14 fc62042 c7251fe b2af965 c7251fe fc62042 e00b344 fc62042 c7251fe fc62042 c7251fe fc62042 c7251fe 14d7522 fc62042 eb6729d aa2dee9 fc62042 c7251fe 812621f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 |
from dotenv import load_dotenv
import streamlit as st
import os
import google.generativeai as genai
# Cargar las variables de entorno
load_dotenv()
# Configurar la API de Google
genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
# Fórmulas con ejemplos y explicaciones
benefits_formulas = {
"GPS": {
"description": """
Crea bullets de beneficios que respondan estas tres preguntas clave:
1. ¿Qué es lo que el lector quiere conseguir?
2. ¿En qué periodo de tiempo quiere conseguirlo?
3. ¿Cuál es la objeción principal del lector que le impide lograrlo?
""",
"examples": [
"Obtén tus primeros 100 clientes en 30 días, sin gastar un solo centavo en publicidad.",
"Pierde esos 5 kilos en solo 10 minutos al día, sin dejar de disfrutar tus comidas favoritas.",
"Ahorra para salir de viaje en tres meses, sin sacrificar esas noches de cine."
]
},
"Númerica Suprema": {
"description": """
La Fórmula Suprema de Istvanova combina 5 elementos clave más artículos plurales para crear bullets persuasivos:
1. **Artículos Plurales** (Art):
- Los (para masculino plural)
- Las (para femenino plural)
- Dan naturalidad y autoridad al texto
- Ejemplos: "Los 7 métodos...", "Las 3 técnicas..."
2. **Números** (N):
- Específicos y creíbles (3, 5, 7, 10...)
- Crean estructura y expectativas claras
- Se combinan con artículos: "Los 5...", "Las 3..."
3. **Adjetivo** (A):
- Emocionales y descriptivos
- Conectan con deseos/miedos
- Ejemplos: poderosos, simples, efectivos, revolucionarios
4. **Palabra Clave** (P):
- Término central del beneficio en plural
- Fácil de entender y recordar
- Ejemplos: métodos, estrategias, técnicas, secretos
5. **Razón** (R):
- Justifica el beneficio
- Añade credibilidad
- Conecta con la motivación del lector
6. **Promesa** (P):
- Resultado específico y medible
- Timeframe realista
- Beneficio final atractivo
Formatos:
- Corto: Art plural + N + A + P + P
- Medio: Art plural + N + A + P + R + P
- Largo: Art plural + N + A + P + R detallada + P específica
""",
"examples": [
"Los 3 rituales probados para dormir mejor.",
"Las 5 rutinas efectivas para fortalecer tu core.",
"Los 7 hábitos esenciales para aumentar productividad.",
"Las 3 técnicas comprobadas para dormir mejor basadas en neurociencia.",
"Los 5 movimientos efectivos para fortalecer tu core sin equipamiento.",
"Las 7 estrategias esenciales para aumentar productividad sin estrés.",
"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.",
"Las 5 secuencias efectivas para fortalecer tu core descubiertas por fisioterapeutas olímpicos que puedes hacer en casa.",
"Los 7 sistemas revolucionarios para aumentar productividad desarrollados por CEOs que duplicarán tus resultados."
],
"variaciones_estructura": {
"básica": "Art plural + N + A + P + P",
"intermedia": "Art plural + N + A + P + R + P",
"avanzada": "Art plural + N + A + P + R detallada + P específica"
},
"uso_articulos_plurales": {
"masculino_plural": {
"artículo": "los",
"ejemplos_palabras": "métodos, sistemas, pasos, secretos, trucos, hábitos"
},
"femenino_plural": {
"artículo": "las",
"ejemplos_palabras": "técnicas, estrategias, rutinas, tácticas, claves"
}
},
"consejos_uso": [
"Usa siempre la forma plural para mayor impacto",
"Alterna entre 'los' y 'las' según la palabra clave",
"Mantén coherencia en el género a lo largo del bullet",
"Combina artículos con números de forma natural",
"Asegura que la palabra clave esté en plural"
]
},
"AIDA": {
"description": """
La fórmula AIDA se aplica de manera flexible y estratégica, combinando 1-4 elementos para crear bullets impactantes y naturales:
1. **Atención** (A):
Ganchos de apertura poderosos:
- "¿Sabías que...?" + dato sorprendente
- Mini-historia disruptiva
- Idea contraintuitiva
- Descubrimiento inesperado
- Analogía poderosa
- "La mayoría no sabe que..."
- "Contrario a lo que piensas..."
- "Me sorprendió descubrir que..."
2. **Interés** (I):
Desarrollo del gancho inicial:
- Detalles específicos y relevantes
- Conexión problema-solución inesperada
- Beneficios únicos y memorables
- Puente situación actual-resultado
- "La razón es simple..."
- "Lo fascinante es que..."
- "Y lo mejor de todo..."
- "Lo que hace la diferencia es..."
3. **Deseo** (D):
Amplificación emocional:
- Imagen vivida del resultado
- Experiencia personalizada
- Prueba social natural
- Toque de exclusividad
- Conexión emocional profunda
- "Imagina poder..."
- "Piensa cómo sería..."
- "Esto significa que podrás..."
4. **Acción** (A):
Cierre natural:
- Siguiente paso simple
- Baja fricción para comenzar
- Gratificación inmediata
- Primer paso sencillo
- Seguridad fluida
- "Pruébalo hoy mismo..."
- "Comienza con un simple..."
- "Solo necesitas..."
Combinaciones estratégicas:
- A + I: Para despertar curiosidad y explicar el valor
- A + D: Para conectar problema con deseo
- I + D: Para construir deseo desde la lógica
- I + D + A: Para construir convicción y motivar
- A + I + D: Para educar, intrigar y crear anhelo
Cada bullet debe mantener un tono conversacional y evitar parecer una fórmula obvia.
""",
"examples": [
"• 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)
"• 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)
"• 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)
"• 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)
"• 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)
"• 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)
]
},
"3 en 1": {
"description": """
La fórmula 3 en 1 para empezar a conectar con las personas combina:
1. **Característica**: Describe las propiedades tangibles del producto o servicio. Por ejemplo, "Este software tiene una función de automatización única".
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".
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".
Crea bullets points que integren estos elementos para mostrar beneficios de forma clara, emocional y conectada al producto.
""",
"examples": [
"Una batería de larga duración para que puedas trabajar todo el día con lo que mantienes tu productividad sin interrupciones.",
"Un sistema de seguridad avanzado para que duermas tranquilo con lo que proteges lo que más valoras.",
"Un diseño intuitivo para que aprendas rápido con lo que ahorras tiempo y esfuerzos innecesarios."
]
}
}
# Función para generar bullets de beneficios
def generate_benefits(number_of_benefits, target_audience, product, temperature, selected_formula):
# Crear la configuración del modelo
generation_config = {
"temperature": temperature,
"top_p": 0.65, # Considerar un poco menos de palabras probables
"top_k": 360, # Aumentar las palabras candidatas para más variedad
"max_output_tokens": 8196, # Mantenerlo igual, pero puedes aumentar si deseas más detalle
}
model = genai.GenerativeModel(
model_name="gemini-2.0-flash",
generation_config=generation_config,
)
# Incluir las instrucciones del sistema en el prompt principal
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.
OBJETIVO:
- Generar bullets de beneficios convincentes y específicos en español
- Conectar emocionalmente con la audiencia
- Abordar deseos, problemas y motivaciones reales
- Mantener un lenguaje natural y conversacional
- Orientar cada beneficio a la acción
REGLAS DE FORMATO:
- Cada beneficio debe comenzar con "• "
- Un beneficio por línea
- Sin números al inicio
- Sin explicaciones ni categorías
- Añadir un salto de línea entre cada beneficio
- Nunca incluir símbolos : en los bullets
- Cada beneficio debe ser una frase completa y concisa
ESTRUCTURA DE CADA BENEFICIO:
- Debe ser relevante para la audiencia objetivo
- Debe mostrar un resultado específico
- Debe incluir un elemento emocional
- Debe eliminar una objeción o dolor
- Debe inspirar acción inmediata
EJEMPLO DE FORMATO:
• Transforma tu negocio con estrategias probadas que duplican tus ingresos en 90 días, sin sacrificar tu tiempo en familia.
• Domina las técnicas más efectivas para conquistar tu mercado, mientras mantienes el equilibrio entre trabajo y vida personal.
• Implementa sistemas automatizados que hacen crecer tu empresa incluso mientras duermes, eliminando la necesidad de trabajar más horas.
IMPORTANTE:
- Cada beneficio debe ser único y específico
- Evitar repeticiones y generalidades
- Mantener un tono persuasivo pero honesto
- Adaptar el lenguaje al nivel de comprensión de la audiencia
- Enfocarse en resultados tangibles y medibles"""
# Crear un mensaje para el modelo, destacando la audiencia, el producto, la fórmula seleccionada y los ejemplos
benefits_instruction = (
f"{system_prompt}\n\n"
f"Tu tarea es crear {number_of_benefits} beneficios irresistibles diseñados para {target_audience}. "
f"El objetivo es mostrar cómo {product} puede transformar la vida del lector, conectando de forma natural y emocional. "
f"Evita usar menciones literales o repetitivas, y destaca soluciones concretas, mostrando cómo el producto elimina obstáculos o satisface deseos reales. "
f"Usa la fórmula seleccionada como guía:\n\n{selected_formula['description']}\n\n"
f"Inspírate en estos ejemplos:\n"
f"- {selected_formula['examples'][0]}\n"
f"- {selected_formula['examples'][1]}\n"
f"- {selected_formula['examples'][2]}\n\n"
f"Tu objetivo es inspirar deseo y acción, evitando explicaciones o categorías en la respuesta."
)
chat_session = model.start_chat(
history=[
{
"role": "user",
"parts": [benefits_instruction],
},
]
)
response = chat_session.send_message("Genera los beneficios") # Enviar mensaje para obtener la respuesta
return response.text # Regresar la respuesta directamente
# Configurar la interfaz de usuario con Streamlit
st.set_page_config(page_title="Bullet Benefits Generator", layout="wide")
# Leer el contenido del archivo manual.md
with open("manual.md", "r", encoding="utf-8") as file:
manual_content = file.read()
# Mostrar el contenido del manual en el sidebar
st.sidebar.markdown(manual_content)
# Ocultar elementos de la interfaz
st.markdown("""
<style>
/* Reducir espacio superior */
.block-container {
padding-top: 1rem;
padding-bottom: 5rem;
}
/* Ajustar espaciado del título */
h1 {
margin-top: -2rem;
padding-top: 1rem;
}
/* Ajustar espaciado del subtítulo */
h4 {
margin-top: 0.5rem;
padding-top: 0rem;
}
</style>
""", unsafe_allow_html=True)
# Centrar el título y el subtítulo
st.markdown("<h1 style='text-align: center;'>Bullet Benefits Generator</h1>", unsafe_allow_html=True)
st.markdown("<h4 style='text-align: center;'>Transforma características en beneficios irresistibles que conectan emocionalmente con tu audiencia.</h4>", unsafe_allow_html=True)
# Añadir CSS personalizado para el botón
st.markdown("""
<style>
div.stButton > button {
background-color: #FFCC00;
color: black;
width: 90%;
height: 60px;
font-weight: bold;
font-size: 22px;
text-transform: uppercase;
border: 1px solid #000000;
border-radius: 8px;
display: block;
margin: 0 auto;
}
div.stButton > button:hover {
background-color: #FFD700;
color: black;
}
</style>
""", unsafe_allow_html=True)
# Crear columnas
col1, col2 = st.columns([1, 2])
# Columnas de entrada
with col1:
target_audience = st.text_input("¿Quién es tu público objetivo?", placeholder="Ejemplo: Estudiantes Universitarios")
product = st.text_input("¿Qué producto tienes en mente?", placeholder="Ejemplo: Curso de Inglés")
number_of_benefits = st.selectbox("Número de Beneficios", options=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], index=4)
# Crear un único acordeón para fórmula y creatividad
with st.expander("Personaliza tus beneficios"):
temperature = st.slider("Creatividad", min_value=0.0, max_value=2.0, value=1.0, step=0.1)
selected_formula_key = st.selectbox(
"Selecciona una fórmula para tus beneficios",
options=list(benefits_formulas.keys())
)
selected_formula = benefits_formulas[selected_formula_key]
# Botón de enviar
submit = st.button("Generar Beneficios")
# Mostrar los beneficios generados
if submit:
if target_audience and product and selected_formula:
try:
# Obtener la respuesta del modelo
generated_benefits = generate_benefits(number_of_benefits, target_audience, product, temperature, selected_formula)
col2.markdown(f"""
<div style="padding: 15px; border: 1px solid #ddd; border-radius: 8px;">
<h3>Beneficios Generados:</h3>
<p>{generated_benefits}</p>
</div>
""", unsafe_allow_html=True)
except Exception as e:
col2.error(f"Error al generar beneficios: {e}")
else:
col2.warning("Por favor, completa todos los campos antes de generar beneficios.") |