Google Webmaster Tools Api in PHP

di  Antonio Coschignano, domenica 23 agosto 2009
Google Labs mette a disposizione le API per Google Webmaster Tools, in modo tale da permettere ai webmaster che utilizzano questo servizio, di implementare i dati e le funzioni all' interno di altre applicazioni. Attualmente, le API non consentono l' utilizzo completo di tutti i servizi di Google Webmaster Tools, ma solo alcune di essi. Vediamo le operazione che è possibile effettuare su un proprio account :
  • Visualizzare l' elenco dei siti web
  • Aggiungere o rimuovere un sito
  • Gestire la verifica di proprietà
  • Modificare le impostazioni (geolocazione, dominio preferito, velocità di scansione )
  • Recuperare l' elenco delle parole chiave che Google ha rilevato su un determinato sito
  • Gestire le proprie Sitemaps
  • Gestire il centro messaggi presente negli Strumenti per i webmaster
  • Recuperare l'elenco dei problemi che Google ha rilevato durante la scansione del sito
In questo articolo vedremo una libreria di classi in PHP che ci permette di interagire con Google Webmaster Tools in maniera molto semplice senza dover conoscere il funzionamento e il meccanismo delle API Google. In poche parole, è un insieme di classi parallele alle funzioni che attualmente le API ci permettono di usare. Le classi che vedremo consentono un approcio molto intuitivo alle funzioni che ho citato sopra.

Le classi sono :
  • class Entry
  • class GoogleAuth
  • class ManagingSites
  • class ManagingSitemaps
  • class ManagingMessages
  • class Keywords
  • class CrawlIssues
Le classi marcate in rosso ancora non sono state sviluppate. Saranno aggiunte in quest' articolo mana mano che vengono completate. Scarica direttamente la libreria

La prima operazione da effettuare prima di utilizzare le classi è l' autenticazione tramite il metodo statico della classe GoogleAuth :
$auth = GoogleAuth::getAuth("email","password","sitemaps");
Il terzo parametro sitemaps indica la tipologia di API Google a cui vogliamo accedere. Una volta ottenuto il token $auth è possibile utilizzare le classi ed effettuare le operazioni. Basta passare $auth nel costruttore di ciascuna classe e richiamare i metodi. Adesso per ogni classe vediamo metodi ed esempi.

La classe Entry

Tutte le classi che vedremo in quest' articolo estendono la classe GoogleWebmasterTool, che implementa il metodo getDataResult($site) che non fa altro che ritornare una lista di elementi in XML formato Feed, e mappare tali elementi in array di oggetti Entry. La lista riguarda il tipo di classe su cui chiamiamo il metodo. Ad esempio se viene chiamato su un istanza dell' oggetto ManagingSitemaps, ritornerà la lista delle sitemaps con diversi informazioni, inerenti al sito che gli abbiamo passato come paramatero. Ogni Entry rappresenta un elemento del Feed XML, dove è possibile accedere alle proprietà tramite il metodo getPropertyValue("keys"), dove keys può assumere diversi valori in base alla proprietà a cui desideriamo accedere. Per sapere tutte le parole chiavi utilizzabili consultare la pagina http://code.google.com/intl/it-IT/apis/webmastertools/docs/2.0/reference.html Comunque tutto ci sarà più chiaro nell' analisi di ogni singola classe.

ManagingSitemaps

Tramite questa classe è possibile gestire le nostre Google Sitemaps di tipo Web, Video, Code, Mobile e News. Per prima cosa bisogna ottenere un' istanza della classe passandogli la stringa di autenticazione $auth nel costruttore :
$sitemap = new ManagingSitemaps($auth);
Ecco una panoramica dei metodi utilizzabili per effettuare le nostre operazioni :
Ritorna l'elenco delle sitemap inerenti al sito $sitemap->getDataResult($site)
Aggiunge una sitemap di tipo WEB (quella normale) , VIDEO, CODE $sitemap->submitRegularSitemap($site,$sitemap_url, $type="WEB")
Aggiunge una sitemap di tipo Mobile, specificando il linguaggio di markup HTML, WML, o CHTML $sitemap->submitSitemapMobile($site, $sitemap_url, $markup_language="HTML")
Aggiunge una sitemap di tipo News $sitemap->submitSitemapNews($site, $sitemap_url, $publication_label="")
Da notare che se una sitemap non esiste viene creata, e se esiste viene aggiornata, cioè viene messa in attesa di rivalutazione. Vediamo un semplice esempio di aggiunta di una sitemap al nostro Google Webmaster Tools :
$sitemap->submitRegularSitemap("http://www.tuosito.com/","http://www.tuosito.com/sitemap.xml");
In questo caso abbiamo aggiunto una sitemap normale quella WEB di default. Invece per accedere alla lista delle sitemap inerenti ad un sito web basta chiamare il metodo :
$entries = $sitemap->getDataResult("http://www.tuosito.com/");
Come ho accennato sopra, $entries non è altro che un array di oggetti Entry, da cui è possibile estrapolare diverse informazioni attraverso il metodo getPropertyValue("keys"). Ad esempio per poter stampare la lista delle sitemaps usiamo la chiave "wt:id" :
foreach($entries as $entry)
	echo $entry->getPropertyValue("wt:id");
Vediamo altre keys che possiamo utilizzare :
  • wt:sitemap-url-count : il numero di url presenti nella sitemap
  • wt:sitemap-type : il tipo di sitemap WEB, CODE, MOBILE etc...
  • wt:sitemap-last-downloaded : la data in formato RFC 3399 cioè YYYY-M-DT00:00:00.000Z, dell' ultimo download della sitemap da parte di Google

Keywords

La classe Keywords ci permette di recuperare le parole chiavi più comuni che lo spider googlebot ha rilevato durante la scansione del sito, e anche quelle presenti nel testo di ancoraggio dei link che rimandano al nostro sito. Vediamo un esempio :
$keywords = new Keywords($auth);
$keys = $keywords->getDataResult("http://www.simplesoft.it/");
La variabile $keys non è altro che un array contenente le chiavi suddivise in internal quelle presenti nel nostro sito, ed external relative all' anchor text. Ad esempio se vogliamo stampare quelle internal :
$keysInternal = $keys['internal'];
foreach($keysInternal as $k)
	echo $k."<br>"
per quelle external:
$keysExternal = $keys['external'];
foreach($keysExternal as $k)
	echo $k."<br>"

CrawlIssues

Con questa classe possiamo accedere alla lista degli errori o problemi, segnalazioni rilevati da googlebot durante il processo di scansione. Esempio :
$crawlIusses = new CrawlIusses($auth);
$entries = $crawlIusses->getDataResult("http://www.miosito.it/");
Le proprietà di ciascun entry sono :
  • wt:crawl-type : il tipo di crawler che ha rilevato il problema
  • wt:issue-type : il tipo di problema, ad esempio url bloccato dal robots.txt (che comunque non è un problema ma semplicemnte una segnalazione)
  • wt:url : l' url su cui è stato rilevato il problema o errore
  • wt:date-detected : la data
  • wt:detail : altri dettagli
Basta richiamare su ogni Entry il metodo getPropertyValue() passandogli una delle seguenti stringhe per accedere all' informazione.

Scarica la libreria (ZIP)

Articoli correlati


8 Commenti per "Google Webmaster Tools Api in PHP"

Autore: daniele

Ciao, Ottima libreria, complimenti. Volevo sapere se sara' portata a termine la libreria per il Webmaster tool di Google anche con la parte nuova che riguarda le statistiche avanzate come la velocita' di scansione del sito, i malware ecc. Grazie e complimenti ancora. Daniele

mercoledì 09 dicembre 2009 ore 20:34

Autore: Antonio Coschignano

Ciao Daniele, grazie. Le classi ManagingSites e ManagingMessages saranno portati a termine al più presto, mentre per quanto riguarda le nuove funzionalità di google (ottime direi) velocità di scansione e malware, ancora purtroppo Google non ha rilasciato le API. Ma non appena verrano rese diponibili aggiornerò la librearia. Ciao e grazie ancora

mercoledì 09 dicembre 2009 ore 22:37

Autore: daniele

Molto bene :) HO provato le lib, ho riscontrato un errore di battitura sul nome della classe crawlerissues. Anche correggendo tale errore, pultroppo pero' sembra non funzionare piu' la libreria. Un'altro piccolo warning invece deriva dal fatto che la classe per l'auth l'hai fatta che accetta 3 paramentri , mentre qui ne passi solo due.. Puoi darmi conferma che invece a te continua funzionare? Pultroppo a me non funziona la lib :-( Grazie.

giovedì 10 dicembre 2009 ore 02:22

Autore: daniele

ho fatto un controllo, il problema dovrebbe riguardare l'autenticazione . Mi restituisce un errore 401 ... Pero' i miei dati sono giusti..

giovedì 10 dicembre 2009 ore 02:31

Autore: Antonio Coschignano

Le librerie sono state corrette, c'era effettivamente un errore, è stato aggiornato anche l'articolo grazie a Daniele :-)

sabato 12 dicembre 2009 ore 10:41

Autore: Christian

Ciao Antonio, spendide librerie. Per caso le hai terminate? Ormai il post è un po' datato e spero di non arrivare in ritardo. Sto implementando il medoto ManagingSites con la verifica del sito, ma ho sempre l'errore 400. Percaso sei riuscito a validare il sito tramite metatag o httppage? Grazie mille.

mercoledì 28 aprile 2010 ore 12:36

Autore: marco

Complimenti per la classe. Non è stato fatto nessun altro aggiornamento alla classe? Purtroppo manca un metodo fondamentale, quello dell'autenticazione del sito.

domenica 16 gennaio 2011 ore 03:01

Autore: Daniele

Ciao Antonio, volevo chiederti se la classe ManagingMessages non è ancora disponibile, nel file zip non è presente. Grazie

venerdì 03 agosto 2012 ore 14:46

Lascia un commento

Nome :
E-mail :
Commento :

Tutti i commenti inseriti devono essere approvati da un amministratore prima di essere visualizzati al pubblico. Si tratta di una misura preventiva contro spam e pubblicità e non è necessario reinviare il commento. Si prega di scrivere commenti in tema. Spam e messaggi promozionali non vengono approvati.