JeCabrera commited on
Commit
ed7334e
·
verified ·
1 Parent(s): c626eac

Upload 11 files

Browse files
Files changed (3) hide show
  1. README.md +28 -13
  2. app.py +409 -377
  3. formulas/webinar_formulas.py +263 -263
README.md CHANGED
@@ -1,13 +1,28 @@
1
- ---
2
- sdk: streamlit
3
- colorFrom: yellow
4
- colorTo: blue
5
- pinned: true
6
- title: Perfect Webinar CopyXpert 1G
7
- license: afl-3.0
8
- emoji: ⚡
9
- thumbnail: >-
10
- https://cdn-uploads.huggingface.co/production/uploads/66c41fa62777c050701989a9/Mvu9l1BVZNFhdIgvm6AVX.png
11
- short_description: Conjure enchanting titles effortlessly with AI Magic
12
- sdk_version: 1.44.0
13
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ sdk: streamlit
3
+ colorFrom: yellow
4
+ colorTo: gray
5
+ pinned: false
6
+ title: Multi hookgenerator 2 Reto RoboCopy 2G
7
+ license: afl-3.0
8
+ emoji: ⚡
9
+ thumbnail: >-
10
+ https://cdn-uploads.huggingface.co/production/uploads/66c41fa62777c050701989a9/D4k6XvaEzAaSJkNb01JTU.png
11
+ short_description: Conjure enchanting titles effortlessly with AI Magic
12
+ sdk_version: 1.44.0
13
+ ---
14
+
15
+ ## Generador de Titulares
16
+
17
+ Este Space utiliza la API de Geminis para generar titulares atractivos basados en los parámetros que proporcionas.
18
+
19
+ ### Cómo Usar
20
+
21
+ 1. Introduce el número de titulares que deseas generar.
22
+ 2. Especifica el público objetivo.
23
+ 3. Proporciona el nombre del producto o servicio.
24
+ 4. Haz clic en "Generar Titulares" para obtener tus titulares.
25
+
26
+ ### Contacto
27
+
28
+ Para más información, revisa la documentación del modelo y la interfaz en Hugging Face.
app.py CHANGED
@@ -1,377 +1,409 @@
1
- from dotenv import load_dotenv
2
- import streamlit as st
3
- import os
4
- import google.generativeai as genai
5
- import random
6
- import datetime
7
- from streamlit import session_state as state
8
- from angles import angles
9
- from formulas.webinar_formulas import webinar_formulas
10
- from formulas.webinar_name_formulas import webinar_name_formulas
11
- from formulas.angles_webinar_names import angles_webinar_names
12
-
13
- # Cargar las variables de entorno
14
- load_dotenv()
15
-
16
- # Configurar la API de Google
17
- genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
18
-
19
- # Función para crear la configuración del modelo (evita duplicación)
20
- def create_model_config(temperature):
21
- return {
22
- "temperature": temperature,
23
- "top_p": 0.65,
24
- "top_k": 360,
25
- "max_output_tokens": 8196,
26
- }
27
-
28
- # Función para inicializar el modelo
29
- def initialize_model(temperature):
30
- config = create_model_config(temperature)
31
- return genai.GenerativeModel(
32
- model_name="gemini-2.0-flash",
33
- generation_config=config,
34
- )
35
-
36
- # Función para generar nombres de webinars
37
- def generate_webinar_names(number_of_names, target_audience, product, temperature, selected_formula, selected_angle=None):
38
- model = initialize_model(temperature)
39
-
40
- # Incluir las instrucciones del sistema en el prompt principal
41
- system_prompt = """You are a world-class copywriter, with expertise in crafting compelling webinar titles that immediately capture the audience's attention and drive registrations.
42
-
43
- FORMAT RULES:
44
- - Each webinar name must start with number and period
45
- - One webinar name per line
46
- - No explanations or categories
47
- - Add a line break between each name
48
- - Avoid unnecessary : symbols
49
- - Each webinar name must be a complete and intriguing title
50
- - WRITE ALL WEBINAR NAMES IN SPANISH
51
-
52
- FORMAT EXAMPLE:
53
- 1. Nombre del Webinar 1.
54
-
55
- 2. Nombre del Webinar 2.
56
-
57
- 3. Nombre del Webinar 3.
58
-
59
- 4. Nombre del Webinar 4.
60
-
61
- 5. Nombre del Webinar 5.
62
-
63
- IMPORTANT:
64
- - Each webinar name must be unique and memorable
65
- - Avoid clichés and generalities
66
- - Maintain an intriguing but credible tone
67
- - Adapt speaking language from the audience
68
- - Focus on transformative benefits
69
- - Follow the selected formula structure
70
- - WRITE ALL WEBINAR NAMES IN SPANISH"""
71
-
72
- # Iniciar el prompt con las instrucciones del sistema
73
- webinar_names_instruction = f"{system_prompt}\n\n"
74
-
75
- # Añadir instrucciones de ángulo solo si no es "NINGUNO" y se proporcionó un ángulo
76
- if selected_angle and selected_angle != "NINGUNO":
77
- webinar_names_instruction += f"""
78
- MAIN ANGLE: {selected_angle}
79
- SPECIFIC ANGLE INSTRUCTIONS:
80
- {angles_webinar_names[selected_angle]["instruction"]}
81
-
82
- IMPORTANT: The {selected_angle} angle should be applied as a "style layer" over the formula structure:
83
- 1. Keep the base structure of the formula intact
84
- 2. Apply the tone and style of the {selected_angle} angle
85
- 3. Ensure that each element of the formula reflects the angle
86
- 4. The angle affects "how" it is said, not "what" is said
87
-
88
- SUCCESSFUL EXAMPLES OF THE {selected_angle} ANGLE:
89
- """
90
- for example in angles_webinar_names[selected_angle]["examples"]:
91
- webinar_names_instruction += f"- {example}\n"
92
-
93
- # Instrucciones específicas para la tarea
94
- webinar_names_instruction += (
95
- f"\nYour task is to create {number_of_names} irresistible webinar names for {target_audience} "
96
- f"that instantly capture attention and generate registrations for a webinar about {product}. "
97
- f"Focus on awakening genuine interest and communicating the value they will get by registering."
98
- f"\n\n"
99
- f"IMPORTANT: Carefully study these examples of the selected formula. "
100
- f"Each example represents the style and structure to follow"
101
- f":\n\n"
102
- )
103
-
104
- # Agregar ejemplos aleatorios de la fórmula (keeping examples in Spanish)
105
- random_examples = random.sample(selected_formula['examples'], min(5, len(selected_formula['examples'])))
106
- webinar_names_instruction += "EXAMPLES OF THE FORMULA TO FOLLOW:\n"
107
- for i, example in enumerate(random_examples, 1):
108
- webinar_names_instruction += f"{i}. {example}\n"
109
-
110
- # Instrucciones específicas (translated to English)
111
- webinar_names_instruction += "\nSPECIFIC INSTRUCTIONS:\n"
112
- webinar_names_instruction += "1. Maintain the same structure and length as the previous examples\n"
113
- webinar_names_instruction += "2. Use the same tone and writing style\n"
114
- webinar_names_instruction += "3. Replicate the phrase construction patterns\n"
115
- webinar_names_instruction += "4. Preserve the level of specificity and detail\n"
116
- webinar_names_instruction += f"5. Adapt the content for {target_audience} while maintaining the essence of the examples\n\n"
117
- webinar_names_instruction += f"FORMULA TO FOLLOW:\n{selected_formula['description']}\n\n"
118
- webinar_names_instruction += f"""
119
- GENERATE NOW:
120
- Create {number_of_names} webinar names that faithfully follow the style and structure of the examples shown.
121
- """
122
-
123
- # Enviar el mensaje al modelo
124
- chat_session = model.start_chat(
125
- history=[
126
- {
127
- "role": "user",
128
- "parts": [webinar_names_instruction],
129
- },
130
- ]
131
- )
132
- response = chat_session.send_message("Genera los nombres de webinar siguiendo exactamente el estilo de los ejemplos mostrados.")
133
-
134
- return response.text
135
-
136
- def generate_webinar_script(audience, topic, temperature, selected_formula):
137
- model = initialize_model(temperature)
138
-
139
- # Incluir las instrucciones del sistema en el prompt principal
140
- system_prompt = f"""You are a world-class webinar script writer, with expertise in crafting persuasive and engaging webinar scripts that convert audience into customers.
141
-
142
- You are also a world-class direct response copywriter trained by Gary Halbert, Gary Bencivenga, and David Ogilvy.
143
-
144
- You understand how real people interact with webinar content:
145
- - They quickly lose interest if the content feels generic or corporate
146
- - They only stay engaged when the content feels personal and sparks genuine curiosity
147
- - They respond to messages that seem delivered by a real person, not a corporation
148
- - They engage with content that hooks them from the first line and maintains interest throughout
149
-
150
- FORMAT RULES:
151
- - Create a complete webinar script with clear sections
152
- - Use markdown formatting for headings and structure
153
- - Include specific talking points for each section
154
- - Write in a conversational, engaging tone
155
- - Include persuasive elements and calls to action
156
- - Follow the selected webinar framework structure exactly
157
- - WRITE THE ENTIRE SCRIPT IN SPANISH
158
- - DO NOT include any introductory text or explanations about the script
159
- - Start directly with the webinar content
160
-
161
- IMPORTANT:
162
- - The script must be comprehensive and ready to use
163
- - Include specific examples and stories relevant to the topic
164
- - Maintain a persuasive but authentic tone
165
- - Adapt language to match the target audience
166
- - Focus on transformative benefits and clear value proposition
167
- - Follow the selected formula structure precisely
168
- - WRITE THE ENTIRE SCRIPT IN SPANISH
169
- - DO NOT include phrases like "Aquí tienes un guion completo" or any other meta-commentary"""
170
-
171
- # Iniciar el prompt con las instrucciones del sistema
172
- webinar_script_instruction = f"{system_prompt}\n\n"
173
-
174
- # Instrucciones específicas para la tarea
175
- webinar_script_instruction += (
176
- f"\nYour task is to create a complete webinar script IN SPANISH for {audience} "
177
- f"about {topic} that is persuasive and converts the audience into customers. "
178
- f"The script must follow exactly the structure of the framework '{selected_formula['description']}' "
179
- f"and must include all the necessary elements for a successful webinar."
180
- f"\n\n"
181
- )
182
-
183
- # Estructura del webinar
184
- webinar_script_instruction += "WEBINAR STRUCTURE TO FOLLOW:\n"
185
- for i, step in enumerate(selected_formula['structure'], 1):
186
- webinar_script_instruction += f"{i}. {step}\n"
187
-
188
- # Ejemplos de webinars exitosos
189
- webinar_script_instruction += "\n\nEXAMPLES OF SUCCESSFUL WEBINARS WITH THIS STRUCTURE:\n"
190
- for i, example in enumerate(selected_formula['examples'], 1):
191
- webinar_script_instruction += f"{i}. {example}\n"
192
-
193
- # Instrucciones específicas
194
- webinar_script_instruction += f"""
195
- SPECIFIC INSTRUCTIONS:
196
- 1. Create a complete script that follows exactly the provided structure
197
- 2. Include persuasive elements and clear calls to action
198
- 3. Adapt the language and examples specifically for {audience}
199
- 4. Focus on the transformative benefits of {topic}
200
- 5. Include relevant stories and examples that reinforce your points
201
- 6. Use a conversational but professional tone
202
- 7. Make sure each section fulfills its specific purpose in the framework
203
- 8. IMPORTANT: Write the entire script in Spanish
204
-
205
- GENERATE NOW:
206
- Create a complete webinar script following faithfully the structure of the selected framework.
207
- """
208
-
209
- # Enviar el mensaje al modelo
210
- chat_session = model.start_chat(
211
- history=[
212
- {
213
- "role": "user",
214
- "parts": [webinar_script_instruction],
215
- },
216
- ]
217
- )
218
- response = chat_session.send_message("Generate the webinar script IN SPANISH following exactly the provided structure. All content must be in Spanish.")
219
-
220
- return response.text
221
-
222
- # Función para validar entradas (evita duplicación)
223
- def validate_inputs(audience, product):
224
- has_audience = audience.strip() != ""
225
- has_product = product.strip() != ""
226
- return has_audience and has_product
227
-
228
- # Función para mostrar resultados (evita duplicación)
229
- def display_results(col, title, content, spinner_text):
230
- with col:
231
- with st.spinner(spinner_text, show_time=True):
232
- result = content
233
- st.subheader(title)
234
- st.markdown(result)
235
- return result
236
-
237
- # Configurar la interfaz de usuario con Streamlit
238
- st.set_page_config(page_title="Perfect Webinar Framework", layout="wide")
239
-
240
- # Leer el contenido del archivo manual.md
241
- with open("manual.md", "r", encoding="utf-8") as file:
242
- manual_content = file.read()
243
-
244
- # Mostrar el contenido del manual en el sidebar
245
- st.sidebar.markdown(manual_content)
246
-
247
- # Crear pestañas para la interfaz
248
- tab1, tab2 = st.tabs(["Guiones de Webinar", "Nombres de Webinar"])
249
-
250
- # Primera pestaña - Generador de Guiones de Webinar
251
- with tab1:
252
- tab1.subheader("Script Webinar")
253
-
254
- # Crear columnas para la interfaz
255
- col1, col2 = tab1.columns([1, 2])
256
-
257
- # Columna de entrada
258
- with col1:
259
- webinar_script_audience = st.text_input("¿Quién es tu público objetivo?", placeholder="Ejemplo: Emprendedores digitales", key="webinar_script_audience")
260
- webinar_script_product = st.text_input("¿Sobre qué tema es tu webinar?", placeholder="Ejemplo: Marketing en redes sociales", key="webinar_script_product")
261
-
262
- selected_webinar_formula_key = st.selectbox(
263
- "Selecciona un framework de webinar",
264
- options=list(webinar_formulas.keys()),
265
- key="webinar_formula"
266
- )
267
-
268
- submit_webinar_script = st.button("Generar Guión de Webinar")
269
-
270
- # Opciones avanzadas
271
- with st.expander("Personaliza tu guión de webinar"):
272
- webinar_script_temperature = st.slider("Creatividad", min_value=0.0, max_value=2.0, value=1.0, step=0.1, key="webinar_script_temp")
273
-
274
- selected_webinar_formula = webinar_formulas[selected_webinar_formula_key]
275
-
276
- # Mostrar la estructura del webinar seleccionado
277
- st.markdown("### Estructura del webinar:")
278
- for i, step in enumerate(selected_webinar_formula["structure"], 1):
279
- st.markdown(f"{i}. {step}")
280
-
281
- # Generar y mostrar el guión
282
- if submit_webinar_script:
283
- if validate_inputs(webinar_script_audience, webinar_script_product):
284
- try:
285
- with col2:
286
- with st.spinner("Generando tu guión de webinar...", show_time=True):
287
- generated_webinar_script = generate_webinar_script(
288
- webinar_script_audience,
289
- webinar_script_product,
290
- webinar_script_temperature,
291
- selected_webinar_formula
292
- )
293
-
294
- # Get current timestamp for the filename
295
- timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
296
-
297
- # Download button at the top
298
- st.download_button(
299
- label="DESCARGAR GUION DE MI WEBINAR",
300
- data=generated_webinar_script,
301
- file_name=f"guion_webinar_{timestamp}.md",
302
- mime="text/markdown",
303
- key="download_top"
304
- )
305
-
306
- st.subheader("Tu guión de webinar:")
307
- st.markdown(generated_webinar_script)
308
-
309
- # Download button at the bottom
310
- st.download_button(
311
- label="DESCARGAR GUION DE MI WEBINAR",
312
- data=generated_webinar_script,
313
- file_name=f"guion_webinar_{timestamp}.md",
314
- mime="text/markdown",
315
- key="download_bottom"
316
- )
317
- except ValueError as e:
318
- col2.error(f"Error: {str(e)}")
319
- else:
320
- col2.error("Por favor, proporciona el público objetivo y el tema del webinar.")
321
-
322
- # Segunda pestaña - Generador de Nombres de Webinar
323
- with tab2:
324
- tab2.subheader("Nombres de Webinar")
325
-
326
- # Crear columnas para la interfaz
327
- col1, col2 = tab2.columns([1, 2])
328
-
329
- # Columna de entrada
330
- with col1:
331
- webinar_name_audience = st.text_input("¿Quién es tu público objetivo?", placeholder="Ejemplo: Emprendedores digitales", key="webinar_name_audience")
332
- webinar_name_product = st.text_input("¿Sobre qué tema es tu webinar?", placeholder="Ejemplo: Marketing en redes sociales", key="webinar_name_product")
333
- number_of_names = st.selectbox("Número de nombres", options=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], index=4, key="number_of_names")
334
-
335
- selected_webinar_name_formula_key = st.selectbox(
336
- "Selecciona una fórmula para tus nombres de webinar",
337
- options=list(webinar_name_formulas.keys()),
338
- key="webinar_name_formula"
339
- )
340
-
341
- submit_webinar_names = st.button("Generar Nombres de Webinar")
342
-
343
- # Opciones avanzadas
344
- with st.expander("Personaliza tus nombres de webinar"):
345
- webinar_name_temperature = st.slider("Creatividad", min_value=0.0, max_value=2.0, value=1.0, step=0.1, key="webinar_name_temp")
346
-
347
- # Configurar opciones de ángulo
348
- angle_keys = ["NINGUNO"] + sorted([key for key in angles_webinar_names.keys() if key != "NINGUNO"])
349
- selected_angle = st.selectbox(
350
- "Selecciona el ángulo para tus nombres",
351
- options=angle_keys,
352
- key="webinar_name_angle"
353
- )
354
-
355
- selected_webinar_name_formula = webinar_name_formulas[selected_webinar_name_formula_key]
356
-
357
- # Generar y mostrar los nombres
358
- if submit_webinar_names:
359
- if validate_inputs(webinar_name_audience, webinar_name_product):
360
- try:
361
- with col2:
362
- with st.spinner("Generando tus nombres de webinar...", show_time=True):
363
- generated_webinar_names = generate_webinar_names(
364
- number_of_names,
365
- webinar_name_audience,
366
- webinar_name_product,
367
- webinar_name_temperature,
368
- selected_webinar_name_formula,
369
- selected_angle if selected_angle != "NINGUNO" else None
370
- )
371
- st.subheader("Tus nombres de webinar:")
372
- st.markdown(generated_webinar_names)
373
- except ValueError as e:
374
- col2.error(f"Error: {str(e)}")
375
- else:
376
- col2.error("Por favor, proporciona el público objetivo y el tema del webinar.")
377
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from dotenv import load_dotenv
2
+ import streamlit as st
3
+ import os
4
+ import google.generativeai as genai
5
+ import random
6
+ import datetime
7
+ from streamlit import session_state as state
8
+ from angles import angles
9
+ from formulas.webinar_formulas import webinar_formulas
10
+ from formulas.webinar_name_formulas import webinar_name_formulas
11
+ from formulas.angles_webinar_names import angles_webinar_names
12
+
13
+ # Cargar las variables de entorno
14
+ load_dotenv()
15
+
16
+ # Configurar la API de Google
17
+ genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
18
+
19
+ # Función para crear la configuración del modelo (evita duplicación)
20
+ def create_model_config(temperature):
21
+ return {
22
+ "temperature": temperature,
23
+ "top_p": 0.65,
24
+ "top_k": 360,
25
+ "max_output_tokens": 8196,
26
+ }
27
+
28
+ # Función para inicializar el modelo
29
+ def initialize_model(temperature):
30
+ config = create_model_config(temperature)
31
+ return genai.GenerativeModel(
32
+ model_name="gemini-2.0-flash",
33
+ generation_config=config,
34
+ )
35
+
36
+ # Refactored model interaction function to reduce duplication
37
+ def generate_content(prompt_instructions, temperature):
38
+ model = initialize_model(temperature)
39
+ chat_session = model.start_chat(
40
+ history=[
41
+ {
42
+ "role": "user",
43
+ "parts": [prompt_instructions],
44
+ },
45
+ ]
46
+ )
47
+ response = chat_session.send_message("Generate the content following exactly the provided instructions. All content must be in Spanish.")
48
+ return response.text
49
+
50
+ # Función para generar nombres de webinars
51
+ def generate_webinar_names(number_of_names, target_audience, product, temperature, selected_formula, selected_angle=None):
52
+ # Incluir las instrucciones del sistema en el prompt principal
53
+ system_prompt = """You are a world-class copywriter, with expertise in crafting compelling webinar titles that immediately capture the audience's attention and drive registrations.
54
+
55
+ FORMAT RULES:
56
+ - Each webinar name must start with number and period
57
+ - One webinar name per line
58
+ - No explanations or categories
59
+ - Add a line break between each name
60
+ - Avoid unnecessary : symbols
61
+ - Each webinar name must be a complete and intriguing title
62
+ - WRITE ALL WEBINAR NAMES IN SPANISH
63
+
64
+ FORMAT EXAMPLE:
65
+ 1. Nombre del Webinar 1.
66
+
67
+ 2. Nombre del Webinar 2.
68
+
69
+ 3. Nombre del Webinar 3.
70
+
71
+ 4. Nombre del Webinar 4.
72
+
73
+ 5. Nombre del Webinar 5.
74
+
75
+ IMPORTANT:
76
+ - Each webinar name must be unique and memorable
77
+ - Avoid clichés and generalities
78
+ - Maintain an intriguing but credible tone
79
+ - Adapt speaking language from the audience
80
+ - Focus on transformative benefits
81
+ - Follow the selected formula structure
82
+ - WRITE ALL WEBINAR NAMES IN SPANISH"""
83
+
84
+ # Iniciar el prompt con las instrucciones del sistema
85
+ webinar_names_instruction = f"{system_prompt}\n\n"
86
+
87
+ # Añadir instrucciones de ángulo solo si no es "NINGUNO" y se proporcionó un ángulo
88
+ if selected_angle and selected_angle != "NINGUNO":
89
+ webinar_names_instruction += f"""
90
+ MAIN ANGLE: {selected_angle}
91
+ SPECIFIC ANGLE INSTRUCTIONS:
92
+ {angles_webinar_names[selected_angle]["instruction"]}
93
+
94
+ IMPORTANT: The {selected_angle} angle should be applied as a "style layer" over the formula structure:
95
+ 1. Keep the base structure of the formula intact
96
+ 2. Apply the tone and style of the {selected_angle} angle
97
+ 3. Ensure that each element of the formula reflects the angle
98
+ 4. The angle affects "how" it is said, not "what" is said
99
+
100
+ SUCCESSFUL EXAMPLES OF THE {selected_angle} ANGLE:
101
+ """
102
+ for example in angles_webinar_names[selected_angle]["examples"]:
103
+ webinar_names_instruction += f"- {example}\n"
104
+
105
+ # Instrucciones específicas para la tarea
106
+ webinar_names_instruction += (
107
+ f"\nYour task is to create {number_of_names} irresistible webinar names for {target_audience} "
108
+ f"that instantly capture attention and generate registrations for a webinar about {product}. "
109
+ f"Focus on awakening genuine interest and communicating the value they will get by registering."
110
+ f"\n\n"
111
+ f"IMPORTANT: Carefully study these examples of the selected formula. "
112
+ f"Each example represents the style and structure to follow"
113
+ f":\n\n"
114
+ )
115
+
116
+ # Agregar ejemplos aleatorios de la fórmula (keeping examples in Spanish)
117
+ random_examples = random.sample(selected_formula['examples'], min(5, len(selected_formula['examples'])))
118
+ webinar_names_instruction += "EXAMPLES OF THE FORMULA TO FOLLOW:\n"
119
+ for i, example in enumerate(random_examples, 1):
120
+ webinar_names_instruction += f"{i}. {example}\n"
121
+
122
+ # Instrucciones específicas (translated to English)
123
+ webinar_names_instruction += "\nSPECIFIC INSTRUCTIONS:\n"
124
+ webinar_names_instruction += "1. Maintain the same structure and length as the previous examples\n"
125
+ webinar_names_instruction += "2. Use the same tone and writing style\n"
126
+ webinar_names_instruction += "3. Replicate the phrase construction patterns\n"
127
+ webinar_names_instruction += "4. Preserve the level of specificity and detail\n"
128
+ webinar_names_instruction += f"5. Adapt the content for {target_audience} while maintaining the essence of the examples\n\n"
129
+ webinar_names_instruction += f"FORMULA TO FOLLOW:\n{selected_formula['description']}\n\n"
130
+ webinar_names_instruction += f"""
131
+ GENERATE NOW:
132
+ Create {number_of_names} webinar names that faithfully follow the style and structure of the examples shown.
133
+ """
134
+
135
+ # Enviar el mensaje al modelo
136
+ # Use the common generate_content function
137
+ return generate_content(webinar_names_instruction, temperature)
138
+
139
+ def generate_webinar_script(audience, topic, temperature, selected_formula):
140
+ model = initialize_model(temperature)
141
+
142
+ # Incluir las instrucciones del sistema en el prompt principal
143
+ system_prompt = f"""You are a world-class webinar script writer, with expertise in crafting persuasive and engaging webinar scripts that convert audience into customers.
144
+
145
+ You are also a world-class direct response copywriter trained by Gary Halbert, Gary Bencivenga, and David Ogilvy.
146
+
147
+ You understand how real people interact with webinar content:
148
+ - They quickly lose interest if the content feels generic or corporate
149
+ - They only stay engaged when the content feels personal and sparks genuine curiosity
150
+ - They respond to messages that seem delivered by a real person, not a corporation
151
+ - They engage with content that hooks them from the first line and maintains interest throughout
152
+
153
+ FORMAT RULES:
154
+ - Create a complete webinar script with clear sections
155
+ - Use markdown formatting for headings and structure
156
+ - Include specific talking points for each section
157
+ - Write in a conversational, engaging tone
158
+ - Include persuasive elements and calls to action
159
+ - Follow the selected webinar framework structure exactly
160
+ - WRITE THE ENTIRE SCRIPT IN SPANISH
161
+ - DO NOT include any introductory text or explanations about the script
162
+ - Start directly with the webinar content
163
+
164
+ IMPORTANT:
165
+ - The script must be comprehensive and ready to use
166
+ - Include specific examples and stories relevant to the topic
167
+ - Maintain a persuasive but authentic tone
168
+ - Adapt language to match the target audience
169
+ - Focus on transformative benefits and clear value proposition
170
+ - Follow the selected formula structure precisely
171
+ - WRITE THE ENTIRE SCRIPT IN SPANISH
172
+ - DO NOT include phrases like "Aquí tienes un guion completo" or any other meta-commentary"""
173
+
174
+ # Iniciar el prompt con las instrucciones del sistema
175
+ webinar_script_instruction = f"{system_prompt}\n\n"
176
+
177
+ # Instrucciones específicas para la tarea
178
+ webinar_script_instruction += (
179
+ f"\nYour task is to create a complete webinar script IN SPANISH for {audience} "
180
+ f"about {topic} that is persuasive and converts the audience into customers. "
181
+ f"The script must follow exactly the structure of the framework '{selected_formula['description']}' "
182
+ f"and must include all the necessary elements for a successful webinar."
183
+ f"\n\n"
184
+ )
185
+
186
+ # Estructura del webinar
187
+ webinar_script_instruction += "WEBINAR STRUCTURE TO FOLLOW:\n"
188
+ for i, step in enumerate(selected_formula['structure'], 1):
189
+ webinar_script_instruction += f"{i}. {step}\n"
190
+
191
+ # Ejemplos de webinars exitosos
192
+ webinar_script_instruction += "\n\nEXAMPLES OF SUCCESSFUL WEBINARS WITH THIS STRUCTURE:\n"
193
+ for i, example in enumerate(selected_formula['examples'], 1):
194
+ webinar_script_instruction += f"{i}. {example}\n"
195
+
196
+ # Instrucciones específicas
197
+ webinar_script_instruction += f"""
198
+ SPECIFIC INSTRUCTIONS:
199
+ 1. Create a complete script that follows exactly the provided structure
200
+ 2. Include persuasive elements and clear calls to action
201
+ 3. Adapt the language and examples specifically for {audience}
202
+ 4. Focus on the transformative benefits of {topic}
203
+ 5. Include relevant stories and examples that reinforce your points
204
+ 6. Use a conversational but professional tone
205
+ 7. Make sure each section fulfills its specific purpose in the framework
206
+ 8. IMPORTANT: Write the entire script in Spanish
207
+
208
+ GENERATE NOW:
209
+ Create a complete webinar script following faithfully the structure of the selected framework.
210
+ """
211
+
212
+ # Enviar el mensaje al modelo
213
+ chat_session = model.start_chat(
214
+ history=[
215
+ {
216
+ "role": "user",
217
+ "parts": [webinar_script_instruction],
218
+ },
219
+ ]
220
+ )
221
+ response = chat_session.send_message("Generate the webinar script IN SPANISH following exactly the provided structure. All content must be in Spanish.")
222
+
223
+ return response.text
224
+
225
+ # Función para validar entradas (evita duplicación)
226
+ def validate_inputs(audience, product):
227
+ has_audience = audience.strip() != ""
228
+ has_product = product.strip() != ""
229
+ return has_audience and has_product
230
+
231
+ # Función para mostrar resultados (evita duplicación)
232
+ def display_results(col, title, content, spinner_text):
233
+ with col:
234
+ with st.spinner(spinner_text, show_time=True):
235
+ result = content
236
+ st.subheader(title)
237
+ st.markdown(result)
238
+ return result
239
+
240
+ # Configurar la interfaz de usuario con Streamlit
241
+ st.set_page_config(page_title="Perfect Webinar Framework", layout="wide")
242
+
243
+ # Leer el contenido del archivo manual.md
244
+ with open("manual.md", "r", encoding="utf-8") as file:
245
+ manual_content = file.read()
246
+
247
+ # Mostrar el contenido del manual en el sidebar
248
+ st.sidebar.markdown(manual_content)
249
+
250
+ # Crear pestañas para la interfaz
251
+ tab1, tab2 = st.tabs(["Guiones de Webinar", "Nombres de Webinar"])
252
+
253
+ # Primera pestaña - Generador de Guiones de Webinar
254
+ # First tab - update to use the function correctly
255
+ with tab1:
256
+ tab1.subheader("Script Webinar")
257
+
258
+ # Crear columnas para la interfaz
259
+ col1, col2 = tab1.columns([1, 2])
260
+
261
+ # Columna de entrada usando la función reutilizable
262
+ with col1:
263
+ webinar_script_audience, webinar_script_product, selected_webinar_formula_key = create_input_section(
264
+ col1,
265
+ "webinar_script_audience",
266
+ "webinar_script_product",
267
+ webinar_formulas,
268
+ "webinar_formula"
269
+ )
270
+
271
+ submit_webinar_script = st.button("Generar Guión de Webinar")
272
+
273
+ # Opciones avanzadas
274
+ with st.expander("Personaliza tu guión de webinar"):
275
+ webinar_script_temperature = st.slider("Creatividad", min_value=0.0, max_value=2.0, value=1.0, step=0.1, key="webinar_script_temp")
276
+
277
+ selected_webinar_formula = webinar_formulas[selected_webinar_formula_key]
278
+
279
+ # Mostrar la estructura del webinar seleccionado
280
+ st.markdown("### Estructura del webinar:")
281
+ for i, step in enumerate(selected_webinar_formula["structure"], 1):
282
+ st.markdown(f"{i}. {step['segment'] if isinstance(step, dict) and 'segment' in step else step}")
283
+
284
+ # Generar y mostrar el guión usando la función reutilizable
285
+ if submit_webinar_script:
286
+ generate_and_display(
287
+ col2,
288
+ generate_webinar_script,
289
+ webinar_script_audience,
290
+ webinar_script_product,
291
+ webinar_script_temperature,
292
+ selected_webinar_formula,
293
+ content_type="script"
294
+ )
295
+
296
+ # Segunda pestaña - Generador de Nombres de Webinar
297
+ # Second tab - update to use the same function
298
+ with tab2:
299
+ tab2.subheader("Nombres de Webinar")
300
+
301
+ # Crear columnas para la interfaz
302
+ col1, col2 = tab2.columns([1, 2])
303
+
304
+ # Columna de entrada usando la función reutilizable
305
+ with col1:
306
+ webinar_name_audience, webinar_name_product, selected_webinar_name_formula_key = create_input_section(
307
+ col1,
308
+ "webinar_name_audience",
309
+ "webinar_name_product",
310
+ webinar_name_formulas,
311
+ "webinar_name_formula"
312
+ )
313
+
314
+ number_of_names = st.selectbox("Número de nombres", options=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], index=4, key="number_of_names")
315
+
316
+ submit_webinar_names = st.button("Generar Nombres de Webinar")
317
+
318
+ # Opciones avanzadas
319
+ with st.expander("Personaliza tus nombres de webinar"):
320
+ webinar_name_temperature = st.slider("Creatividad", min_value=0.0, max_value=2.0, value=1.0, step=0.1, key="webinar_name_temp")
321
+
322
+ # Configurar opciones de ángulo
323
+ angle_keys = ["NINGUNO"] + sorted([key for key in angles_webinar_names.keys() if key != "NINGUNO"])
324
+ selected_angle = st.selectbox(
325
+ "Selecciona el ángulo para tus nombres",
326
+ options=angle_keys,
327
+ key="webinar_name_angle"
328
+ )
329
+
330
+ selected_webinar_name_formula = webinar_name_formulas[selected_webinar_name_formula_key]
331
+
332
+ # Generar y mostrar los nombres
333
+ if submit_webinar_names:
334
+ if validate_inputs(webinar_name_audience, webinar_name_product):
335
+ try:
336
+ with col2:
337
+ with st.spinner("Generando tus nombres de webinar...", show_time=True):
338
+ generated_webinar_names = generate_webinar_names(
339
+ number_of_names,
340
+ webinar_name_audience,
341
+ webinar_name_product,
342
+ webinar_name_temperature,
343
+ selected_webinar_name_formula,
344
+ selected_angle if selected_angle != "NINGUNO" else None
345
+ )
346
+ st.subheader("Tus nombres de webinar:")
347
+ st.markdown(generated_webinar_names)
348
+ except ValueError as e:
349
+ col2.error(f"Error: {str(e)}")
350
+ else:
351
+ col2.error("Por favor, proporciona el público objetivo y el tema del webinar.")
352
+
353
+ # Add this function before the UI code section
354
+
355
+ # Create a reusable function for generation and display
356
+ def generate_and_display(col, generator_func, audience, product, temperature, selected_formula, **kwargs):
357
+ if validate_inputs(audience, product):
358
+ try:
359
+ with col:
360
+ with st.spinner("Generando contenido...", show_time=True):
361
+ generated_content = generator_func(
362
+ audience=audience,
363
+ topic=product,
364
+ temperature=temperature,
365
+ selected_formula=selected_formula,
366
+ **kwargs
367
+ )
368
+
369
+ # For webinar scripts, add download buttons
370
+ if "script" in kwargs.get("content_type", ""):
371
+ timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
372
+ st.download_button(
373
+ label="DESCARGAR GUION DE MI WEBINAR",
374
+ data=generated_content,
375
+ file_name=f"guion_webinar_{timestamp}.md",
376
+ mime="text/markdown",
377
+ key="download_top"
378
+ )
379
+
380
+ st.subheader("Tu " + ("guión de webinar:" if "script" in kwargs.get("content_type", "") else "nombres de webinar:"))
381
+ st.markdown(generated_content)
382
+
383
+ # Add bottom download button for scripts
384
+ if "script" in kwargs.get("content_type", ""):
385
+ st.download_button(
386
+ label="DESCARGAR GUION DE MI WEBINAR",
387
+ data=generated_content,
388
+ file_name=f"guion_webinar_{timestamp}.md",
389
+ mime="text/markdown",
390
+ key="download_bottom"
391
+ )
392
+ except ValueError as e:
393
+ col.error(f"Error: {str(e)}")
394
+ else:
395
+ col.error("Por favor, proporciona el público objetivo y el tema del webinar.")
396
+
397
+ # Create a reusable function for the UI input section
398
+ def create_input_section(col, audience_key, product_key, formula_options, formula_key):
399
+ audience = col.text_input("¿Quién es tu público objetivo?", placeholder="Ejemplo: Emprendedores digitales", key=audience_key)
400
+ product = col.text_input("¿Sobre qué tema es tu webinar?", placeholder="Ejemplo: Marketing en redes sociales", key=product_key)
401
+
402
+ selected_formula_key = col.selectbox(
403
+ "Selecciona un framework de webinar" if "script" in audience_key else "Selecciona una fórmula para tus nombres de webinar",
404
+ options=list(formula_options.keys()),
405
+ key=formula_key
406
+ )
407
+
408
+ return audience, product, selected_formula_key
409
+
formulas/webinar_formulas.py CHANGED
@@ -1,264 +1,264 @@
1
- webinar_formulas = {
2
- "Perfect Webinar (Russell Brunson)": {
3
- "description": "Russell Brunson's time-tested framework for converting webinar attendees into loyal customers. It leverages a specific sequence of stories, offers, and engagement techniques to drive action.",
4
- "key_components": [
5
- "The Big Domino: Identifying and focusing on the single, most impactful belief that, once addressed, makes all other objections crumble.",
6
- "The Four Stories: A sequence of personal and relatable stories designed to build trust, demonstrate value, and overcome internal and external objections. These are: Origin Story, Vehicle Story, Internal Belief Story, External Belief Story.",
7
- "The Stack: Presenting a highly valuable and irresistible offer by stacking together numerous bonuses, features, and benefits, ultimately increasing the perceived worth far beyond the price.",
8
- "The Close: A structured closing sequence that includes addressing potential objections, creating scarcity/urgency, and providing a clear call to action."
9
- ],
10
- "structure": [
11
- {
12
- "segment": "Introduction and Welcome (5 minutes)",
13
- "goals": [
14
- "Establish credibility and rapport with the audience.",
15
- "Set expectations for the webinar's content and value.",
16
- "Engage the audience with a compelling hook or question related to the core problem."
17
- ],
18
- "elements": [
19
- "Personal introduction (briefly highlighting expertise).",
20
- "Webinar agenda overview.",
21
- "Icebreaker question or poll to encourage participation.",
22
- "Introduce the pain points your audience is experiencing."
23
- ]
24
- },
25
- {
26
- "segment": "Problem Identification and Big Domino Revelation (5 minutes)",
27
- "goals": [
28
- "Clearly define the problem the audience is facing.",
29
- "Introduce the 'Big Domino' belief that, if addressed, solves or mitigates the problem significantly.",
30
- "Create a sense of urgency and desire for a solution."
31
- ],
32
- "elements": [
33
- "Statistics or data illustrating the problem's impact.",
34
- "Personal anecdote or relatable example of the problem.",
35
- "Introduce the 'Big Domino' and explain its significance.",
36
- "Reveal your Unique Mechanism as the one thing that will help them achieve their dreams."
37
- ]
38
- },
39
- {
40
- "segment": "Storytelling Based on the Four Stories (30 minutes)",
41
- "goals": [
42
- "Build trust and connection with the audience through relatable narratives.",
43
- "Demonstrate the effectiveness of the framework or solution through personal experience and client success stories.",
44
- "Address internal and external objections by showing how they were overcome."
45
- ],
46
- "elements": [
47
- "Origin Story: Share your journey and the challenges you faced before discovering the framework.",
48
- "Vehicle Story: Explain how the 'vehicle' (your coaching program) helped you achieve success.",
49
- "Internal Belief Story: Describe the limiting belief you had to overcome to achieve your goals.",
50
- "External Belief Story: Share a story of how someone else (ideal client) overcame their pain points using your coaching program."
51
- ]
52
- },
53
- {
54
- "segment": "Offer Presentation and Closing (10 minutes)",
55
- "goals": [
56
- "Present a clear and compelling offer that directly addresses the audience's needs.",
57
- "Increase the perceived value of the offer by 'stacking' bonuses and features.",
58
- "Create a sense of urgency and scarcity to encourage immediate action."
59
- ],
60
- "elements": [
61
- "Clearly outline the benefits and features of your 8-week coaching program.",
62
- "Visually present the 'Stack' of bonuses and added value.",
63
- "State the price and explain its justification in relation to the value provided.",
64
- "Create urgency by limiting the offer's availability or adding time-sensitive bonuses.",
65
- "Provide a clear call to action that emphasizes this is the only way to access your unique mechanism."
66
- ]
67
- },
68
- {
69
- "segment": "Questions and Answers (10 minutes)",
70
- "goals": [
71
- "Address any remaining questions or concerns from the audience.",
72
- "Reinforce the value of the offer and the benefits of taking action.",
73
- "Provide a final opportunity for attendees to convert into customers."
74
- ],
75
- "elements": [
76
- "Select and answer relevant questions from the audience.",
77
- "Address common objections or hesitations about joining a coaching program.",
78
- "Restate the core value proposition of the offer and how it solves their pain points.",
79
- "Remind them of your unique mechanism and reinforce the call to action.",
80
- "Provide contact information for follow-up inquiries."
81
- ]
82
- }
83
- ],
84
- "tips": [
85
- "Practice your presentation to ensure a smooth and confident delivery.",
86
- "Use visuals to illustrate key concepts and keep the audience engaged.",
87
- "Maintain a high energy level and enthusiasm throughout the webinar.",
88
- "Engage with the audience through polls, questions, and chat.",
89
- "Follow up with attendees after the webinar to provide additional information and support.",
90
- "Clearly articulate how your coaching program transforms participants in 8 weeks.",
91
- "Emphasize your unique mechanism throughout the presentation."
92
- ],
93
- "examples": [
94
- "How this simple webinar framework allowed me to generate $100,000 in sales in 90 minutes",
95
- "The Secret to Webinars that Convert: The Formula That Has Generated Millions for ClickFunnels",
96
- "Perfect Webinar: The 60-Minute Structure That Transforms Viewers into Customers",
97
- "Double your conversion rate with this story telling framework.",
98
- "The 8-Week Coaching Program That Transformed 1,000+ Entrepreneurs: Join Our Exclusive Masterclass"
99
- ]
100
- },
101
-
102
- "Webinar PASTOR": {
103
- "description": "A persuasive framework that follows the PASTOR method (Problem, Amplify, Story, Testimonial, Offer, Response) to address pain points and present your solution in a compelling way.",
104
- "key_components": [
105
- "Problem: Identifying the specific pain points and challenges your audience is facing.",
106
- "Amplify: Highlighting the consequences of not solving the problem to create urgency.",
107
- "Story: Using narrative to illustrate the problem and solution in a relatable way.",
108
- "Testimonial: Leveraging social proof from satisfied customers to build credibility.",
109
- "Offer: Presenting your product or service as the ideal solution to their problems.",
110
- "Response: Creating a clear call to action that encourages immediate purchase."
111
- ],
112
- "structure": [
113
- {
114
- "segment": "Problem Identification (10 minutes)",
115
- "goals": [
116
- "Clearly define the specific problem your audience is facing.",
117
- "Create resonance by showing you understand their challenges.",
118
- "Establish the importance of solving this problem."
119
- ],
120
- "elements": [
121
- "Research-backed statistics about the problem's prevalence.",
122
- "Common misconceptions about the problem.",
123
- "Direct questions to the audience about their experience with the problem.",
124
- "Brief overview of failed approaches to solving the problem."
125
- ]
126
- },
127
- {
128
- "segment": "Amplify the Consequences (10 minutes)",
129
- "goals": [
130
- "Highlight the negative impact of leaving the problem unsolved.",
131
- "Create emotional connection to the pain points.",
132
- "Build urgency for finding a solution."
133
- ],
134
- "elements": [
135
- "Short-term consequences of ignoring the problem.",
136
- "Long-term impact on personal/business growth.",
137
- "Financial implications of the problem.",
138
- "Emotional and psychological costs of the ongoing issue."
139
- ]
140
- },
141
- {
142
- "segment": "Story and Solution (15 minutes)",
143
- "goals": [
144
- "Share a compelling narrative that illustrates the problem-solution journey.",
145
- "Make the solution relatable through storytelling.",
146
- "Demonstrate transformation through narrative."
147
- ],
148
- "elements": [
149
- "Personal story or client journey that illustrates the problem.",
150
- "The turning point or discovery moment.",
151
- "Implementation of the solution within the story.",
152
- "Transformation and results achieved through the solution."
153
- ]
154
- },
155
- {
156
- "segment": "Testimonials and Social Proof (10 minutes)",
157
- "goals": [
158
- "Build credibility through third-party validation.",
159
- "Address potential objections through others' experiences.",
160
- "Demonstrate real-world results from diverse perspectives."
161
- ],
162
- "elements": [
163
- "Video testimonials from satisfied customers.",
164
- "Before-and-after case studies with specific results.",
165
- "Testimonials that address different objections or concerns.",
166
- "Industry recognition or endorsements if applicable."
167
- ]
168
- },
169
- {
170
- "segment": "Offer Presentation (10 minutes)",
171
- "goals": [
172
- "Present your product/service as the ideal solution.",
173
- "Clearly articulate the unique value proposition.",
174
- "Stack benefits and features to increase perceived value."
175
- ],
176
- "elements": [
177
- "Clear explanation of what the product/service includes.",
178
- "Highlight the unique mechanism or approach that makes it effective.",
179
- "Value stacking - present all components and their individual value.",
180
- "Price justification compared to the problem's cost and solution's value."
181
- ]
182
- },
183
- {
184
- "segment": "Response and Call to Action (5 minutes)",
185
- "goals": [
186
- "Create a clear path to purchase.",
187
- "Address final objections or hesitations.",
188
- "Establish urgency for immediate action."
189
- ],
190
- "elements": [
191
- "Recap of the main benefits and transformation offered.",
192
- "Limited-time bonuses or special pricing to create urgency.",
193
- "Clear, simple instructions for how to purchase.",
194
- "Final reminder of the cost of inaction versus the value of the solution."
195
- ]
196
- }
197
- ],
198
- "tips": [
199
- "Personalize the problem identification to your specific audience segment.",
200
- "Use concrete examples and specific numbers when amplifying consequences.",
201
- "Make your story authentic and relatable - avoid exaggeration.",
202
- "Select testimonials that represent your target audience demographics.",
203
- "Create a visually appealing presentation of your offer stack.",
204
- "Practice transitioning smoothly between each PASTOR element.",
205
- "End with a strong, clear call to action that's repeated multiple times."
206
- ],
207
- "examples": [
208
- "Del dolor crónico a la libertad total - El método que ha ayudado a 1,000+ personas sin cirugía",
209
- "Amplifica tu patrimonio con este sistema que generó $250,000 en 12 meses partiendo de cero",
210
- "La historia detrás de mi transformación y cómo perdí 30 kilos después de probar 15 métodos fallidos",
211
- "Testimonios que venden y el método que triplicó mis conversiones en solo 60 días",
212
- "Descubre el método que ayudó a 300+ fotógrafos a duplicar sus ingresos trabajando la mitad de horas"
213
- ]
214
- },
215
-
216
- "Webinar de Caso de Estudio": {
217
- "description": "Based on presenting real results through detailed case studies, showing the before, during, and after of the process.",
218
- "structure": [
219
- "Introduction of the case study (5 minutes)",
220
- "Initial situation and challenges (10 minutes)",
221
- "Step-by-step implementation process (20 minutes)",
222
- "Results and transformation (15 minutes)",
223
- "How to apply the same process (10 minutes)"
224
- ],
225
- "examples": [
226
- "Cómo María pasó de $0 a $10,000 mensuales con este método de Instagram en 60 días",
227
- "El caso de estudio de Empresa X: Cómo triplicaron sus conversiones en 90 días",
228
- "De principiante a experto: El viaje de Juan para dominar el trading con solo 1 hora al día"
229
- ]
230
- },
231
-
232
- "Webinar de Educación": {
233
- "description": "Centered on providing substantial educational value, establishing yourself as an authority and building trust before the offer.",
234
- "structure": [
235
- "Introduction to the topic and establishing credibility (5 minutes)",
236
- "Historical or theoretical context of the topic (10 minutes)",
237
- "Main educational content (30 minutes)",
238
- "Practical applications (10 minutes)",
239
- "Additional resources and offer (5 minutes)"
240
- ],
241
- "examples": [
242
- "Los 7 principios fundamentales del copywriting que todo emprendedor debe conocer",
243
- "Masterclass: Entendiendo el algoritmo de Instagram en 2023",
244
- "La ciencia detrás de la pérdida de peso: lo que tu médico no te dice"
245
- ]
246
- },
247
-
248
- # New formula template - ready to be filled in
249
- "Nueva Fórmula de Webinar": {
250
- "description": "Description of the new webinar formula goes here.",
251
- "structure": [
252
- "First segment (X minutes)",
253
- "Second segment (X minutes)",
254
- "Third segment (X minutes)",
255
- "Fourth segment (X minutes)",
256
- "Fifth segment (X minutes)"
257
- ],
258
- "examples": [
259
- "Example title 1",
260
- "Example title 2",
261
- "Example title 3"
262
- ]
263
- }
264
  }
 
