Skip to content

Latest commit

ย 

History

60 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

PyPrestaScan ๐Ÿ”

PyPI version Python License PRs Welcome

PyPrestaScan Screenshot

Scanner SEO professionale per PrestaShop con sistema di fix automatici

PyPrestaScan รจ uno strumento open-source avanzato per l'analisi SEO completa di siti PrestaShop. Scansiona il tuo e-commerce, identifica problemi SEO critici e genera suggerimenti automatici per risolverli.

๐Ÿ“ฆ Installazione rapida: pip install 'pyprestascan[gui]'


๐Ÿ‘จโ€๐Ÿ’ป Autore

Andrea Piani Full-Stack Developer & SEO Specialist

๐Ÿ”— Link: linktr.ee/andreapianidev

Progetto open-source in continuo miglioramento! Contributi, feedback e segnalazioni sono sempre benvenuti. ๐Ÿš€

๐Ÿ“‹ Roadmap: ROADMAP.md - Piano sviluppo v1.2.0 โ†’ v2.0.0 ๐Ÿค Contributing: CONTRIBUTING.md - Guida per contributor


๐ŸŽฏ Caratteristiche Principali

๐Ÿ“Š Analisi SEO Completa

  • Crawling intelligente con supporto sitemap.xml e robots.txt
  • Rilevamento automatico di prodotti, categorie, CMS e filtri faceted
  • Analisi approfondita di meta tag, title, headings, canonical, hreflang
  • Controllo immagini con rilevamento ALT mancanti, vuoti o generici
  • Rilevamento duplicati tramite content hash
  • Scoring SEO per ogni pagina con severity (CRITICAL, WARNING, INFO)

๐Ÿ”ง Sistema di Fix Suggeriti + AI-Powered (v1.1.0 ๐Ÿ†•)

  • ๐Ÿค– Generazione AI intelligente con DeepSeek, OpenAI GPT o Anthropic Claude
  • Meta description contestuali generate dall'AI invece di template generici
  • Batch processing: 20 prodotti in 1 chiamata = -30% token
  • Costi ultra-bassi: ~$0.02 per 500 prodotti (DeepSeek)
  • Fallback automatico: se AI fallisce, usa template standard
  • Suggerimenti intelligenti per:
    • ๐ŸŽฏ Meta description mancanti o non ottimizzate (AI-powered!)
    • ๐Ÿ“ Title troppo corti o troppo lunghi
    • ๐Ÿ–ผ๏ธ ALT text mancanti per le immagini
    • ๐Ÿ”— Canonical URL mancanti
    • ๐Ÿ“‹ H1 multipli o mancanti
    • ๐ŸŒ Hreflang mancanti
  • Confidence scoring (0-100%) per ogni fix suggerito
  • Export SQL per fix automatizzabili
  • Export CSV con dettagli completi

๐Ÿ’ก AI Fix: Esempio Reale

Template Standard:

"Scarpe Nike Air Zoom - Acquista online su myshop.it"

AI DeepSeek (v1.1.0):

"Scarpe Nike Air Zoom: ammortizzazione reattiva per running. Scopri la collezione 2024 con tecnologia React Foam!"

Differenza: Contestuale, benefici evidenziati, CTA naturale. Confidence: 0.95 vs 0.70. Costo: $0.00004 per prodotto.

๐ŸŽจ Interfaccia Grafica Moderna

  • GUI intuitiva con Qt/PySide6
  • 4 Tab principali:
    1. โš™๏ธ Configurazione: setup URL, limiti, concorrenza
    2. ๐Ÿ“Š Progress & Log: monitoraggio real-time con log dettagliati
    3. ๐Ÿ“ˆ Risultati: statistiche, tabella issues filtrabili
    4. ๐Ÿ”ง Fix Suggeriti: visualizza e gestisci i fix automatici
  • Log in tempo reale durante la scansione
  • Contatori live (pagine crawlate, issues trovati, immagini senza ALT)
  • Filtri avanzati per issues e fix
  • Export multipli (CSV, JSON, HTML, SQL)

๐Ÿ“ˆ Report Dettagliati

  • Report HTML interattivo con grafici e tabelle
  • Export CSV/JSON per analisi dati
  • Export SQL per applicazione fix diretta al database
  • Visualizzazione issues per severity e tipologia
  • Dashboard statistiche complete

โšก Performance & Scalabilitร 

  • Crawling asincrono con concorrenza configurabile (default: 20 worker)
  • Rate limiting automatico per non sovraccaricare il server
  • Database SQLite per gestione efficiente dei dati
  • Resume support per riprendere scansioni interrotte
  • Gestione memoria ottimizzata per siti con migliaia di pagine

๐Ÿš€ Installazione

Requisiti

  • Python 3.8+ (3.12+ raccomandato)
  • pip

๐Ÿ“ฆ Installazione da PyPI (Consigliata)

# Installazione base (CLI)
pip install pyprestascan

# Con interfaccia grafica (NOTA: su zsh/macOS usa le virgolette)
pip install 'pyprestascan[gui]'

# Avvia la GUI
pyprestascan-gui

# Oppure usa la CLI
pyprestascan scan https://tuosito.com/it/ --max-urls 1000

๐Ÿ”ง Installazione da sorgenti (Development)

# Clona il repository
git clone https://github.com/andreapianidev/pyprestascan.git
cd pyprestascan

# Installa in modalitร  development (NOTA: su zsh/macOS usa le virgolette)
pip install -e '.[gui]'

# Avvia l'interfaccia grafica
python -m pyprestascan.gui.main_window

# Oppure usa la CLI
python -m pyprestascan scan https://tuosito.com/it/ --max-urls 1000

๐Ÿ“– Utilizzo

Interfaccia Grafica (Consigliata)

  1. Avvia la GUI:

    # Se installato da PyPI
    pyprestascan-gui
    
    # Oppure se installato da sorgenti
    python -m pyprestascan.gui.main_window
  2. Configura la scansione:

    • Inserisci l'URL del tuo sito PrestaShop
    • Imposta il numero massimo di pagine da analizzare
    • Configura concorrenza e altre opzioni avanzate
  3. Avvia la scansione:

    • Clicca su "โ–ถ๏ธ Avvia Scansione"
    • Monitora il progresso in tempo reale nel tab "Progress & Log"
  4. Analizza i risultati:

    • Vai al tab "๐Ÿ“Š Risultati" per vedere gli issues rilevati
    • Filtra per severity (Critical, Warning, Info)
    • Esporta in CSV per analisi dettagliate
  5. Genera e applica fix:

    • Vai al tab "๐Ÿ”ง Fix Suggeriti"
    • Clicca su "Genera Fix Suggeriti"
    • Visualizza i fix con confidence score
    • Esporta SQL per applicarli direttamente al database PrestaShop

๐Ÿค– Utilizzo AI Fix (v1.1.0+)

PyPrestaScan puรฒ usare AI generativa per creare meta description di qualitร  superiore:

  1. Registrati su un provider AI (raccomandato: DeepSeek):

  2. Configura in PyPrestaScan:

    • Vai in tab Configurazione โ†’ sezione "AI Fix Avanzati (Opzionale)"
    • Spunta "โœจ Abilita generazione AI per Fix Suggeriti"
    • Seleziona provider (es: DeepSeek)
    • Inserisci la tua API key
  3. Genera fix intelligenti:

    • Esegui scansione normalmente
    • Tab Fix Suggeriti โ†’ clicca "Genera Fix Suggeriti"
    • L'AI creerร  meta description contestuali invece di template generici
    • Costo stimato: ~$0.02 per 500 prodotti (DeepSeek)

๐Ÿ’ฐ Confronto Costi AI

Provider Costo per 1M token Costo 500 prodotti Qualitร 
DeepSeek ๐Ÿ† $0.14 $0.02 โญโญโญโญโญ
OpenAI GPT-4o-mini $0.15 $0.03 โญโญโญโญโญ
Claude Haiku $0.80 $0.15 โญโญโญโญโญ

Risparmio vs lavoro manuale: 8 ore ($240) โ†’ 30 secondi ($0.02) = 99.99% di risparmio!

๐Ÿ“– Documentazione completa: Leggi AI_INTEGRATION.md per guide dettagliate, troubleshooting e best practices.

Command Line Interface (CLI)

# Scansione base (se installato da PyPI)
pyprestascan scan https://tuosito.com/it/

# Oppure se installato da sorgenti
python -m pyprestascan scan https://tuosito.com/it/

# Scansione con opzioni avanzate
pyprestascan scan https://tuosito.com/it/ \
  --max-urls 5000 \
  --concurrency 30 \
  --timeout 20 \
  --project mio-progetto \
  --export-dir ./reports

# Riprendi scansione interrotta
pyprestascan scan https://tuosito.com/it/ --resume

# Debug mode
python -m pyprestascan scan https://tuosito.com/it/ --debug

# Quiet mode (solo errori)
python -m pyprestascan scan https://tuosito.com/it/ --quiet

๐Ÿ“‹ Regole SEO Implementate

PyPrestaScan controlla automaticamente oltre 20 regole SEO PrestaShop-specific:

๐Ÿ”ด Critical Issues

  • TITLE_MISSING: Title tag mancante
  • TITLE_TOO_SHORT: Title < 10 caratteri
  • TITLE_TOO_LONG: Title > 60 caratteri
  • META_DESCRIPTION_MISSING: Meta description mancante
  • H1_MISSING: Tag H1 mancante
  • H1_MULTIPLE: Piรน di un H1 nella pagina
  • CANONICAL_MISSING: Canonical URL mancante
  • PRODUCT_NO_JSONLD: Prodotto senza JSON-LD

๐ŸŸก Warning Issues

  • META_DESCRIPTION_TOO_SHORT: Description < 50 caratteri
  • META_DESCRIPTION_TOO_LONG: Description > 160 caratteri
  • IMAGES_MISSING_ALT: Immagini senza attributo ALT
  • IMAGES_EMPTY_ALT: Immagini con ALT vuoto
  • CART_INDEXABLE: Carrello indicizzabile (bad practice)
  • FACETED_NO_CANONICAL: Filtri faceted senza canonical

๐Ÿ”ต Info Issues

  • IMAGES_GENERIC_ALT: ALT text generico ("image", "photo", etc.)
  • NO_HREFLANG: Hreflang mancante (siti multilingua)
  • SLOW_TTFB: Time To First Byte > 1000ms

๐Ÿ”ง Sistema di Fix Automatici

Tipi di Fix Supportati

  1. Meta Description Fixer

    • Genera description ottimizzate 120-160 caratteri
    • Basate su title e tipologia pagina
    • Confidence: 50-90% (dipende dalla qualitร  del title)
  2. Title Fixer

    • Ottimizza lunghezza title (10-60 caratteri)
    • Tronca title lunghi preservando il significato
    • Espande title corti aggiungendo brand
    • Confidence: 60-90%
  3. ALT Text Fixer

    • Suggerisce ALT text basato su contesto pagina
    • Richiede revisione manuale (confidence: 50%)
    • Template-based per prodotti/categorie
  4. Canonical Fixer

    • Genera canonical URL auto-referenziali
    • Rimuove parametri query non necessari
    • Confidence: 90% (alta affidabilitร )

Come Usare i Fix

  1. Genera fix dopo la scansione:

    • Tab "Fix Suggeriti" โ†’ "Genera Fix Suggeriti"
    • Attendi alcuni secondi per la generazione
  2. Visualizza i fix:

    • Tabella con tutti i fix ordinati per severity e confidence
    • Filtri per status, tipo, automatizzabili
  3. Dettagli fix:

    • Clicca sull'icona ๐Ÿ‘๏ธ per vedere:
      • Valore attuale vs suggerito
      • Spiegazione del problema
      • Query SQL per applicare il fix
  4. Esporta ed applica:

    • Export CSV: per revisione manuale
    • Export SQL: script pronto per l'esecuzione
    • โš ๏ธ Fai sempre un backup prima di applicare le query SQL!

๐Ÿ“ Struttura File Export

Dopo ogni scansione, PyPrestaScan genera:

report/
โ”œโ”€โ”€ crawl.db              # Database SQLite con tutti i dati
โ”œโ”€โ”€ report.html           # Report interattivo con grafici
โ”œโ”€โ”€ pages.csv             # Dettagli di tutte le pagine
โ”œโ”€โ”€ issues.csv            # Tutti gli issues rilevati
โ”œโ”€โ”€ images_missing_alt.csv # Immagini con problemi ALT
โ”œโ”€โ”€ duplicates.csv        # Contenuti duplicati
โ”œโ”€โ”€ fixes.csv             # Fix suggeriti (dopo generazione)
โ””โ”€โ”€ fixes.sql             # Script SQL per fix automatici

๐Ÿ› ๏ธ Configurazione Avanzata

Parametri CLI Principali

Parametro Default Descrizione
--url richiesto URL base del sito da analizzare
--max-urls 10000 Numero massimo di URL da crawlare
--concurrency 20 Richieste HTTP parallele (1-100)
--delay 0 Delay minimo tra richieste (ms)
--timeout 15 Timeout richieste HTTP (secondi)
--depth โˆž Profonditร  massima crawling
--project default Nome progetto per database
--export-dir ./report Directory output report

Filtri URL Avanzati

# Include solo categorie e prodotti
python run_cli.py scan https://shop.com \
  --include "/category/.+" \
  --include "/.*-p\\d+\\.html"

# Escludi parametri di ordinamento
python run_cli.py scan https://shop.com \
  --exclude "\\?.*orderby=" \
  --exclude "\\?.*selected_filters="

๐Ÿค Contribuire

PyPrestaScan รจ un progetto open-source e in continuo miglioramento!

Contributi, segnalazioni bug e feature request sono sempre benvenuti:

  1. Fai fork del repository
  2. Crea un branch per la tua feature (git checkout -b feature/AmazingFeature)
  3. Commit delle modifiche (git commit -m 'Add some AmazingFeature')
  4. Push al branch (git push origin feature/AmazingFeature)
  5. Apri una Pull Request

Roadmap Futura

  • Integrazione API PrestaShop per applicazione fix automatica
  • Supporto multi-lingua migliorato
  • Analisi performance (Core Web Vitals)
  • Monitoraggio scheduled con notifiche
  • Plugin per PrestaShop back-office
  • AI-powered content suggestions
  • Report PDF professionali
  • Export Excel nativo

๐Ÿšจ Risoluzione Problemi

Problemi Comuni

โŒ "Bloccato da robots.txt"

# Verifica robots.txt manualmente
curl https://tuo-sito.com/robots.txt

โšก Crawling lento

# Aumenta concorrenza (attenzione al server)
python run_cli.py scan https://sito.com --concurrency 50

# Riduci delay se robots.txt lo permette
python run_cli.py scan https://sito.com --delay 0

๐Ÿ’พ Errori di memoria

# Riduci concorrenza per grandi siti
python run_cli.py scan https://sito.com --concurrency 10 --max-urls 20000

Log e Debug

# Debug completo
python run_cli.py scan https://sito.com --debug

# Log minimal
python run_cli.py scan https://sito.com --quiet

๐Ÿ”’ Sicurezza e Privacy

Responsabilitร 

  • Rispetta robots.txt e ToS dei siti
  • Non fare overload sui server di destinazione
  • Autentica appropriatamente per siti privati
  • Proteggi credenziali in ambienti condivisi

Rate Limiting Responsabile

# Per siti piccoli/medi
python run_cli.py scan https://shop.com --delay 100 --concurrency 20

# Per siti grandi/condivisi
python run_cli.py scan https://shop.com --delay 500 --concurrency 10

๐Ÿค– Integrazione e API

Script Python

import asyncio
from pyprestascan.cli import CrawlConfig, CliContext
from pyprestascan.core.crawler import PyPrestaScanner

async def custom_scan():
    config = CrawlConfig(
        base_url="https://myshop.com",
        max_urls=5000,
        concurrency=20
    )

    cli_context = CliContext(debug=False, quiet=False, no_color=False)
    scanner = PyPrestaScanner(config, cli_context)
    return await scanner.run()

# Esegui
asyncio.run(custom_scan())

Export Dati

import pandas as pd

# Carica dati da CSV
pages_df = pd.read_csv('report/pages.csv')
issues_df = pd.read_csv('report/issues.csv')

# Analisi personalizzate
low_score_pages = pages_df[pages_df['score'] < 50]
critical_issues = issues_df[issues_df['severity'] == 'CRITICAL']

๐Ÿ“„ Licenza

Questo progetto รจ distribuito con licenza MIT - vedi il file LICENSE per i dettagli.


๐Ÿ™ Ringraziamenti

  • PrestaShop Community per la fantastica piattaforma e-commerce
  • PySide6 per il framework GUI
  • httpx per le richieste HTTP async
  • BeautifulSoup4 per il parsing HTML
  • Tutti i contributori che aiutano a migliorare il progetto

๐Ÿ“ž Supporto

Per domande, bug o feature request:


โญ Star History

Se PyPrestaScan ti รจ stato utile, considera di lasciare una โญ su GitHub!


Made with โค๏ธ by Andrea Piani for the PrestaShop Community

๐Ÿ”— linktr.ee/andreapianidev

Progetto open-source in continuo miglioramento

Python License PRs Welcome

๐Ÿ  Homepage โ€ข ๐Ÿ“š Docs โ€ข ๐Ÿ› Report Bug โ€ข โœจ Request Feature

About

Scansiona Prestashop per ottimizzare la SEO e trovare problemi

Resources

Contributing

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages