Guía de desarrollo de plugins para SkyCaiji: Creación desde cero de un módulo personalizado de publicación

Desarrollo de módulos personalizados de publicación en SkyCaiji

SkyCaiji es un sistema de scraping open source y gratuito que permite capturar datos simplemente mediante la edición de reglas visuales. Puede ejecutarse localmente, en hosts virtuales o servidores en la nube, y es capaz de extraer contenido de casi cualquier tipo de página web. Su integración con múltiples CMS es fluida, permitiendo la publicación automática sin necesidad de inicio de sesión, todo de forma completamente autónoma. Este artículo te guiará paso a paso en el proceso de crear tu propio módulo de publicación personalizado.

Preparación del entorno de desarrollo

Antes de comenzar, asegúrate de tener instalado PHP junto con Composer como gestor de dependencias. Clona el repositorio del proyecto usando:

git clone https://gitcode.com/gh_mirrors/sk/skycaiji

Accede al directorio del proyecto y ejecuta:

cd skycaiji && composer install

Estructura de directorios clave

El sistema de plugins de SkyCaiji está diseñado de forma modular. Todos los plugins se alojan en la carpeta plugin/, donde los módulos de publicación se encuentran en plugin/release/. Dentro de esta ruta:

  • plugin/release/cms/: contiene integraciones con CMS.
  • plugin/release/diy/: almacena módulos de publicación personalizados.

Clases base fundamentales:

  • BaseCms.php: clase base para módulos de CMS.
  • BaseDiy.php: clase base para módulos persoanlizados.

Paso a paso: creación del módulo personalizado

  1. Estructura básica del plugin

Crea una nueva carpeta dentro de plugin/release/diy/ utilizando un identificador único (por ejemplo, mycustom). Cada módulo debe incluir al menos dos archivos:

  • Archivo principal del módulo (ej. MyCustomRelease.php)
  • Vista de formulario de configuración (ej. view/form.html)
  1. Implementación de la clase principal

Define el archivo principal heredando de BaseDiy y sobrescribiendo los métodos requeridos:

<?php
namespace plugin\release\diy\mycustom;

use plugin\release\diy\BaseDiy;

class MyCustomRelease extends BaseDiy {
    public function info() {
        return [
            'name' => 'Módulo de Publicación Personalizado',
            'desc' => 'Ejemplo de integración personalizada',
            'author' => 'Tu Nombre',
            'version' => '1.0'
        ];
    }

    public function publish($data) {
        if ($this->sendToApi($data)) {
            return ['status' => 1, 'msg' => 'Publicación exitosa'];
        }
        return ['status' => 0, 'msg' => 'Error durante la publicación'];
    }
}

  1. Diseño del formulario de configuración

En view/form.html, define los campos necesarios para la configuración del módulo:

<div class="form-group">
    <label>URL de la API</label>
    <input type="text" name="endpoint" class="form-control" required>
</div>
<div class="form-group">
    <label>Clave de acceso</label>
    <input type="password" name="token" class="form-control" required>
</div>

  1. Lógica de envío de datos

Implementa la lógica de comunicación con el servicio destino dentro del método publish():

private function sendToApi($payload) {
    $url = $this->config['endpoint'];
    $authToken = $this->config['token'];

    $client = curl_init();
    curl_setopt($client, CURLOPT_URL, $url);
    curl_setopt($client, CURLOPT_POST, true);
    curl_setopt($client, CURLOPT_POSTFIELDS, http_build_query($payload));
    curl_setopt($client, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer {$authToken}",
        "Content-Type: application/x-www-form-urlencoded"
    ]);
    curl_setopt($client, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($client);
    curl_close($client);

    $result = json_decode($response, true);
    return isset($result['status']) && $result['status'] === 'success';
}

Pruebas y depuración

Para probar tu plugin:

  1. Copia la carpeta completa al directorio plugin/release/diy/.
  2. Accede al panel de administración de SkyCaiji.
  3. Ve a Gestión de Publicación > Módulos.
  4. Haz clic en Agregar módulo personalizado, selecciona tu plugin y configura los parámetros.
  5. Ejecuta una tarea de prueba para validar el funcionamiento.

Errores comunes y soluciones

  • Configuración no aplicada: verifica que los nombres de los campos en el formulario coincidan exactamente con las claves usadas en $this->config['campo'].
  • Fallo en la publicación: activa el modo de depuración y revisa los registros en data/log/.
  • Módulo no visible: asegúrate de que el nombre del archivo coincida con el nombre de la clase y que el espacio de nombres sea correcto.

Empaquetado y distribución

Un plugin válido debe seguir esta estructura:

mycustom/
├── view/
│   └── form.html
└── MyCustomRelease.php

Una vez listo, puedes compartirlo en comunidades oficiales o plataformas de código abierto para ayudar a otros usuarios a ampliar las funcionalidades del sistema.

Funcionalidades avanzadas

Gestión múltiple de cuentas

Extiende el módulo para soportar varias credenciales:

public function getCredentials() {
    return $this->config['credentials'] ?? [];
}

Plantillas dinámicas

Agrega soporte para renderizado de contenido personalizado:

public function applyTemplate($content, $templateName) {
    // Lógica para aplicar plantillas predefinidas
}

Con esta guía, ya estás preparado para desarrollar módulos de publicación adaptados a tus necesidades específicas — ya sea integrarte con sistemas internos, plataformas externas o automatizar flujos de trabajo personalizados. Comienza hoy mismo a crear tu primer plugin.

Etiquetas: SkyCaiji PHP Plugin Development Web Scraping API Integration

Publicado el 8-7 16:08