feat: Add Content Generation Engine v2 with quality scoring
Major improvements to AI content generation: ## New Components (app/services/ai/) - PromptLibrary: YAML-based prompt templates with inheritance - ContextEngine: Anti-repetition and best performers tracking - ContentGeneratorV2: Enhanced generation with dynamic parameters - PlatformAdapter: Platform-specific content adaptation - ContentValidator: AI-powered quality scoring (0-100) ## Prompt Library (app/prompts/) - 3 personalities: default, educational, promotional - 5 templates: tip_tech, product_post, service_post, thread, response - 4 platform configs: x, threads, instagram, facebook - Few-shot examples by category: ia, productividad, seguridad ## Database Changes - New table: content_memory (tracks generated content) - New columns in posts: quality_score, score_breakdown, generation_attempts ## New API Endpoints (/api/v2/generate/) - POST /generate - Generation with quality check - POST /generate/batch - Batch generation - POST /quality/evaluate - Evaluate content quality - GET /templates, /personalities, /platforms - List configs ## Celery Tasks - update_engagement_scores (every 6h) - cleanup_old_memory (monthly) - refresh_best_posts_yaml (weekly) ## Tests - Comprehensive tests for all AI engine components Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
155
app/prompts/examples/best_posts.yaml
Normal file
155
app/prompts/examples/best_posts.yaml
Normal file
@@ -0,0 +1,155 @@
|
||||
# Best Posts - Ejemplos de alto rendimiento para few-shot learning
|
||||
# Este archivo se actualiza automáticamente con posts que superan el umbral de engagement
|
||||
|
||||
metadata:
|
||||
description: "Colección de posts con mejor rendimiento para usar como few-shot examples"
|
||||
auto_update: true
|
||||
top_percentile: 20 # Top 20% de engagement
|
||||
min_engagement_score: 50
|
||||
last_updated: null # Se actualiza automáticamente
|
||||
|
||||
# Ejemplos manuales iniciales (reemplazar con posts reales de la marca)
|
||||
examples:
|
||||
|
||||
tip_tech:
|
||||
- content: |
|
||||
¿Pasas horas buscando archivos en tu compu?
|
||||
|
||||
Tip: Usa "Everything" (Windows) o "Alfred" (Mac).
|
||||
|
||||
Búsqueda instantánea de cualquier archivo en milisegundos.
|
||||
|
||||
Yo recuperé 30 min diarios con esto.
|
||||
|
||||
#Productividad #Tech
|
||||
platform: x
|
||||
engagement_score: 85
|
||||
metrics:
|
||||
likes: 45
|
||||
retweets: 12
|
||||
comments: 8
|
||||
analysis:
|
||||
hook_type: pregunta_dolor
|
||||
strength: dato_específico_personal
|
||||
|
||||
- content: |
|
||||
El 73% de developers usan ChatGPT para debugging.
|
||||
|
||||
Pero el 90% lo usa mal.
|
||||
|
||||
El truco: no le des solo el error.
|
||||
Dale contexto:
|
||||
→ Qué intentas hacer
|
||||
→ Qué esperabas
|
||||
→ Qué obtuviste
|
||||
|
||||
La diferencia es brutal.
|
||||
|
||||
#IA #Programming
|
||||
platform: x
|
||||
engagement_score: 92
|
||||
metrics:
|
||||
likes: 78
|
||||
retweets: 34
|
||||
comments: 15
|
||||
analysis:
|
||||
hook_type: dato_impactante
|
||||
strength: framework_accionable
|
||||
|
||||
product_post:
|
||||
- content: |
|
||||
💻 Para los que editan video y están hartos del lag:
|
||||
|
||||
MacBook Pro M3 Pro disponible.
|
||||
|
||||
→ Renderiza 4K en tiempo real
|
||||
→ 18h de batería editando
|
||||
→ Pantalla que hace justicia a tu trabajo
|
||||
|
||||
Inversión desde $45,999 MXN.
|
||||
|
||||
¿Te interesa? Más detalles por DM.
|
||||
|
||||
#Apple #VideoEditing
|
||||
platform: x
|
||||
engagement_score: 78
|
||||
metrics:
|
||||
likes: 34
|
||||
retweets: 8
|
||||
comments: 12
|
||||
analysis:
|
||||
hook_type: dolor_específico
|
||||
strength: beneficios_no_specs
|
||||
|
||||
service_post:
|
||||
- content: |
|
||||
"Pasamos 20 horas/semana en reportes manuales"
|
||||
|
||||
Eso nos dijo un cliente hace 3 meses.
|
||||
|
||||
Hoy su equipo dedica esas horas a estrategia.
|
||||
|
||||
¿Cómo? Automatizamos:
|
||||
→ Extracción de datos
|
||||
→ Generación de reportes
|
||||
→ Envío programado
|
||||
|
||||
Si tu equipo pierde tiempo en tareas repetitivas, hablemos.
|
||||
|
||||
#Automatización #Productividad
|
||||
platform: threads
|
||||
engagement_score: 81
|
||||
metrics:
|
||||
likes: 56
|
||||
retweets: 15
|
||||
comments: 9
|
||||
analysis:
|
||||
hook_type: caso_cliente
|
||||
strength: resultado_medible
|
||||
|
||||
thread:
|
||||
- posts:
|
||||
- "🧵 5 herramientas de IA que uso todos los días (y son gratis):"
|
||||
- "1/ Claude para escribir y pensar. Mejor que ChatGPT para textos largos y razonamiento complejo. Mi favorito para brainstorming."
|
||||
- "2/ Perplexity para investigar. Google + IA. Te da respuestas con fuentes. Ya no uso Google para research."
|
||||
- "3/ Gamma para presentaciones. Describes tu idea y genera slides. 30 min de trabajo en 5."
|
||||
- "4/ ElevenLabs para audio. Convierte texto a voz natural. Perfecto para demos y videos."
|
||||
- "5/ Canva con IA para diseño. Magic Edit y texto a imagen. No necesitas Photoshop para el 90% de cosas. ¿Cuál agregarías? #IA #Herramientas"
|
||||
platform: x
|
||||
engagement_score: 95
|
||||
metrics:
|
||||
total_likes: 234
|
||||
retweets: 89
|
||||
comments: 45
|
||||
analysis:
|
||||
hook_type: lista_útil
|
||||
strength: herramientas_específicas_opinión_personal
|
||||
|
||||
# Patrones identificados de posts exitosos
|
||||
success_patterns:
|
||||
hooks:
|
||||
- type: dato_específico
|
||||
description: "Números concretos generan credibilidad"
|
||||
example: "El 73% de developers..."
|
||||
- type: dolor_relatable
|
||||
description: "Problemas que la audiencia reconoce"
|
||||
example: "¿Pasas horas buscando archivos...?"
|
||||
- type: resultado_medible
|
||||
description: "Transformaciones cuantificables"
|
||||
example: "De 20 horas a 0 en reportes manuales"
|
||||
|
||||
content:
|
||||
- pattern: personal_experience
|
||||
description: "Incluir experiencia personal aumenta engagement"
|
||||
- pattern: actionable_value
|
||||
description: "Contenido que se puede aplicar inmediatamente"
|
||||
- pattern: specific_over_generic
|
||||
description: "Herramientas específicas > consejos generales"
|
||||
|
||||
structure:
|
||||
- pattern: short_sentences
|
||||
description: "Oraciones cortas, una idea por línea"
|
||||
- pattern: visual_hierarchy
|
||||
description: "Uso de → y bullets para escaneo"
|
||||
- pattern: strong_close
|
||||
description: "Terminar con pregunta o CTA claro"
|
||||
94
app/prompts/examples/by_category/ia.yaml
Normal file
94
app/prompts/examples/by_category/ia.yaml
Normal file
@@ -0,0 +1,94 @@
|
||||
# Ejemplos de posts sobre Inteligencia Artificial
|
||||
|
||||
category: ia
|
||||
display_name: "Inteligencia Artificial"
|
||||
description: "Posts sobre IA, machine learning, ChatGPT, automatización inteligente"
|
||||
|
||||
keywords:
|
||||
- inteligencia artificial
|
||||
- ia
|
||||
- machine learning
|
||||
- chatgpt
|
||||
- claude
|
||||
- deepseek
|
||||
- prompts
|
||||
- llm
|
||||
- modelos de lenguaje
|
||||
|
||||
examples:
|
||||
|
||||
tips:
|
||||
- content: |
|
||||
ChatGPT responde mejor cuando le das un rol.
|
||||
|
||||
En lugar de: "Escribe un email"
|
||||
|
||||
Prueba: "Eres un copywriter senior. Escribe un email que..."
|
||||
|
||||
La diferencia en calidad es notable.
|
||||
|
||||
#IA #ChatGPT
|
||||
quality_score: 88
|
||||
why_it_works: "Tip específico y accionable con ejemplo claro"
|
||||
|
||||
- content: |
|
||||
El prompt perfecto tiene 4 partes:
|
||||
|
||||
1. Contexto (quién eres)
|
||||
2. Tarea (qué quieres)
|
||||
3. Formato (cómo lo quieres)
|
||||
4. Restricciones (qué evitar)
|
||||
|
||||
Ejemplo en 🧵
|
||||
|
||||
#PromptEngineering
|
||||
quality_score: 85
|
||||
why_it_works: "Framework memorable y fácil de aplicar"
|
||||
|
||||
educational:
|
||||
- content: |
|
||||
¿Cuándo usar ChatGPT vs Claude vs Gemini?
|
||||
|
||||
ChatGPT: Conversaciones, código, uso general
|
||||
Claude: Textos largos, análisis, razonamiento
|
||||
Gemini: Búsqueda, datos actuales, Google integrado
|
||||
|
||||
No hay "mejor", hay "mejor para X".
|
||||
|
||||
#IA
|
||||
quality_score: 82
|
||||
why_it_works: "Comparación útil sin sesgo, ayuda a decidir"
|
||||
|
||||
misconceptions:
|
||||
- content: |
|
||||
"La IA va a reemplazar mi trabajo"
|
||||
|
||||
Realidad: La IA amplifica, no reemplaza.
|
||||
|
||||
Los que dominan IA + su expertise harán en 1 hora lo que otros en 8.
|
||||
|
||||
El skill a desarrollar no es "usar IA", es "pensar con IA".
|
||||
|
||||
#IA #Futuro
|
||||
quality_score: 90
|
||||
why_it_works: "Aborda miedo común con perspectiva práctica"
|
||||
|
||||
hooks_that_work:
|
||||
- "La mayoría usa [herramienta IA] mal..."
|
||||
- "El prompt que cambió mi flujo de trabajo:"
|
||||
- "ChatGPT no puede hacer esto (pero Claude sí):"
|
||||
- "Dejé de usar [herramienta] después de descubrir..."
|
||||
|
||||
topics_to_cover:
|
||||
- Comparativas de herramientas
|
||||
- Prompts específicos para casos de uso
|
||||
- Limitaciones y cómo superarlas
|
||||
- Integración de IA en flujos existentes
|
||||
- Ética y uso responsable
|
||||
- Novedades relevantes (sin ser news ticker)
|
||||
|
||||
avoid:
|
||||
- Hype sin sustancia ("La IA lo cambia TODO")
|
||||
- Predicciones apocalípticas
|
||||
- Comparativas sin valor ("X es mejor que Y" sin contexto)
|
||||
- Contenido que se desactualiza rápido
|
||||
113
app/prompts/examples/by_category/productividad.yaml
Normal file
113
app/prompts/examples/by_category/productividad.yaml
Normal file
@@ -0,0 +1,113 @@
|
||||
# Ejemplos de posts sobre Productividad
|
||||
|
||||
category: productividad
|
||||
display_name: "Productividad"
|
||||
description: "Posts sobre gestión del tiempo, herramientas, workflows, hábitos"
|
||||
|
||||
keywords:
|
||||
- productividad
|
||||
- gestión del tiempo
|
||||
- herramientas
|
||||
- workflow
|
||||
- hábitos
|
||||
- eficiencia
|
||||
- organización
|
||||
- automatización
|
||||
|
||||
examples:
|
||||
|
||||
tips:
|
||||
- content: |
|
||||
La regla de los 2 minutos:
|
||||
|
||||
Si algo toma menos de 2 minutos, hazlo ahora.
|
||||
|
||||
Suena simple pero elimina el 50% de tu lista de pendientes.
|
||||
|
||||
El truco: ser honesto con lo que realmente toma 2 min.
|
||||
|
||||
#Productividad
|
||||
quality_score: 87
|
||||
why_it_works: "Regla simple con beneficio claro y matiz útil"
|
||||
|
||||
- content: |
|
||||
Mi stack de productividad:
|
||||
|
||||
→ Notion: Todo mi cerebro externo
|
||||
→ Todoist: Tareas diarias
|
||||
→ Cal.com: Agenda sin emails
|
||||
→ Raycast: Launcher + snippets
|
||||
|
||||
Cero apps más. Simplicidad > features.
|
||||
|
||||
#Productividad #Tools
|
||||
quality_score: 84
|
||||
why_it_works: "Recomendaciones específicas con filosofía clara"
|
||||
|
||||
- content: |
|
||||
Tip que me tomó años aprender:
|
||||
|
||||
No planees tu día por tareas.
|
||||
Planéalo por bloques de energía.
|
||||
|
||||
Alta energía → Trabajo creativo/difícil
|
||||
Media energía → Reuniones/colaboración
|
||||
Baja energía → Admin/emails
|
||||
|
||||
Game changer.
|
||||
|
||||
#Productividad
|
||||
quality_score: 91
|
||||
why_it_works: "Insight contraintuitivo con framework aplicable"
|
||||
|
||||
frameworks:
|
||||
- content: |
|
||||
Cómo digo "no" sin decir no:
|
||||
|
||||
"Me encantaría, pero mi calendario no me lo permite ahora"
|
||||
|
||||
"No soy la persona indicada, pero [nombre] podría ayudarte"
|
||||
|
||||
"Podría en [fecha futura], ¿funciona?"
|
||||
|
||||
Proteger tu tiempo no te hace mala persona.
|
||||
|
||||
#Productividad
|
||||
quality_score: 86
|
||||
why_it_works: "Scripts copiables para situación incómoda común"
|
||||
|
||||
myths:
|
||||
- content: |
|
||||
"Trabaja más duro" es mal consejo.
|
||||
|
||||
Trabajar duro en lo incorrecto = desperdicio.
|
||||
|
||||
Mejor: trabaja en lo correcto.
|
||||
|
||||
1 hora en la tarea que mueve la aguja > 8 horas en ocupación disfrazada.
|
||||
|
||||
#Productividad
|
||||
quality_score: 89
|
||||
why_it_works: "Desafía sabiduría convencional con lógica clara"
|
||||
|
||||
hooks_that_work:
|
||||
- "El tip que me tomó años aprender:"
|
||||
- "Dejé de hacer [cosa común] y..."
|
||||
- "La diferencia entre ocupado y productivo:"
|
||||
- "Lo que nadie te dice sobre productividad:"
|
||||
- "Mi rutina de [mañana/semana] en 5 pasos:"
|
||||
|
||||
topics_to_cover:
|
||||
- Herramientas específicas con opinión
|
||||
- Frameworks de gestión del tiempo
|
||||
- Hábitos y rutinas que funcionan
|
||||
- Errores comunes de productividad
|
||||
- Balance trabajo-vida
|
||||
- Automatización de tareas repetitivas
|
||||
|
||||
avoid:
|
||||
- "Levántate a las 5am" sin contexto
|
||||
- Hustle culture tóxica
|
||||
- Productividad como fin en sí misma
|
||||
- Consejos que solo funcionan para privilegiados
|
||||
- Listas genéricas sin experiencia personal
|
||||
117
app/prompts/examples/by_category/seguridad.yaml
Normal file
117
app/prompts/examples/by_category/seguridad.yaml
Normal file
@@ -0,0 +1,117 @@
|
||||
# Ejemplos de posts sobre Seguridad Digital
|
||||
|
||||
category: seguridad
|
||||
display_name: "Seguridad Digital"
|
||||
description: "Posts sobre ciberseguridad, privacidad, passwords, protección de datos"
|
||||
|
||||
keywords:
|
||||
- seguridad
|
||||
- ciberseguridad
|
||||
- passwords
|
||||
- privacidad
|
||||
- phishing
|
||||
- malware
|
||||
- protección
|
||||
- 2fa
|
||||
- autenticación
|
||||
|
||||
examples:
|
||||
|
||||
tips:
|
||||
- content: |
|
||||
Tu contraseña más débil no es "123456".
|
||||
|
||||
Es la respuesta a "¿Cuál es el nombre de tu mascota?"
|
||||
|
||||
Esa info está en tu Instagram.
|
||||
|
||||
Tip: usa respuestas falsas que solo tú conozcas.
|
||||
|
||||
#Seguridad #CyberSecurity
|
||||
quality_score: 92
|
||||
why_it_works: "Insight no obvio con solución simple"
|
||||
|
||||
- content: |
|
||||
3 señales de email phishing que el 90% ignora:
|
||||
|
||||
1. Urgencia artificial ("actúa en 24h")
|
||||
2. Errores sutiles en el dominio (@paypa1.com)
|
||||
3. "Haz clic aquí" sin preview del link
|
||||
|
||||
Cuando dudes: ve directo al sitio oficial.
|
||||
|
||||
#Seguridad
|
||||
quality_score: 88
|
||||
why_it_works: "Checklist específico y accionable"
|
||||
|
||||
- content: |
|
||||
La mejor inversión en seguridad: un password manager.
|
||||
|
||||
→ Bitwarden (gratis, código abierto)
|
||||
→ 1Password (mejor UX, $36/año)
|
||||
|
||||
Una contraseña maestra fuerte > 100 contraseñas mediocres.
|
||||
|
||||
Si solo haces una cosa de seguridad, que sea esta.
|
||||
|
||||
#Seguridad #Passwords
|
||||
quality_score: 85
|
||||
why_it_works: "Recomendación específica con opciones claras"
|
||||
|
||||
awareness:
|
||||
- content: |
|
||||
WiFi gratis del café = WiFi que puede ver todo tu tráfico.
|
||||
|
||||
Opciones:
|
||||
|
||||
1. Usa VPN siempre
|
||||
2. Solo visita sitios HTTPS
|
||||
3. Nunca hagas operaciones bancarias
|
||||
|
||||
O mejor: usa tu hotspot móvil.
|
||||
|
||||
#Seguridad #WiFi
|
||||
quality_score: 84
|
||||
why_it_works: "Situación común con soluciones prácticas"
|
||||
|
||||
- content: |
|
||||
"No tengo nada que esconder" es mal argumento.
|
||||
|
||||
Tienes:
|
||||
→ Credenciales bancarias
|
||||
→ Fotos personales
|
||||
→ Conversaciones privadas
|
||||
→ Tu identidad digital
|
||||
|
||||
La privacidad no es para criminales. Es para todos.
|
||||
|
||||
#Privacidad #Seguridad
|
||||
quality_score: 90
|
||||
why_it_works: "Contraargumento a objeción común"
|
||||
|
||||
hooks_that_work:
|
||||
- "El error de seguridad que todos cometen:"
|
||||
- "Esto es lo que un hacker ve cuando..."
|
||||
- "La función de seguridad que deberías activar HOY:"
|
||||
- "Por qué [práctica común] es peligroso:"
|
||||
- "3 minutos que pueden salvarte horas de problemas:"
|
||||
|
||||
topics_to_cover:
|
||||
- Password managers y 2FA
|
||||
- Reconocer phishing y scams
|
||||
- Privacidad en redes sociales
|
||||
- Seguridad en WiFi público
|
||||
- Backups y recuperación
|
||||
- Actualizaciones de software
|
||||
|
||||
tone_guidelines:
|
||||
- Informar sin causar paranoia
|
||||
- Soluciones prácticas, no solo problemas
|
||||
- Evitar jerga técnica innecesaria
|
||||
- Urgencia apropiada sin alarmismo
|
||||
|
||||
avoid:
|
||||
- Asustar sin dar soluciones
|
||||
- Jerga que solo entienden expertos
|
||||
- Promesas de "seguridad 100%"
|
||||
- Contenido que se desactualiza (vulnerabilidades específicas)
|
||||
Reference in New Issue
Block a user