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

  1. SocialMetadata API: Utilizamos esta API para obtener las métricas de interacción (reacciones, comentarios) de las publicaciones de LinkedIn.
  2. Widget de Dashboard de Filament: Creamos un widget personalizado para el panel de administración de Filament que muestra las estadísticas agregadas.
  3. 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.
  4. 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:

  1. 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']]);
}
  1. 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.
  2. 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.

Implementación de un Dashboard de Métricas de LinkedIn con Sincronización Programada
Gerardo Ruiz

Gerardo Ruiz

Author

Share: