# Contexto del Proyecto - Sesión 29 Enero 2026 ## Resumen Ejecutivo Sistema de automatización de redes sociales para **Consultoría AS** (Tijuana, México). Publica contenido automáticamente en X (Twitter), con soporte futuro para Facebook, Instagram y Threads. ## Estado Actual del Sistema ### Servicios en Ejecución (Docker Compose) | Servicio | Puerto | Descripción | |----------|--------|-------------| | `app` | 8000 | FastAPI backend + Dashboard | | `worker` | - | Celery worker para tareas async | | `beat` | - | Celery beat scheduler | | `db` | 5432 | PostgreSQL | | `redis` | 6379 | Broker para Celery | ### Credenciales Configuradas (.env) - **X (Twitter)**: Configurado y funcionando (plan de pago activo - $5 USD) - **DeepSeek API**: Configurado para generación de contenido - **Telegram Bot**: Configurado para notificaciones - **Odoo**: Configurado pero no probado ## Funcionalidades Implementadas ### 1. Content Generation Engine v2 Motor de generación de contenido con IA usando DeepSeek. **Arquitectura modular:** ``` app/services/ai/ ├── __init__.py # Exports y singletons ├── prompt_library.py # Carga prompts YAML ├── context_engine.py # Anti-repetición + best performers ├── generator.py # Generador principal ├── platform_adapter.py # Adapta contenido por plataforma └── validator.py # Scoring de calidad con IA ``` **Biblioteca de prompts:** ``` app/prompts/ ├── personalities/ # Tonos de comunicación ├── templates/ # Tipos de contenido (tip, thread, promo) ├── examples/ # Ejemplos para few-shot learning └── platforms/ # Reglas por plataforma ``` **API Endpoints:** - `POST /api/v2/generate` - Genera contenido con el motor v2 - `GET /api/v2/templates` - Lista templates disponibles ### 2. Publicación de Hilos (Threads) Los hilos se detectan automáticamente cuando el template es "thread". **Formato de hilo:** ``` 1/ Primer tweet del hilo... 2/ Segundo tweet... 3/ Tercer tweet... ``` **Flujo:** 1. Generador detecta template "thread" 2. Parsea posts separados por `N/` pattern 3. `publish_thread()` publica como self-replies 4. Se guarda el ID del primer tweet ### 3. Calendario de Contenido **24 posts programados para Febrero 2026:** - 12 tips tecnológicos (lunes, miércoles, viernes 10:00 AM) - 4 hilos educativos (miércoles 12:00 PM) - 8 posts promocionales de servicios (domingos 3:00 PM) **Visualización:** - Dashboard: `/calendar` - API: `GET /api/calendar/posts/view?start_date=2026-02-01&days=28` ### 4. Tracking de Interacciones **Tipos de interacciones capturadas:** | Tipo | Descripción | |------|-------------| | `mention` | Tweets que mencionan @ConsultASTJ | | `comment` | Respuestas a posts publicados | | `follow` | Nuevos seguidores | **Filtros implementados:** - Excluye auto-respuestas (tweets del propio sistema) - Detecta duplicados (mismo tweet como mención y comentario) - Guarda username real (no solo ID numérico) **Datos capturados por follower:** - Username, nombre, bio, avatar URL ### 5. Reportes Diarios por Telegram **Reporte Matutino (8:00 AM Tijuana):** - Posts programados para el día - Nuevos followers (24h) - Interacciones pendientes **Reporte Vespertino (6:00 PM Tijuana):** - Posts publicados hoy - Posts programados mañana - Nuevos followers del día - Interacciones sin responder ### 6. Dashboard Web **URL:** `http://localhost:8000/` **Secciones:** - Stats (posts hoy/semana, pendientes, programados) - Pendientes de aprobación - Próximas publicaciones - Publicaciones recientes (nuevo) - Interacciones recientes - Estado de plataformas ## Tareas Programadas (Celery Beat) | Tarea | Frecuencia | Descripción | |-------|------------|-------------| | `publish_scheduled_posts` | Cada minuto | Publica posts cuyo `scheduled_at` llegó | | `fetch_all_interactions` | Cada 5 min | Obtiene menciones, comentarios, followers | | `generate_scheduled_content` | Cada hora | Genera contenido según calendario | | `morning_report` | 8:00 AM | Reporte Telegram matutino | | `afternoon_report` | 6:00 PM | Reporte Telegram vespertino | | `daily_cleanup` | 3:00 AM | Limpieza de datos antiguos | | `update_engagement_scores` | Cada 6h | Actualiza scores de engagement | | `refresh_best_posts_yaml` | Domingos 5 AM | Regenera best_posts.yaml | ## Base de Datos ### Tablas Principales ```sql -- Posts posts (id, content, content_x, platforms, status, scheduled_at, published_at, platform_post_ids, content_type, ...) -- Interacciones interactions (id, platform, interaction_type, external_id, author_username, author_name, content, responded, ...) -- Memoria de contenido (anti-repetición) content_memory (id, content_hash, keywords, template_used, platform, engagement_score, ...) ``` ### Post Publicado de Prueba ``` ID: 31 Tipo: hilo_educativo Plataforma: X X Post ID: 2016630637961351287 URL: https://x.com/i/web/status/2016630637961351287 Tema: "3 errores al usar ChatGPT" ``` ## Archivos Clave Modificados en Esta Sesión ``` app/api/routes/dashboard.py # Agregada sección recent_published app/publishers/x_publisher.py # Filtro self-replies + get_followers() worker/tasks/fetch_interactions.py # Tracking followers + deduplicación worker/tasks/daily_reports.py # Nuevo: reportes Telegram worker/celery_app.py # Schedule de reportes dashboard/templates/index.html # UI para publicaciones recientes ``` ## Comandos Útiles ```bash # Reiniciar servicios docker compose up -d --build app worker # Ver logs del worker docker compose logs worker --tail=50 # Ejecutar task manualmente docker compose exec app python -c " from worker.tasks.fetch_interactions import fetch_platform_interactions print(fetch_platform_interactions('x')) " # Ver posts programados docker compose exec db psql -U social_user -d social_automation -c " SELECT id, status, scheduled_at, content_type FROM posts WHERE status = 'scheduled' ORDER BY scheduled_at LIMIT 10; " # Ver interacciones docker compose exec db psql -U social_user -d social_automation -c " SELECT id, interaction_type, author_username, content FROM interactions ORDER BY interaction_at DESC LIMIT 10; " # Enviar reporte de prueba docker compose exec worker python -c " from worker.tasks.daily_reports import morning_report print(morning_report()) " ``` ## Pendientes / Ideas Futuras 1. **Integración Meta (Facebook/Instagram/Threads)** - Credenciales en .env pero sin access token - Publishers existen pero no probados 2. **Respuestas Automáticas** - Infraestructura lista (`responded`, `response_content` en interactions) - Falta implementar lógica de respuesta con IA 3. **Analytics Dashboard** - Endpoint `/analytics` existe - Falta poblar con datos reales de engagement 4. **A/B Testing** - Modelo y rutas existen - Falta implementar comparación de variantes 5. **Integración Odoo** - Credenciales configuradas - Sync de leads pendiente de probar ## Cuenta de X - **Username:** @ConsultASTJ - **User ID:** 2016319840709918720 - **Plan:** Básico con $5 USD de crédito ## Contacto / Negocio - **Empresa:** Consultoría AS - **Ubicación:** Tijuana, México - **Website:** https://consultoria-as.com - **Servicios:** Consultoría tecnológica, automatización, IA --- *Documento generado el 29 de enero de 2026*