JeCabrera commited on
Commit
f9255f5
·
verified ·
1 Parent(s): dda1d5d

Upload 4 files

Browse files
Files changed (4) hide show
  1. app.py +123 -118
  2. manual.md +184 -178
  3. puv_formulas.py +81 -0
  4. styles.py +65 -65
app.py CHANGED
@@ -1,119 +1,124 @@
1
- from dotenv import load_dotenv
2
- import streamlit as st
3
- import os
4
- import google.generativeai as genai
5
- from story_formulas import story_formulas
6
- from styles import apply_styles, format_story_output
7
-
8
- # Cargar variables de entorno
9
- load_dotenv()
10
-
11
- # Configurar API de Google Gemini
12
- genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
13
-
14
- # Función para obtener la respuesta del modelo Gemini
15
- def get_gemini_response(input_prompt, formula_type, length, mood, target_audience, cta_type, temperature):
16
- if not input_prompt:
17
- return "Por favor, escribe un mensaje para generar contenido."
18
-
19
- formula = story_formulas[formula_type]
20
-
21
- model = genai.GenerativeModel('gemini-2.0-flash')
22
- full_prompt = f"""
23
- You are a creative storyteller. Write THREE different {mood} stories in Spanish about "{input_prompt}" using everyday words and natural conversation.
24
- Each story should use exactly {length} words.
25
-
26
- Target Audience: {target_audience}
27
- Call to Action: {cta_type}
28
- Story Formula: {formula_type}
29
-
30
- {formula["description"]}
31
-
32
- Keep in mind:
33
- - Write for {target_audience}
34
- - Use simple, clear language
35
- - Tell the story in short paragraphs
36
- - The CTA must be conversational and focus on benefits:
37
- * Instead of: "Inscríbete al curso de marketing"
38
- * Use: "¿Quieres aprender a conseguir más clientes? Acompáñanos este jueves..."
39
- * Instead of: "Reserva tu consulta"
40
- * Use: "Da el primer paso hacia tu transformación aquí..."
41
-
42
- CRITICAL INSTRUCTIONS:
43
- - Output ONLY the story text
44
- - DO NOT include any labels like (Problem), (Solution), etc.
45
- - DO NOT include any structural markers or formula explanations
46
- - Write as a continuous narrative with natural paragraph breaks
47
- - The story should flow naturally between sections without any visible structure markers
48
- - Make the CTA feel like a natural part of the conversation, focusing on what the reader will gain
49
- - Avoid promotional language in the CTA
50
- - DO NOT explain or mention the formula parts in the text
51
- - Separate each story with "---"
52
-
53
- Format: Three clean story texts with natural paragraphs, separated by "---", no labels, no explanations.
54
- """
55
- response = model.generate_content([full_prompt], generation_config={"temperature": temperature})
56
- return response.parts[0].text if response and response.parts else "Error al generar contenido."
57
-
58
- # Configurar la aplicación Streamlit
59
- st.set_page_config(page_title="Story Generator", page_icon=":pencil:", layout="wide")
60
- # Agregar después de st.set_page_config y antes del título
61
- # Leer y mostrar el manual en el sidebar
62
- with open("manual.md", "r", encoding="utf-8") as file:
63
- manual_content = file.read()
64
- st.sidebar.markdown(manual_content)
65
-
66
- # Título de la app
67
- st.markdown("<h1>Story Genius Maker</h1>", unsafe_allow_html=True)
68
- st.markdown("<h3>Teje historias inolvidables en segundos, guiado por la magia de la inteligencia artificial que da vida a tus ideas en relatos cautivadores.</h3>", unsafe_allow_html=True)
69
- # Crear dos columnas
70
- col1, col2 = st.columns([1, 1])
71
-
72
- # Columna izquierda para inputs
73
- # Remove the benefit input field
74
- with col1:
75
- # Entrada de texto principal
76
- input_prompt = st.text_area("Escribe de qué quieres que trate la historia:", placeholder="Escribe aquí tu idea...")
77
- target_audience = st.text_input("Público Objetivo:", placeholder="Ejemplo: Profesionales de 25-35 años...")
78
- cta_type = st.text_input("Llamado a la acción:", placeholder="Ejemplo: Registrarse al webinar gratuito este jueves...")
79
-
80
- with st.expander("Opciones avanzadas"):
81
- formula_type = st.selectbox(
82
- "Fórmula narrativa:",
83
- options=list(story_formulas.keys()),
84
- format_func=lambda x: x
85
- )
86
-
87
- length = st.slider("Longitud del texto (palabras):",
88
- min_value=100,
89
- max_value=150,
90
- value=125,
91
- step=5)
92
-
93
- temperature = st.slider(
94
- "Nivel de creatividad:",
95
- min_value=0.0,
96
- max_value=2.0,
97
- value=1.0,
98
- step=0.1,
99
- help="Valores más altos generan historias más creativas pero menos predecibles. Valores más bajos producen historias más consistentes."
100
- )
101
-
102
- mood = st.selectbox("Estado de ánimo:", ["Emocional", "Triste", "Feliz", "Horror", "Comedia", "Romántico"])
103
- generate_button = st.button("Generar historia")
104
- # Al inicio de la app
105
- apply_styles()
106
-
107
- # En la sección donde muestras la historia generada
108
- with col2:
109
- if generate_button:
110
- response = get_gemini_response(
111
- input_prompt, formula_type, length,
112
- mood, target_audience, cta_type,
113
- temperature
114
- )
115
- stories = response.split("---")
116
- for i, story in enumerate(stories, 1):
117
- st.subheader(f"Historia {i}:")
118
- st.write(story.strip())
 
 
 
 
 
