Description
Audit SEO completo on-page con scoring deterministico 0-100 e grade A-F. Valuta 30+ criteri: title length (target 50-60 char), description length (150-160), H1 count (esattamente 1), heading hierarchy (no skip livelli), canonical presente + assoluto, lang attribute, robots directive, alt immagini (count + missing list), conteggio link interni vs esterni con nofollow ratio, Open Graph completo (5 tag minimi), Twitter Card type, Schema.org JSON-LD type detection, hreflang validity ISO 639-1, viewport meta mobile-friendly, theme-color presente, favicon dichiarato. Zero network — parsing locale via cheerio. Differenza con i sibling: action_seo_audit = scoring + issues list (HTML in → score + grade + report). Per parsing meta tag senza scoring usa action_meta_extract (raw structured data). Per density specifica keyword usa action_keyword_density. Per link broken check usa action_link_audit (con HTTP HEAD probe). Per redirect chain audit usa action_redirect_chain. Scoring deterministico (NO LLM drift): peso per criterio configurabile, lo stesso HTML → SEMPRE lo stesso score (audit-friendly per cliente enterprise che vuole prove riproducibili). Issues classificati per severity: **critical** (title mancante / no canonical / H1 mancante = -10 punti ognuno), **warning** (description fuori range 150-160 / og:image mancante = -3), **info** (alt immagine vuoto / link count > 100 = -1). Codici issue machine-readable tipo `SEO_TITLE_TOO_SHORT`, `SEO_NO_CANONICAL`, `SEO_H1_DUPLICATE` per filtering downstream. Output: `{ score: 0-100, grade: "A"|"B"|"C"|"D"|"F", issues: [{ code, severity, message, evidence }], meta: { title: { value, length, ok }, description: {...}, h1: { count, ok }, links: { internal, external, nofollow }, ... } }`. Grading scale: A 90-100 / B 80-89 / C 70-79 / D 60-69 / F <60 — soglie configurabili. Use case Cappella-Sistina-grade: (1) **audit SEO settimanale** propri 50 landing — cron loop fetch → seo_audit → store score in DB → trend chart dashboard (score migliora nel tempo? regressioni dopo deploy?); (2) **gate CI/CD pre-deploy** — il workflow build chiama seo_audit su pagina nuova, se score < 80 blocca deploy con report PR comment GitHub; (3) **client reporting agenzia SEO** — mensile fetch + audit, PDF report con grade + top 10 issues + raccomandazioni testuali → email cliente; (4) **A/B test SEO impact** — variant A con tag attuali, variant B con title rewritten, audit entrambi → confronto deterministico score. Safety budget: HTML parse max 5 MB, regex parser timeout 100ms anti-ReDoS, image count cap 1000 (alt check), link count cap 5000, audit log con URL hash + score + issues count.
