A medida que tu agencia suma más clientes, mantener un alto rendimiento en todos los sitios que administras puede convertirse rápidamente en un desafío. Los plugins mal programados, las imágenes no optimizadas y los scripts de terceros pueden ralentizar los sitios de tus clientes y reducir gradualmente las puntuaciones de PageSpeed Insights (PSI).
En lugar de comprobar manualmente cada sitio de WordPress, puedes automatizar la monitorización del rendimiento en todos tus sitios y centrarte en investigar las anomalías sólo cuando surjan, ahorrando a tu equipo horas de trabajo cada mes mediante comprobaciones automatizadas sencillas y eficaces.
En este artículo, aprenderás a automatizar tu flujo de trabajo para monitorizar el rendimiento de todos los sitios de WordPress alojados en Kinsta de tu agencia utilizando conjuntamente la API de Kinsta y la API de Google PageSpeed Insights. Como paso final, aprenderás a compartir estos datos con tu equipo en tiempo real utilizando webhooks de Slack y a automatizar el proceso con un cron job.
Emocionante, ¿verdad? Empecemos.
Resumen del flujo de trabajo: de Kinsta a PageSpeed Insights y Slack
El script enlaza tres APIs. Kinsta, Google PageSpeed Insights y Slack, para automatizar la monitorización del rendimiento del sitio.
Comienza consultando la API de Kinsta para obtener los dominios y entornos de tu sitio web. Esto garantiza que tu lista de dominios se mantiene actualizada a medida que añades sitios de clientes.
Por último, el script publica estas métricas, el nombre del sitio, las tres puntuaciones y un enlace de PageSpeed Insights en un canal Slack designado.
Configurar las herramientas
Antes de programar, genera dos claves API y realiza unas configuraciones rápidas.
Utilizar la API de Kinsta: Comprueba los permisos y genera tu clave API
La API de Kinsta requiere una clave API generada desde una cuenta con permisos específicos. Para nuestro ejemplo, debería ser el propietario de la empresa o un administrador de la empresa.
Para crear una clave API de Kinsta, inicia sesión en MyKinsta y sigue estos pasos:
- Ve a la página Claves API (Tu nombre > Configuración de la empresa > Claves API).
- Haz clic en Crear Clave API.
- Establece la Caducidad y dale a tu clave un nombre único.
- Haz clic en Generar.

Ten en cuenta que ésta es la única vez que podrás ver tu clave API. Cópiala y guárdala en un lugar seguro.
Lo segundo que necesitas es el ID de tu empresa MyKinsta. Puedes encontrarlo fácilmente en la cadena de consulta de la URL de tu panel de MyKinsta (busca el parámetro idCompany).
Con estos datos, puedes acceder a la API de Kinsta y utilizar cURL para solicitar una lista de los sitios de tu empresa. Abre tu herramienta de línea de comandos favorita e introduce el siguiente comando, sustituyendo <YOUR_COMPANY_ID> y <YOUR_API_KEY> por tus credenciales.
curl -X GET "https://api.kinsta.com/v2/sites?company=<YOUR_COMPANY_ID>"
-H "Authorization: Bearer <YOUR_API_KEY>"
Si tu ID de empresa y tu clave API son correctos, deberías recibir una respuesta JSON con la siguiente estructura:
{
"company": {
"sites": [
{
"id": "YOUR_SITE_ID",
"name": "my-wordpress-website",
"display_name": "My WordPress website",
"status": "live",
"site_labels": []
}
]
}
}
Como puedes ver, a esta respuesta le falta un dato esencial: la URL del sitio web. Para recuperar el dominio principal de cada entorno, añadirás el parámetro include_environments=true a la cadena de consulta. Con este parámetro, la API también devuelve datos detallados de cada entorno (en producción y staging), incluido el dominio primario. Aquí tienes una respuesta genérica:
{
"company": {
"sites": [
{
"id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"name": "firstsite",
"display_name": "First site",
"status": "live",
"siteLabels": [
{
"id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"name": "Do not remove"
}
],
"environments": [
{
"id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"name": "live",
"display_name": "Live",
"is_blocked": false,
"id_edge_cache": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"cdn_cache_id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"is_opt_out_from_automatic_php_update": false,
"web_root": "/release_v1",
"image_optimization_type": "lossy",
"is_additional_sftp_accounts_enabled": false,
"is_premium": false,
"wordpress_version": "6.3.1",
"domains": [ ... ],
"primaryDomain": {
"id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"name": "example.com",
"site_id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"is_active": true,
"type": "live"
},
"ssh_connection": { ... }
},
"container_info": { ... }
}
]
}
]
}
}
A continuación, tienes que generar una solicitud de Google PageSpeed Insights y una clave API.
Generar una clave API para Google PageSpeed Insights
El siguiente paso es crear una clave API para acceder al servicio Google PageSpeed Insights. Accede a Google Cloud Console y sigue estos pasos:
Paso 1: Crea un nuevo proyecto o abre uno existente. Para este artículo, hemos creado un nuevo proyecto de Monitorización del Rendimiento.

