Complete project state documentation including: - System architecture and services - Implemented features (content engine, threads, interactions, reports) - Scheduled tasks and database schema - Useful commands and pending items Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
7.2 KiB
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 v2GET /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:
- Generador detecta template "thread"
- Parsea posts separados por
N/pattern publish_thread()publica como self-replies- 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
-- 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
# 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
-
Integración Meta (Facebook/Instagram/Threads)
- Credenciales en .env pero sin access token
- Publishers existen pero no probados
-
Respuestas Automáticas
- Infraestructura lista (
responded,response_contenten interactions) - Falta implementar lógica de respuesta con IA
- Infraestructura lista (
-
Analytics Dashboard
- Endpoint
/analyticsexiste - Falta poblar con datos reales de engagement
- Endpoint
-
A/B Testing
- Modelo y rutas existen
- Falta implementar comparación de variantes
-
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