Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
# Código actualizado con
|
2 |
|
3 |
from dotenv import load_dotenv
|
4 |
import streamlit as st
|
@@ -80,124 +80,109 @@ headline_formulas = {
|
|
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 |
-
response = chat_session.send_message("Genera los titulares") # Enviar mensaje para obtener la respuesta
|
121 |
-
return response.text # Regresar la respuesta directamente
|
122 |
-
|
123 |
-
# Configurar la interfaz de usuario con Streamlit
|
124 |
-
st.set_page_config(page_title="Enchanted Hooks", layout="wide")
|
125 |
-
|
126 |
-
# Centrar el título y el subtítulo
|
127 |
-
st.markdown("<h1 style='text-align: center;'>Enchanted Hooks</h1>", unsafe_allow_html=True)
|
128 |
-
st.markdown("<h4 style='text-align: center;'>Imagina poder conjurar títulos que no solo informan, sino que encantan. Esta app es tu varita mágica en el mundo del copywriting, transformando cada concepto en un titular cautivador que deja a todos deseando más.</h4>", unsafe_allow_html=True)
|
129 |
-
|
130 |
-
# Añadir CSS personalizado para el botón
|
131 |
-
st.markdown("""
|
132 |
-
<style>
|
133 |
-
div.stButton > button {
|
134 |
-
background-color: #FFCC00;
|
135 |
-
color: black;
|
136 |
-
width: 90%;
|
137 |
-
height: 60px;
|
138 |
-
font-weight: bold;
|
139 |
-
font-size: 22px;
|
140 |
-
text-transform: uppercase;
|
141 |
-
border: 1px solid #000000;
|
142 |
-
border-radius: 8px;
|
143 |
-
display: block;
|
144 |
-
margin: 0 auto;
|
145 |
-
}
|
146 |
-
div.stButton > button:hover {
|
147 |
-
background-color: #FFD700;
|
148 |
-
color: black;
|
149 |
}
|
150 |
-
|
151 |
-
""", unsafe_allow_html=True)
|
152 |
-
|
153 |
-
# Crear columnas
|
154 |
-
col1, col2 = st.columns([1, 2])
|
155 |
-
|
156 |
-
# Columnas de entrada
|
157 |
-
with col1:
|
158 |
-
target_audience = st.text_input("¿Quién es tu público objetivo?", placeholder="Ejemplo: Estudiantes Universitarios")
|
159 |
-
product = st.text_input("¿Qué producto tienes en mente?", placeholder="Ejemplo: Curso de Inglés")
|
160 |
-
number_of_headlines = st.selectbox("Número de Titulares", options=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], index=4)
|
161 |
-
|
162 |
-
# Crear un único acordeón para fórmula y creatividad
|
163 |
-
with st.expander("Personaliza tus titulares"):
|
164 |
-
temperature = st.slider("Creatividad", min_value=0.0, max_value=1.0, value=0.5, step=0.1)
|
165 |
-
|
166 |
-
selected_formula_key = st.selectbox(
|
167 |
-
"Selecciona una fórmula para tus titulares",
|
168 |
-
options=list(headline_formulas.keys())
|
169 |
-
)
|
170 |
-
selected_formula = headline_formulas[selected_formula_key]
|
171 |
-
|
172 |
-
# Mostrar ejemplos de la fórmula seleccionada
|
173 |
-
st.markdown(f"**Ejemplos de la fórmula seleccionada ({selected_formula_key}):**")
|
174 |
-
for example in selected_formula['examples']:
|
175 |
-
st.write(example)
|
176 |
-
|
177 |
-
if selected_formula_key == 'fórmula_3':
|
178 |
-
st.markdown(f"**Explicación de la fórmula AIDA:**")
|
179 |
-
st.markdown(selected_formula['explanation'])
|
180 |
-
elif selected_formula_key == 'fórmula_1':
|
181 |
-
st.markdown(f"**Preguntas clave para la fórmula 1:**")
|
182 |
-
for question in selected_formula['questions']:
|
183 |
-
st.write(question)
|
184 |
-
|
185 |
-
# Botón de enviar
|
186 |
-
submit = st.button("Generar Titulares")
|
187 |
|
188 |
-
#
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Código actualizado con los ángulos añadidos
|
2 |
|
3 |
from dotenv import load_dotenv
|
4 |
import streamlit as st
|
|
|
80 |
}
|
81 |
}
|
82 |
|
83 |
+
# Añadir los ángulos al acordeón
|
84 |
+
angles = {
|
85 |
+
"autoridad": {
|
86 |
+
"description": "La idea que las personas siguen lo que dicen los expertos reconocidos, los doctores y sus batas blancas, los certificados a la vista, los títulos académicos y nobiliarios, etc.",
|
87 |
+
"examples": [
|
88 |
+
"El Secreto del Suplemento Usado Por Los Navy SEALs Estadounidenses Para Combatir El Dolor, Heridas, Grasa Corporal, y Problemas Cardiovasculares",
|
89 |
+
"La doctora Daniela Bermudez experta en Tanatología explica cómo la resiliencia nos ayuda a superar la pérdida de nuestros seres queridos",
|
90 |
+
"El remedio natural para curar la calvicie de uno de los herbolarios más reconocidos en Harvard.",
|
91 |
+
"5 consejos de la reconocida escritora J. K. Rowling para iniciarse como escritor de fantasía."
|
92 |
+
]
|
93 |
+
},
|
94 |
+
"curiosidad": {
|
95 |
+
"description": "Este elemento siempre atrae a cualquier persona, lo deja con la inquietud de querer investigar más.",
|
96 |
+
"examples": [
|
97 |
+
"Lo Que Nunca Debes Comer En Un Avión",
|
98 |
+
"20 palabras prohibidas que nunca debes mencionar frente a tus hijos.",
|
99 |
+
"Escalofriante costumbre de los monjes tibetanos que nunca debes hacer.",
|
100 |
+
"Se casa con su jefe después de haber sido humillada 5 años en el trabajo."
|
101 |
+
]
|
102 |
+
},
|
103 |
+
"advertencia": {
|
104 |
+
"description": "Generan una sensación de urgencia o peligro, que provoque una respuesta inmediata.",
|
105 |
+
"examples": [
|
106 |
+
"CUIDADO: Si tu cuerpo está presentando algunos de estos síntomas... tienes que ir con el médico",
|
107 |
+
"ADVERTENCIA: lo que las agencias de viajes no quieren que sepas cuando te vas de viaje.",
|
108 |
+
"¡DETENTE! y descubre lo que no sabías de la culinaria ancestral asiática.",
|
109 |
+
"CUIDADO: lo que el pediatra de tus hijos no quiere que sepas sobre la diabetes infantil, descúbrelo ahora mismo."
|
110 |
+
]
|
111 |
+
},
|
112 |
+
"emocional": {
|
113 |
+
"description": "No hay nada más poderoso que las emociones, hacen una conexión con tu audiencia, les habla al corazón.",
|
114 |
+
"examples": [
|
115 |
+
"7 formas de ganar dinero en menos de 24 horas... aun si tu negocio está por quebrar.",
|
116 |
+
"Confesiones de un ex-empleado de Starbucks que te darán las ideas para crear y tener tu propia cafetería.",
|
117 |
+
"Para todas las mamás primerizas que no logran cambiar el pañal de su bebé con éxito... aquí te decimos cómo hacerlo en 3 pasos.",
|
118 |
+
"¿La menstruación frustró tus vacaciones de verano? 10 tips supereficaces para disfrutar de tus vacaciones aun esos días.",
|
119 |
+
"Para Todas Los Emprendedores Que Están Frustrados Por Sus Ventas"
|
120 |
+
]
|
121 |
+
},
|
122 |
+
"sensacionalista": {
|
123 |
+
"description": "La prensa amarilla los usa una y otra vez. Las revistas de chismes de la farándula también lo hacen.",
|
124 |
+
"examples": [
|
125 |
+
"ATERRADOR método que utiliza el ejército israelí que te hará perder 7 kilos en tan solo una semana.",
|
126 |
+
"¡Mandar nudes es lo de hoy! Peligroso pero efectivo método para ligar en las redes sociales.",
|
127 |
+
"¡Nunca antes visto! Asesino serial consigue abrir una canal en YouTube para dar clases de cocina.",
|
128 |
+
"La más reciente prueba de amor que está matando a los adolescentes."
|
129 |
+
]
|
130 |
+
},
|
131 |
+
"contraste": {
|
132 |
+
"description": "Moldea la percepción que tenemos de las cosas. Crea un cortocircuito en la mente de las personas.",
|
133 |
+
"examples": [
|
134 |
+
"¿Quieres una piel joven y tersa? Descubre los secretos de una mujer de 60 años para tener la piel de bebé",
|
135 |
+
"Descubre cómo el mal aliento me ayudó a enamorar a la mujer de mis sueños",
|
136 |
+
"Esta técnica de lectura rápida me ayudó a pasar mis exámenes sin tener que pasar meses estudiando.",
|
137 |
+
"¿La menstruación frustró tus vacaciones de verano? 10 tips súper eficaces para disfrutar de tus vacaciones aún esos días."
|
138 |
+
]
|
139 |
+
},
|
140 |
+
"hazte_una_pregunta": {
|
141 |
+
"description": "Preguntar sobre algo que le interesa, hace que se detengan y reflexionen.",
|
142 |
+
"examples": [
|
143 |
+
"¿Cuál De Estos Problemas De Salud Quieres Solucionar?",
|
144 |
+
"¿Te gustaría ser más persuasivo y convincente para vender más y mejor?",
|
145 |
+
"¿Quieres aprender un nuevo idioma en poco tiempo y de forma sencilla?",
|
146 |
+
"¿Cometes estos errores garrafales en tus textos digitales? Aquí te decimos 4 apps que te ayudarán a tener buena ortografía..."
|
147 |
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
148 |
}
|
149 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
|
151 |
+
# Función para generar titulares
|
152 |
+
def generate_headlines(number_of_headlines, angle, product_mention, product):
|
153 |
+
mention_instruction = get_mention_instruction(product_mention, product)
|
154 |
+
|
155 |
+
# Instrucción con el ángulo seleccionado
|
156 |
+
prompt = f"""
|
157 |
+
Genera {number_of_headlines} titulares persuasivos usando el ángulo: {angle}.
|
158 |
+
El ángulo se basa en los siguientes puntos:
|
159 |
+
{angles[angle]['description']}
|
160 |
+
|
161 |
+
Ejemplos: {', '.join(angles[angle]['examples'])}
|
162 |
+
|
163 |
+
{mention_instruction}
|
164 |
+
"""
|
165 |
+
response = genai.generate_text(prompt=prompt, temperature=0.7, max_output_tokens=1000)
|
166 |
+
return response.result
|
167 |
+
|
168 |
+
# Aplicación Streamlit para interfaz de usuario
|
169 |
+
st.title("Generador de Titulares Persuasivos")
|
170 |
+
st.write("Genera titulares persuasivos basados en las fórmulas de copywriting y ángulos emocionales.")
|
171 |
+
|
172 |
+
# Parámetros de personalización
|
173 |
+
st.header("Selecciona un ángulo")
|
174 |
+
selected_angle = st.selectbox("Selecciona un ángulo:", list(angles.keys()))
|
175 |
+
|
176 |
+
# Producto de ejemplo
|
177 |
+
product = st.text_input("Introduce el producto:", "suplemento para perder peso")
|
178 |
+
|
179 |
+
# Opción de mención
|
180 |
+
product_mention = st.selectbox("Selecciona el tipo de mención:", ["Directa", "Indirecta", "Metafórica"])
|
181 |
+
|
182 |
+
# Número de titulares a generar
|
183 |
+
number_of_headlines = st.slider("Número de titulares:", 1, 10, 5)
|
184 |
+
|
185 |
+
if st.button("Generar Titulares"):
|
186 |
+
headlines = generate_headlines(number_of_headlines, selected_angle, product_mention, product)
|
187 |
+
st.write("Titulares generados:")
|
188 |
+
st.write(headlines)
|