Paso 2: Navega hasta APIs & Services > Library, luego busca PageSpeed Insights API en la parte inferior de la página y haz clic en el botón.

Paso 3: En la página siguiente, haz clic en Activar.

Paso 4: Haz clic en Crear credenciales en la pestaña Credenciales.

Paso 5: Para mayor seguridad, te recomendamos que establezcas restricciones para la clave recién creada seleccionando sólo la API de PageSpeed Insights.

Tu clave API de PageSpeed Insights ya está lista para ser utilizada. Es necesario configurar un último servicio. Necesitas crear una nueva app de Slack.
Crear una app de Slack y configurar el Webhook Entrante
Para enviar mensajes a un canal específico de Slack, necesitas crear una aplicación Slack. Sigue estos pasos:
Paso 1: Si utilizas Slack activamente para colaborar con tu equipo, entonces tienes un espacio de trabajo activo. Si no es así, consulta la documentación de Slack para crear uno. Para este ejemplo, supondremos que ya tienes un espacio de trabajo Mi Empresa.
Paso 2: Ve al panel de control de la API de Slack y haz clic en Crear una aplicación (o Crear una nueva aplicación si no es tu primera aplicación).

Paso 3: Se te pedirá que configures los ámbitos y ajustes de tu app. Selecciona Desde cero.

Paso 4: A continuación, asigna un nombre a tu aplicación (por ejemplo, Performance Bot) y selecciona tu espacio de trabajo.

Paso 5: Selecciona Webhooks entrantes en la barra lateral izquierda y haz clic en Activado. A continuación, haz clic en Añadir Nuevo Webhook en la parte inferior de la página.

Paso 6: Copia la URL del webhook y guárdala para futuras consultas.

