Python per la SEO significa usare brevi script per svolgere le parti ripetitive del lavoro di ricerca: controllare centinaia di URL, estrarre title e meta description e analizzare gli export di Search Console più velocemente di quanto consenta un foglio di calcolo. Non devi diventare uno sviluppatore per trarne valore. Nel 2026 puoi descrivere il compito a ChatGPT o Claude in parole semplici, ricevere uno script funzionante, eseguirlo e controllare il risultato.
La competenza che conta non è memorizzare la sintassi. È sapere cosa chiedere, come eseguire il codice in sicurezza e come capire se l’output è corretto. Un principiante che sa leggere uno script di 20 righe e individuare il nome di una colonna sbagliato otterrà più risultati di chi copia il codice alla cieca.
Questa guida ti offre una configurazione che richiede circa dieci minuti, uno schema di prompt che produce script utilizzabili e quattro esempi testati che puoi eseguire oggi: un controllo degli status code, un estrattore di title e meta description, uno strumento per trovare keyword “a un passo” dalla prima pagina nei dati di Search Console e un confronto tra periodi che mostra quali pagine hanno perso clic.
Ogni script qui sotto è stato eseguito su dati di esempio prima della pubblicazione, quindi puoi copiarlo come punto di partenza e adattarlo con il tuo assistente IA.
Cosa può fare davvero Python per chi si occupa di SEO?
Python è più utile quando ripeti lo stesso controllo su molte righe di dati. Se un’attività ti richiede più di un’ora in un foglio di calcolo, o la svolgi ogni mese, è candidata a diventare uno script.
Attività tipiche adatte ai principianti:
- Controllare status code e redirect per un elenco di URL dopo una migrazione
- Estrarre title, meta description, H1 o tag canonical da molte pagine
- Filtrare e raggruppare gli export di Search Console per query, pagina o pattern
- Confrontare due periodi per trovare pagine o query che hanno perso traffico
- Unire dati di strumenti diversi su una colonna URL comune
- Estrarre da Search Console più righe di quante l’interfaccia ti consenta di esportare
Python non sostituisce un crawler come Screaming Frog o una piattaforma all-in-one. Colma le lacune tra di essi: la domanda specifica a cui il tuo strumento non risponde, o il report che costruisci allo stesso modo ogni mese. Il nostro elenco degli strumenti SEO che usiamo copre la parte commerciale dello stack.
Devi saper programmare prima di iniziare?
No, ma devi saper leggere il codice abbastanza bene da controllarlo. Gli assistenti IA scrivono rapidamente codice plausibile, e plausibile non significa corretto. Uno script può girare senza errori e comunque contare la colonna sbagliata o saltare metà dei tuoi URL.
Un obiettivo realistico per un principiante è questo: saper aprire uno script, trovare dove legge il file di input, vedere quali colonne usa e capire cosa scrive in output. Per arrivare a questo livello bastano alcune serate, non mesi. Chiedi all’assistente di aggiungere commenti a ogni blocco e di spiegarti ogni riga che non capisci.
Tre abitudini ti proteggono dalla maggior parte degli errori:
- Prova prima su un piccolo campione. Esegui lo script su 10 URL o 20 righe di cui conosci già la risposta.
- Controlla a campione l’output. Apri manualmente tre risultati nel browser o nell’export originale e confrontali.
- Non incollare mai dati riservati. Non fornire a una chat IA le tue chiavi API, le password dei clienti o dati personali presenti negli export.
Qual è la configurazione più semplice per eseguire script SEO?
Hai due buone opzioni: un notebook nel browser senza nulla da installare, oppure Python sul tuo computer.
| Opzione | Ideale per | Cosa sapere |
|---|---|---|
| Google Colab (notebook nel browser) | Primi esperimenti, condivisione con i colleghi | Nessuna installazione. Carica un CSV nella sessione ed esegui le celle una alla volta. I file scompaiono alla fine della sessione, a meno che tu non li salvi su Drive. |
| Python sul tuo computer | Report ricorrenti, file più grandi, attività pianificate | Installa Python 3 da python.org, poi esegui pip install requests beautifulsoup4 pandas in un terminale. Esegui gli script con python script_name.py. |
| Editor di codice (facoltativo) | Leggere e modificare gli script comodamente | VS Code o qualsiasi editor con supporto per Python evidenzia gli errori e rende visibile l’indentazione. |
Gli esempi di questa guida usano tre librerie. requests scarica le pagine web. Beautiful Soup (nome del pacchetto beautifulsoup4) legge l’HTML e trova i tag. pandas lavora con le tabelle, che è la forma della maggior parte dei dati SEO. Tutte e tre sono gratuite, ampiamente documentate e ben note agli assistenti IA, quindi il codice generato che le usa tende a essere affidabile.
Come scrivere il prompt per far creare a ChatGPT o Claude uno script SEO?
Descrivi l’input, l’output e i casi limite, non solo l’obiettivo. “Scrivi uno script Python per controllare i miei URL” produce codice generico. Un prompt specifico produce qualcosa che puoi eseguire al primo tentativo.
Una struttura di prompt che funziona bene:
- Contesto: “Mi occupo di SEO, non sono uno sviluppatore. Uso Python 3 in locale.”
- Input: “Ho un file urls.txt con un URL per riga.” Oppure incolla la riga di intestazione e due righe di esempio del tuo CSV.
- Compito: “Per ogni URL, registra lo status code HTTP senza seguire i redirect e la destinazione del redirect se presente.”
- Output: “Salva un CSV con le colonne url, status, redirect_to_or_error e stampa i risultati.”
- Casi limite: “Non fermarti se un URL va in timeout o il dominio non si risolve. Usa un timeout di 10 secondi.”
- Vincoli: “Usa solo requests, Beautiful Soup e pandas. Aggiungi un commento sopra ogni blocco.”
Quando lo script fallisce, incolla nella chat il messaggio di errore completo e indica cosa hai eseguito. Sia ChatGPT sia Claude sono bravi a correggere il proprio codice quando vedono il traceback esatto. Se l’output sembra sbagliato senza che lo script si blocchi, descrivi cosa ti aspettavi e cosa hai ottenuto, con una riga di esempio.
I quattro esempi seguenti sono stati costruiti in questo modo, poi ridotti all’essenziale e testati.
Esempio 1: come controllare gli status code di un elenco di URL?
Questo script legge gli URL da un file di testo, richiede ciascuno senza seguire i redirect e salva gli status code in un CSV. È la prima cosa da eseguire dopo una migrazione, un aggiornamento della mappa dei redirect o una pulizia della sitemap.
Crea un file chiamato urls.txt con un URL per riga, salva lo script nella stessa cartella come check_status.py ed eseguilo.
import csv
import requests
HEADERS = {"User-Agent": "Mozilla/5.0 (compatible; MySEOCheck/1.0)"}
with open("urls.txt", encoding="utf-8") as f:
urls = [line.strip() for line in f if line.strip()]
results = []
for url in urls:
try:
r = requests.get(url, headers=HEADERS, timeout=10, allow_redirects=False)
results.append([url, r.status_code, r.headers.get("Location", "")])
except requests.RequestException as e:
results.append([url, "ERROR", type(e).__name__])
with open("status_report.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow(["url", "status", "redirect_to_or_error"])
writer.writerows(results)
for row in results:
print(*row, sep="\t")Cosa cercare nell’output:
- 200: la pagina si carica. Va bene per gli URL che devono essere attivi e indicizzabili.
- 301 o 308: redirect permanente. Verifica che la destinazione nella terza colonna sia la pagina giusta e non la homepage per impostazione predefinita.
- 302 o 307: redirect temporaneo. Spesso è il segnale che un redirect permanente è stato configurato male.
- 404 o 410: la pagina non esiste più. Va bene se voluto, è un problema se l’URL è nella sitemap o nei link interni.
- 5xx o ERROR: problema di server o di connessione. Riprova più tardi; se persiste, segnalalo al tuo sviluppatore.
Lo script imposta allow_redirects=False di proposito. Se lasci che requests segua i redirect, una catena di 301 apparirebbe come un 200 e perderesti completamente il redirect. Se stai analizzando catene di redirect, chiedi al tuo assistente una versione che segua la catena ed elenchi ogni passaggio.
Sii moderato con il volume di richieste. Per qualche centinaio di URL sul tuo sito va benissimo. Per migliaia, chiedi all’assistente di aggiungere una breve pausa tra le richieste, e non puntare mai uno script come questo su un sito che non hai il permesso di testare.
Esempio 2: come estrarre title e meta description in blocco?
Questo script scarica ogni URL, legge l’HTML con Beautiful Soup e registra title, meta description e relative lunghezze. È un modo rapido per trovare snippet mancanti, vuoti o duplicati in un insieme di pagine, per esempio tutti i prodotti di una categoria.
import csv
import requests
from bs4 import BeautifulSoup
HEADERS = {"User-Agent": "Mozilla/5.0 (compatible; MySEOCheck/1.0)"}
def get_title_and_description(html):
soup = BeautifulSoup(html, "html.parser")
title = soup.title.get_text(strip=True) if soup.title else ""
tag = soup.find("meta", attrs={"name": lambda v: v and v.lower() == "description"})
description = tag.get("content", "").strip() if tag else ""
return title, description
with open("urls.txt", encoding="utf-8") as f:
urls = [line.strip() for line in f if line.strip()]
with open("meta_report.csv", "w", newline="", encoding="utf-8") as out:
writer = csv.writer(out)
writer.writerow(["url", "title", "title_length", "description", "description_length"])
for url in urls:
try:
r = requests.get(url, headers=HEADERS, timeout=10)
except requests.RequestException:
continue
if r.status_code != 200:
continue
title, desc = get_title_and_description(r.text)
writer.writerow([url, title, len(title), desc, len(desc)])
print(url, "|", title or "MISSING TITLE", "|", desc or "MISSING DESCRIPTION")Due dettagli lo rendono più robusto della prima bozza che producono la maggior parte degli assistenti. Primo, trova la meta description indipendentemente da maiuscole e minuscole, perché alcuni template di CMS generano name="Description". Secondo, salta le risposte diverse da 200, così le pagine di errore non inquinano il report con title come “Pagina non trovata”.
Apri meta_report.csv nel tuo foglio di calcolo e ordina per title_length e description_length. Zero significa mancante. Poi ordina per title per trovare i duplicati. La lunghezza è solo un’indicazione di massima: Google riscrive gli snippet quando ritiene che un testo diverso si adatti meglio alla query, quindi consideralo un controllo di igiene, non una correzione per il posizionamento. La nostra guida alla SEO on-page spiega cosa scrivere una volta individuate le pagine da sistemare.
Un limite: requests scarica l’HTML grezzo, quindi i title aggiunti via script lato client dopo il caricamento non compaiono. Per i siti che dipendono molto dal rendering lato client potrebbe servire un browser headless, un passo oltre il livello principiante.
Esempio 3: come trovare le keyword “a un passo” dalla prima pagina in un export di Search Console?
Questo script legge il file Queries di un export di Search Console ed elenca le query con un numero significativo di impressioni in cui la tua posizione media è tra 4 e 15. Sono spesso le vittorie più rapide: Google considera già la pagina pertinente, ma si trova appena sotto o in fondo alla prima pagina.
In Search Console apri il report Prestazioni, scegli un intervallo di date, fai clic su Esporta e scegli CSV. Ottieni un file ZIP con diversi CSV. Questo script usa Queries.csv.
import pandas as pd
df = pd.read_csv("Queries.csv")
df.columns = ["query", "clicks", "impressions", "ctr", "position"]
df["ctr"] = df["ctr"].str.rstrip("%").astype(float)
opportunities = df[
df["position"].between(4, 15) & (df["impressions"] >= 500)
].sort_values("impressions", ascending=False)
print(opportunities.to_string(index=False))
opportunities.to_csv("striking_distance.csv", index=False)Lo script rinomina le colonne in fase di lettura, perché l’export usa etichette come “Top queries” e memorizza il CTR come testo con il simbolo di percentuale. Convertire il CTR in numero ti permette di ordinarlo e filtrarlo. Se la tua interfaccia di Search Console è in un’altra lingua, le etichette delle colonne cambiano ma l’ordine resta lo stesso, ed è per questo che lo script assegna i nomi in base alla posizione.
Adatta le due soglie al tuo sito. Una piccola attività locale potrebbe usare 50 impressioni invece di 500. Un grande negozio potrebbe restringere l’intervallo alle posizioni da 5 a 12. Per ogni query nell’output, trova la pagina che si posiziona, poi verifica se la query trova davvero risposta nel title, nell’H1 e nei primi paragrafi.
Un limite da conoscere: Google afferma che gli export di Search Console dall’interfaccia sono troncati a 1.000 righe. Per i siti più grandi, la Search Console API restituisce fino a 25.000 righe per richiesta, e puoi scorrerne altre con il parametro startRow. Configurare l’accesso all’API richiede un progetto Google Cloud e delle credenziali, ed è un buon secondo progetto quando ti sentirai a tuo agio con questi script.
Esempio 4: come vedere quali pagine hanno perso clic tra due periodi?
Questo script confronta due export Pagine di Search Console ed elenca le pagine con il calo di clic più forte, accanto alla posizione media prima e dopo. È il cuore di un controllo SEO mensile e molto più veloce che abbinare le righe a mano.
Esporta il report Pagine due volte: una per il periodo recente (salvato come Pages_last.csv) e una per il periodo precedente (Pages_prev.csv). Usa periodi della stessa durata e, se la tua attività è stagionale, confrontali con le stesse settimane dell’anno precedente.
import pandas as pd
cols = ["page", "clicks", "impressions", "ctr", "position"]
now = pd.read_csv("Pages_last.csv", names=cols, header=0)
before = pd.read_csv("Pages_prev.csv", names=cols, header=0)
merged = now.merge(before, on="page", how="outer", suffixes=("_now", "_before"))
merged[["clicks_now", "clicks_before"]] = merged[["clicks_now", "clicks_before"]].fillna(0).astype(int)
merged["click_change"] = merged["clicks_now"] - merged["clicks_before"]
losers = merged.sort_values("click_change").head(10)
print(losers[["page", "clicks_before", "clicks_now", "click_change",
"position_before", "position_now"]].to_string(index=False))L’outer merge è importante. Una pagina sparita dall’export recente mostra clicks_now pari a 0 e position_now vuoto, ed è proprio il tipo di pagina che vuoi intercettare. Una pagina nuova compare con clicks_before pari a 0. Un semplice CERCA.VERT in un foglio di calcolo spesso nasconde entrambi i casi.
Leggi l’output a coppie. Clic persi con una posizione peggiore indicano un problema di posizionamento: controlla la pagina, i suoi concorrenti ed eventuali modifiche recenti. Clic persi con una posizione stabile di solito significano meno ricerche o una pagina dei risultati cambiata, per esempio una nuova AI Overview o più annunci. La nostra guida al monitoraggio dei risultati SEO spiega come distinguere queste cause.
Quali attività SEO automatizzare dopo, e quali lasciare agli strumenti?
Automatizza con script le attività specifiche del tuo sito o del tuo reporting; acquista strumenti per le attività che richiedono scala o infrastruttura.
| Attività | Script Python | Strumento dedicato |
|---|---|---|
| Status code per un elenco di URL noto | Sì, semplice e veloce | Va bene anche con qualsiasi crawler |
| Crawl completo del sito con rendering | Possibile, ma lungo da costruire | Meglio: software di crawling |
| Report personalizzati di Search Console | Sì, ideale con pandas | Looker Studio per le dashboard |
| Unire dati di più strumenti | Sì, merge di pandas sull’URL | I fogli di calcolo faticano su grandi volumi |
| Monitoraggio dei posizionamenti nel tempo | Sconsigliato | Meglio: rank tracker |
| Raggruppare le keyword per argomento | Sì, con l’aiuto di un assistente IA | Alcune piattaforme lo includono |
| Dati sui backlink | Solo tramite un’API a pagamento | Meglio: strumento per i backlink |
Buoni progetti successivi: raggruppare le query in base a una parola che contengono, come “prezzo” o il nome di una città, e unire i dati delle pagine di Search Console con le conversioni di GA4 sull’URL.
Come usare gli assistenti IA per capire il codice, non solo per scriverlo?
Chiedi spiegazioni al livello che ti serve, poi verifica di aver capito modificando una cosa. Incolla uno script e chiedi: “Spiegamelo riga per riga come se conoscessi Excel ma non Python.” Poi fai una domanda specifica, come “Cosa dovrei cambiare per estrarre anche l’H1?”, e prova a fare la modifica da solo prima di chiedere la risposta.
La domanda di approfondimento più utile è “Cosa potrebbe far dare a questo script risultati sbagliati senza errori?” Spinge l’assistente a elencare i malfunzionamenti silenziosi, come una codifica errata, righe duplicate o un filtro che rimuove più di quanto ti aspetti.
Quando ha senso coinvolgere Marketer Coffee?
Gli script rispondono alle domande; non decidono quali domande contano. Marketer Coffee è un’agenzia di AI SEO e GEO, e usiamo questo tipo di automazione all’interno di progetti più ampi: interventi tecnici, programmi di contenuti e lavoro sulla visibilità nell’IA. Due risultati dei nostri clienti, in settori non legati agli esempi di questa guida:
- Aldi.pl (retail). I clic organici sono passati da 367.127 a 852.724 al mese in 12 mesi (+132%) grazie a contenuti di prodotto, schema Product, un’architettura più snella e dati dei punti vendita unificati. Leggi il case study di Aldi.
- Planika (caminetti di design). Sette articoli localizzati per gli Stati Uniti hanno portato un sito che Google non aveva indicizzato a 1.052 visite mensili dagli USA, con Ahrefs che ha registrato 401 menzioni in Google AI Overview, 136 menzioni in Perplexity e 20 menzioni in ChatGPT. Leggi il case study di Planika.
Per chi siamo adatti: aziende con siti grandi o internazionali in cui lavoro sui dati, contenuti e ricerca con IA richiedono un unico piano. Per chi non siamo adatti: chi ha bisogno soltanto di far scrivere un singolo script; un assistente IA e questa guida ti serviranno meglio e non costano nulla.
Se vuoi vedere come i motori di IA descrivono oggi il tuo sito, esegui il nostro audit gratuito della visibilità nell’IA. Maggiori informazioni sul servizio nella nostra pagina AI SEO.
Domande frequenti su Python per la SEO
Vale la pena imparare Python per la SEO nel 2026?
Sì, a livello base. Con ChatGPT o Claude che scrivono la maggior parte del codice, il valore sta nel sapere cosa chiedere e come controllare il risultato. Bastano alcune serate di pratica per automatizzare controlli degli status code, audit dei metadati e report di Search Console.
ChatGPT o Claude possono scrivere script SEO che funzionano al primo tentativo?
Spesso sì, se descrivi il file di input, le colonne di output e i casi limite. Prova sempre su un piccolo campione di cui conosci la risposta e, se qualcosa non funziona, incolla all’assistente il messaggio di errore completo.
Quali librerie Python dovrebbe imparare per prime un principiante di SEO?
requests per scaricare le pagine, Beautiful Soup per leggere l’HTML e pandas per lavorare con CSV e dati da foglio di calcolo. Queste tre coprono la maggior parte degli script SEO per principianti.
Come ottenere più di 1.000 righe da Search Console?
L’export dall’interfaccia è troncato a 1.000 righe. La Search Console API restituisce fino a 25.000 righe per richiesta e supporta la paginazione con startRow, quindi uno script Python che usa l’API può estrarre set di dati molto più grandi.
È sicuro eseguire script SEO su qualsiasi sito?
Eseguili su siti di tua proprietà o che hai il permesso di testare, mantieni moderato il volume di richieste, imposta un timeout e aggiungi pause per gli elenchi lunghi. Non condividere mai chiavi API o dati dei clienti in una chat IA.
Cosa ricordare su Python per la SEO?
Parti in piccolo, prova su dati che conosci e lascia che l’assistente IA scriva mentre tu pensi. I quattro script di questa guida coprono le esigenze più comuni dei principianti: status code, metadati, query a un passo dalla prima pagina e confronti tra periodi. Ognuno sostituisce un’attività ricorrente in un foglio di calcolo e può essere esteso un prompt alla volta.
Se preferisci un team che unisca questo tipo di analisi a una strategia di contenuti e di ricerca con IA, prenota una consulenza gratuita.
Fonti: Guida di Google Search Console, “Esportare i dati direttamente da un report di Search Console” (limite di export di 1.000 righe); Google for Developers, Search Console API, Search Analytics: riferimento query (rowLimit da 1 a 25.000, startRow); documentazione ufficiale di requests, Beautiful Soup e pandas; script testati da Marketer Coffee su dati di esempio con Python 3.13 (novembre 2026); Marketer Coffee, case study di Aldi e Planika (altri settori).







