JeCabrera commited on
Commit
9acf776
·
verified ·
1 Parent(s): adcddbc

Upload headline_generator.py

Browse files
Files changed (1) hide show
  1. headline_generator.py +334 -0
headline_generator.py ADDED
@@ -0,0 +1,334 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import random
2
+
3
+ def generate_random_headlines(target_audience, product, angle=None, story_prompt=None, language="español"):
4
+ """
5
+ Genera titulares aleatorios para anuncios de Facebook basados en plantillas predefinidas.
6
+
7
+ Args:
8
+ target_audience: Descripción del público objetivo
9
+ product: El producto o servicio que se anuncia
10
+ angle: El ángulo estratégico seleccionado (opcional)
11
+ story_prompt: Tema específico para la historia del anuncio (opcional)
12
+ language: Idioma objetivo para el anuncio (default: "español")
13
+
14
+ Returns:
15
+ list: Lista de titulares aleatorios con diferentes estructuras
16
+ """
17
+
18
+ # Categorías de plantillas para asegurar variedad
19
+ headline_categories = {
20
+ "pregunta": [
21
+ "¿{problema} {tiempo}? {solución}",
22
+ "¿Cansado de {problema}? {descubrimiento}",
23
+ "¿Sabías que {dato_sorprendente} puede {beneficio}?",
24
+ "¿Por qué {grupo_personas} están {acción_positiva}?",
25
+ ],
26
+ "declaración": [
27
+ "El método {adjetivo} que está revolucionando {industria}",
28
+ "El secreto {adjetivo} detrás de {resultado_deseado}",
29
+ "{beneficio_principal} en solo {tiempo}: El método que está cambiando {industria}",
30
+ "La fórmula {adjetivo} para {beneficio} que funciona incluso si {situación_negativa}",
31
+ ],
32
+ "historia": [
33
+ "De {situación_negativa} a {situación_positiva}: La historia que está cambiando {industria}",
34
+ "Cómo {persona_común} logró {resultado_extraordinario} sin {método_común}",
35
+ "La estrategia de {tiempo} que transformó {área} para miles de {grupo_personas}",
36
+ ],
37
+ "advertencia": [
38
+ "Alerta: {problema_común} está {consecuencia_negativa}",
39
+ "Advertencia: {hábito_común} podría estar {consecuencia}",
40
+ "La verdad incómoda sobre {tema} que nadie menciona",
41
+ "{número} señales de que {problema} está afectando tu {área_vida}",
42
+ ],
43
+ "curiosidad": [
44
+ "Lo que {expertos} no quieren que sepas sobre {tema}",
45
+ "Descubierto: El {elemento} que {beneficio_principal} en solo {tiempo_corto}",
46
+ "El sorprendente vínculo entre {tema} y {resultado_deseado}",
47
+ "La técnica olvidada que está transformando {industria}",
48
+ ],
49
+ }
50
+
51
+ # Variables para personalizar los titulares según el contexto
52
+ variables = {
53
+ # Problemas comunes según el público objetivo
54
+ "problema": [
55
+ "no ver resultados",
56
+ "perder tiempo y dinero",
57
+ "sentir frustración",
58
+ "quedarse estancado",
59
+ "ver a otros avanzar mientras uno se queda atrás"
60
+ ],
61
+
62
+ # Tiempos
63
+ "tiempo": [
64
+ "después de tanto esfuerzo",
65
+ "a pesar de intentarlo todo",
66
+ "cuando más se necesita",
67
+ "en momentos críticos"
68
+ ],
69
+
70
+ # Soluciones o descubrimientos
71
+ "solución": [
72
+ "Esto está cambiando las reglas del juego",
73
+ "Este enfoque está transformando resultados",
74
+ "Esta estrategia podría ser la respuesta"
75
+ ],
76
+
77
+ "descubrimiento": [
78
+ "Este descubrimiento está sorprendiendo a expertos",
79
+ "Esta innovación está cambiando paradigmas",
80
+ "Este método está revolucionando la industria"
81
+ ],
82
+
83
+ # Datos sorprendentes
84
+ "dato_sorprendente": [
85
+ "un simple cambio de enfoque",
86
+ "una técnica olvidada",
87
+ "un método poco conocido",
88
+ "un principio ignorado por la mayoría"
89
+ ],
90
+
91
+ # Beneficios
92
+ "beneficio": [
93
+ "transformar completamente resultados",
94
+ "multiplicar efectividad",
95
+ "eliminar obstáculos persistentes",
96
+ "crear avances significativos"
97
+ ],
98
+
99
+ # Grupos de personas
100
+ "grupo_personas": [
101
+ "profesionales comunes",
102
+ "personas sin experiencia previa",
103
+ "quienes antes fracasaban",
104
+ "principiantes"
105
+ ],
106
+
107
+ # Acciones positivas
108
+ "acción_positiva": [
109
+ "logrando resultados extraordinarios",
110
+ "transformando su situación",
111
+ "superando obstáculos históricos",
112
+ "alcanzando metas que parecían imposibles"
113
+ ],
114
+
115
+ # Problemas comunes
116
+ "problema_común": [
117
+ "lo que todos hacen",
118
+ "el enfoque tradicional",
119
+ "el método convencional",
120
+ "la estrategia que todos siguen"
121
+ ],
122
+
123
+ # Consecuencias negativas
124
+ "consecuencia_negativa": [
125
+ "saboteando el potencial",
126
+ "limitando los resultados",
127
+ "bloqueando el progreso",
128
+ "creando obstáculos invisibles"
129
+ ],
130
+
131
+ # Hábitos comunes
132
+ "hábito_común": [
133
+ "este hábito diario",
134
+ "esta práctica común",
135
+ "esta rutina aparentemente inofensiva",
136
+ "esta estrategia popular"
137
+ ],
138
+
139
+ # Consecuencias
140
+ "consecuencia": [
141
+ "estar saboteando los esfuerzos",
142
+ "estar creando el efecto contrario",
143
+ "estar limitando el potencial",
144
+ "estar generando resultados opuestos"
145
+ ],
146
+
147
+ # Temas
148
+ "tema": [
149
+ f"{product}",
150
+ "resultados reales",
151
+ "éxito sostenible",
152
+ "transformación verdadera"
153
+ ],
154
+
155
+ # Números
156
+ "número": [
157
+ "3", "5", "7", "9"
158
+ ],
159
+
160
+ # Áreas de vida
161
+ "área_vida": [
162
+ "potencial",
163
+ "resultados",
164
+ "progreso",
165
+ "crecimiento"
166
+ ],
167
+
168
+ # Situaciones negativas
169
+ "situación_negativa": [
170
+ "frustración constante",
171
+ "resultados mediocres",
172
+ "estancamiento",
173
+ "intentos fallidos"
174
+ ],
175
+
176
+ # Situaciones positivas
177
+ "situación_positiva": [
178
+ "resultados extraordinarios",
179
+ "éxito consistente",
180
+ "avance continuo",
181
+ "transformación completa"
182
+ ],
183
+
184
+ # Industrias
185
+ "industria": [
186
+ "la forma de ver resultados",
187
+ "la manera de lograr objetivos",
188
+ "el enfoque hacia el éxito",
189
+ "la perspectiva sobre el progreso"
190
+ ],
191
+
192
+ # Persona común
193
+ "persona_común": [
194
+ "alguien sin ventajas especiales",
195
+ "una persona común",
196
+ "quien menos lo esperaba",
197
+ "alguien que antes fracasaba"
198
+ ],
199
+
200
+ # Resultados extraordinarios
201
+ "resultado_extraordinario": [
202
+ "transformar completamente su situación",
203
+ "multiplicar sus resultados",
204
+ "lograr lo que parecía imposible",
205
+ "crear un avance significativo"
206
+ ],
207
+
208
+ # Métodos comunes
209
+ "método_común": [
210
+ "usar métodos complicados",
211
+ "invertir fortunas",
212
+ "sacrificar tiempo valioso",
213
+ "seguir el camino tradicional"
214
+ ],
215
+
216
+ # Adjetivos
217
+ "adjetivo": [
218
+ "poco conocido",
219
+ "revolucionario",
220
+ "contraintuitivo",
221
+ "sorprendente"
222
+ ],
223
+
224
+ # Resultados deseados
225
+ "resultado_deseado": [
226
+ "lograr resultados reales",
227
+ "crear transformación verdadera",
228
+ "generar avances significativos",
229
+ "superar obstáculos persistentes"
230
+ ],
231
+
232
+ # Expertos/competidores
233
+ "expertos": [
234
+ "muchos expertos",
235
+ "la mayoría de asesores",
236
+ "quienes venden soluciones tradicionales",
237
+ "los defensores del método convencional"
238
+ ],
239
+
240
+ # Elementos
241
+ "elemento": [
242
+ "principio",
243
+ "enfoque",
244
+ "método",
245
+ "sistema"
246
+ ],
247
+
248
+ # Beneficio principal
249
+ "beneficio_principal": [
250
+ "transforma resultados",
251
+ "elimina obstáculos",
252
+ "multiplica efectividad",
253
+ "genera avances significativos"
254
+ ],
255
+
256
+ # Tiempo corto
257
+ "tiempo_corto": [
258
+ "semanas",
259
+ "días",
260
+ "pasos simples",
261
+ "un proceso sencillo"
262
+ ],
263
+
264
+ # Obstáculos comunes
265
+ "obstáculo_común": [
266
+ "complicaciones innecesarias",
267
+ "inversiones costosas",
268
+ "métodos complejos",
269
+ "sacrificios excesivos"
270
+ ],
271
+
272
+ # Áreas específicas
273
+ "área": [
274
+ "productividad",
275
+ "confianza",
276
+ "habilidades",
277
+ "resultados"
278
+ ],
279
+ }
280
+
281
+ # Personalizar variables según el ángulo seleccionado si existe
282
+ if angle and 'keywords' in angle:
283
+ for keyword in angle['keywords']:
284
+ if "beneficio" in variables:
285
+ variables["beneficio"].append(keyword)
286
+ if "tema" in variables:
287
+ variables["tema"].append(keyword)
288
+
289
+ # Personalizar variables según el story_prompt si existe
290
+ if story_prompt:
291
+ if "tema" in variables:
292
+ variables["tema"].append(story_prompt)
293
+ if "beneficio" in variables:
294
+ variables["beneficio"].append(f"resolver {story_prompt}")
295
+
296
+ # Función para reemplazar variables en una plantilla
297
+ def fill_template(template):
298
+ filled_template = template
299
+ for var_name in variables:
300
+ if "{" + var_name + "}" in template:
301
+ filled_template = filled_template.replace(
302
+ "{" + var_name + "}",
303
+ random.choice(variables[var_name])
304
+ )
305
+ return filled_template
306
+
307
+ # Generar titulares de diferentes categorías para asegurar variedad
308
+ headlines = []
309
+
310
+ # Seleccionar categorías diferentes para cada anuncio
311
+ categories = list(headline_categories.keys())
312
+ random.shuffle(categories)
313
+
314
+ # Asegurar que tenemos al menos 3 categorías diferentes
315
+ selected_categories = categories[:min(3, len(categories))]
316
+
317
+ # Generar un titular de cada categoría seleccionada
318
+ for category in selected_categories:
319
+ template = random.choice(headline_categories[category])
320
+ headline = fill_template(template)
321
+ headlines.append(headline)
322
+
323
+ # Si necesitamos más titulares, generar adicionales de categorías aleatorias
324
+ while len(headlines) < 9: # Generar 9 titulares (3 para cada anuncio)
325
+ category = random.choice(categories)
326
+ templates = headline_categories[category]
327
+ template = random.choice(templates)
328
+ headline = fill_template(template)
329
+
330
+ # Evitar duplicados
331
+ if headline not in headlines:
332
+ headlines.append(headline)
333
+
334
+ return headlines