Ya tienes todo lo que necesitas para crear un script que te permita compartir automáticamente las métricas de rendimiento de tu sitio web con tu equipo en Slack. Es hora de sumergirse en el código.
Un script PHP para automatizar la monitorización del rendimiento
El siguiente paso es crear un script que se comunique con los tres servicios mencionados para monitorizar automáticamente el rendimiento de todos los sitios de los clientes de la agencia alojados en Kinsta.
Paso 1: Configuración del script
En tu editor de código favorito, crea un nuevo archivo .php y añade el siguiente código:
<?php
$kinsta_api_key = 'YOUR_KINSTA_API_KEY';
$kinsta_company_id = 'YOUR_COMPANY_UUID';
$google_api_key = 'YOUR_GOOGLE_API_KEY';
$slack_webhook_url = 'YOUR_SLACK_WEBHOOK_URL';
echo "--- STARTING PERFORMANCE MONITORING ---n";
Sustituye los marcadores de posición por los datos reales que recuperaste anteriormente.
Paso 2: Utilizar la API de Kinsta para recuperar una lista de sitios de la empresa
Para obtener la lista de sitios de tu cuenta Kinsta, necesitas utilizar la API v2 de Kinsta y el endpoint /sites.
A continuación te explicamos cómo acceder a la API mediante cURL:
// 1. Fetch the list of sites from Kinsta
$url_kinsta = "https://api.kinsta.com/v2/sites?company=" . $kinsta_company_id . "&include_environments=true";
$ch = curl_init($url_kinsta);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer ' . $kinsta_api_key]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res_kinsta = curl_exec($ch);
$data_kinsta = json_decode($res_kinsta, true);
curl_close($ch);
$sites = $data_kinsta['company']['sites'] ?? [];
echo "Found " . count($sites) . " sites to analyze.n";
Ten en cuenta que utilizamos el parámetro de consulta includes_environments=true para recuperar los detalles del entorno (en producción y staging).
A continuación, consulta la API de Google PSI y envía los datos a la aplicación Slack.
Métricas de PageSpeed Insights y notificaciones de Slack
Ahora, tienes que enviar la URL de cada sitio recuperado a la API de PageSpeed Insights. Cuando llamas al servicio, PageSpeed Insights ejecuta una comprobación de rendimiento y devuelve un objeto que contiene métricas de rendimiento. Tu script enviará estos datos a la API de Slack, que generará los mensajes correspondientes.
Aquí tienes el código que debes añadir a tu script:
foreach ($sites as $site) {
$site_label = $site['display_name'];
$primary_domain = "";
// 2. Search the downloaded data directly for the live environment
$environments = $site['environments'] ?? [];
foreach ($environments as $env) {
if ($env['name'] === 'live') {
$raw_domain = $env['primaryDomain'] ?? $env['primary_domain'] ?? null;
$primary_domain = is_array($raw_domain) ? ($raw_domain['name'] ?? "") : $raw_domain;
break;
}
}
if (empty($primary_domain)) {
echo "Skipping $site_label (No Live domain found).n";
continue;
}
echo "Analyzing $primary_domain... ";
// 3. PageSpeed analysis
$psi_url = "https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=https://" . urlencode($primary_domain) . "&key=$google_api_key&category=performance&strategy=mobile";
$res_psi = @file_get_contents($psi_url);
if ($res_psi === false) {
echo "PSI Error.n";
continue;
}
$data_psi = json_decode($res_psi, true);
$score = ($data_psi['lighthouseResult']['categories']['performance']['score'] ?? 0) * 100;
$fcp = $data_psi['lighthouseResult']['audits']['first-contentful-paint']['displayValue'] ?? 'N/A';
$lcp = $data_psi['lighthouseResult']['audits']['largest-contentful-paint']['displayValue'] ?? 'N/A';
// 4. Send rich notification to Slack
$report_link = "https://pagespeed.web.dev/analysis?url=https://" . $primary_domain . "&strategy=mobile";
$slack_msg = [
"text" => "🚀 *Performance Report: $site_label*nURL: `https://$primary_domain` nn" .
"• *Score:* `$score` n" .
"• *FCP:* $fcp n" .
"• *LCP:* $lcpnn" .
"[ <$report_link|View Full Report> ]"
];
$ch = curl_init($slack_webhook_url);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($slack_msg));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);
echo "Done.n";
}
echo "--- MONITORING COMPLETED ---n";
En resumen, este código itera sobre los elementos del array $sites. Para cada elemento del array, recupera Core Web Vitals y publica un mensaje en Slack.
Probar el script
Puedes conectarte a tu contenedor mediante SSH y ejecutar tu script PHP directamente desde el terminal. Esto te permite solucionar rápidamente los problemas de tu script y recibir los resultados de rendimiento en Slack en tiempo real.
En MyKinsta, navega hasta Sitios > Nombre del sitio. Desplázate hacia abajo hasta la sección Usuario SFTP/SSH principal y busca el campo Comando de terminal SSH. Debería tener este aspecto:
ssh wordpress@host-name -p port-number
Copia el comando de terminal SSH y pégalo en el terminal. Se te pedirá que introduzcas la contraseña proporcionada en la misma sección. Pulsa Intro y estarás conectado a tu entorno contenedor.

