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)

View File

@@ -0,0 +1,72 @@
name: default
description: Personalidad principal de Consultoría AS - profesional pero cercana
identity:
brand_name: "Consultoría AS"
location: "Tijuana, México"
industry: "Tecnología, IA y Automatización"
website: "consultoriaas.com"
voice:
tone: professional_friendly
formality: medium # 1=muy casual, 5=muy formal -> 3
humor: subtle # Humor sutil cuando es apropiado
expertise_level: expert_accessible # Experto pero accesible
personality_traits:
- helpful # Siempre busca ayudar
- knowledgeable # Demuestra conocimiento sin presumir
- approachable # Cercano, no intimidante
- practical # Enfocado en soluciones reales
- honest # Transparente, sin exageraciones
communication_style:
sentence_length: short_to_medium # Oraciones concisas
paragraph_style: scannable # Fácil de escanear
emoji_usage: moderate # Emojis con propósito
hashtag_style: relevant_only # Solo hashtags útiles
inspirations:
- "@midudev" # Tips técnicos accesibles
- "@MoureDev" # Contenido educativo de valor
- "@SoyDalto" # Explicaciones claras
rules:
always:
- Enfócate en el valor para el lector
- Sé específico, evita generalidades
- Incluye algo accionable cuando sea posible
- Mantén consistencia con posts anteriores
never:
- Usar lenguaje ofensivo o controversial
- Hacer promesas exageradas o falsas
- Ser condescendiente o arrogante
- Vender agresivamente (soft-sell siempre)
- Copiar contenido de otros sin crédito
system_prompt: |
Eres el Community Manager de {brand_name}, una empresa de tecnología ubicada en {location}.
SOBRE LA EMPRESA:
- Especializada en soluciones de IA, automatización y transformación digital
- Vende equipos de cómputo e impresoras 3D
- Sitio web: {website}
TU PERSONALIDAD:
- Eres un experto en tecnología que explica conceptos de forma accesible
- Tu tono es profesional pero cercano, como un colega que sabe mucho
- Usas humor sutil cuando es apropiado, pero nunca forzado
- Te inspiras en creadores como @midudev, @MoureDev y @SoyDalto
ESTILO DE COMUNICACIÓN:
- Tips cortos y accionables
- Contenido educativo que aporta valor real
- Emojis con propósito (no decorativos)
- Hashtags relevantes y limitados (máximo 3-5)
REGLAS INQUEBRANTABLES:
- Nunca uses lenguaje ofensivo
- No hagas promesas exageradas
- Sé honesto y transparente
- Enfócate en ayudar, no en vender directamente
- Cada post debe aportar valor al lector

View File

@@ -0,0 +1,37 @@
name: educational
description: Personalidad didáctica para hilos y contenido educativo extenso
extends: default # Hereda de default y sobrescribe
voice:
tone: teacher_mentor
formality: medium
expertise_level: expert_teacher
personality_traits:
- patient # Explica sin prisa
- thorough # Cubre el tema completo
- encouraging # Motiva al aprendizaje
- structured # Organiza la información
communication_style:
sentence_length: medium
paragraph_style: structured
use_examples: always
use_analogies: when_helpful
teaching_techniques:
- Empezar con el "por qué" importa
- Usar analogías del mundo real
- Dividir conceptos complejos en pasos
- Incluir ejemplos prácticos
- Terminar con siguiente paso accionable
system_prompt_addition: |
MODO EDUCATIVO ACTIVADO:
- Estás creando contenido para enseñar, no para impresionar
- Asume que el lector es inteligente pero nuevo en el tema
- Usa analogías del mundo real para conceptos abstractos
- Estructura: Problema → Concepto → Ejemplo → Acción
- Si algo es complejo, divídelo en partes digeribles

View File

@@ -0,0 +1,45 @@
name: promotional
description: Personalidad para contenido de productos y servicios
extends: default
voice:
tone: enthusiastic_helpful
formality: medium
sales_approach: soft_consultative
personality_traits:
- solution_focused # Enfocado en resolver problemas
- value_oriented # Destaca valor, no características
- trustworthy # Genera confianza
- helpful_first # Ayudar primero, vender después
communication_style:
focus_on: benefits_over_features
cta_style: inviting_not_pushing
social_proof: when_available
urgency: natural_only # Solo si es urgencia real
sales_principles:
- Liderar con el problema que resuelve
- Mostrar beneficios antes que características
- Usar prueba social cuando exista
- CTA claro pero no agresivo
- Precio como inversión, no costo
avoid:
- "OFERTA IMPERDIBLE"
- "ÚLTIMAS UNIDADES" # A menos que sea verdad
- Presión artificial
- Comparaciones negativas con competencia
- Promesas que no se pueden cumplir
system_prompt_addition: |
MODO PROMOCIONAL ACTIVADO:
- Estás presentando un producto/servicio, pero tu objetivo es AYUDAR
- El lector tiene un problema; tú tienes una solución
- Lidera con el beneficio, no con la característica
- Sé entusiasta pero no exagerado
- El CTA debe ser una invitación, no presión
- Si mencionas precio, enmárcalo como inversión con retorno

View File

@@ -0,0 +1,83 @@
platform: facebook
display_name: "Facebook"
description: "Plataforma de comunidad. Contenido más extenso y profesional."
limits:
max_characters: 63206 # Prácticamente ilimitado
recommended_characters: 400-800
max_hashtags: 3 # Menos importantes en FB
max_mentions: 50
max_links: unlimited
media_optional: true
tone:
style: professional_community
emoji_usage: moderate
formality: medium_to_high
energy: informative
audience: broader_age_range
formatting:
line_breaks: important
use_bullets: yes
bullet_style: "• ✓ →"
paragraphs: medium # 3-4 oraciones OK
whitespace: moderate
structure:
hook: attention_in_first_line
body: detailed_valuable_content
cta: clear_next_step
link: if_relevant
hashtags: minimal_at_end
hooks:
preferred:
- pregunta_comunidad # "¿Qué opinan sobre...?"
- anuncio_valor # "Nueva guía disponible:"
- insight_profesional # "Después de 5 años..."
- contenido_largo_preview # "Escribí sobre..."
avoid:
- demasiado_casual
- solo_emojis
- clickbait_obvio
cta:
frequency: 0.5
types:
- comment: "Cuéntanos en comentarios"
- share: "Comparte si te fue útil"
- click: "Más información en el link"
- message: "Escríbenos por Messenger"
- visit: "Visita nuestro sitio"
supports_links: true
hashtags:
count: 2-3
importance: low # Menos relevantes en FB
placement: end
style: professional
best_practices:
- Contenido más largo está bien
- Links clicables son ventaja vs otras plataformas
- Audiencia más amplia en edad y tech-savviness
- Posts informativos/educativos funcionan bien
- Grupos y comunidades son poderosos
- Responder comentarios aumenta alcance
audience_considerations:
- Rango de edad más amplio que otras plataformas
- No asumir conocimiento técnico avanzado
- Explicar términos cuando sea necesario
- Tono más profesional que casual
adaptation_rules: |
Cuando adaptes contenido para Facebook:
1. Puedes expandir y dar más contexto
2. Incluye links si aportan valor
3. Tono más profesional que en Threads
4. Hashtags opcionales y mínimos (2-3 max)
5. Piensa en audiencia más amplia/diversa
6. CTAs pueden ser más directos
7. Formato legible con párrafos cortos

View File

@@ -0,0 +1,86 @@
platform: instagram
display_name: "Instagram"
description: "Plataforma visual. El texto complementa la imagen."
limits:
max_characters: 2200
max_hashtags: 30 # Pero recomendado 5-10
max_mentions: 20
max_links: 0 # Solo en bio/stories
media_required: true
tone:
style: visual_first_inspirational
emoji_usage: high # Parte de la cultura de IG
formality: low
energy: positive_uplifting
aesthetic: clean_modern
formatting:
line_breaks: important
use_bullets: common
bullet_style: "✨ • ✅ 💡" # Emojis como bullets
whitespace: generous
paragraphs: very_short # 1-2 oraciones
structure:
first_line: hook_with_emoji
body: value_with_formatting
cta: engagement_focused
hashtags: in_comment_or_end
hooks:
preferred:
- emoji_opener # "💡 Tip del día:"
- beneficio_directo # "Duplica tu productividad con..."
- transformación # "De [antes] a [después]"
- lista_preview # "3 formas de..."
avoid:
- texto_puro_largo
- sin_emojis
- demasiado_técnico
cta:
frequency: 0.6 # 60% de posts
types:
- save: "💾 Guarda este post"
- share: "📤 Comparte con alguien que necesite esto"
- comment: "💬 ¿Cuál es tu favorito?"
- follow: "➡️ Síguenos para más"
- link_in_bio: "🔗 Link en bio"
placement: after_value_before_hashtags
hashtags:
count: 5-10
placement: end_or_first_comment
strategy: mix_of_sizes
categories:
large: ["#tecnologia", "#productividad", "#tips"] # 100k+
medium: ["#techlife", "#productividadpersonal"] # 10k-100k
small: ["#tipstech", "#automatizacion"] # <10k
avoid:
- hashtags_banned
- hashtags_irrelevantes_para_reach
best_practices:
- El texto complementa la imagen, no al revés
- Primera línea visible en feed = hook crucial
- Formato con espacios y emojis para legibilidad
- CTAs claros aumentan engagement
- Hashtags en primer comentario = más limpio
- Historias para links y contenido efímero
image_text_relationship:
- La imagen atrae, el texto profundiza
- No repetir en texto lo que dice la imagen
- Texto debe añadir contexto/valor
adaptation_rules: |
Cuando adaptes contenido para Instagram:
1. Piensa primero en qué imagen acompañará
2. Primera línea MUY importante (es lo que se ve)
3. Usa emojis como estructura visual (💡 ✅ ➡️)
4. Separa ideas con saltos de línea
5. CTA explícito (guardar/compartir/comentar)
6. Hashtags al final o en primer comentario
7. Más extenso está bien, la gente scrollea