119
  st.divider()
 
1
+ from dotenv import load_dotenv
2
+ import streamlit as st
3
+ import os
4
+ import google.generativeai as genai
5
+ from puv_formulas import puv_formulas
6
+ from styles import apply_styles
7
+
8
+ # Cargar variables de entorno
9
+ load_dotenv()
10
+
11
+ # Configurar API de Google Gemini
12
+ genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
13
+
14
+ # Función para obtener la respuesta del modelo Gemini
15
+ def get_gemini_response(product_service, target_audience, formula_type, temperature):
16
+ if not product_service or not target_audience:
17
+ return "Please complete all required fields."
18
+
19
+ formula = puv_formulas[formula_type]
20
+
21
+ model = genai.GenerativeModel('gemini-2.0-flash')
22
+ full_prompt = f"""
23
+ You are a UVP (Unique Value Proposition) expert. Analyze the following information and create THREE compelling UVPs:
24
+
25
+ BUSINESS INFORMATION:
26
+ Product/Service: {product_service}
27
+ Target Audience: {target_audience}
28
+ Formula Type: {formula_type}
29
+
30
+ {formula["description"]}
31
+
32
+ First, analyze and provide:
33
+ 1. TARGET AUDIENCE ANALYSIS - Pain Points:
34
+ - What specific frustrations does this audience experience?
35
+ - What are their biggest daily challenges?
36
+ - What emotional problems do they face?
37
+ - What have they tried before that didn't work?
38
+ - What's stopping them from achieving their goals?
39
+
40
+ 2. PRODUCT/SERVICE ANALYSIS - Benefits:
41
+ - What tangible results do clients get?
42
+ - What specific transformation does it offer?
43
+ - What's the unique method or differentiator?
44
+ - What competitive advantages does it have?
45
+ - What emotional benefits does it provide?
46
+
47
+ Then, create THREE different UVPs following the formula structure provided above.
48
+
49
+ CRITICAL INSTRUCTIONS:
50
+ - Each UVP must be specific and measurable
51
+ - Focus on the transformation journey
52
+ - Use natural, conversational language
53
+ - Avoid generic phrases and buzzwords
54
+ - Maximum 2 lines per UVP
55
+ - Separate sections with "---"
56
+
57
+ Format your response as:
58
+ TARGET AUDIENCE ANALYSIS (Pain Points)
59
+ [Detailed target audience analysis]
60
+ ---
61
+ PRODUCT/SERVICE ANALYSIS (Benefits)
62
+ [Detailed product/service benefits]
63
+ ---
64
+ VALUE PROPOSITIONS:
65
+ [Three UVPs]
66
+ """
67
+
68
+ response = model.generate_content([full_prompt], generation_config={"temperature": temperature})
69
+ return response.parts[0].text if response and response.parts else "Error generating content."
70
+
71
+ # Configurar la aplicación Streamlit
72
+ st.set_page_config(page_title="UVP Generator", page_icon="💡", layout="wide")
73
+
74
+ # Título de la app
75
+ st.markdown("<h1>UVP Generator</h1>", unsafe_allow_html=True)
76
+ st.markdown("<h3>Create powerful Unique Value Propositions that attract your ideal clients and communicate your unique value.</h3>", unsafe_allow_html=True)
77
+
78
+ # Sidebar manual
79
+ with open("manual.md", "r", encoding="utf-8") as file:
80
+ manual_content = file.read()
81
+ st.sidebar.markdown(manual_content)
82
+
83
+ # Crear dos columnas
84
+ col1, col2 = st.columns([1, 1])
85
+
86
+ # Columna izquierda para inputs
87
+ with col1:
88
+ product_service = st.text_area(
89
+ "What's your product or service?",
90
+ placeholder="Example: AI-powered copywriting course, Coaching program..."
91
+ )
92
+
93
+ target_audience = st.text_area(
94
+ "Who's your target audience?",
95
+ placeholder="Example: Coaches who want to attract more clients..."
96
+ )
97
+ with st.expander("Advanced options"):
98
+ formula_type = st.selectbox(
99
+ "UVP Formula:",
100
+ options=list(puv_formulas.keys())
101
+ )
102
+ temperature = st.slider(
103
+ "Creativity level:",
104
+ min_value=0.0,
105
+ max_value=2.0,
106
+ value=1.0,
107
+ step=0.1,
108
+ help="Higher values generate more creative but less predictable propositions."
109
+ )
110
+
111
+ generate_button = st.button("Generate UVP")
112
+
113
+ with col2:
114
+ if generate_button:
115
+ response = get_gemini_response(
116
+ product_service,
117
+ target_audience,
118
+ formula_type,
119
+ temperature
120
+ )
121
+ sections = response.split("---")
122
+ for section in sections:
123
+ st.write(section.strip())
124
  st.divider()
