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
- 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)
- 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'];
}
}
- 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>
- 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:
- Copia la carpeta completa al directorio
plugin/release/diy/. - Accede al panel de administración de SkyCaiji.
- Ve a Gestión de Publicación > Módulos.
- Haz clic en Agregar módulo personalizado, selecciona tu plugin y configura los parámetros.
- 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.