Come scrivere testi web in prospettiva SEO sfruttando SEMrush e processi semi-automatizzabili in PHP
Vi proponiamo un metodo per progettare un testo in ottica SEO in modo semi-automatizzabile, partendo dall’analisi dei competitor e da qualche utile strumento che ci mette a disposizione SEMrush.
Il nostro primo obbiettivo è quello di studiare un processo, in larga parte implementabile sotto forma di codice (noi abbiamo usato PHP e una serie di API scelte, ma ovviamente il tutto può essere adattato e migliorato notevolmente), che ci permetta di ottenere un documento con una serie di indicazioni per scrivere testi web ben strutturati dal punto di vista SEO.
Ma il nostro secondo, vero obbiettivo è quello di stimolare una discussione su come si potrebbe implementare veramente un processo di questo tipo, fornendo sostanzialmente qui solo qualche spunto.
Quello che proponiamo è uno scheletro di base dal quale si potrebbe partire per sviluppare un processo più interessante e strutturato e aspettiamo i contributi di tutti voi per fare insieme qualcosa di più grande e interessante.
Il Processo: come creare testi SEO
Il processo che vogliamo proporre prevede di partire da una singola parola chiave, espanderla tramite SEMrush, studiare le SERP delle keyword trovate, analizzare i competitor e ordinarli secondo un parametro scelto, tirando poi fuori una serie di parametri quantitativi che ci permetteranno di comporre il nostro report di analisi.
Più nel dettaglio il processo prevede:
- Scelta della keyword;
- Estrazione delle related keyword tramite le API SEMrush;
- Estrazione dei primi 5 siti posizionati in tutte queste keyword;
- Creazione di una lista di competitor;
- Ordinamento della lista in base al posizionamento riscontrato e in base al numero di link ottenuti;
- Calcolo dei “pesi” da assegnare ai parametri che usciranno da ogni competitor (i competitor “migliori” avranno peso maggiore)
- Estrazione delle entities dai testi con le Dandelion API;
- Classificazione dei testi e calcolo della classificazione ottimale secondo i pesi calcolati al punto 6;
- Estrazione di altre informazioni (news per le keyword scelte, H1 dei top competitor, title dei top competitor, Schema.org, etc.)
- Generazione del report
Criticità
Il processo proposto ha una serie enorme di criticità, di cui siamo in parte consapevoli. Ci piacerebbe approfondire questo aspetto con voi, andando a progettare insieme un metodo più efficiente.
Alcune criticità identificate da noi, con le soluzioni possibili:
- Nel calcolo dei pesi, si assegna il peso del posizionamento in termini assoluti, senza badare alla competitività della keyword. Quindi, se un sito è posizionato 3° per una keyword competitiva, ottiene un punteggio minore di un sito posizionato 1° per una keyword meno competitiva. Inoltre si prendono sempre 5 competitor, qualsiasi sia la keyword. Si potrebbe migliorare introducendo un parametro di “profittabilità” come il banalissimo KEI, che serva sia a decidere quanti risultati prendere, sia che punteggio dar loro;
- Se lo stesso competitor è su più SERP, questo accumula più punteggi e la cosa non è controllabile. Può essere un bene (scrive un testo che si posiziona ovunque.. quindi ottimo così) o un male (non possiamo controllare questo fatto);
- Si usa come unico parametro negativo il numero di link. Si potrebbe migliorare usando la Domain Authority, per esempio;
- Le related keyword sono un po’ limitanti. In futuro, con l’uscita di API delle SEO Ideas, il processo potrebbe essere migliorato;
- Ci si basa unicamente sui competitor. Se i competitor fanno male, noi faremo male. Se i competitor si “perdono” qualcosa, noi ci perdiamo quel qualcosa.
Passiamo ora all’implementazione!
L’Implementazione: come utilizzare le API di SEMrush
Non possiamo riportare tutto il codice per motivi di praticità. Riporteremo alcune stringhe scelte, che illustrano le API di SEMrush e i passaggi chiave.
Per utilizzare le API utilizzeremo le cURL. Siccome dovremo usarle spesso conviene scrivere una funzione che ne semplifichi l’applicazione:
Espansione della keyword: ottenere parole chiave affini
Abbiamo la nostra keyword di partenza (potremmo parlare di entità, ma per ovvi motivi in questo caso si parla di keyword, concetto ben più comprensibile a un software e quindi più facilmente automatizzabile/standardizzabile).
Una volta in possesso di un API Key, utilizzeremo le Analytics API di SEMrush per estrarre keyword affini da utilizzare nel nostro testo web.
Documentazione (Related Keywords)
Come vediamo dalla documentazione, le API in genere restituiscono varie colonne di valori. Noi siamo interessati solo alle keyword correlate, non al traffico che esse portano, ad esempio. Chiediamo allora solo la prima colonna (export_columns=Ph).
Usiamo inoltre il database it (database=it), perché siamo interessati alle sole keyword usate in Italia.
Le API ci restituiscono una lista incolonnata di keywords. Ogni riga di questa colonna è terminata da un “a capo”, ovvero un particolare carattere che in php viene chiamato PHP_EOL.
Per trasformare il responde delle API in un array php, utilizziamo explode, passandogli il response dell’API e il carattere tramite il quale intendiamo spezzare la lista di keyword, ovvero il PHP_EOL.
Dal response dell’API togliamo il nome della colonna e gli spazi, sostituendoli con il carattere ‘+’ in modo da ottenere solo keyword del tipo parola1+parola2.
Identificazione del contenuto più funzionale al posizionamento
Abbiamo una buona espansione del nostro concetto iniziale.
Quali, tra queste parole, dobbiamo usare e in che misura, affinché Google identifichi il nostro testo come si deve?
Utilizzeremo i testi di siti ben posizionati per le keyword trovate e identificheremo un metodo di valutazione.
Faremo ancora uso delle API di SEMrush per ottenere una lista di siti di cui analizzeremo il contenuto. Ci fermeremo alle prime 5 posizioni organiche per ogni keyword.
Documentazione (Phrase Organic)
Per ogni keyword andiamo ad estrarre tramite API Phrase Organic i primi 5 risultati organici e li mettiamo nell’array $page_list. Quindi chiediamo di mostrare solo 5 risultati (display_limit=5) e solo la colonna con la lista delle Url (export_columns=Ur).
Il resto è solo manipolazione dell’array: togliamo il nome della colonna, così come ci viene dato dalle API e l’ultimo carattere, sempre presente quando estraiamo una sola colonna dalle API.
Per ognuna delle pagine estratte dovremo trovare dei parametri di valutazione. I parametri che utilizziamo sono:
- Posizionamento
- Referring Domains (come parametro negativo.Un sito che presenta testi web con meno Backlink, che si posiziona bene si suppone abbia una Seo OnPage migliore)
Abbiamo scelto questi due parametri per dare un’idea del procedimento. Siete ovviamente liberi di modificare l’algoritmo. Sarebbe ad esempio sicuramente utile aggiungere la PA, la Keyword Difficulty e il Search Volume.
Come detto, per ogni pagina ricaviamo i dati che ci interessano:
Posizionamento
Gli url estratti sono già ordinati secondo il posizionamento organico per quella specifica keyword.
Referring Domains
All’interno del foreach precedente, dove abbiamo lasciato il blocco [...Altro codice ...] andiamo ad iserire il seguente listato:
Documentazione (Referring Domains)
Vediamo che stavolta abbiamo chiesto, tramite le Referring Domains API, i backlinks_refdomains, filtrando tutte le colonne tranne la domain, che contiene il nome dei domini che puntano alla $page_url.
A noi interessa non il nome, bensì il numero, dunque contiamo gli elementi dell’array estratto con le API.
Infine riorganizziamo il nostro array in una tabella ($table1). Otterremo qualcosa del tipo:
Ma con ovviamente molte più righe.
Trovare il migliore: individuare un riferimento per il nostro testo SEO
Questa è la fase centrale del processo. Il trucco è dare il giusto peso ai dati estratti in modo da individuare il sito con il miglior contenuto per l’argomento d’interesse.
Faccio le seguenti considerazioni:
1. Si suppone che un sito ben posizionato abbia fatto un buon lavoro (è un’ipotesi abbastanza spinta). Diamo una valutazione numerica a questo dato:
Il 5 nasce dal fatto che utilizziamo i primi 5 competitor. Utilizzando N competitor avremo un punteggio determinato da N – posizione. Notate che per le prime posizioni il punteggio è più alto. Chiamo questo punteggio