manual.md CHANGED
@@ -1,179 +1,185 @@
1
- **Bienvenid@ Copy Xpert**
2
-
3
- Story Genius Maker está diseñada para ayudarte a tejer historias inolvidables en segundos, guiada por la magia de la inteligencia artificial que da vida a tus ideas en relatos cautivadores.
4
-
5
- ### ¿Cómo utilizar Story Genius Maker?
6
-
7
- Sigue estos pasos para sacar el máximo provecho de la herramienta:
8
-
9
- ### 1. Configuración Básica
10
-
11
- #### Historia Principal
12
- - Escribe el tema o idea central de tu historia
13
- - específico y claro
14
- - Ejemplo: "Mi transformación de vendedor tradicional a experto en ventas digitales"
15
-
16
- #### Público Objetivo
17
- - Define quién es tu audiencia ideal
18
- - Incluye sus dolores, deseos y aspiraciones
19
- - Ejemplos detallados:
20
-
21
- + "Emprendedores digitales entre 30-45 años que luchan por conseguir clientes en LinkedIn"
22
- + "Madres profesionales de 35-50 años buscando balance entre trabajo y familia"
23
- + "Profesionales de marketing frustrados con el bajo engagement en redes sociales"
24
- + "Coaches de vida que quieren destacar en un mercado saturado"
25
- + "Dueños de pequeños negocios que buscan automatizar sus procesos"
26
-
27
- #### Acción Deseada
28
- - Especifica qué quieres que haga tu audiencia
29
- - claro y directo
30
- - Ejemplos concretos:
31
-
32
- - "Registrarse al webinar gratuito este jueves"
33
- - "Descargar la guía PDF con 27 templates"
34
- - "Agendar llamada de diagnóstico sin costo"
35
- - "Aprovechar 50% de descuento - solo 48 horas"
36
- - "Unirse al grupo privado de Facebook"
37
-
38
- ### 2. Personalización de la Historia
39
-
40
- #### Control de Longitud
41
- - Corta: 100-115 palabras (ideal para posts y emails cortos)
42
- - Media: 116-130 palabras (ideal para emails y landing pages)
43
- - Larga: 131-150 palabras (ideal para historias detalladas)
44
-
45
- Nota: La longitud está optimizada para mantener la atención del lector mientras se transmite el mensaje completo. Las historias más efectivas combinan impacto y detalle, manteniendo un equilibrio entre profundidad y engagement.
46
-
47
- Recomendaciones por canal:
48
-
49
- - LinkedIn/Facebook: 100-115 palabras
50
- - Email marketing: 116-130 palabras
51
- - Páginas de ventas: 131-150 palabras
52
- - Landing pages: 100-115 palabras
53
- - Historias detalladas: 131-150 palabras
54
-
55
- #### Tono Emocional
56
- - Inspirador: Eleva y motiva con historias de superación
57
- - Empático: Conecta desde la comprensión y el entendimiento
58
- - Profesional: Establece autoridad y credibilidad
59
- - Humorístico: Entretiene mientras educa
60
- - Desafiante: Provoca reflexión y acción
61
- - Conversacional: Natural y cercano
62
- - Nostálgico: Evoca recuerdos y emociones
63
- - Urgente: Genera acción inmediata
64
-
65
- ### 3. Fórmulas Disponibles
66
-
67
- #### P.A.S.A. (Problema-Agitación-Solución-Acción)
68
- Ideal para:
69
- - Productos que resuelven dolores específicos
70
- - Servicios de transformación personal
71
- - Soluciones a problemas urgentes
72
- - Ofertas de alto ticket
73
- - Cuando el dolor es el principal motivador
74
- - Ventas de servicios profesionales
75
- - Productos de bienestar y salud
76
-
77
- #### A.D.P. (Antes-Después-Puente)
78
- Ideal para:
79
- - Historias de transformación personal
80
- - Testimonios de clientes
81
- - Lanzamientos de productos
82
- - Casos de estudio
83
- - Servicios de coaching
84
- - Programas de formación
85
- - Productos de desarrollo personal
86
-
87
- #### G.H.A. (Gancho-Historia-Acción)
88
- Ideal para:
89
- - Contenido viral en redes sociales
90
- - Emails de nurturing
91
- - Posts de blog
92
- - Videos de YouTube
93
- - Podcasts
94
- - Webinars
95
- - Presentaciones en vivo
96
-
97
- ### Mejores Prácticas
98
-
99
- #### Para Resultados Óptimos
100
- 1. Sé específico con tu audiencia
101
- - "Emprendedores que quieren vender más"
102
- - ✅ "Emprendedores de e-commerce que facturan $5k-$10k mensuales y buscan escalar"
103
-
104
- 2. Usa detalles sensoriales
105
- - "Estaba frustrado con mis ventas"
106
- - "Mis manos temblaban cada vez que revisaba el dashboard de ventas vacío"
107
-
108
- 3. Mantén coherencia narrativa
109
- - ❌ Saltar entre diferentes tiempos y perspectivas
110
- - Mantener una línea temporal clara y una voz consistente
111
-
112
- 4. Incluye elementos emocionales
113
- - ❌ "Implementé la estrategia y funcionó"
114
- - "Por fin pude dormir tranquilo, sabiendo que mi negocio estaba en crecimiento"
115
-
116
- 5. Termina con CTA claro
117
- - ❌ "Contáctanos para más información"
118
- - "Reserva tu diagnóstico gratuito de 30 minutos - solo 5 espacios disponibles esta semana"
119
-
120
- #### Evitar
121
- 1. Historias genéricas
122
- - "Un día decidí cambiar mi vida"
123
- - "El 15 de marzo, mientras miraba mi cuenta bancaria con $127, tomé una decisión"
124
-
125
- 2. Exceso de jerga técnica
126
- - ❌ "Implementamos una estrategia de growth hacking con KPIs optimizados"
127
- - "Creamos un sistema simple que duplicó nuestras ventas en 30 días"
128
-
129
- 3. CTAs débiles o confusos
130
- - ❌ "Piénsalo y decide"
131
- - "Haz clic en el botón azul para reservar tu lugar - solo 3 espacios disponibles"
132
-
133
- 4. Narrativas desconectadas
134
- - ❌ Mezclar historias sin relación
135
- - Mantener un hilo conductor claro
136
-
137
- ### Solución de Problemas
138
-
139
- #### Problemas Comunes
140
- 1. **Historia poco engaging**
141
- - Aumenta temperatura a 1.2-1.5
142
- - Añade detalles específicos: "Mi primer webinar tuvo 2 asistentes, y uno era mi mamá"
143
- - Incluye diálogo interno: "¿Realmente estoy hecho para esto?, me preguntaba cada noche"
144
-
145
- 2. **CTA débil**
146
- - Añade urgencia real: "Solo 5 espacios disponibles - 3 ya reservados"
147
- - Especifica el siguiente paso: "Haz clic en el botón verde para agendar tu llamada"
148
- - Refuerza el beneficio: "En 30 minutos, diseñaremos tu plan personalizado de ventas"
149
-
150
- 3. **Narrativa dispersa**
151
- - Usa una estructura clara: Situación → Complicación → Resolución
152
- - Mantén un solo tema central: "Mi viaje de $0 a $10k mensuales"
153
- - Conecta cada párrafo con el siguiente
154
-
155
- ### Consejos Avanzados
156
-
157
- 1. **Optimización de Historias**
158
- - Prueba P.A.S.A. para productos que resuelven dolores claros
159
- - Usa A.D.P. para servicios de transformación
160
- - Aplica G.H.A. para contenido en redes sociales
161
-
162
- 2. **Personalización Avanzada**
163
- - Incluye jerga de tu industria: "De 0 leads a pipeline lleno"
164
- - Usa metáforas relevantes: "Tu LinkedIn es como un vendedor 24/7"
165
- - Adapta el tono según la red social
166
-
167
- 3. **Testing y Mejora**
168
- - A/B testing con diferentes ganchos
169
- - Mide engagement por tipo de historia
170
- - Analiza qué CTAs generan más conversiones
171
-
172
- ## ¿Por qué las Historias son Importantes?
173
-
174
- Las historias son el vehículo más poderoso para:
175
- - Conectar emocionalmente: "Me sentí exactamente igual hace un año"
176
- - Demostrar transformación: "De consultor frustrado a mentor buscado"
177
- - Inspirar acción: "Si yo pude, tú también puedes"
178
- - Construir confianza: A través de vulnerabilidad y autenticidad
 
 
 
 
 
 
179
  - Memorabilidad del mensaje: Las historias se recuerdan 22 veces más que los hechos
 
1
+ **Bienvenid@ Copy Xpert**
2
+
3
+ Story Genius Maker está diseñada para ayudarte a tejer historias inolvidables en segundos, guiada por la magia de la inteligencia artificial que da vida a tus ideas en relatos cautivadores.
4
+
5
+ ### ¿Cómo utilizar Story Genius Maker?
6
+
7
+ Sigue estos pasos para sacar el máximo provecho de la herramienta:
8
+
9
+ ### 1. Configuración Básica
10
+
11
+ #### Público Objetivo
12
+ - Define quién es tu audiencia ideal
13
+ - Incluye sus dolores, deseos y aspiraciones
14
+ - Ejemplos detallados:
15
+
16
+ + "Emprendedores digitales entre 30-45 años que luchan por conseguir clientes en LinkedIn"
17
+ + "Madres profesionales de 35-50 años buscando balance entre trabajo y familia"
18
+ + "Profesionales de marketing frustrados con el bajo engagement en redes sociales"
19
+ + "Coaches de vida que quieren destacar en un mercado saturado"
20
+ + "Dueños de pequeños negocios que buscan automatizar sus procesos"
21
+
22
+ #### Producto/Servicio
23
+ - Describe tu solución claramente
24
+ - Enfócate en beneficios principales
25
+ - Ejemplos específicos:
26
+
27
+ - "Curso de LinkedIn Orgánico: De 0 a 10k seguidores en 90 días"
28
+ - "App de productividad para madres: Organiza tu vida en 15 minutos al día"
29
+ - "Mentoría VIP de Instagram: Estrategia personalizada de contenido"
30
+ - "Software de automatización para pequeños negocios"
31
+ - "Programa de coaching transformacional de 12 semanas"
32
+
33
+ #### Acción Deseada
34
+ - Especifica qué quieres que haga tu audiencia
35
+ - claro y directo
36
+ - Ejemplos concretos:
37
+
38
+ - "Registrarse al webinar gratuito este jueves"
39
+ - "Descargar la guía PDF con 27 templates"
40
+ - "Agendar llamada de diagnóstico sin costo"
41
+ - "Aprovechar 50% de descuento - solo 48 horas"
42
+ - "Unirse al grupo privado de Facebook"
43
+
44
+ ### 2. Personalización de la Historia
45
+
46
+ #### Control de Longitud
47
+ - Corta: 100-115 palabras (ideal para posts y emails cortos)
48
+ - Media: 116-130 palabras (ideal para emails y landing pages)
49
+ - Larga: 131-150 palabras (ideal para historias detalladas)
50
+
51
+ Nota: La longitud está optimizada para mantener la atención del lector mientras se transmite el mensaje completo. Las historias más efectivas combinan impacto y detalle, manteniendo un equilibrio entre profundidad y engagement.
52
+
53
+ Recomendaciones por canal:
54
+
55
+ - LinkedIn/Facebook: 100-115 palabras
56
+ - Email marketing: 116-130 palabras
57
+ - Páginas de ventas: 131-150 palabras
58
+ - Landing pages: 100-115 palabras
59
+ - Historias detalladas: 131-150 palabras
60
+
61
+ #### Tono Emocional
62
+ - Inspirador: Eleva y motiva con historias de superación
63
+ - Empático: Conecta desde la comprensión y el entendimiento
64
+ - Profesional: Establece autoridad y credibilidad
65
+ - Humorístico: Entretiene mientras educa
66
+ - Desafiante: Provoca reflexión y acción
67
+ - Conversacional: Natural y cercano
68
+ - Nostálgico: Evoca recuerdos y emociones
69
+ - Urgente: Genera acción inmediata
70
+
71
+ ### 3. Fórmulas Disponibles
72
+
73
+ #### P.A.S.A. (Problema-Agitación-Solución-Acción)
74
+ Ideal para:
75
+ - Productos que resuelven dolores específicos
76
+ - Servicios de transformación personal
77
+ - Soluciones a problemas urgentes
78
+ - Ofertas de alto ticket
79
+ - Cuando el dolor es el principal motivador
80
+ - Ventas de servicios profesionales
81
+ - Productos de bienestar y salud
82
+
83
+ #### A.D.P. (Antes-Después-Puente)
84
+ Ideal para:
85
+ - Historias de transformación personal
86
+ - Testimonios de clientes
87
+ - Lanzamientos de productos
88
+ - Casos de estudio
89
+ - Servicios de coaching
90
+ - Programas de formación
91
+ - Productos de desarrollo personal
92
+
93
+ #### G.H.A. (Gancho-Historia-Acción)
94
+ Ideal para:
95
+ - Contenido viral en redes sociales
96
+ - Emails de nurturing
97
+ - Posts de blog
98
+ - Videos de YouTube
99
+ - Podcasts
100
+ - Webinars
101
+ - Presentaciones en vivo
102
+
103
+ ### Mejores Prácticas
104
+
105
+ #### Para Resultados Óptimos
106
+ 1. específico con tu audiencia
107
+ - ❌ "Emprendedores que quieren vender más"
108
+ - "Emprendedores de e-commerce que facturan $5k-$10k mensuales y buscan escalar"
109
+
110
+ 2. Usa detalles sensoriales
111
+ - ❌ "Estaba frustrado con mis ventas"
112
+ - "Mis manos temblaban cada vez que revisaba el dashboard de ventas vacío"
113
+
114
+ 3. Mantén coherencia narrativa
115
+ - ❌ Saltar entre diferentes tiempos y perspectivas
116
+ - Mantener una línea temporal clara y una voz consistente
117
+
118
+ 4. Incluye elementos emocionales
119
+ - ❌ "Implementé la estrategia y funcionó"
120
+ - ✅ "Por fin pude dormir tranquilo, sabiendo que mi negocio estaba en crecimiento"
121
+
122
+ 5. Termina con CTA claro
123
+ - "Contáctanos para más información"
124
+ - ✅ "Reserva tu diagnóstico gratuito de 30 minutos - solo 5 espacios disponibles esta semana"
125
+
126
+ #### Evitar
127
+ 1. Historias genéricas
128
+ - ❌ "Un día decidí cambiar mi vida"
129
+ - "El 15 de marzo, mientras miraba mi cuenta bancaria con $127, tomé una decisión"
130
+
131
+ 2. Exceso de jerga técnica
132
+ - ❌ "Implementamos una estrategia de growth hacking con KPIs optimizados"
133
+ - "Creamos un sistema simple que duplicó nuestras ventas en 30 días"
134
+
135
+ 3. CTAs débiles o confusos
136
+ - ❌ "Piénsalo y decide"
137
+ - "Haz clic en el botón azul para reservar tu lugar - solo 3 espacios disponibles"
138
+
139
+ 4. Narrativas desconectadas
140
+ - Mezclar historias sin relación
141
+ - Mantener un hilo conductor claro
142
+
143
+ ### Solución de Problemas
144
+
145
+ #### Problemas Comunes
146
+ 1. **Historia poco engaging**
147
+ - Aumenta temperatura a 1.2-1.5
148
+ - Añade detalles específicos: "Mi primer webinar tuvo 2 asistentes, y uno era mi mamá"
149
+ - Incluye diálogo interno: "¿Realmente estoy hecho para esto?, me preguntaba cada noche"
150
+
151
+ 2. **CTA débil**
152
+ - Añade urgencia real: "Solo 5 espacios disponibles - 3 ya reservados"
153
+ - Especifica el siguiente paso: "Haz clic en el botón verde para agendar tu llamada"
154
+ - Refuerza el beneficio: "En 30 minutos, diseñaremos tu plan personalizado de ventas"
155
+
156
+ 3. **Narrativa dispersa**
157
+ - Usa una estructura clara: Situación → Complicación → Resolución
158
+ - Mantén un solo tema central: "Mi viaje de $0 a $10k mensuales"
159
+ - Conecta cada párrafo con el siguiente
160
+
161
+ ### Consejos Avanzados
162
+
163
+ 1. **Optimización de Historias**
164
+ - Prueba P.A.S.A. para productos que resuelven dolores claros
165
+ - Usa A.D.P. para servicios de transformación
166
+ - Aplica G.H.A. para contenido en redes sociales
167
+
168
+ 2. **Personalización Avanzada**
169
+ - Incluye jerga de tu industria: "De 0 leads a pipeline lleno"
170
+ - Usa metáforas relevantes: "Tu LinkedIn es como un vendedor 24/7"
171
+ - Adapta el tono según la red social
172
+
173
+ 3. **Testing y Mejora**
174
+ - A/B testing con diferentes ganchos
175
+ - Mide engagement por tipo de historia
176
+ - Analiza qué CTAs generan más conversiones
177
+
178
+ ## ¿Por qué las Historias son Importantes?
179
+
180
+ Las historias son el vehículo más poderoso para:
181
+ - Conectar emocionalmente: "Me sentí exactamente igual hace un año"
182
+ - Demostrar transformación: "De consultor frustrado a mentor buscado"
183
+ - Inspirar acción: "Si yo pude, tú también puedes"
184
+ - Construir confianza: A través de vulnerabilidad y autenticidad
185
  - Memorabilidad del mensaje: Las historias se recuerdan 22 veces más que los hechos
