Bot automatizado para actualizar métricas de posts de influencers en las plataformas Instagram, TikTok y YouTube.
- 🔄 Actualización Automática: Ejecuta cada 2 horas automáticamente
- 📊 Múltiples Plataformas: Soporta Instagram, TikTok y YouTube
- 🎯 Detección Inteligente: Identifica posts que necesitan actualización
- 📝 Logging Completo: Registra todas las operaciones
- 🔔 Notificaciones: Envía reportes a Slack (opcional)
- 🚀 Independiente: No depende del backend, usa APIs directamente
BotMetricasIT/
├── src/
│ ├── services/
│ │ ├── social/ # Servicios de métricas por plataforma
│ │ │ ├── tiktok-metrics.service.ts
│ │ │ ├── instagram-metrics.service.ts
│ │ │ ├── instagram-comments.service.ts
│ │ │ ├── youtube-metrics.service.ts
│ │ │ ├── post-metrics.service.ts
│ │ │ └── comments-analysis.service.ts
│ │ ├── database.ts # Interacción con Supabase
│ │ └── notification.ts # Notificaciones Slack
│ ├── config/
│ │ ├── database.ts # Configuración Supabase
│ │ └── logger.ts # Configuración Winston
│ ├── types/
│ │ └── database.ts # Tipos TypeScript
│ ├── bot.ts # Lógica principal del bot
│ └── index.ts # Punto de entrada
├── scripts/
│ ├── install.sh # Instalación automática
│ └── test-connection.js # Pruebas de conexión
└── logs/ # Archivos de log
- Node.js 18+
- npm o yarn
- Cuentas de API:
- Apify (Instagram y TikTok)
- YouTube Data API (YouTube)
- Supabase (Base de datos)
cd BotMetricasIT
npm installcp env.example .envEditar .env con tus credenciales:
# Supabase
SUPABASE_URL=https://tu-proyecto.supabase.co
SUPABASE_SERVICE_KEY=tu-service-key
# APIs de métricas
APIFY_API_TOKEN=tu-apify-token
YOUTUBE_API_KEY=tu-youtube-key
# Configuración del bot
BOT_CRON_SCHEDULE=0 */2 * * *
DAYS_THRESHOLD=7
# Notificaciones (opcional)
SLACK_WEBHOOK_URL=tu-slack-webhookchmod +x scripts/install.sh
./scripts/install.sh-
🔍 Busca posts que necesitan actualización:
- Posts con métricas de más de 7 días
- Posts sin métricas exitosas
-
📊 Obtiene métricas actualizadas:
- Instagram: Usa Apify Instagram Scraper
- TikTok: Usa Apify TikTok Scraper
- YouTube: Usa YouTube Data API
-
💬 Obtiene comentarios (opcional):
- Instagram: Usa Apify Instagram Comment Scraper
- Análisis de sentimientos con OpenAI
- Extracción de temas principales
- YouTube: Usa YouTube Data API
-
💾 Guarda en la base de datos:
- Inserta nuevas métricas en
post_metrics - Actualiza métricas en
influencer_posts
- Inserta nuevas métricas en
-
📝 Genera reportes:
- Logs detallados
- Notificaciones Slack (opcional)
1. Ejecución programada (cada 2h)
↓
2. Consulta posts antiguos en Supabase
↓
3. Para cada post:
├── Extrae ID de la URL
├── Llama a la API correspondiente
├── Convierte a formato del sistema
└── Guarda en base de datos
↓
4. Genera reporte final
# Una sola vez (testing)
npm run dev -- --once
# Ejecutar ahora
npm run dev -- --run-now
# Modo desarrollo
npm run dev# Iniciar con cron
npm startnpm run build # Compilar TypeScript
npm run start # Ejecutar en producción
npm run dev # Ejecutar en desarrollo
npm run test # Ejecutar tests
npm run lint # Verificar código
npm run format # Formatear código# Probar servicio de comentarios de Instagram
node scripts/test-instagram-comments.js
# Probar servicio de métricas y comentarios de TikTok
node scripts/test-tiktok-metrics.js- Actor:
nH2AHrwxeTRJoN5hX(Instagram Scraper) - Datos: Likes, comentarios, views, engagement rate, hashtags, mentions
- Costo: ~$0.05 por consulta
- Actor:
apify~instagram-comment-scraper(SbK00X0JYCPblD2wp) - Datos: Comentarios detallados, autores, likes, replies, timestamps
- Costo: ~$0.03 por consulta
- Actor:
clockworks~tiktok-scraper(GdWCkxBtKWOsKjdch) - Datos: Views, likes, comentarios, shares, engage rate, audio info, hashtags
- Costo: ~$0.05 por consulta
- Actor:
clockworks~tiktok-comments-scraper(BDec00yAmCm1QbMEI) - Datos: Comentarios detallados, autores, likes, replies, timestamps
- Costo: ~$0.03 por consulta
- Endpoint:
https://www.googleapis.com/youtube/v3/videos - Datos: Views, likes, comentarios, duración
- Costo: Gratis (cuota diaria)
| Variable | Descripción | Requerido |
|---|---|---|
SUPABASE_URL |
URL de Supabase | ✅ |
SUPABASE_SERVICE_KEY |
Service key de Supabase | ✅ |
APIFY_API_TOKEN |
Token de Apify (para Instagram y TikTok) | ✅ |
YOUTUBE_API_KEY |
API key de YouTube | ✅ |
BOT_CRON_SCHEDULE |
Programación cron | ❌ |
DAYS_THRESHOLD |
Días para actualización | ❌ |
SLACK_WEBHOOK_URL |
Webhook de Slack | ❌ |
# Cada 2 horas
0 */2 * * *
# Cada hora
0 * * * *
# Cada 6 horas
0 */6 * * *
# Una vez al día a las 2 AM
0 2 * * *Los logs se guardan en:
- Archivo:
./logs/bot.log - Consola: Salida en tiempo real
- Rotación: Máximo 5 archivos de 5MB cada uno
error: Errores críticoswarn: Advertenciasinfo: Información generaldebug: Información detallada
# Ver logs en tiempo real
tail -f logs/bot.log
# Ver últimos 100 logs
tail -n 100 logs/bot.log
# Buscar errores
grep "ERROR" logs/bot.logEl bot registra:
- Tiempo de procesamiento por post
- Tasa de éxito/error
- Uso de APIs
- Tiempo total de ejecución
-
Error de conexión a Supabase
# Verificar URL y service key npm run test:connection -
Error de API key
# Verificar variables de entorno echo $CREATORDB_API_KEY echo $APIFY_API_TOKEN echo $YOUTUBE_API_KEY
-
Posts no encontrados
# Verificar consultas en logs grep "Encontrados" logs/bot.log
# Modo debug
LOG_LEVEL=debug npm run dev -- --once
# Ver queries SQL
grep "SELECT" logs/bot.lognpm run build
npm startFROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY dist ./dist
CMD ["npm", "start"]npm install -g pm2
pm2 start dist/index.js --name "bot-metricas"
pm2 save
pm2 startupSi encuentras problemas:
- Revisa los logs:
tail -f logs/bot.log - Verifica las variables de entorno
- Prueba la conexión:
npm run test:connection - Ejecuta en modo debug:
LOG_LEVEL=debug npm run dev -- --once
Para soporte técnico, revisa los logs y proporciona:
- Fecha y hora del error
- Log completo del error
- Configuración de variables de entorno (sin valores sensibles)
🎉 ¡El bot está listo para mantener tus métricas actualizadas automáticamente!