1
+ webinar_formulas = {
2
+ "Perfect Webinar (Russell Brunson)": {
3
+ "description": "Russell Brunson's time-tested framework for converting webinar attendees into loyal customers. It leverages a specific sequence of stories, offers, and engagement techniques to drive action.",
4
+ "key_components": [
5
+ "The Big Domino: Identifying and focusing on the single, most impactful belief that, once addressed, makes all other objections crumble.",
6
+ "The Four Stories: A sequence of personal and relatable stories designed to build trust, demonstrate value, and overcome internal and external objections. These are: Origin Story, Vehicle Story, Internal Belief Story, External Belief Story.",
7
+ "The Stack: Presenting a highly valuable and irresistible offer by stacking together numerous bonuses, features, and benefits, ultimately increasing the perceived worth far beyond the price.",
8
+ "The Close: A structured closing sequence that includes addressing potential objections, creating scarcity/urgency, and providing a clear call to action."
9
+ ],
10
+ "structure": [
11
+ {
12
+ "segment": "Introduction and Welcome (5 minutes)",
13
+ "goals": [
14
+ "Establish credibility and rapport with the audience.",
15
+ "Set expectations for the webinar's content and value.",
16
+ "Engage the audience with a compelling hook or question related to the core problem."
17
+ ],
18
+ "elements": [
19
+ "Personal introduction (briefly highlighting expertise).",
20
+ "Webinar agenda overview.",
21
+ "Icebreaker question or poll to encourage participation.",
22
+ "Introduce the pain points your audience is experiencing."
23
+ ]
24
+ },
25
+ {
26
+ "segment": "Problem Identification and Big Domino Revelation (5 minutes)",
27
+ "goals": [
28
+ "Clearly define the problem the audience is facing.",
29
+ "Introduce the 'Big Domino' belief that, if addressed, solves or mitigates the problem significantly.",
30
+ "Create a sense of urgency and desire for a solution."
31
+ ],
32
+ "elements": [
33
+ "Statistics or data illustrating the problem's impact.",
34
+ "Personal anecdote or relatable example of the problem.",
35
+ "Introduce the 'Big Domino' and explain its significance.",
36
+ "Reveal your Unique Mechanism as the one thing that will help them achieve their dreams."
37
+ ]
38
+ },
39
+ {
40
+ "segment": "Storytelling Based on the Four Stories (30 minutes)",
41
+ "goals": [
42
+ "Build trust and connection with the audience through relatable narratives.",
43
+ "Demonstrate the effectiveness of the framework or solution through personal experience and client success stories.",
44
+ "Address internal and external objections by showing how they were overcome."
45
+ ],
46
+ "elements": [
47
+ "Origin Story: Share your journey and the challenges you faced before discovering the framework.",
48
+ "Vehicle Story: Explain how the 'vehicle' (your coaching program) helped you achieve success.",
49
+ "Internal Belief Story: Describe the limiting belief you had to overcome to achieve your goals.",
50
+ "External Belief Story: Share a story of how someone else (ideal client) overcame their pain points using your coaching program."
51
+ ]
52
+ },
53
+ {
54
+ "segment": "Offer Presentation and Closing (10 minutes)",
55
+ "goals": [
56
+ "Present a clear and compelling offer that directly addresses the audience's needs.",
57
+ "Increase the perceived value of the offer by 'stacking' bonuses and features.",
58
+ "Create a sense of urgency and scarcity to encourage immediate action."
59
+ ],
60
+ "elements": [
61
+ "Clearly outline the benefits and features of your 8-week coaching program.",
62
+ "Visually present the 'Stack' of bonuses and added value.",
63
+ "State the price and explain its justification in relation to the value provided.",
64
+ "Create urgency by limiting the offer's availability or adding time-sensitive bonuses.",
65
+ "Provide a clear call to action that emphasizes this is the only way to access your unique mechanism."
66
+ ]
67
+ },
68
+ {
69
+ "segment": "Questions and Answers (10 minutes)",
70
+ "goals": [
71
+ "Address any remaining questions or concerns from the audience.",
72
+ "Reinforce the value of the offer and the benefits of taking action.",
73
+ "Provide a final opportunity for attendees to convert into customers."
74
+ ],
75
+ "elements": [
76
+ "Select and answer relevant questions from the audience.",
77
+ "Address common objections or hesitations about joining a coaching program.",
78
+ "Restate the core value proposition of the offer and how it solves their pain points.",
79
+ "Remind them of your unique mechanism and reinforce the call to action.",
80
+ "Provide contact information for follow-up inquiries."
81
+ ]
82
+ }
83
+ ],
84
+ "tips": [
85
+ "Practice your presentation to ensure a smooth and confident delivery.",
86
+ "Use visuals to illustrate key concepts and keep the audience engaged.",
87
+ "Maintain a high energy level and enthusiasm throughout the webinar.",
88
+ "Engage with the audience through polls, questions, and chat.",
89
+ "Follow up with attendees after the webinar to provide additional information and support.",
90
+ "Clearly articulate how your coaching program transforms participants in 8 weeks.",
91
+ "Emphasize your unique mechanism throughout the presentation."
92
+ ],
93
+ "examples": [
94
+ "How this simple webinar framework allowed me to generate $100,000 in sales in 90 minutes",
95
+ "The Secret to Webinars that Convert: The Formula That Has Generated Millions for ClickFunnels",
96
+ "Perfect Webinar: The 60-Minute Structure That Transforms Viewers into Customers",
97
+ "Double your conversion rate with this story telling framework.",
98
+ "The 8-Week Coaching Program That Transformed 1,000+ Entrepreneurs: Join Our Exclusive Masterclass"
99
+ ]
100
+ },
101
+
102
+ "Webinar PASTOR": {
103
+ "description": "A persuasive framework that follows the PASTOR method (Problem, Amplify, Story, Testimonial, Offer, Response) to address pain points and present your solution in a compelling way.",
104
+ "key_components": [
105
+ "Problem: Identifying the specific pain points and challenges your audience is facing.",
106
+ "Amplify: Highlighting the consequences of not solving the problem to create urgency.",
107
+ "Story: Using narrative to illustrate the problem and solution in a relatable way.",
108
+ "Testimonial: Leveraging social proof from satisfied customers to build credibility.",
109
+ "Offer: Presenting your product or service as the ideal solution to their problems.",
110
+ "Response: Creating a clear call to action that encourages immediate purchase."
111
+ ],
112
+ "structure": [
113
+ {
114
+ "segment": "Problem Identification (10 minutes)",
115
+ "goals": [
116
+ "Clearly define the specific problem your audience is facing.",
117
+ "Create resonance by showing you understand their challenges.",
118
+ "Establish the importance of solving this problem."
119
+ ],
120
+ "elements": [
121
+ "Research-backed statistics about the problem's prevalence.",
122
+ "Common misconceptions about the problem.",
123
+ "Direct questions to the audience about their experience with the problem.",
124
+ "Brief overview of failed approaches to solving the problem."
125
+ ]
126
+ },
127
+ {
128
+ "segment": "Amplify the Consequences (10 minutes)",
129
+ "goals": [
130
+ "Highlight the negative impact of leaving the problem unsolved.",
131
+ "Create emotional connection to the pain points.",
132
+ "Build urgency for finding a solution."
133
+ ],
134
+ "elements": [
135
+ "Short-term consequences of ignoring the problem.",
136
+ "Long-term impact on personal/business growth.",
137
+ "Financial implications of the problem.",
138
+ "Emotional and psychological costs of the ongoing issue."
139
+ ]
140
+ },
141
+ {
142
+ "segment": "Story and Solution (15 minutes)",
143
+ "goals": [
144
+ "Share a compelling narrative that illustrates the problem-solution journey.",
145
+ "Make the solution relatable through storytelling.",
146
+ "Demonstrate transformation through narrative."
147
+ ],
148
+ "elements": [
149
+ "Personal story or client journey that illustrates the problem.",
150
+ "The turning point or discovery moment.",
151
+ "Implementation of the solution within the story.",
152
+ "Transformation and results achieved through the solution."
153
+ ]
154
+ },
155
+ {
156
+ "segment": "Testimonials and Social Proof (10 minutes)",
157
+ "goals": [
158
+ "Build credibility through third-party validation.",
159
+ "Address potential objections through others' experiences.",
160
+ "Demonstrate real-world results from diverse perspectives."
161
+ ],
162
+ "elements": [
163
+ "Video testimonials from satisfied customers.",
164
+ "Before-and-after case studies with specific results.",
165
+ "Testimonials that address different objections or concerns.",
166
+ "Industry recognition or endorsements if applicable."
167
+ ]
168
+ },
169
+ {
170
+ "segment": "Offer Presentation (10 minutes)",
171
+ "goals": [
172
+ "Present your product/service as the ideal solution.",
173
+ "Clearly articulate the unique value proposition.",
174
+ "Stack benefits and features to increase perceived value."
175
+ ],
176
+ "elements": [
177
+ "Clear explanation of what the product/service includes.",
178
+ "Highlight the unique mechanism or approach that makes it effective.",
179
+ "Value stacking - present all components and their individual value.",
180
+ "Price justification compared to the problem's cost and solution's value."
181
+ ]
182
+ },
183
+ {
184
+ "segment": "Response and Call to Action (5 minutes)",
185
+ "goals": [
186
+ "Create a clear path to purchase.",
187
+ "Address final objections or hesitations.",
188
+ "Establish urgency for immediate action."
189
+ ],
190
+ "elements": [
191
+ "Recap of the main benefits and transformation offered.",
192
+ "Limited-time bonuses or special pricing to create urgency.",
193
+ "Clear, simple instructions for how to purchase.",
194
+ "Final reminder of the cost of inaction versus the value of the solution."
195
+ ]
196
+ }
197
+ ],
198
+ "tips": [
199
+ "Personalize the problem identification to your specific audience segment.",
200
+ "Use concrete examples and specific numbers when amplifying consequences.",
201
+ "Make your story authentic and relatable - avoid exaggeration.",
202
+ "Select testimonials that represent your target audience demographics.",
203
+ "Create a visually appealing presentation of your offer stack.",
204
+ "Practice transitioning smoothly between each PASTOR element.",
205
+ "End with a strong, clear call to action that's repeated multiple times."
206
+ ],
207
+ "examples": [
208
+ "Del dolor crónico a la libertad total - El método que ha ayudado a 1,000+ personas sin cirugía",
209
+ "Amplifica tu patrimonio con este sistema que generó $250,000 en 12 meses partiendo de cero",
210
+ "La historia detrás de mi transformación y cómo perdí 30 kilos después de probar 15 métodos fallidos",
211
+ "Testimonios que venden y el método que triplicó mis conversiones en solo 60 días",
212
+ "Descubre el método que ayudó a 300+ fotógrafos a duplicar sus ingresos trabajando la mitad de horas"
213
+ ]
214
+ },
215
+
216
+ "Webinar de Caso de Estudio": {
217
+ "description": "Based on presenting real results through detailed case studies, showing the before, during, and after of the process.",
218
+ "structure": [
219
+ "Introduction of the case study (5 minutes)",
220
+ "Initial situation and challenges (10 minutes)",
221
+ "Step-by-step implementation process (20 minutes)",
222
+ "Results and transformation (15 minutes)",
223
+ "How to apply the same process (10 minutes)"
224
+ ],
225
+ "examples": [
226
+ "Cómo María pasó de $0 a $10,000 mensuales con este método de Instagram en 60 días",
227
+ "El caso de estudio de Empresa X: Cómo triplicaron sus conversiones en 90 días",
228
+ "De principiante a experto: El viaje de Juan para dominar el trading con solo 1 hora al día"
229
+ ]
230
+ },
231
+
232
+ "Webinar de Educación": {
233
+ "description": "Centered on providing substantial educational value, establishing yourself as an authority and building trust before the offer.",
234
+ "structure": [
235
+ "Introduction to the topic and establishing credibility (5 minutes)",
236
+ "Historical or theoretical context of the topic (10 minutes)",
237
+ "Main educational content (30 minutes)",
238
+ "Practical applications (10 minutes)",
239
+ "Additional resources and offer (5 minutes)"
240
+ ],
241
+ "examples": [
242
+ "Los 7 principios fundamentales del copywriting que todo emprendedor debe conocer",
243
+ "Masterclass: Entendiendo el algoritmo de Instagram en 2023",
244
+ "La ciencia detrás de la pérdida de peso: lo que tu médico no te dice"
245
+ ]
246
+ },
247
+
248
+ # New formula template - ready to be filled in
249
+ "Nueva Fórmula de Webinar": {
250
+ "description": "Description of the new webinar formula goes here.",
251
+ "structure": [
252
+ "First segment (X minutes)",
253
+ "Second segment (X minutes)",
254
+ "Third segment (X minutes)",
255
+ "Fourth segment (X minutes)",
256
+ "Fifth segment (X minutes)"
257
+ ],
258
+ "examples": [
259
+ "Example title 1",
260
+ "Example title 2",
261
+ "Example title 3"
262
+ ]
263
+ }
264
  }