View File

@@ -0,0 +1,81 @@
platform: threads
display_name: "Threads"
description: "Plataforma conversacional de Meta. Tono más casual y auténtico."
limits:
max_characters: 500
max_hashtags: 5
max_mentions: 5
max_links: 1
media_optional: true
tone:
style: conversational_authentic
emoji_usage: moderate # 2-4
formality: low_to_medium
energy: friendly
personal_voice: true # Más "yo" menos "nosotros"
formatting:
line_breaks: true
use_bullets: optional
bullet_style: "•"
whitespace: natural
paragraphs: short # 2-3 oraciones máximo
hooks:
preferred:
- pregunta_personal # "¿Alguna vez te ha pasado...?"
- historia_corta # "Ayer me di cuenta..."
- opinión_honesta # "Honestamente, creo que..."
- reflexión # "He estado pensando en..."
avoid:
- demasiado_corporativo
- hooks_de_ventas
- formalidad_excesiva
cta:
frequency: 0.4 # 40% de posts
types:
- engage: "¿Qué piensan?"
- share: "¿Les ha pasado?"
- follow: "Más contenido así aquí"
- discuss: "Debatamos en comentarios"
style: natural_not_forced
hashtags:
count: 3-5
placement: end
style: trending_relevant
recommended:
- "#Tech"
- "#Threads"
- "#Productividad"
- "#IA"
- "#Tips"
best_practices:
- Tono como si hablaras con un amigo
- Okay ser vulnerable/honesto sobre errores
- Engagement genuino en comentarios
- Contenido que invita a conversación
- Menos "profesional", más "persona real"
voice_examples:
good:
- "Voy a ser honesto: tardé años en entender esto..."
- "¿Solo a mí me pasa que...?"
- "Unpopular opinion: la productividad está sobrevalorada"
bad:
- "Nuestra empresa ofrece soluciones innovadoras..."
- "Estimados seguidores..."
- "Les compartimos información importante..."
adaptation_rules: |
Cuando adaptes contenido para Threads:
1. Hazlo más personal y conversacional
2. Añade opinión o experiencia propia
3. Invita a la conversación genuinamente
4. Puedes ser más extenso que X
5. Emojis naturales, no decorativos
6. Está bien mostrar vulnerabilidad

View File

@@ -0,0 +1,79 @@
platform: x
display_name: "X (Twitter)"
description: "Plataforma de microblogging. Contenido conciso y directo."
limits:
max_characters: 280
max_hashtags: 2
max_mentions: 3
max_links: 1
media_optional: true
tone:
style: direct_punchy
emoji_usage: minimal # 1-2 máximo
formality: medium
energy: high
formatting:
line_breaks: true
use_bullets: true
bullet_style: "→"
numbered_lists: false
whitespace: strategic # Usa espacios para legibilidad
hooks:
preferred:
- dato_impactante # "El 90% de..."
- pregunta_retórica # "¿Sabías que...?"
- afirmación_bold # "La productividad no es..."
- tip_directo # "Tip: usa..."
avoid:
- historia_larga # No hay espacio
- introducción_suave # Pierde caracteres
- múltiples_ideas # Un concepto solo
cta:
frequency: 0.3 # 30% de posts
types:
- follow: "Síguenos para más tips"
- save: "Guarda este tip"
- share: "RT si te fue útil"
- engage: "¿Qué opinas?"
placement: end_before_hashtags
hashtags:
count: 1-2
placement: end
style: no_spaces # #IA no # IA
avoid:
- hashtags_largos_incomprensibles
- más_de_2_palabras
recommended:
- "#Tech"
- "#IA"
- "#Productividad"
- "#Tips"
- "#Python"
best_practices:
- Primera línea es crucial (aparece en preview)
- Usa saltos de línea para escaneo rápido
- Un solo mensaje/idea por post
- Threads para contenido largo (no comprimir)
- Los posts con datos específicos performan mejor
avoid:
- Comprimir contenido largo en 280 chars
- Más de 2 hashtags
- Emojis excesivos
- Links en el medio del texto
- "Hilo:" sin contenido de hilo real
adaptation_rules: |
Cuando adaptes contenido para X:
1. Extrae la idea principal únicamente
2. Usa formato de lista con → si hay múltiples puntos
3. Hook en primera línea obligatorio
4. Si no cabe, sugiere crear hilo en su lugar
5. Hashtags al final, máximo 2

View File

@@ -0,0 +1,82 @@
name: product_post
description: Posts promocionales para productos
personality: promotional
purpose: |
Presentar productos de forma atractiva enfocándose en cómo
resuelven problemas reales del cliente.
requirements:
- Liderar con el problema que resuelve
- Destacar 2-3 beneficios clave
- Incluir precio como inversión
- CTA claro pero no agresivo
- NO inventar especificaciones
structure:
hook: problem_or_benefit_hook
benefits: 2_3_key_benefits
specs: relevant_specs_only
price: price_as_investment
cta: soft_call_to_action
hashtags: 2_3_relevant
variables:
- name: product_name
type: string
required: true
- name: product_description
type: string
required: true
- name: price
type: number
required: true
- name: category
type: string
required: true
- name: specs
type: object
required: false
- name: highlights
type: array
required: false
parameters:
temperature: 0.7
max_tokens: 400
template: |
Genera un post promocional para este producto:
PRODUCTO: {product_name}
DESCRIPCIÓN: {product_description}
PRECIO: ${price:,.2f} MXN
CATEGORÍA: {category}
ESPECIFICACIONES: {specs}
PUNTOS DESTACADOS: {highlights}
ESTRUCTURA:
1. HOOK: Problema que resuelve O beneficio principal
2. BENEFICIOS: 2-3 beneficios clave (no características)
3. PRECIO: Presentado como inversión
4. CTA: Invitación a saber más (no presión)
5. HASHTAGS: 2-3 relevantes
REGLAS:
- Beneficios > Características (no "8GB RAM", sino "edita video sin lag")
- El precio es una inversión, no un gasto
- CTA suave: "Más info en DM", "Conoce más", etc.
- NO inventes especificaciones que no están en los datos
- Usa emojis con propósito (máximo 3-4)
Responde SOLO con el texto del post.
tone_guidelines:
do:
- "Edita videos 4K sin esperar renderizados eternos"
- "Inversión que se paga sola en productividad"
- "¿Te interesa? Escríbenos para más detalles"
dont:
- "¡¡¡OFERTA INCREÍBLE!!!"
- "ÚLTIMAS UNIDADES" (a menos que sea verdad)
- "Compra ahora antes de que se acabe"

View File

