CRON PHP
Endpoint privado para integrar tracking MSC desde un cron PHP o una IA/agente. Necesitás un API token msc_... creado por Ignacio desde el panel admin.
Endpoint principal para cron
GET https://msc-vercel-supabase.vercel.app/msc-api/track/MEDU9730548
Header: X-Api-Key: msc_TU_TOKEN
Qué te devuelve
{
"json": { "container": "MEDU9730548", "events": [] },
"screenshot": "iVBORw0KGgo...",
"screenshot_format": "png"
}
PHP listo para cron
Reemplazá msc_TU_TOKEN por el token que te pase Ignacio y MEDU9730548 por tu container.
<?php
$API_BASE = "https://msc-vercel-supabase.vercel.app/msc-api";
$API_KEY = "msc_TU_TOKEN";
$container = "MEDU9730548";
$ch = curl_init($API_BASE . "/track/" . urlencode($container));
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 180,
CURLOPT_HTTPHEADER => [
"X-Api-Key: " . $API_KEY,
"Accept: application/json",
],
]);
$body = curl_exec($ch);
$http = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$err = curl_error($ch);
curl_close($ch);
if ($body === false || $http !== 200) {
error_log("MSC tracker error http=$http err=$err body=" . substr((string)$body, 0, 500));
exit(1);
}
$data = json_decode($body, true);
if (!is_array($data)) {
error_log("MSC tracker: JSON invalido");
exit(1);
}
// Metadata parseada por el worker:
$tracking = $data["json"] ?? [];
// Screenshot opcional:
if (!empty($data["screenshot"])) {
file_put_contents(__DIR__ . "/msc-" . $container . ".png", base64_decode($data["screenshot"]));
}
print_r($tracking);
Delay / frecuencia recomendada
El endpoint dispara scraping contra MSC. No conviene llamarlo en ráfaga. La frecuencia la decide el cron de quien consume la API.
- Para un container: cada 6 a 12 horas suele ser razonable.
- Para varios containers: procesarlos en loop con delay random entre llamadas.
- Si recibís
502o timeout: esperar y reintentar una sola vez.
// Si tenés varios containers:
$containers = ["MEDU9730548", "OTRO1234567"];
foreach ($containers as $container) {
// llamar API para $container...
// delay random entre 20 y 90 segundos para no pegarle en ráfaga a MSC
sleep(random_int(20, 90));
}
Reglas de uso
- No llames el endpoint muchas veces seguidas. MSC puede bloquear scraping agresivo.
- Si hay varios containers, agregá delay random entre llamadas.
- Si recibís 401, el token está mal o fue revocado.
- Si recibís 502/timeout, esperá y reintentá una vez.
Para una IA / agente
Si querés darle esto a una IA, crear token con scope track,context y pasarle:
GET https://msc-vercel-supabase.vercel.app/msc-api/llm/context
Header: X-Api-Key: msc_TU_TOKEN
Ese endpoint devuelve JSON con base URL, auth, acción disponible, ejemplo de request, forma de respuesta y reglas operativas.