Ahora puedes probar tu código. Desde la línea de comandos, navega hasta la carpeta donde subiste el script. En este ejemplo, hemos utilizado la carpeta public:
cd public
A continuación, utiliza el siguiente comando para ejecutar el script:
php performance-monitor.php
El script muestra un mensaje por cada acción que realiza. Una vez que haya terminado de ejecutarse, deberías ver una lista de mensajes similar a la siguiente:
--- STARTING FULL PERFORMANCE MONITORING ---
Found 5 sites to analyze.
Analyzing site1.kinsta.cloud... Done.
Analyzing site2.kinsta.cloud... Done.
Analyzing site3.kinsta.cloud... Done.
Analyzing example.com... Done.
Analyzing site5.kinsta.cloud... Done.
--- MONITORING COMPLETED ---
Si PSI no responde a tiempo, el script pasa al siguiente sitio. En este caso, verás un mensaje parecido al siguiente:
--- STARTING FULL PERFORMANCE MONITORING ---
Found 5 sites to analyze.
Analyzing site1.kinsta.cloud... Done.
Analyzing site2.kinsta.cloud... Done.
Analyzing site3.kinsta.cloud... Done.
Analyzing example.com... PSI Error.
Analyzing site5.kinsta.cloud... Done.
--- MONITORING COMPLETED ---
A medida que el script procesa las respuestas de Google PSI, envía un mensaje a tu canal de Slack. Por cada sitio analizado con éxito por PSI, deberías ver un mensaje de Slack bastante similar al siguiente:

Impresionante. Acabas de crear tu sistema de monitorización automatizado.
Ahora, es posible que quieras ajustarlo para que se adapte a tus necesidades específicas. Por ejemplo, si gestionas cientos de sitios de clientes, enviar un mensaje de Slack para cada sitio podría resultar ineficaz.
Pero puedes configurar una condición que compruebe la puntuación global de tu sitio y envíe un mensaje al canal de Slack solo si el valor devuelto por la API de PSI está por debajo de un umbral específico (por ejemplo, 90). El siguiente código sería suficiente:
$threshold = 90;
// 4. Send rich notification to Slack
// The alert is triggered only if the current score is strictly lower than our limit.
if ($score < $threshold) {
echo "Score below threshold. Sending Slack alert... ";
$report_link = "https://pagespeed.web.dev/analysis?url=https://" . $primary_domain . "&strategy=mobile";
// Prepare the Slack message
$slack_msg = [
"text" => "⚠️ *Performance Alert: $site_label*nThe site score has dropped below the threshold of *$threshold*!nn" .
"• *Score:* `$score` n" .
"• *FCP:* $fcp n" .
"• *LCP:* $lcpnn" .
"[ <$report_link|View Full Audit Report> ]"
];
// Execute the CURL request to the Slack Webhook
$ch = curl_init($slack_webhook_url);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($slack_msg));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);
echo "Done.n";
} else {
echo "Score is optimal ($score). No alert sent.n";
}
Actualiza tu script, guarda el archivo y cárgalo de nuevo. A continuación, conéctate al servidor mediante SSH, navega hasta la carpeta correspondiente y ejecuta de nuevo el siguiente comando:
php performance-monitor.php
Si elegiste un nombre diferente para tu script, modifica el comando en consecuencia.
El terminal debería mostrar ahora una secuencia de mensajes similar a la siguiente:
--- STARTING FULL PERFORMANCE MONITORING ---
Found 5 sites to analyze.
Analyzing site1.kinsta.cloud... Score is optimal (100). No alert sent.
Analyzing site2.kinsta.cloud... Score is optimal (95). No alert sent.
Analyzing site3.kinsta.cloud... Score is optimal (100). No alert sent.
Analyzing example.com... Score below threshold. Sending Slack alert... Done.
Analyzing site5.kinsta.cloud... Score below threshold. Sending Slack alert... Done.
--- MONITORING COMPLETED ---
En Slack, recibirás un mensaje por cada sitio con una puntuación global inferior al umbral de 90.