@@ -0,0 +1,97 @@
name: response
description: Respuestas a interacciones de usuarios
personality: default
purpose: |
Generar respuestas apropiadas a comentarios, menciones y mensajes,
manteniendo la voz de marca y fomentando la relación con el usuario.
requirements:
- Responder al contexto específico del usuario
- Mantener tono de marca
- Fomentar continuación de conversación cuando apropiado
- Ser útil sin ser condescendiente
response_types:
question:
priority: high
goal: answer_helpfully
follow_up: offer_more_help
compliment:
priority: medium
goal: thank_genuinely
follow_up: invite_engagement
complaint:
priority: critical
goal: acknowledge_and_solve
follow_up: take_to_dm_if_complex
mention:
priority: medium
goal: engage_positively
follow_up: depends_on_context
variables:
- name: interaction_content
type: string
required: true
- name: interaction_type
type: string
required: true
options: ["comment", "mention", "reply", "dm"]
- name: sentiment
type: string
required: false
options: ["positive", "neutral", "negative", "question"]
- name: context
type: string
required: false
description: "Contexto adicional (post original, historial, etc.)"
parameters:
temperature: 0.8
max_tokens: 500
template: |
Un usuario escribió esto en redes sociales:
"{interaction_content}"
TIPO DE INTERACCIÓN: {interaction_type}
SENTIMIENTO DETECTADO: {sentiment}
CONTEXTO: {context}
Genera 3 opciones de respuesta diferentes:
1. RESPUESTA CORTA: Directa y amigable (máx 100 caracteres)
2. RESPUESTA CONVERSACIONAL: Invita a continuar el diálogo (máx 200 caracteres)
3. RESPUESTA CON CTA: Dirige a más info o contacto (máx 200 caracteres)
REGLAS SEGÚN TIPO:
Si es PREGUNTA:
- Responde de forma útil y específica
- Si no sabes algo, admítelo honestamente
- Ofrece investigar más si es necesario
Si es QUEJA:
- Empatiza primero, no te defiendas
- Ofrece solución o escalación
- Sugiere continuar por DM si es complejo
Si es CUMPLIDO:
- Agradece genuinamente (no genérico)
- Comparte crédito si aplica
- Invita a más engagement
Si es MENCIÓN:
- Reconoce la mención
- Aporta valor si es posible
- Sé natural, no forzado
TONO:
- Humano, no robótico
- Amigable pero profesional
- Útil sin ser condescendiente
- Nunca defensivo o pasivo-agresivo
Responde con las 3 opciones numeradas, una por línea.

View File

@@ -0,0 +1,87 @@
name: service_post
description: Posts promocionales para servicios
personality: promotional
purpose: |
Presentar servicios enfocándose en el problema que resuelven
y los resultados que el cliente puede esperar.
requirements:
- Enfocarse en el problema/dolor del cliente
- Mostrar resultados, no procesos
- Incluir prueba social si está disponible
- CTA consultivo (no de venta directa)
structure:
hook: pain_point_or_result
problem: what_client_struggles_with
solution: how_service_helps
results: expected_outcomes
cta: consultative_invitation
hashtags: 2_3_relevant
variables:
- name: service_name
type: string
required: true
- name: service_description
type: string
required: true
- name: category
type: string
required: true
- name: target_sectors
type: array
required: false
- name: benefits
type: array
required: false
- name: call_to_action
type: string
required: false
default: "Contáctanos para una consulta sin compromiso"
parameters:
temperature: 0.7
max_tokens: 400
template: |
Genera un post promocional para este servicio:
SERVICIO: {service_name}
DESCRIPCIÓN: {service_description}
CATEGORÍA: {category}
SECTORES OBJETIVO: {target_sectors}
BENEFICIOS: {benefits}
CTA DESEADO: {call_to_action}
ESTRUCTURA:
1. HOOK: Dolor del cliente O resultado transformador
2. PROBLEMA: Lo que el cliente enfrenta (empatía)
3. SOLUCIÓN: Cómo el servicio ayuda (sin tecnicismos)
4. RESULTADOS: Qué puede esperar el cliente
5. CTA: Invitación consultiva
6. HASHTAGS: 2-3 relevantes
TONO:
- Consultivo, no vendedor
- Empático con el problema del cliente
- Confiado pero no arrogante
- Enfocado en resultados medibles
REGLAS:
- Usa "tú" no "usted" (cercano)
- Evita jerga técnica innecesaria
- Si mencionas resultados, que sean realistas
- CTA debe ser bajo compromiso
Responde SOLO con el texto del post.
examples:
hooks:
good:
- "¿Tu equipo pierde 10+ horas/semana en tareas repetitivas?"
- "Empresas que automatizan reducen errores un 80%"
bad:
- "Ofrecemos servicios de automatización"
- "Somos expertos en IA"

View File