puv_formulas.py ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ puv_formulas = {
2
+ "Fórmula Tradicional": {
3
+ "description": """
4
+ The Traditional Formula creates a clear and direct UVP that focuses on four key objectives:
5
+ - Attracting your ideal client by highlighting specific characteristics and pain points
6
+ - Repelling non-ideal clients to ensure resource efficiency
7
+ - Explaining the promised transformation clearly
8
+ - Generating purchase commitment through value demonstration
9
+
10
+ Structure:
11
+ 1. I help [SPECIFIC AVATAR]
12
+ (Describe in detail: situation, problems, desires)
13
+
14
+ 2. To achieve [PROMISED TRANSFORMATION]
15
+ (Explain the change/result simply and convincingly)
16
+
17
+ Key elements to include:
18
+ - Emotional appeal
19
+ - Clear and direct language
20
+ - Service highlights
21
+ - Natural filtering of non-ideal clients
22
+ """,
23
+ "example": "I help single business women with no time for love, who feel trapped in their careers and have had bad experiences in the past, to find a compatible partner who respects their success and time, without getting lost in frustrating dates or unfulfilling relationships."
24
+ },
25
+ "Contrato Imposible": {
26
+ "description": """
27
+ The "Impossible Contract" formula creates a compelling and disruptive UVP by challenging conventional approaches.
28
+ It works by:
29
+ - Making a bold, specific promise to a well-defined audience
30
+ - Presenting your solution in an unexpected, intriguing way
31
+ - Highlighting a transformative benefit that seems "too good to be true"
32
+ - Differentiating from traditional solutions by stating what you won't do
33
+
34
+ This formula is particularly effective when you want to:
35
+ - Stand out in a crowded market
36
+ - Challenge industry conventions
37
+ - Appeal to audiences frustrated with traditional solutions
38
+ - Create an emotional connection while maintaining credibility
39
+
40
+ Structure:
41
+ 1. I offer [TARGET AUDIENCE]
42
+ (Be specific: e.g., "single business women with no time for love", "busy parents planning parties")
43
+
44
+ 2. [PRODUCT/SERVICE]
45
+ (Describe it in a fun, unexpected way that shows transformation)
46
+
47
+ 3. You won't believe [TRANSFORMATIVE BENEFIT]
48
+ (Must be directly related to the expected change/result)
49
+
50
+ 4. But watch out: [ANTI-TRADITIONAL APPROACH]
51
+ (Show how you're different from conventional solutions)
52
+ """,
53
+ "example": "I offer single business women with no time for love a transformative course that teaches you how to attract a compatible partner without sacrificing your career. You won't believe how you'll find a partner who values your time and success. But watch out: no more wasting time on dead-end dates or dating apps that lead nowhere - and no pretending to be someone you're not."
54
+ },
55
+ "Reto Ridículo": {
56
+ "description": """
57
+ The "Ridiculous Challenge" formula creates an engaging UVP by making complex problems seem surprisingly simple.
58
+ It works through three key steps:
59
+ - Acknowledging a common frustration
60
+ - Revealing an unexpected solution
61
+ - Demonstrating surprising simplicity
62
+
63
+ Structure:
64
+ 1. You know that [COMMON CHALLENGE]
65
+ (Describe a relatable daily frustration your ideal client faces)
66
+
67
+ 2. But I have a secret [UNIQUE SOLUTION]
68
+ (Introduce an unexpected or little-known solution that changes their reality)
69
+
70
+ 3. And actually, it's much easier than it seems [SIMPLE TRANSFORMATION]
71
+ (Show how easily they can achieve the desired result)
72
+
73
+ Key elements to include:
74
+ - Relatable pain points
75
+ - Unexpected twist
76
+ - Simplification of complex problems
77
+ - Heart-centered approach
78
+ """,
79
+ "example": "You know that as a personal development expert, attracting ideal clients doesn't have to be as complicated as launching a million-dollar advertising campaign, right? But I have a secret: using authentic storytelling to connect emotionally with your audience is much easier than you think. All you have to do is speak from the heart, and yes, the clients who really want you will find their way to you."
80
+ }
81
+ }
styles.py CHANGED
@@ -1,66 +1,66 @@
1
- import streamlit as st
2
-
3
- def apply_styles():
4
- st.markdown("""
5
- <style>
6
- /* Ajustes para el contenedor principal */
7
- .block-container {
8
- padding-top: 2rem !important;
9
- padding-bottom: 2rem !important;
10
- margin-top: 0 !important;
11
- }
12
-
13
- /* Estilos del título principal */
14
- h1 {
15
- color: #2C3E50;
16
- font-family: 'Helvetica Neue', sans-serif;
17
- font-size: 3.2rem !important;
18
- font-weight: 700;
19
- margin: 1rem 0 !important;
20
- padding: 0 !important;
21
- text-align: center;
22
- }
23
-
24
- /* Estilos del subtítulo */
25
- h3 {
26
- color: #34495E;
27
- font-family: 'Helvetica Neue', sans-serif;
28
- font-size: 1.3rem !important;
29
- line-height: 1.6;
30
- margin: 1rem auto !important;
31
- padding: 0 !important;
32
- max-width: 800px;
33
- text-align: center;
34
- }
35
-
36
- /* Estilos del botón */
37
- div.stButton > button {
38
- background-color: #2ECC71;
39
- color: white;
40
- width: 90%;
41
- height: 60px;
42
- font-weight: bold;
43
- font-size: 22px;
44
- text-transform: uppercase;
45
- border: none;
46
- border-radius: 8px;
47
- display: block;
48
- margin: 0 auto;
49
- transition: all 0.3s ease;
50
- box-shadow: 0 4px 6px rgba(0,0,0,0.1);
51
- }
52
-
53
- div.stButton > button:hover {
54
- background-color: #27AE60;
55
- box-shadow: 0 6px 8px rgba(0,0,0,0.2);
56
- transform: translateY(-2px);
57
- }
58
- </style>
59
- """, unsafe_allow_html=True)
60
-
61
- def format_story_output(story_text):
62
- return f"""
63
- <div class="story-output">
64
- {story_text}
65
- </div>
66
  """
 