Es estupendo, ¿verdad? Pero puedes optimizar el proceso aún más. ¿No te gustaría ahorrar aún más tiempo ejecutando el script automáticamente a intervalos determinados sin necesidad de acceder a tu herramienta de línea de comandos?
Sí, lo has adivinado. Necesitas un cron job.
Automatizar el proceso utilizando un cron job.
Hay varias formas de configurar un cron job en Kinsta. Aunque puedes hacerlo a través de WordPress, los usuarios de Kinsta pueden añadir cron jobs del servidor a cada contenedor de sitio.
Para configurar un cron job en Kinsta, crea un comando cron y añádelo al archivo crontab de tu contenedor a través de SSH.
Por ejemplo, puedes utilizar un comando como el siguiente:
0 10 * * * /usr/bin/php /www/yoursite_123/public/your-script.php >> /www/yoursite_123/performance_monitor.log 2>&1
Esto es lo que hace este comando:
0 10 * * *establece el script para que se ejecute todos los días a las 10 AM./usr/bin/phpes la ruta absoluta del intérprete PHP en el servidor./www/yoursite_123/public/your-script.phpes la ruta absoluta del script. Asegúrate de comprobar la ruta y el nombre real de tu script en el servidor.- El operador
>>(redirección append) añade nuevos datos al final del archivo especificado. /www/yoursite_123/performance_monitor.logindica el archivo en el que se guardará todo el texto impreso por el script.- El comando
2>&1indica al servidor que dirija los errores al mismo archivo.
No vamos a entrar en más detalles sobre los comandos cron aquí. Puedes consultar la documentación de The Open Group o utilizar una herramienta crontab, como Crontab Generator o Cronitor.
Después de crear tu comando cron, tienes que añadirlo al contenedor de tu sitio. Puedes pedir a nuestro equipo de soporte que lo haga por ti o hacerlo tú mismo a través de SSH. Si eliges esta última opción, empieza escribiendo el siguiente comando:
crontab -e
Se te pedirá que selecciones un editor. Elige «nano» si no estás seguro.
En el editor, pega tu comando al final del archivo. Guarda el archivo y vuelve a la línea de comandos. Deberías ver un mensaje confirmando que los cambios se han realizado correctamente.
crontab installing new crontab
Ya está. Ahora el script se ejecutará a intervalos determinados y enviará un mensaje al canal Slack que elijas con las métricas solicitadas para los sitios de tus clientes cuyo rendimiento sea bajo.
Ampliación: ¿Qué más puedes automatizar con la API de Kinsta?
El script presentado en este artículo puede personalizarse y ampliarse aún más. Por ejemplo, podrías integrar otros servicios, como Trello o Asana, exportar datos o enviar resúmenes periódicos por correo electrónico a los clientes.
Automatizar tus comprobaciones de rendimiento en los sitios de tus clientes es sólo el principio. Integrar la API de Kinsta con las herramientas diarias de tu equipo puede transformar las operaciones de tu agencia, eliminando las tareas manuales de gestión y mantenimiento del sitio, mejorando la eficiencia y reduciendo los costes operativos. También mejorarás la calidad del servicio, reducirás los plazos de entrega y garantizarás la mejor experiencia posible a tus clientes.
La API de Kinsta te permite automatizar diversas tareas, como crear entornos staging, enviar selectivamente cambios del entorno staging al de producción, acceder a registros de errores, borrar la caché del sitio, gestionar copias de seguridad y mucho más. Estas funcionalidades facilitan y agilizan la gestión de sitios de WordPress, lo que te permite crecer con confianza.
¿Listo para llevar a tu agencia al siguiente nivel? Explora nuestros planes o ponte en contacto con nuestro equipo de ventas para hablar de tus necesidades específicas.
¡Feliz escalada!