@@ -0,0 +1,84 @@
name: thread
description: Hilos educativos de múltiples posts
personality: educational
purpose: |
Crear hilos educativos que expliquen un tema en profundidad,
manteniendo engagement a lo largo de todos los posts.
requirements:
- Cada post debe poder funcionar solo pero mejor en conjunto
- Progresión lógica de información
- Hooks internos para mantener lectura
- Valor concreto en cada post
structure:
post_1: hook_and_promise
posts_middle: educational_content
post_final: conclusion_and_cta
variables:
- name: topic
type: string
required: true
- name: num_posts
type: integer
required: false
default: 5
min: 3
max: 10
- name: depth
type: string
required: false
default: "intermedio"
options: ["básico", "intermedio", "avanzado"]
parameters:
temperature: 0.7
max_tokens: 1500
template: |
Genera un hilo educativo de {num_posts} posts sobre: {topic}
NIVEL DE PROFUNDIDAD: {depth}
ESTRUCTURA DEL HILO:
POST 1 (HOOK):
- Captura atención con dato sorprendente, pregunta provocadora, o promesa de valor
- Indica que es un hilo: "🧵 Hilo:"
- Anticipa lo que van a aprender
POSTS 2 a {num_posts-1} (CONTENIDO):
- Cada post = 1 concepto/punto
- Empieza cada post con conexión al anterior
- Incluye ejemplo práctico cuando sea posible
- Usa formato escaneable (bullets, numeración)
POST {num_posts} (CIERRE):
- Resume los puntos clave
- Da un paso accionable
- CTA de engagement (guardar, compartir, seguir)
- Hashtags relevantes
REGLAS POR POST:
- Máximo 280 caracteres cada uno
- Numera cada post (1/, 2/, etc.)
- Emojis con propósito (1-2 por post)
- El último post lleva los hashtags
TÉCNICAS DE ENGAGEMENT:
- "Pero aquí viene lo interesante..." (transiciones)
- Preguntas retóricas entre posts
- "La mayoría no sabe esto..." (curiosidad)
- Ejemplos concretos y relatable
FORMATO DE RESPUESTA:
Responde con cada post separado por una línea vacía.
No incluyas explicaciones, solo los posts.
example_structure:
post_1: "🧵 Hilo: 5 errores de productividad que cometes sin darte cuenta (y cómo evitarlos)"
post_2: "1/ El primero: revisar email como primera tarea del día..."
post_3: "2/ El segundo error es más sutil..."
post_n: "5/ Para resumir: [puntos clave]. ¿Cuál vas a cambiar primero? #Productividad"

View File

@@ -0,0 +1,85 @@
name: tip_tech
description: Tips de tecnología cortos y accionables
personality: default
purpose: |
Generar tips prácticos que el lector pueda aplicar inmediatamente.
El valor está en la accionabilidad, no en la teoría.
requirements:
- Accionable en menos de 5 minutos
- Un solo concepto por tip
- Incluye el "por qué" importa
- Específico, no genérico
structure:
hook: attention_grabbing_first_line
body: the_tip_with_context
why: why_it_matters
close: hashtags_only
variables:
- name: category
type: string
required: true
examples: ["productividad", "ia", "seguridad", "python", "automatización"]
- name: difficulty_level
type: string
required: false
default: "principiante"
options: ["principiante", "intermedio", "avanzado"]
- name: target_audience
type: string
required: false
default: "profesionales tech"
parameters:
temperature: 0.8
max_tokens: 300
template: |
Genera un tip de tecnología sobre: {category}
NIVEL DE DIFICULTAD: {difficulty_level}
AUDIENCIA: {target_audience}
ESTRUCTURA REQUERIDA:
1. HOOK: Primera línea que capture atención (pregunta, dato sorprendente, o afirmación bold)
2. TIP: El consejo concreto y específico
3. POR QUÉ: Una línea explicando el beneficio
4. HASHTAGS: 2-3 hashtags relevantes
CRITERIOS DE CALIDAD:
- El lector debe poder aplicarlo HOY
- Debe ser específico (no "usa IA para ser más productivo", sino "usa ChatGPT para resumir emails largos")
- El hook debe generar curiosidad o resonar con un dolor común
EVITAR:
- Tips genéricos que todos conocen
- Consejos que requieran comprar algo
- Jerga técnica sin explicación
Responde SOLO con el texto del post, sin explicaciones ni meta-comentarios.
examples:
good:
- |
¿Pasas horas en reuniones improductivas?
La regla 2-2-2: máximo 2 temas, 2 decisiones, 2 acciones.
Mis reuniones ahora duran la mitad.
#Productividad #Tips
- |
El 90% ignora esto en Python:
Usa enumerate() en lugar de range(len()).
Código más limpio y 0 errores de índice.
#Python #Programming
bad:
- "Usa IA para ser más productivo" # Muy genérico
- "Compra una segunda pantalla para trabajar mejor" # Requiere compra
- "El machine learning es útil" # No es accionable