Implementación de un Dashboard de Métricas de LinkedIn con Sincronización Programada
El Desafío
En el proyecto landing de devlog-ist, necesitábamos una forma de rastrear la interacción del usuario con nuestras publicaciones de LinkedIn. Esto incluía reacciones y comentarios para usuarios premium. El objetivo era integrar estas métricas en el panel de administración de Filament.
La Solución
Implementamos un widget de dashboard que muestra las métricas de las publicaciones de LinkedIn, junto con una sincronización programada para mantener los datos actualizados.
Componentes Clave
- SocialMetadata API: Utilizamos esta API para obtener las métricas de interacción (reacciones, comentarios) de las publicaciones de LinkedIn.
- Widget de Dashboard de Filament: Creamos un widget personalizado para el panel de administración de Filament que muestra las estadísticas agregadas.
- Tarea de Sincronización Programada: Establecimos una tarea que se ejecuta dos veces al día para sincronizar las métricas de LinkedIn de forma programada.
- Migración de Datos: Se creó una migración para rellenar los URNs de las publicaciones existentes.
Implementación
El proceso involucró los siguientes pasos:
- Obtención de Datos: La tarea programada utiliza la SocialMetadata API de LinkedIn para recuperar las métricas de cada publicación. Un proceso genérico seria así:
$posts = Post::all();
foreach ($posts as $post) {
$metrics = SocialMetadata::getMetrics($post->urn);
$post->update(['reactions' => $metrics['reactions'], 'comments' => $metrics['comments']]);
}
- Almacenamiento de Datos: Las métricas obtenidas se almacenan en la base de datos, asociadas a la publicación correspondiente en una tabla
social_metrics. - Visualización en el Dashboard: El widget del dashboard de Filament consulta la base de datos para mostrar las estadísticas de las publicaciones.
Programación de la Tarea
La tarea de sincronización se configura para ejecutarse dos veces al día utilizando el programador de tareas de Laravel:
// app/Console/Kernel.php
protected function schedule(Schedule $schedule)
{
$schedule->job(new SyncLinkedInMetrics())->twiceDaily(10, 14); //Ejecutar a las 10:00 y a las 14:00
}
Migración de Datos
Se creó una migración para rellenar el campo urn de las publicaciones existentes con la información de LinkedIn SocialMetadata:
// migrations/xxxx_xx_xx_create_social_metrics_table.php
public function up()
{
Schema::create('social_metrics', function (Blueprint $table) {
$table->id();
$table->foreignId('post_id')->constrained();
$table->integer('reactions')->default(0);
$table->integer('comments')->default(0);
$table->timestamps();
});
}
Conclusión
La implementación de este dashboard permite a los usuarios premium de devlog-ist visualizar y analizar la interacción de sus publicaciones de LinkedIn directamente desde el panel de administración de Filament. La sincronización programada garantiza que los datos estén siempre actualizados, proporcionando información valiosa para la toma de decisiones.