Quando la tua agenzia acquisisce nuovi clienti, mantenere alte le prestazioni di tutti i siti che gestisci può diventare una sfida. Plugin mal codificati, immagini non ottimizzate e script di terze parti possono rallentare i siti dei clienti e abbassare gradualmente i punteggi di PageSpeed Insights (PSI).
Invece di controllare manualmente ogni sito WordPress, puoi automatizzare il monitoraggio delle prestazioni di tutti i tuoi siti e concentrarti sull’analisi delle anomalie solo quando si presentano, risparmiando al tuo team ore di lavoro ogni mese grazie a controlli automatici semplici ed efficaci.
In questo articolo vedremo come automatizzare il flusso di lavoro per il monitoraggio delle prestazioni di tutti i siti WordPress della tua agenzia ospitati da Kinsta utilizzando sia l’API di Kinsta che l’API di Google PageSpeed Insights. Come ultimo passo, scopriremo anche come condividere questi dati con il tuo team in tempo reale utilizzando i webhook di Slack e ad automatizzare il processo con un cron job.
Interessante, vero? Iniziamo.
Panoramica del flusso di lavoro: da Kinsta a PageSpeed Insights a Slack
Lo script collega tre API: Kinsta, Google PageSpeed Insights e Slack, per automatizzare il monitoraggio delle prestazioni del sito.
Inizia interrogando l’API di Kinsta per recuperare i domini e gli ambienti del sito web. In questo modo l’elenco dei domini rimane aggiornato man mano che si aggiungono siti di clienti.
Poi, per ogni sito restituito dall’API di Kinsta, lo script utilizza l’API di Google PSI per estrarre le metriche chiave: Punteggio di performance (0-100), First Contentful Paint (FCP) e Largest Contentful Paint (LCP).
Infine, lo script invia queste metriche, il nome del sito, i tre punteggi e un link a PageSpeed Insights a un canale Slack designato.
Impostazione degli strumenti
Prima di procedere con la codifica, genera due chiavi API ed effettua una rapida configurazione.
Utilizzo dell’API di Kinsta: verificare i permessi e generare la chiave API
L’API di Kinsta richiede una chiave API generata da un account con permessi specifici. Nel nostro esempio, dovrebbe essere il proprietario dell’azienda o un amministratore dell’azienda.
Per creare una chiave API Kinsta, accedi a MyKinsta e segui questi passaggi:
- Vai alla pagina delle chiavi API (Il tuo nome > Impostazioni Azienda > Chiavi API).
- Clicca su Crea chiave API.
- Imposta la scadenza e assegna alla chiave un nome univoco.
- Clicca su Genera.

Nota che questo è l’unico momento in cui potrai vedere la tua chiave API. Copiala e conservala in un luogo sicuro.
La seconda cosa di cui avrai bisogno è il tuo ID azienda MyKinsta. Puoi trovarlo facilmente nella query string dell’URL della tua dashboard MyKinsta (cerca il parametro idCompany ).
Con questi dati, puoi accedere all’API di Kinsta e utilizzare cURL per richiedere un elenco dei siti aziendali. Apri il tuo strumento a riga di comando preferito e inserisci il seguente comando, sostituendo <YOUR_COMPANY_ID> e <YOUR_API_KEY> con le tue credenziali.
curl -X GET "https://api.kinsta.com/v2/sites?company=<YOUR_COMPANY_ID>"
-H "Authorization: Bearer <YOUR_API_KEY>"
Se l’ID dell’azienda e la chiave API sono corretti, dovresti ricevere una risposta JSON strutturata come segue:
{
"company": {
"sites": [
{
"id": "YOUR_SITE_ID",
"name": "my-wordpress-website",
"display_name": "My WordPress website",
"status": "live",
"site_labels": []
}
]
}
}
Come puoi vedere, a questa risposta manca un’informazione essenziale: l’URL del sito web. Per recuperare il dominio primario di ogni ambiente, dovrai aggiungere il parametro include_environments=true alla stringa di query. Con questo parametro, l’API restituisce anche dati dettagliati per ogni ambiente (live e staging), compreso il dominio primario. Ecco una risposta generica:
{
"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": { ... }
}
]
}
]
}
}
Successivamente, dovrai generare un’applicazione Google PageSpeed Insights e una chiave API.
Generare una chiave API per Google PageSpeed Insights
Il passo successivo consiste nel creare una chiave API per accedere al servizio Google PageSpeed Insights. Accedi a Google Cloud Console e segui i passaggi qui sotto.
Passo 1: crea un nuovo progetto o aprine uno esistente. Per questo articolo abbiamo creato un nuovo progetto di monitoraggio delle prestazioni.

Passo 2: vai su API e servizi > Libreria, poi cerca PageSpeed Insights API in fondo alla pagina e clicca sul pulsante.

Passo 3: nella pagina successiva, clicca su Abilita.

