Italian SEO Validator is a specialized WordPress plugin for SEO and content quality validation focused on Italian content. It analyzes readability (Gulpease index), H2/H3 structure, keyword density, content intent, E-E-A-T signals, and AI optimization. Perfect for users already running Yoast, Rank Math, or SEOPress: those plugins handle technical SEO, while Italian SEO Validator focuses on content quality and optimization.
FREE Version:
- 3 unique articles per month (unlimited re-validation of same articles)
- Validator Lite with Gulpease readability index (Italian-specific)
- Detailed Gulpease explanation with 6-level contextual scale
- Long sentence analysis with actionable splitting suggestions
- H2/H3 structure, keyword density, meta tags validation
- 6 predefined intents (News, How-to, Pillar, Comparison, Monthly Data)
- Detailed breakdown with actionable suggestions
-
Automatic monthly reset
STANDARD Version (€6.90/month or €49/year):
-
50 unique articles per month
- All FREE features +
- Gulpease Benchmark: Compare your readability vs your personal 30d/90d averages
- Link Suggestions: automatic internal link suggestions from sitemap
- Cannibalization Detection: checks if your keyword competes with already published articles
- Priority support
-
7-day grace period after expiration
Compatibility:
-
Works with Gutenberg and Classic Editor
- Compatible with Yoast, Rank Math, SEOPress (no conflicts)
- Built-in documentation in Admin area (Italian SEO Validator → Documentation)
Privacy:
Validation happens locally on your WordPress server, no data is sent to external services.
In production the plugin doesn't write to error_log; diagnostic logging is active only with
WP_DEBUG enabled.
3.7.2 - 2025-11-20
- FIXED: Gutenberg keyword auto-save - Main Keyword now automatically saved to _italseva_keyword meta on edit
- FIXED: Cannibalization check on new posts - works with manual slug entry (no publish required)
- FIXED: Classic Editor cannibalization - eliminated "undefined" error on first click
- FIXED: Cannibalization warning message - correct "Insert slug manually" instead of "Save article first"
- IMPROVED: Slug-based logic now checks saved keyword instead of requiring post publication
- STABILITY: Eliminated race conditions between Gutenberg and Classic Editor on draft posts
3.7.1 - 2025-11-20
- FIXED: Cannibalization detection - manual slug requirement for new posts eliminates false positives
- ADDED: Warning UI for missing slugs with "Ricontrolla" button in both Classic and Gutenberg editors
- IMPROVED: Weighted keyword similarity (60% slug + 40% keyword) with keyword priority for ≥95% matches
- IMPROVED: Gulpease scoring thresholds more realistic (60-69→78pts instead of 100pts)
- ADDED: Intent-based word count validation with -20pts penalty for insufficient content depth
- ADDED: Entity salience check - keyword in conclusion paragraph (-5pts if missing)
- ADDED: Citation pattern detection for authoritative content (news/pillar) - detects source attribution
3.7.0 - 2025-11-16
3.7.1 - 2025-11-20
- FIXED: Cannibalization detection - manual slug requirement for new posts eliminates false positives
- ADDED: Warning UI for missing slugs with "Ricontrolla" button in both Classic and Gutenberg editors
- IMPROVED: Weighted keyword similarity (60% slug + 40% keyword) with keyword priority for ≥95% matches
- IMPROVED: Gulpease scoring thresholds more realistic (60-69→78pts instead of 100pts)
- ADDED: Intent-based word count validation with -20pts penalty for insufficient content depth
- ADDED: Entity salience check - keyword in conclusion paragraph (-5pts if missing)
- ADDED: Citation patterns for authoritative content (news/pillar) - detects source attribution
- CORRETTO: Cannibalizzazione - slug manuale richiesto per nuovi post elimina falsi positivi
- AGGIUNTO: UI warning per slug mancante con bottone "Ricontrolla" in Classic e Gutenberg
- MIGLIORATO: Similarità keyword pesata (60% slug + 40% keyword) con priorità keyword per match ≥95%
- MIGLIORATO: Soglie Gulpease più realistiche (60-69→78pts invece di 100pts)
- AGGIUNTO: Validazione lunghezza per intent con penalità -20pts se contenuto insufficiente
- AGGIUNTO: Entity salience - keyword nel paragrafo conclusivo (-5pts se mancante)
- AGGIUNTO: Pattern citazioni per contenuti autorevoli (news/pillar) - rileva attribuzione fonti
3.7.0 - 2025-11-16
- MAJOR: WordPress.org compliance - renamed all "ept" prefixes (3 chars) to "italseva" (8 chars)
- ADDED: External Services documentation for Gumroad API license verification
- FIXED: JSON sanitization before json_decode (wp_kses_post recursive sanitization)
- CHANGED: Main file renamed from ept-validator.php to italian-seo-validator.php
- CHANGED: All constants, options, meta keys, AJAX actions, transients, class names now use italseva/ITALSEVA prefix
- CHANGED: Database tables: wp_ept_ → wp_italseva_ (backward compatible with migration)
- CHANGED: Main class renamed: EPT_Validator → ITALSEVA_Validator
- IMPORTANTE: Conformità WordPress.org - rinominati tutti i prefissi "ept" (3 caratteri) in "italseva" (8 caratteri)
- AGGIUNTO: Documentazione servizi esterni per verifica licenze API Gumroad
- CORRETTO: Sanitizzazione JSON prima di json_decode (sanitizzazione ricorsiva wp_kses_post)
- CAMBIATO: File principale rinominato da ept-validator.php a italian-seo-validator.php
- CAMBIATO: Tutte le costanti, opzioni, meta keys, azioni AJAX, transient, nomi classi ora usano prefisso italseva/ITALSEVA
- CAMBIATO: Tabelle database: wp_ept_ → wp_italseva_ (retrocompatibile con migrazione)
- CAMBIATO: Classe principale rinominata: EPT_Validator → ITALSEVA_Validator
3.5.8 (November 15, 2025)
- CRITICAL FIX: Removed cache blocking backend API calls in Gutenberg
- ADDED: Speedometer info box with Word Count, Gulpease, E-E-A-T badge (like Classic)
- FIXED: Every validation now calls backend API for fresh results
- IMPROVED: Gutenberg sidebar shows same detailed info as Classic Editor
3.5.7 (November 15, 2025)
- CRITICAL FIX: Gutenberg now calls backend API instead of client-side validation
- FIXED: Validation results now IDENTICAL between Classic and Gutenberg editors
- FIXED: Breakdown scores match Classic Editor exactly (same backend logic)
- FIXED: All suggestions from backend now displayed correctly
- IMPROVED: Backend provides richer analysis (TL;DR, MiniAnswers, Takeaways, examples)
3.5.6 (November 15, 2025)
- NEW: Keyword Analysis box in Gutenberg sidebar (density, occurrences, found_in/missing_in)
- NEW: Images Analysis box in Gutenberg sidebar (total, with ALT, with keyword)
- NEW: Links Analysis box in Gutenberg sidebar (total, internal, external)
- NEW: SEO Meta Tags box in Gutenberg sidebar (title, description, slug length validation)
- IMPROVED: Complete feature parity between Classic and Gutenberg editors
3.5.5 (January XX, 2025)
- CRITICAL FIX: Gutenberg sidebar now shows ALL suggestions (not limited to 3) - Full parity with Classic Editor
- CRITICAL FIX: Gulpease Benchmark box rendering in Gutenberg for STANDARD/PRO users (check !== undefined)
- CRITICAL FIX: EEAT score calculation to match Classic Editor (4 criteria, explicit score)
- IMPROVED: Added debug logging for Gulpease Benchmark rendering (console.log)
- IMPROVED: Validation algorithm fully aligned with Classic Editor (same formulas, same weights)
- STABILITY: Full feature parity between Classic and Gutenberg editors achieved
== Changelog ==
3.6.3 - 2025-11-16
- ADDED: Custom brand logo (red circle with white arrow) in Gutenberg sidebar
- FIXED: Final score clamped to 0-100 range (prevents edge cases)
- IMPROVED: Sidebar title "Italian SEO Validator" for better branding
- AGGIUNTO: Logo personalizzato (cerchio rosso con freccia) nella sidebar Gutenberg
- CORRETTO: Punteggio finale limitato a 0-100 (previene casi anomali)
- MIGLIORATO: Titolo sidebar "Italian SEO Validator" per miglior riconoscibilità brand
3.6.2 - 2025-11-16
- FIXED: Validation results now persist when navigating to Settings and back in Gutenberg
- CORRETTO: I risultati di validazione ora persistono quando si naviga alle Impostazioni e si torna in Gutenberg
3.6.1 - 2025-11-16
- FIXED: Usage counter box now visible in Gutenberg sidebar (matches Classic "UTILIZZO CORRENTE")
- FIXED: Validation results now persist correctly on page reload
- FIXED: SEO Meta synchronization between Classic and Gutenberg editors (unified field names)
- CORRETTO: Box contatore utilizzo ora visibile nella sidebar Gutenberg (come "UTILIZZO CORRENTE" del Classic)
- CORRETTO: Risultati validazione ora persistono correttamente al ricaricamento pagina
- CORRETTO: Sincronizzazione Meta SEO tra editor Classic e Gutenberg (nomi campi unificati)
3.6.0 - 2025-11-15
- MAJOR: Full Gutenberg feature parity with Classic Editor (100% identical validation scores)
- NEW: Breakdown Dettagliato accordion with 6-7 expandable metrics and suggestions per metric
- NEW: SEO Meta Tags input box (Meta Title, Meta Description, URL Slug) with smart loading
- NEW: Auto-load SEO meta from Yoast SEO, Rank Math, or saved EPT values with fallbacks
- NEW: Meta fields registration for Gutenberg REST API (_yoast_wpseo_title, rank_math_title, etc.)
- FIXED: Keyword density calculation in Gutenberg (was 0%, now matches Classic Editor)
- FIXED: SEO Meta Tags analysis showing correct character counts (was 0/70)
- FIXED: Backend API parameter mismatch (keyword vs main_kw)
- FIXED: HTML content extraction from Gutenberg blocks (removed block comments)
- FIXED: Meta description auto-extraction from content (first 160 chars fallback)
- IMPROVED: Removed duplicate visualizations and confusing boxes
- IMPROVED: Suggestions grouped by metric inside accordion panels
- COMPATIBILITY: WordPress 6.7+ with full Block Editor support
3.5.4 - 2025-11-15
- FIXED: Link Suggestions copy button with fallback for older browsers
- FIXED: Validazione deterministica (cache hash prevents duplicate results)
- FIXED: Breakdown Dettagliato shows all 6 metrics like Classic Editor
- IMPROVED: Copy feedback with visual "Copiato!" confirmation (2s)
- IMPROVED: Cross-browser clipboard compatibility (execCommand fallback)
- IMPROVED: Prevent duplicate validations with isValidating flag
- STABILITY: Full feature parity with Classic Editor achieved
3.5.3 (November 15, 2025)
- CRITICAL FIX: Speedometer display aligned to Classic Editor (no needle, clean arc)
- CRITICAL FIX: HTTP 403 error on Cannibalization Check resolved (restNonce)
- CRITICAL FIX: Keyword Density score display bug (0/100) resolved
- CRITICAL FIX: Gulpease formula corrected (89 + 300s/w - 10l/w, clamped 0-100)
- FIXED: Final score calculation weights aligned to Classic Editor
- IMPROVED: Cannibalization button color orange (#f59e0b) for visibility
- IMPROVED: Breakdown metrics show correct semantic score
- IMPROVED: Details panel displays correct keyword score
3.5.2 (November 15, 2025)
- UX IMPROVEMENT: Gutenberg sidebar redesigned for full feature parity with Classic Editor
- REMOVED: Excessive emoji decorations for professional appearance
- ADDED: Gulpease Benchmark visualization in Gutenberg sidebar (STANDARD/PRO)
- ADDED: Long Sentences analysis (>30 words) in Gutenberg sidebar
- ADDED: Link Suggestions box in Gutenberg sidebar (STANDARD/PRO)
- IMPROVED: Compact layout optimized for narrow sidebar width
- IMPROVED: Breakdown metrics: top 4 critical ones instead of 6
- IMPROVED: Suggestions: top 3 instead of 6 for better focus
- IMPROVED: Typography: smaller fonts for better sidebar readability
- IMPROVED: Speedometer gauge: 180x120px instead of 200x140px
- IMPROVED: Details panel: vertical list instead of 2-column grid
- IMPROVED: Cannibalization check: compact conflict cards
- COMPATIBILITY: WordPress 6.9 tested and confirmed
3.5.1 (November 15, 2025)
- NEW: Gulpease Benchmark - Compare your readability with personal averages (30d/90d)
- NEW: Detailed Gulpease tooltip - 6-level contextual explanation (80-100: Eccellente... 0-39: Molto difficile)
- NEW: "Powered by Gulpease" badge in metabox - Valorization of Italian readability index
- NEW: Long sentence analysis - Detects top 3 sentences >25 words with splitting suggestions
- IMPROVED: Gulpease 50-59 score increased from 70 to 85 points (professional content acceptable)
- IMPROVED: No generic warnings for 50-59 range - Only specific actionable suggestions
- IMPROVED: Professional UI design - Reduced fonts (16px numbers, 10px labels), clean layout
- IMPROVED: Benchmark grid - 3 columns (Current Article | Your 30d Avg | Your 90d Avg)
- REMOVED: "Top 10% blogger" marketing concept - Replaced with real personal progress
- REMOVED: All emoji decorations from UI - Professional appearance maintained
- TIER: Gulpease Benchmark locked for FREE tier (teaser with upgrade CTA), unlocked for STANDARD/PRO
- UX: Color-coded progress indicators (green=improvement, blue=average, yellow=below, red=critical)
- UX: Manual "Recheck" button for benchmark refresh after content edits
- TECH: REST endpoint
/ept/v1/gulpease-benchmark with tier gating and personalized averages
- DOCS: Gulpease vs Flesch comparison table updated in Documentation
3.0.0-rc17 - 2025-11-15
- FIX CRITICAL: Cannibalization detection empty results in production (timeout + missing metadata)
- FIX: Local environment detection (.local, localhost, 127.0.0.1) → direct DB fallback (no HTTP loopback)
- FIX: Production sitemap parsing with automatic DB fallback on errors
- NEW: Sitemap index support (wp-sitemap.xml → wp-sitemap-posts-post-X.xml)
- NEW: Smart sitemap URL auto-detection (prefers index over direct post sitemap)
- IMPROVED: Post metadata enrichment (keyword + has_saved_keyword in both sitemap and DB sources)
- IMPROVED: Threshold lowered to 45% (from 50%) after real-world testing validation
- IMPROVED: Stopwords cleaned - removed thematic words, kept only 43 grammatical terms (universal for generic plugin)
- IMPROVED: Title disambiguator disabled (slug-based matching already disambiguated, was creating false negatives)
- IMPROVED: Performance optimized for 500+ article blogs (5-min cache, Jaccard O(n) algorithm)
- COMPLIANCE: WordPress-only APIs (wp_remote_get, get_posts, transients) - no direct SQL
- TESTED: Post #78 "accessori-auto-elettriche-inverno-2025" correctly detected as conflict with "consigli-auto-elettriche-inverno" (46% similarity)
- DOCS: Updated admin/partials/docs.html with comprehensive Cannibalization Detection section
- FIX CRITICO: Risultati vuoti cannibalization in produzione (timeout + metadati mancanti)
- FIX: Rilevamento ambiente locale (.local, localhost, 127.0.0.1) → fallback DB diretto (no HTTP loopback)
- FIX: Parsing sitemap produzione con fallback automatico DB su errori
- NUOVO: Supporto sitemap index (wp-sitemap.xml → wp-sitemap-posts-post-X.xml)
- NUOVO: Rilevamento automatico URL sitemap intelligente (preferisce index su sitemap post diretta)
- MIGLIORATO: Arricchimento metadati post (keyword + has_saved_keyword in entrambe le fonti sitemap e DB)
- MIGLIORATO: Soglia abbassata a 45% (da 50%) dopo validazione test reali
- MIGLIORATO: Stopwords pulite - rimosse parole tematiche, mantenute solo 43 termini grammaticali (universali per plugin generico)
- MIGLIORATO: Title disambiguator disabilitato (matching basato su slug già disambiguato, creava falsi negativi)
- MIGLIORATO: Prestazioni ottimizzate per blog 500+ articoli (cache 5 min, algoritmo Jaccard O(n))
- CONFORMITÀ: API WordPress-only (wp_remote_get, get_posts, transients) - no SQL diretto
- TESTATO: Post #78 "accessori-auto-elettriche-inverno-2025" correttamente rilevato come conflitto con "consigli-auto-elettriche-inverno" (46% similarità)
- DOCS: Aggiornata admin/partials/docs.html con sezione Cannibalization Detection completa
3.0.0-rc16 - 2025-11-14
- COMPLIANCE: Fixed all 6 inline scripts/styles violations (WordPress.org requirement)
- IMPROVED: Proper wp_enqueue_script() + wp_add_inline_script() for dynamic data passing
- IMPROVED: Proper wp_localize_script() for translated strings and REST endpoints
- NEW: Created 3 external JS files (ept-metabox-fixes.js, ept-admin-page.js, ept-license-manager.js)
- TECHNICAL: Zero functional changes, 100% backward compatible
- CONFORMITÀ: Corrette tutte le 6 violazioni inline scripts/styles (requisito WordPress.org)
- MIGLIORATO: Uso corretto di wp_enqueue_script() + wp_add_inline_script() per dati dinamici
- MIGLIORATO: Uso corretto di wp_localize_script() per stringhe tradotte ed endpoint REST
- NUOVO: Creati 3 file JS esterni (ept-metabox-fixes.js, ept-admin-page.js, ept-license-manager.js)
- TECNICO: Zero modifiche funzionali, 100% retrocompatibile
3.0.0-rc7 - 2025-11-12
- FIX: Cannibalization detection usa sitemap configurata (fallback DB locale) - risolve mismatch produzione/locale
- IMPROVED: Cache sitemap (5 min TTL) per ridurre chiamate HTTP
3.0.0-rc6 - 2025-11-12
- FIX: Meta description boundary aggiornato a 160 caratteri (da ~155) per allineamento con limite Google
- FIX: Slug parity check con distanza Levenshtein (avviso se mismatch >3 caratteri)
- FIX: ALT fuzzy match (sostituito exact match con fuzzy_keyword_match per varianti morfologiche)
2.10.0 (compliance sweep) - 2025-11-07
- COMPLIANCE: Sanitizzazione input POST/AJAX (wp_unslash + sanitize_*) e nonce/capability checks
- COMPLIANCE: Text domain
italian-seo-validator + load_plugin_textdomain per compatibilità
- COMPLIANCE: Nessun error_log in produzione; diagnostica solo con WP_DEBUG
- COMPLIANCE: Whitelist identificatori tabella per introspezioni schema
2.10.0 - 2025-11-07
- NEW: Tier STANDARD attivo con Link Suggestions e Cannibalization Detection
- NEW: Gestione licenze Gumroad con verifica automatica e grace period
- IMPROVED: FAQ detection intelligente (H3 dentro sezioni FAQ escluse da range 100-160 parole)
- IMPROVED: Conteggio grassetti dinamico basato su lunghezza articolo (ideale: 1 ogni 50 parole)
- IMPROVED: Link upgrade puntano a https://pannonius.gumroad.com/l/Italian-seo-validator
- FIX: Colori e soglie unificate (Verde ≥80, Blu 70–79, Giallo 60–69, Rosso <60)
- FIX: Gating FREE corretto: 3 post unici/mese, ri-validazioni illimitate
- API: Endpoint license activation/deactivation/status
- UI: Settings page con sezione Licenza e Piano
3.0.0-rc5 - 2025-11-12
- REMOVED: Box "Keyword Correlate Suggerite" (UI semplificata, valore basso senza analisi profonda)
3.0.0 - 2025-11-02
- Colori e soglie unificate (Verde ≥80, Blu 70–79, Giallo 60–69, Rosso <60)
- Messaggi migliorati per leggibilità (Gulpease 50–59 → "sufficiente")
- Link "Score basso" → Documentazione interna (Admin)
- Pulizia i18n: mantenuto solo italian-seo-validator.pot
- Auto-refresh contatore uso dopo validazione
- Gating FREE corretto: 3 post unici/mese, ri-validazioni illimitate degli stessi 3
- Rimozione link esterni non necessari