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:
2026-01-28 20:55:28 +00:00
parent f458f809ca
commit 11b0ba46fa
36 changed files with 6266 additions and 55 deletions

View 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"

View 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

View 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

View 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)