Passo 4: clicca su Crea credenziali nella scheda Credenziali.

Fase 5: per una maggiore sicurezza, ti consigliamo di impostare delle restrizioni per la chiave appena creata, selezionando solo l’API di PageSpeed Insights.

La tua chiave API di PageSpeed Insights è ora pronta per essere utilizzata. È necessario configurare un ultimo servizio. Devi creare una nuova app Slack.
Creare un’app Slack e configurare il Webhook in entrata
Per inviare messaggi a un canale Slack specifico, devi creare un’applicazione Slack. Segui questi passaggi:
Passo 1. Se utilizzi attivamente Slack per collaborare con il tuo team, allora hai uno spazio di lavoro attivo. In caso contrario, consulta la documentazione di Slack per crearne uno. Per questo esempio, supporremo che tu abbia un’area di lavoro My Company già esistente.
Passo 2. Vai alla dashboard di Slack API e clicca su Create an app (o Create a new app se non è la tua prima app).

Passo 3. Ti verrà chiesto di configurare gli ambiti e le impostazioni della tua app. Seleziona From Scratch.

Passo 4. Successivamente, dai un nome alla tua applicazione (ad esempio, Performance Bot) e seleziona il tuo spazio di lavoro.

Passo 5. Seleziona Incoming Webhook dalla barra laterale di sinistra e clicca su On. Successivamente, clicca su Add new webhook in fondo alla pagina.

Passo 6. Copia l’URL del Webhook e salvalo per riferimenti futuri.

Ora hai tutto ciò che serve per creare uno script che permetta di condividere automaticamente le metriche di performance del sito web con il tuo team su Slack. È ora di occuparci del codice.
Uno script PHP per automatizzare il monitoraggio delle prestazioni
Il passo successivo consiste nel creare uno script che comunichi con i tre servizi sopra citati per monitorare automaticamente le prestazioni di tutti i siti dei clienti dell’agenzia ospitati su Kinsta.
Passo 1: configurazione dello script
Nel tuo editor di codice preferito, crea un nuovo file .php e aggiungi il seguente codice:
<?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";
Sostituisci i segnaposto con i dati reali che hai recuperato in precedenza.
Passo 2: utilizzare l’API di Kinsta per recuperare l’elenco dei siti aziendali
Per ottenere l’elenco dei siti del tuo account Kinsta, devi utilizzare Kinsta API v2 e l’endpoint /sites.
Ecco come accedere all’API tramite 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";
Nota che abbiamo utilizzato il parametro di query includes_environments=true per recuperare i dettagli dell’ambiente (live e staging).
Successivamente, interroga l’API di Google PSI e invia i dati all’app Slack.
Metriche di PageSpeed Insights e notifiche Slack
Ora devi inviare l’URL di ogni sito recuperato all’API di PageSpeed Insights. Quando chiami il servizio, PageSpeed Insights esegue un controllo delle prestazioni e restituisce un oggetto contenente le metriche delle prestazioni. Il tuo script invierà questi dati all’API di Slack, che genererà i messaggi corrispondenti.
Ecco il codice da aggiungere allo 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";
In breve, questo codice itera sugli elementi dell’array $sites. Per ogni elemento dell’array, recupera Core Web Vitals e invia un messaggio a Slack.
Testare lo script
Puoi collegarti al tuo container utilizzando SSH ed eseguire lo script PHP direttamente dal terminale. In questo modo puoi risolvere rapidamente i problemi dello script e ricevere i risultati delle prestazioni in Slack in tempo reale.
In MyKinsta, vai su Siti WordPress > Nome del sito. Scorri verso il basso fino alla sezione Utente primario SFTP/SSH e trova il campo del comando terminale SSH. Dovrebbe avere un aspetto simile a questo:
ssh wordpress@host-name -p port-number
Copia il comando del terminale SSH e incollalo nel terminale. Ti verrà richiesto di inserire la password fornita nella stessa sezione. Premi Invio e sarai connesso al tuo ambiente container.

Ora puoi testare il codice. Dalla riga di comando, naviga nella cartella in cui hai caricato lo script. In questo esempio, abbiamo utilizzato la cartella public:
cd public
Quindi, utilizza il seguente comando per eseguire lo script:
php performance-monitor.php
Lo script emette un messaggio per ogni azione che esegue. Una volta terminata l’esecuzione, dovresti vedere un elenco di messaggi simile al seguente:
--- 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 ---
Se PSI non risponde tempestivamente, lo script passa al sito successivo. In questo caso, vedrai un messaggio simile a questo:
--- 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 ---
Mentre lo script elabora le risposte di Google PSI, invia un messaggio al tuo canale Slack. Per ogni sito analizzato con successo da PSI, dovresti vedere un messaggio Slack simile al seguente:

Fantastico. Hai appena creato il tuo sistema di monitoraggio automatico.
Ora potresti volerlo adattare alle tue esigenze specifiche. Ad esempio, se gestisci centinaia di siti di clienti, inviare un messaggio Slack per ogni sito potrebbe essere inefficiente.
Tuttavia, potresti impostare una condizione che verifichi il punteggio complessivo del sito e invii un messaggio al canale Slack solo se il valore restituito dall’API PSI è inferiore a una determinata soglia (ad esempio, 90). Il codice seguente potrebbe fare al caso tuo:
$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";
}
Aggiorna il tuo script, salva il file e caricalo di nuovo. Quindi, connettiti al server tramite SSH, naviga nella cartella appropriata ed esegui nuovamente il seguente comando:
php performance-monitor.php
Se hai scelto un nome diverso per il tuo script, modifica il comando di conseguenza.
A questo punto il terminale dovrebbe mostrare una sequenza di messaggi simile a quella che segue:
--- 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 ---
In Slack, riceverai un messaggio per ogni sito con un punteggio complessivo inferiore alla soglia di 90.

È fantastico, vero? Ma puoi ottimizzare ulteriormente il processo. Non ti piacerebbe risparmiare ancora più tempo eseguendo lo script automaticamente a intervalli prestabiliti senza dover accedere allo strumento a riga di comando?
Sì, hai indovinato. Hai bisogno di un cron job.
Automatizzare il processo con un cron job
Esistono diversi modi per impostare un cron job su Kinsta. Sebbene sia possibile farlo attraverso WordPress, gli utenti di Kinsta possono aggiungere cron job al server di ogni container del sito.
Per impostare un cron job su Kinsta, crea un comando cron e aggiungilo al file crontab del container tramite SSH.
Ad esempio, puoi utilizzare un comando come il seguente:
0 10 * * * /usr/bin/php /www/yoursite_123/public/your-script.php >> /www/yoursite_123/performance_monitor.log 2>&1
Ecco cosa fa questo comando:
0 10 * * *imposta lo script da eseguire ogni giorno alle 10 del mattino./usr/bin/phpè il percorso assoluto dell’interprete PHP sul server./www/yoursite_123/public/your-script.phpè il percorso assoluto dello script. Assicurati di controllare il percorso e il nome effettivo dello script sul server.- L’operatore
>>(reindirizzamento append) aggiunge nuovi dati alla fine del file specificato. /www/yoursite_123/performance_monitor.logindica il file in cui verrà salvato tutto il testo stampato dallo script.- Il comando
2>&1indica al server di indirizzare gli errori allo stesso file.
In questa sede non parleremo in dettaglio dei comandi cron. Puoi consultare la documentazione di The Open Group o utilizzare uno strumento crontab, come Crontab Generator o Cronitor.
Dopo aver creato il comando cron, devi aggiungerlo al container del sito. Puoi chiedere al nostro team di supporto di farlo per te o farlo tu tramite SSH. Se scegli quest’ultima soluzione, inizia digitando il seguente comando:
crontab -e
Ti verrà chiesto di selezionare un editor. Opta per “nano” se non sai quale scegliere.
Nell’editor, incolla il tuo comando alla fine del file. Salva il file e torna alla riga di comando. Dovresti vedere un messaggio che conferma che le modifiche sono state completate correttamente.
crontab installing new crontab
Ecco fatto. Ora lo script verrà eseguito a intervalli prestabiliti e invierà un messaggio al canale Slack di tua scelta con le metriche richieste per i siti dei tuoi clienti che hanno un rendimento insufficiente.
Scalare: cos’altro puoi automatizzare con l’API di Kinsta?
Lo script presentato in questo articolo può essere personalizzato e ampliato ulteriormente. Ad esempio, puoi integrare altri servizi, come Trello o Asana, esportare i dati o inviare ai clienti dei messaggi di posta elettronica periodici.
L’automatizzazione dei controlli sulle prestazioni dei siti dei tuoi clienti è solo l’inizio. L’integrazione dell’API di Kinsta con gli strumenti quotidiani del tuo team può trasformare le operazioni della tua agenzia eliminando le attività manuali di gestione e manutenzione dei siti, migliorando l’efficienza e riducendo i costi operativi. Inoltre, migliorerai la qualità del servizio, ridurrai i tempi di consegna e garantirai la migliore esperienza possibile ai tuoi clienti.
L’API di Kinsta permette di automatizzare diverse attività, tra cui la creazione di ambienti di staging, il passaggio selettivo delle modifiche dallo staging alla produzione, l’accesso ai log degli errori, la cancellazione della cache del sito, la gestione dei backup e altro ancora. Queste funzioni rendono la gestione dei siti WordPress facile e veloce, consentendoti di scalare in tutta tranquillità.
Che ne dici di portare la tua agenzia a un livello superiore? Esplora i nostri piani o contatta il nostro team di vendita per discutere delle tue esigenze specifiche.
Buona scalata!