Il check-up tecnico di una pagina, consegnato come JSON pensato per essere letto da un programma: ogni problema porta un codice stabile, l’area in cui ricade, la misura da cui è stato ricavato e, dove il motore l’ha prodotta, la correzione pronta da incollare. È la differenza con gli altri nostri check-up, che consegnano le stesse misure scritte per una persona.
Novità: questo strumento è appena arrivato. Ogni risultato passa controlli automatici e, se qualcosa non va, i crediti tornano indietro da soli.
Esempio di risultato reale
Costo: 2 crediti · ≈ €1,80 per elaborazione. La prima elaborazione è gratuita con i crediti di benvenuto. Se poi vuoi continuare, la ricarica minima è di €3,90; i crediti non scadono. I crediti vengono trattenuti all'avvio e restituiti per intero se l'elaborazione non riesce.
- Se l'elaborazione fallisce, i crediti tornano indietro da soli.
- Questo strumento invia a OpenAI le misure prese sulla pagina e un estratto del suo testo, per scrivere sintesi e consigli: il punteggio lo calcola il nostro codice. Dettagli in Trattamento dati & AI.
Serve un account gratuito: con i crediti di benvenuto la prima elaborazione è offerta. Registrati in 30 secondi
Perché un codice stabile cambia tutto
Un report di audit identifica i problemi con una frase: «Meta description assente», «Più di un titolo H1». Per chi legge va benissimo. Per chi integra no: non si fa uno switch su una frase, e basta che qualcuno corregga un refuso perché il tuo codice smetta di riconoscere il problema, in silenzio. Sui nostri 116 audit in archivio quelle frasi erano 26 diverse, e per quattro di esse la gravità cambiava da un lavoro all’altro: lo stesso titolo usciva high 16 volte e low 7.
Qui ogni problema esce con un code preso da un vocabolario chiuso di 27 valori. Il campo issue_codes è la sola lista ordinata di quei codici: è la riga da confrontare fra due audit dello stesso indirizzo per sapere in una istruzione che cosa è guarito e che cosa è peggiorato.
La risposta
Oltre a score, findings, summary e measurements — gli stessi campi dei nostri report — il risultato porta quattro campi che gli altri non hanno:
schema_version— la versione del contratto, oggi"1". Si alza se un campo cambia significato o sparisce; aggiungerne uno nuovo non la alza.issues— i problemi osservati, in ordine di gravità. Ognuno concode,area,severity,title,detail,evidence,measurement(la chiave dimeasurementsda cui il fatto nasce) e, quando c’è,fix.issue_codes— i soli codici, ordinati, senza doppioni.issue_counts— quanti problemi per gravità (high,medium,low), iltotale la ripartizioneby_area.
Un problema il cui titolo non è ancora nel vocabolario non riceve un codice a caso: esce con code: null, resta al suo posto nell’elenco, e la risposta porta l’avviso finding_without_code fra i warnings più l’elenco uncoded_titles. Meglio un buco dichiarato che un dato inventato.
{
"schema_version": "1",
"audited_url": "https://megaengine.it/accedi/",
"score": 84,
"issue_codes": ["csp_missing", "noindex", "thin_content"],
"issue_counts": {
"high": 1, "medium": 1, "low": 1, "total": 3,
"by_area": { "content": 1, "indexing": 1, "security": 1 }
},
"issues": [
{
"code": "noindex",
"area": "indexing",
"severity": "high",
"title": "La pagina chiede ai motori di ricerca di non mostrarla",
"measurement": "robots_meta"
}
]
}
Non è un esempio scritto a mano: sono i campi del lavoro vero riportato qui sotto, eseguito il 04/10/2026 sulla nostra pagina di accesso — che è noindex per scelta nostra, ed è per questo che noindex compare in cima. Chiunque può rifare la stessa richiesta sullo stesso indirizzo e ritrovare le stesse misure.
I 27 codici
indexing — la pagina è visibile a Google?
| code | che cosa è stato osservato | measurement |
|---|---|---|
noindex | La pagina chiede ai motori di non mostrarla (meta robots o header X-Robots-Tag). | robots_meta |
robots_txt_disallow | Il robots.txt del sito vieta a Googlebot di scaricare questo indirizzo. | robots_txt |
redirects_elsewhere | L’indirizzo chiesto ne serve un altro: le misure sono della pagina di arrivo. | redirect_status |
canonical_missing | Nessun link rel="canonical" dichiarato. | canonical |
seo — come si presenta nei risultati
| code | che cosa è stato osservato | measurement |
|---|---|---|
title_missing | Nessun <title>. | title |
title_length_out_of_range | Il titolo esce dalla finestra utile nei risultati di ricerca. | title_length |
meta_description_missing | Nessuna meta description. | meta_description_length |
meta_description_length_out_of_range | La meta description esce dalla finestra 50–160 caratteri. | meta_description_length |
h1_missing | Nessun <h1>. | h1_count |
h1_multiple | Più di un <h1> nella stessa pagina. | h1_count |
structured_data_missing | Nessun dato strutturato (JSON-LD, microdata). | has_structured_data |
open_graph_missing | Nessun tag Open Graph: l’anteprima social è lasciata al caso. | has_open_graph |
content — che cosa c’è dentro
| code | che cosa è stato osservato | measurement |
|---|---|---|
thin_content | Meno di 300 parole di testo leggibile. | words |
favicon_missing | Nessuna favicon dichiarata. | has_favicon |
accessibility — chi usa uno screen reader
| code | che cosa è stato osservato | measurement |
|---|---|---|
images_alt_missing | Immagini senza attributo alt. | images_alt_missing |
images_alt_empty | Immagini con alt presente ma vuoto, dove servirebbe un testo. | images_alt_empty |
links_without_name | Collegamenti fatti di una sola immagine senza nome accessibile. | image_only_links_unnamed |
html_lang_missing | Nessun attributo lang su <html>. | lang |
mobile — chi arriva dal telefono
| code | che cosa è stato osservato | measurement |
|---|---|---|
viewport_missing | Nessun <meta name="viewport">: sul telefono la pagina non si adatta. | viewport |
viewport_blocks_zoom | Il viewport impedisce lo zoom (maximum-scale o user-scalable=no). | viewport |
images_too_heavy | Il peso complessivo delle immagini supera la soglia misurata. | image_weight |
inline_script_heavy | Molto JavaScript scritto dentro la pagina invece che in un file. | inline_script_bytes |
security — trasporto e header
| code | che cosa è stato osservato | measurement |
|---|---|---|
not_https | La connessione non è cifrata. | is_https |
mixed_content | Una pagina HTTPS carica risorse in chiaro. | mixed_content_refs |
security_headers_missing | Nessuno degli header di sicurezza di base. | security_headers |
security_headers_partial | Solo una parte degli header di sicurezza di base. | security_headers |
csp_missing | Nessuna Content-Security-Policy. | security_headers |
Perché questo e non «Check-up Sito Web»
Stesso motore, stesse misure, risultato pensato per due mestieri diversi. Check-up Sito Web (3 crediti) compone per una persona: l’esito in una frase, le tre cose da fare per prime e il messaggio pronto da inoltrare a chi cura il sito. Questo prodotto (2 crediti) compone per un programma: i codici stabili, i conteggi per area e la versione del contratto. Se devi leggere tu, prendi il primo; se deve leggere il tuo codice, prendi questo.
Che cosa NON fa
Scritto prima dell’acquisto, non dopo:
- Una pagina per chiamata, l’indirizzo che indichi. Non c’è crawl del sito, non si legge la sitemap, non c’è un campione di pagine.
- Nessun controllo sui link interrotti: nessun collegamento della pagina viene seguito per vedere se risponde.
- Nessuna lettura del certificato:
not_httpsdice se la connessione è cifrata, non quando il certificato scade. Per la scadenza c’è Scadenze Dominio e SSL. - Nessun tempo di caricamento misurato da un browser: niente Core Web Vitals, niente punteggio Lighthouse. Quelli li dà gratis PageSpeed Insights di Google, e non ha senso farteli pagare.
- Nessun JavaScript eseguito: se il contenuto compare solo dopo il JS, la pagina è per noi un guscio vuoto e il lavoro non viene eseguito — i crediti ti vengono restituiti invece di farti pagare un giudizio dato sul nulla.
- Solo pagine pubbliche: niente aree riservate, niente contenuti dietro login. I siti che vietano l’accesso automatico con un muro anti-bot non si lasciano leggere: in quel caso il lavoro non viene eseguito e i crediti ti vengono restituiti.
L’endpoint HTTP
Oggi il canale programmatico è chiuso. La piattaforma ha una API REST con chiavi a scope limitato, salvate solo come hash e con rate limit per chiave, ma l’interruttore che la apre al pubblico è spento per decisione del gestore: una chiamata a /wp-json/mega-engine/v1/jobs con una chiave risponde 401 come se la chiave non ci fosse, e la schermata di gestione chiavi non compare nell’area personale.
Fino a quando non si apre, il prodotto si usa dall’area personale come gli altri: indichi l’indirizzo, ricevi lo stesso JSON e lo scarichi. Il contratto descritto qui è quello, e sarà lo stesso il giorno in cui arriverà via HTTP: è già prodotto dal codice che gira adesso, non da una specifica da scrivere.
Privacy e dati
Il punteggio e i fatti osservati li misura il nostro codice. Al modello di OpenAI vanno le misure prese sulla pagina e un estratto del suo testo pubblico, per ricavarne il riassunto e i consigli; l’estratto non viene salvato nel risultato. I codici, le aree e i conteggi di issues non passano da nessun modello: sono tabella e aritmetica. Dettagli in Trattamento dati & AI.
Domande frequenti
Posso auditare qualsiasi sito?
Tecnicamente qualsiasi pagina pubblica raggiungibile. Resta tua responsabilità usarlo su siti che hai titolo ad analizzare, tuoi o dei tuoi clienti. Se il robots.txt del sito vieta la lettura, la pagina viene comunque scaricata e il divieto ti viene segnalato come problema (robots_txt_disallow): è un’informazione che a chi cura quel sito serve.
Quante pagine vengono analizzate?
Una: l’indirizzo che indichi. Per coprire più pagine si fa una richiesta per pagina.
Il codice di un problema può cambiare?
No, non dentro la stessa schema_version. È tutto il punto del prodotto: i titoli in italiano possono essere riscritti, i codici no. Se un controllo nuovo comparisse prima della sua mappatura, lo vedresti come code: null con l’avviso finding_without_code, mai come un codice diverso.
Che cosa succede se il sito non è raggiungibile?
Il lavoro non viene eseguito, la risposta dichiara il motivo e i crediti ti vengono restituiti automaticamente (refund_on_failure). Vale allo stesso modo per il guscio che si riempie solo via JavaScript e per i siti che vietano l’accesso automatico.
Mi serve la fattura.
Oggi il gestore non ha partita IVA e non emette fattura. Se per la tua azienda la fattura è necessaria, scrivi prima di acquistare: è una porta chiusa che preferiamo dirti adesso.