Website Audit API

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 con code, area, severity, title, detail, evidence, measurement (la chiave di measurements da 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), il total e la ripartizione by_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?

codeche cosa è stato osservatomeasurement
noindexLa pagina chiede ai motori di non mostrarla (meta robots o header X-Robots-Tag).robots_meta
robots_txt_disallowIl robots.txt del sito vieta a Googlebot di scaricare questo indirizzo.robots_txt
redirects_elsewhereL’indirizzo chiesto ne serve un altro: le misure sono della pagina di arrivo.redirect_status
canonical_missingNessun link rel="canonical" dichiarato.canonical

seo — come si presenta nei risultati

codeche cosa è stato osservatomeasurement
title_missingNessun <title>.title
title_length_out_of_rangeIl titolo esce dalla finestra utile nei risultati di ricerca.title_length
meta_description_missingNessuna meta description.meta_description_length
meta_description_length_out_of_rangeLa meta description esce dalla finestra 50–160 caratteri.meta_description_length
h1_missingNessun <h1>.h1_count
h1_multiplePiù di un <h1> nella stessa pagina.h1_count
structured_data_missingNessun dato strutturato (JSON-LD, microdata).has_structured_data
open_graph_missingNessun tag Open Graph: l’anteprima social è lasciata al caso.has_open_graph

content — che cosa c’è dentro

codeche cosa è stato osservatomeasurement
thin_contentMeno di 300 parole di testo leggibile.words
favicon_missingNessuna favicon dichiarata.has_favicon

accessibility — chi usa uno screen reader

codeche cosa è stato osservatomeasurement
images_alt_missingImmagini senza attributo alt.images_alt_missing
images_alt_emptyImmagini con alt presente ma vuoto, dove servirebbe un testo.images_alt_empty
links_without_nameCollegamenti fatti di una sola immagine senza nome accessibile.image_only_links_unnamed
html_lang_missingNessun attributo lang su <html>.lang

mobile — chi arriva dal telefono

codeche cosa è stato osservatomeasurement
viewport_missingNessun <meta name="viewport">: sul telefono la pagina non si adatta.viewport
viewport_blocks_zoomIl viewport impedisce lo zoom (maximum-scale o user-scalable=no).viewport
images_too_heavyIl peso complessivo delle immagini supera la soglia misurata.image_weight
inline_script_heavyMolto JavaScript scritto dentro la pagina invece che in un file.inline_script_bytes

security — trasporto e header

codeche cosa è stato osservatomeasurement
not_httpsLa connessione non è cifrata.is_https
mixed_contentUna pagina HTTPS carica risorse in chiaro.mixed_content_refs
security_headers_missingNessuno degli header di sicurezza di base.security_headers
security_headers_partialSolo una parte degli header di sicurezza di base.security_headers
csp_missingNessuna 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_https dice 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.