1
+ import streamlit as st
2
+
3
+ def apply_styles():
4
+ """Apply custom CSS styles to the Streamlit app"""
5
+ st.markdown("""
6
+ <style>
7
+ .stTextArea > label {
8
+ font-size: 1.2rem;
9
+ font-weight: bold;
10
+ color: #2c3e50;
11
+ }
12
+
13
+ .stSelectbox > label {
14
+ font-size: 1.2rem;
15
+ font-weight: bold;
16
+ color: #2c3e50;
17
+ }
18
+
19
+ .stSlider > label {
20
+ font-size: 1.2rem;
21
+ font-weight: bold;
22
+ color: #2c3e50;
23
+ }
24
+
25
+ .stButton > button {
26
+ background-color: #2c3e50;
27
+ color: white;
28
+ padding: 0.5rem 2rem;
29
+ font-size: 1.1rem;
30
+ font-weight: bold;
31
+ border-radius: 5px;
32
+ }
33
+
34
+ .stButton > button:hover {
35
+ background-color: #34495e;
36
+ }
37
+
38
+ h1 {
39
+ color: #2c3e50;
40
+ font-size: 2.5rem;
41
+ margin-bottom: 1rem;
42
+ }
43
+
44
+ h3 {
45
+ color: #34495e;
46
+ font-size: 1.3rem;
47
+ font-weight: normal;
48
+ margin-bottom: 2rem;
49
+ }
50
+
51
+ .stMarkdown {
52
+ font-size: 1.1rem;
53
+ }
54
+
55
+ .element-container {
56
+ margin-bottom: 1.5rem;
57
+ }
58
+ </style>
59
+ """, unsafe_allow_html=True)
60
+
61
+ def format_story_output(story_text):
62
+ return f"""
63
+ <div class="story-output">
64
+ {story_text}
65
+ </div>
66
  """