Skip to main content
Labeler es una función para usuarios avanzados. Como tiene que ejecutarse continuamente como servidor, está pensado para personas que usen Laravel Forge o puedan montar un servidor por su cuenta. No se recomienda para quienes empiezan con Laravel. No hay soporte.Laravel Cloud no es compatible. Labeler necesita ejecutarse permanentemente como servidor WebSocket y modificar la configuración de nginx, pero Laravel Cloud no permite editar la configuración de nginx, así que no se puede ejecutar Labeler ahí.

¿Qué es Labeler?

Labeler es un servicio de AT Protocol (Bluesky) que aplica etiquetas al contenido. Se puede aprovechar para moderación, clasificación de contenido, filtrado personalizado y más. Es necesario entender previamente el concepto de Labeler. Los starter kits para otros lenguajes también son buenas referencias. Implementaciones de ejemplo:

Preparación

Para ejecutar Labeler necesitas lo siguiente.
  • Una cuenta nueva de Bluesky dedicada al Labeler (no uses tu cuenta habitual)
  • Un proyecto Laravel nuevo dedicado al Labeler (se recomienda separarlo del resto)
  • Un (sub)dominio
  • Un servidor Linux de producción, como VPS o AWS EC2 (no valen Laravel Cloud, Laravel Vapor ni Vercel)
Si solo dispones de hosting compartido, es difícil operar Labeler.

Instalación de paquetes adicionales

Configuración

Primero, genera la clave privada.
Añade la clave privada generada y los valores de configuración relacionados en .env.

Crear la clase Labeler

Crea una clase Labeler propia que herede de AbstractLabeler. Puedes ubicar el archivo donde prefieras.
Como el paquete se encarga de la mayor parte del procesamiento del Labeler, solo tienes que implementar las partes que quieras personalizar.
Implementación de ejemplo: ArtisanLabeler.php

labels()

Devuelve las definiciones de etiqueta. Las constantes del starter kit de skyware sirven como referencia.

subscribeLabels()

Se invoca justo después de la conexión WebSocket. Devuelve un iterador de SubscribeLabelResponse.

emitEvent()

Se invoca cuando llega una solicitud para añadir o eliminar etiquetas. Devuelve un iterador de UnsignedLabel.

saveLabel()

Guarda la etiqueta firmada en la base de datos. Devuelve un SavedLabel.
Para la migración y el modelo Eloquent, consulta los ejemplos incluidos en el paquete.

createReport()

Se invoca cuando el usuario envía una apelación u otro tipo de informe.

queryLabels()

Consulta las etiquetas vía HTTP API en lugar de WebSocket. Bluesky no lo utiliza oficialmente; lo usan terceros. Si no lo necesitas, devuelve un array vacío.

Registro en AppServiceProvider

Registra la clase Labeler creada en AppServiceProvider::boot().

Configuración de la cuenta

Inicializa la cuenta como cuenta Labeler.
En este comando debes introducir la contraseña real de la cuenta, no una app password. Durante el proceso recibirás un correo de confirmación titulado “PLC Update Operation Requested”; sigue las indicaciones del comando y responde.
Si la URL del endpoint está bien configurada, también puedes ejecutarlo desde el entorno local.

Declaración de las definiciones de etiquetas

Registra las definiciones de etiquetas en la cuenta Labeler.
Este comando también se puede ejecutar desde el entorno local.

Otros comandos

Eliminar las definiciones de etiquetas:
Revertir la cuenta Labeler a una cuenta normal:

Ejecución con Laravel Forge

Tras activar el SSL, inicia el servidor Labeler con la siguiente configuración.

Configuración de nginx

Añade tres bloques location a la configuración nginx de Forge.

Script de despliegue

Detén el servidor Labeler al desplegar. Después de detenerlo, Supervisor lo reiniciará automáticamente.

Configuración del proceso en segundo plano (daemon)

En la pantalla de configuración de procesos en segundo plano de Forge, selecciona la pestaña Custom, no la de Queue Worker. Comando:
Si vas a ejecutarlo junto con Jetstream o Firehose, especifica las opciones. No puedes ejecutarlo al mismo tiempo que los comandos bluesky:ws o bluesky:firehose.

Aplicar etiquetas

Cómo aplicas las etiquetas depende de la implementación de tu aplicación. En el ejemplo se usan los eventos de Laravel para aplicar etiquetas “cuando alguien te sigue”.
Se recomienda aplicar el etiquetado también con la programación de tareas para cubrir posibles eventos que se pierdan.
Última modificación el 13 de julio de 2026