16

Script Google Suggest: détecter les nouvelles suggestions de suggestions

J'ai crée un petit script PHP dernièrement qui permet d'être alerté par mail dès qu'une nouvelle suggestion fait son apparation par rapport à un mot-clé dans Google suggest (je vous recommande d'y jeter un oeil pour mieux comprendre cet article et son intérêt). Je me suis dit après réflexion qu'il était trop bête de s'en arrêter là, du coup j'ai rajouté une boucle pour découvrir les nouvelles suggestions de suggestions, sur un niveau de profondeur (aussi un peu inspiré par le script Google Suggest de @seoblackout). Si je veux surveiller les nouvelles requêtes similaires à "poulet roti" (site de recette de cuisine du dimanche), je vais aussi surveiller les suggestions de "poulet roti recette", "poulet roti au citron", "poulet roti cuisson" ... ce qui élargit le champ de mots-clés. Un schéma sera peut-être plus clair:

Comme je trouvais dommage que les suggestions de suggestions restent "juste" dans un fichier texte sur le serveur, j'ai rajouté une fonction pour qu'un email soit envoyé lors du premier lancement du script avec l'ensemble des mots proposés par Google Suggest, voici un exemple du mail reçu (non je ne fais pas de keyword stuffing sur poulet roti !):

Les 58 termes suivants correspondent aux recherches fréquentes des internautes relatives à l'expression "poulet roti":


"poulet roti", "poulet roti au four", "poulet roti four", "poulet rotie" "poulet roti recette", "poulet roti a la broche" ,, "poulet roti au citron", "poulet roti en cocotte", "poulet roti citron", "poulet roti cuisson", "poulet roti au four marmiton", "poulet roti au four recette", "poulet roti au four temps de cuisson", "poulet roti au four ricardo", "poulet roti au four marocain", "poulet roti au four a la broche", "poulet roti au four facile", "poulet roti au four combien de temps", "poulet roti au four au miel", "poulet roti four recette", "poulet roti four temperature", "poulet roti four chaleur tournante", "poulet roti four broche", "poulet roti four electrique", "poulet roti four froid ou chaud", "poulet roti four marmiton", "poulet roti four temps de cuisson", "poulet roti four pomme de terre", "poulet rotie au four", "poulet rotie recette", "poulet rotie pomme de terre", "poulet rotie a la marocaine", "poulet rotie a la broche", "poulet rotie four", "poulet rotie facon basquaise", "poulet rotie au citron", "poulet rotie broche", "poulet roti recette facile", "poulet roti recette marmiton", "poulet roti recette four", "poulet roti recette au four", "poulet roti recette tunisienne", "poulet roti recette simple", "poulet roti recette marocaine", "poulet roti recette originale", "poulet roti a la broche au four", "poulet roti au citron confit", "poulet roti au citron marocain", "poulet roti au citron et romarin", "poulet roti en cocotte minute", "poulet roti en cocotte au four", "poulet roti en cocotte en fonte", "poulet roti citron confit", "poulet roti citron miel", "poulet roti citronnelle", "poulet roti citron vert", "poulet roti cuisson four", "poulet roti cuisson lente"
(enfin selon Google Suggest!)

Afin d'être informé dès qu'une nouvelle suggestion est disponible via l'API de Suggest, on pourra le lancer avec lynx dans un cronjob quotidien:

#lynx -dump "http://www.monsite.com/script-suggest/suggest.php?keyword=poulet roti&email=monemail@domain.com&lg=fr"

Si une ou plusieurs suggestions relatives à votre mot-clé apparaîssent dans Google Suggest, vous en serez informé par mail afin de vous positionner dessus le plus rapidement possible [Mode WhiteHat=on]encore faut-il qu'ils soient pertinents par rapport à vos pages de destination[/Mode WhiteHat=off]. Voici le script, vos remarques pour l'améliorer sont les bienvenues ! (je ne suis pas développeur donc il y avait peut être plus simple...)

<?php

/*
######################################
###### Veilleur Google Suggest #######
###### ----------------------- #######
###   Script provenant du site:    ###
###   http://www.yapasdequoi.com   ###
###           @aymerictwit         ###
###                                ###
###      **  Version 2.0  **       ###
###                                ###
######################################

1) Il faut appeler le script de cette manière:
http://www.monsite.com/script-suggest/suggest.php?keyword=poulet roti&email=monemail@domain.com&lg=fr

2) Concernant le choix de la langue, la liste des valeurs dispo est ici:
http://www.google.com/cse/docs/resultsxml.html#interfaceLanguages
*/

//Adresse du destinataire
$monemail=$_GET["email"];
//Signature du mail
$sign='(selon Google Suggest)';
//Langue de l'interface Google
$lg=$_GET["lg"];

//DEBUT DU SCRIPT, ENFIN!

//récupérer les suggestions via CURL
function curlsuggest ($suggest,$lg='fr') {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'http://www.google.com/complete/search?output=toolbar&oe=utf8&hl='.$lg.'&q='.$suggest);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$resultat=curl_exec ($ch);
curl_close ($ch);
//on transforme le résultat XML en objet
return simplexml_load_string($resultat);
}

//Envoyer un email en cas de nouvelles suggestions
function email($i,$originalkeyword,$pourlemail,$monemail,$sign) {
//Variables pour l'envoi du mail
$headers ='From: "Veilleur de Google Suggest"<'.$monemail.'>'."\n";
$headers .='Content-Type: text/html; charset="utf-8"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';

if (!file_exists($originalkeyword.'.txt') && $i!="0") mail($monemail,'Recherches relatives à "'.$originalkeyword.'" dans Google Suggest','Première exécution du script Google Suggest<br /><br />Les '.$i.' termes suivants correspondent aux recherches fréquentes des internautes relatives à l\'expression "'.$originalkeyword.'": '.$pourlemail.$sign,$headers);

elseif ($i=="1") mail($monemail,'Nouvelle recherche relative à "'.$originalkeyword.'" dans Google Suggest','Le terme suivant: '.$pourlemail.'correspond à une nouvelle recherche fréquente des internautes '.$sign,$headers);

elseif ($i>"1") mail($monemail,'Nouvelles recherches relatives à "'.$originalkeyword.'" dans Google Suggest','Les '.$i.' termes suivants: '.$pourlemail.'<br />'.'correspondent à de nouvelles recherches fréquentes des internautes '.$sign,$headers);

elseif ($i=="0") mail($monemail,'Recherches relatives à "'.$originalkeyword.'" dans Google Suggest','Il n\'y a aucune suggestion relative à l\'expression "'.$originalkeyword.'": '.$pourlemail,$headers);
}

//On vérifie la présence du mot-clé en GET dans l'URL
if (isset($_GET["keyword"]) && isset($_GET["email"]) && isset($_GET["lg"])){
$keyword=stripslashes(str_replace(array('%20',' '),array('+','+'),$_GET["keyword"]));
$keyword_filename=str_replace(array('+','\\'),array('_',''),$_GET["keyword"]);

//si le mot-clé a déjà été recherché dans Suggest
//on charge ses déclinaisons dans une variable
if (file_exists($keyword_filename.'.txt')) {
$filecontent=file_get_contents($keyword_filename.'.txt');
}

//on cherche les suggestions de notre mot-clé
$xmlsuggest = curlsuggest($keyword,$lg);
$i=0;

//On fait une boucle pour appeler les "suggestions de suggestions"
foreach ($xmlsuggest->CompleteSuggestion as $CompleteSuggestion) {
$keywordforloop=stripslashes(str_replace(array('%20',' '),array('+','+'),$CompleteSuggestion->suggestion['data']));

//on récupère les suggestions relatives aux suggestions de notre mot-clé
$xml = curlsuggest($keywordforloop,$lg);
foreach ($xml->CompleteSuggestion as $CompleteSuggestionloop) {
$suggestion=$CompleteSuggestionloop->suggestion['data'];
if (eregi($suggestion.';', $filecontent))
{
//si le mot-clé proposé était déjà présent lors de notre
//précédente reherche, on ne fait rien
}
else{
//si de nouveaux mots-clés sont suggérés par Suggest,
//on les ajoute au fichier crée précédemment pour ne plus
//le détecter à nouveau
$i++;
$filecontent.= $suggestion.';'."\n";
$pourlemail.= '<br />'.'"'.$suggestion.'" ';
}
}
}

//on s'envoie un mail avec avec le(s) nouveau(x) mot(s)-clé(s) à travailler
if ($i>=1 && file_exists($keyword_filename.'.txt'))  email($i,$keyword_filename,$pourlemail,$monemail,$sign);
//on envoie la liste des suggestion pour la première exécution
elseif (!file_exists($keyword_filename.'.txt')) email($i,$keyword_filename,$pourlemail,$monemail,$sign);

//On écrit les mots clés de Suggest dans un fichier pour le prochain traitement
file_put_contents($keyword_filename.'.txt', $filecontent);
}
else {

//problème de paramètres pour une bonne exécution du script
if (!isset($_GET["keyword"])) {print '- Aucun mot n\'a été renseigné<br />'; $keyword='<b>poulet roti</b>';}
if (!isset($_GET["email"])) {print '- Aucune adresse mail n\'a été renseigné<br />';$email='<b>monemail@domain.com</b>';}
if (!isset($_GET["lg"]))  {print '- Aucune langue d\'interface n\'a été renseigné<br />';$lg='<b>fr</b>';}
print '<br />Vous devez appeler le script avec les paramètres sous cette forme:<br />';
print 'http://'.$_SERVER["SERVER_NAME"].$_SERVER["PHP_SELF"].'?keyword='.$keyword.'&email='.$email.'&lg='.$lg;

}
?>

16 commentaires

  1. Merci – ya pas de quoi… lol..

    C’est très sympa de partager comme ça.

    En plus il y a du boulot…

    Je vais le tester de ce pas

    à bientôt

    Franck

  2. Effectivement pas un bug chez moi. On va voir si on ne peut pas récupérer aussi les quantités recherchées sur l’outil mot clés google. Si on trouve une solution on fait tourner.

  3. “On va voir si on ne peut pas récupérer aussi les quantités recherchées sur l’outil mot clés google.”
    ça serait super !!!!!!
    En tout cas merci.

  4. Super article 🙂
    Je suis pas expert en configuration de serveur mais si comme moi ça ne fonctionne pas tout de suite vérifiez bien que CURL est installé sur votre serveur.
    (bon ok c’était écrit ligne 32)

    Allé je twitte ça 😉

  5. Salut,

    C’est quand même génial ce google suggest pour savoir quelles expressions clefs sont le plus recherchées.
    Merci pour ce script !

  6. Ping : Google Suggest, drôle de comportement
  7. Encore mieux que les outils en ligne qui scrappent suggest. Super pour travailler la longue traîne et trouver de nouvelles niches. Merci 🙂

  8. Génial, exactement ce dont j’avais besoin. Je vais me l’installer dans un coin de serveur et je saurais en faire bon usage. Merci beaucoup !

  9. Très bon ce script mais étant donné que je suis une bille en php, je voudrais savoir s’il était possible de coupler ce script afin que celui-ci reprenne également les “recherches associées” ?
    En tout cas bravo pour ce script et surtout merci pour le partage 🙂

  10. haha, j’etais passé à coté de ce script, merci pour le rappel.
    je m’en vais installer ca.

  11. Hello, merci beaucoup pour ce script ! J’ai essayé de l’utiliser, mais malheureusement ça me renvoie une erreur à la ligne 42 (Call to undefined function: simplexml_load_string()).

    Par ailleurs, je me demande s’il ne faut pas le mettre à jour : depuis le passage aux urls https de Google, le script peut-il encore fonctionner ?
    J’ai aussi testé le script de seoblackout dont tu parles, mais sans succès également (ça ne me renvoie aucune info).

    Tu aurais des billes à ce sujet ? Merci !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *