Accueil / Blog / Métier / 2016 / SEO & visualisation de site : allons plus loin avec Gephi

SEO & visualisation de site : allons plus loin avec Gephi

Par Simon Georges publié 09/05/2016, édité le 18/05/2016
On peut diagnostiquer de nombreux problèmes SEO lors de la visualisation d'un site web avec Gephi, à condition d'être méthodique.
SEO & visualisation de site : allons plus loin avec Gephi

La visualisation est aujourd'hui incontournable pour le SEO (voir notamment cet article) et c'est une des raisons de l'essor d'outils Saas dédiés. L'utilisation de Gephi (logiciel libre de visualisation de réseaux) est notamment répandue pour de multiples usages, notamment la visualisation ou l'optimisation du maillage interne.

Cependant, ce qui se fait en terme de visualisation SEO a été un peu révolutionné récemment par Cocon.Se et sa visualisation circulaire.

Motivé par la vidéo de présentation de l'outil durant le SearchCast de Laurent Bourrelly, j'ai voulu essayer de reproduire une partie des visualisations disponibles par cet outil uniquement en utilisant Gephi.

Attention, dans la suite de l'article, les formules sont données pour Libre Office (vive le logiciel libre !). Il faut donc les adapter pour Excel, notamment remplacer les "Data.A1" par "Data!A1". De même, Excel ne gère pas forcément de la même façon les expressions régulières dans la recherche (il faut éventuellement lui ajouter l'add-on SeoTools for Excel).

La base : liens et PageRank interne

Cette partie ne sera pas une surprise pour les habitués de Gephi qui peuvent passer directement à la Vue par URL ou à la Vue Crawler : je présente en effet la même chose que l'ensemble des didacticiels sur l'utilisation de Gephi pour le SEO : la visualisation des liens internes du site.

Nous allons d'abord préparer les données dont nous auront besoin : commençons donc par parcourir le site à l'aide de Screaming Frog. Copions l'intégralité des données du crawl dans un tableur, onglet que nous appellerons "Data". Ensuite, exportons les liens internes dans un second onglet, "Links" :

Screaming Frog Internal Links

  • Première étape : calculer le PageRank et, éventuellement, la modularité, à partir des liens internes. Pour ça :
    • Ne garder dans l'export des liens internes que les lignes de type HREF et uniquement les colonnes contenant les URLs (Source et Destination), et les renommer "Source" et "Target" ;
    • Exporter cette feuille en csv.
    • Ouvrir Gephi, créer un nouveau projet, aller dans l'onglet "Data Laboratory", et importer votre fichier nouvellement créé (normalement, il détecte tout seul que ce sont des liens, et toutes les options sont correctes).
    • Vous pouvez alors basculer sur le premier onglet ("Overview"). Vous observez alors une visualisation de votre site sous forme d'un graphe pas du tout organisé :

 Raw import

  • Avant de travailler la visualisation, nous allons utiliser les fonctions de statistiques de Gephi :

Gephi statistics

Ici, nous allons directement lancer le calcul des 2 algorithmes qui vont nous intéresser : PageRank et Modularity.

PageRank - Modularity

Le PageRank détermine la probabilité d'arriver sur la page quelque soit la page de votre site où vous arrivez, on va dire que c'est l'importance que votre site donne à une page (attention, ici, on ne parle que de liens internes, la popularité externe n'est pas prise en compte).

La modularité est une notion purement "réseau", pas utilisée en référencement : la modularité décompose un réseau en sous-réseaux. Si tout se passe bien, cela va mettre en valeurs des "clusters" de pages sur votre site.

  • Nous allons maintenant utiliser ces calculs pour améliorer la visualisation :

Gephi Attributes

  • La première icone à côté de "Nodes" et "Edges" représente la couleur : cliquez sur "Attributes", choisissez l'attribut "Modularity" (qui n'est pas présent si le calcul n'a pas été lancé), et cliquez sur "Apply" : votre visualisation doit s'égayer.
  • En cliquant sur l'icône juste à côté, vous pouvez choisir "PageRank" comme Attribut pour la taille. Choisissez un intervalle de taille qui vous convient (j'utilise 30 - 150, par exemple), et cliquez sur "Apply" : des pages doivent commencer à se distinguer.
  • Vous pouvez alors jouer avec des algorithmes d'organisation spatiale pour mieux représenter votre site.

Liens internes

Nous n'obtenons rien de satisfaisant : aucun cluster ne se dégage, il y a beaucoup trop de liens internes sur ce site pour analyser quoi que ce soit à partir de cette visualisation (mais par contre, on peut déjà penser qu'il faudra préconiser une rationalisation des liens internes).

Nous allons donc maintenant essayer des visualisations plus spécifiques, en espérant identifier certains autres problèmes du site.

La vue "par URL"

Cocon.se propose une vue "par URL", qui représente une vue où l’url parente est la page parente. À partir des données que vous avez copié depuis ScreamingFrog, il est assez facile de trouver l'url parente d'une page : créer une nouvelle feuille. Dans la deuxième colonne, utilisez la formule

=Data.A1

dans la cellule A1, et copiez-là dans la colonne complète. Dans la première colonne de cette feuille, utilisez alors la formule

=GAUCHE(B1;CHERCHE("/[^/]*$";B1)-1)

Vous aurez alors une colonne remplie avec l'url "parente" de la page. Essayez de ne conserver que des liens vers pages web (éliminant les fichiers), ce sera plus efficace en terme de visualisation.

Attention, selon certains systèmes, vous aurez à ajouter des "/" finaux parce que les URLs de votre site en contiennent (on atteint les limites de l'automatisation, et il faudra toujours ajuster certaines URLs).

Si vous utilisez la feuille de calcul que vous venez de créer comme source des "Liens" dans Gephi (après avoir effacé les liens importés dans le paragraphe précédent, mais en conservant les Nœuds pour garder les tailles et couleurs associées), vous obtenez une représentation de la structure d'URLs de votre site, une sorte de vision "humaine" de comment le site a été conçu.

Vue URL

Dans cet exemple, on constate des clusters entièrement séparés : c'est parce que dans certains cas, la page "parente" n'existait pas. Ici, c'est un site Drupal avec le module de réécriture d'URLs (Pathauto) dans sa configuration par défaut, toutes les URLs des pages sont donc en "/content/[titre-de-la-page]", et il n'y a pas de page "/content" sur le site (le bloc en haut à gauche). Ce problème est bien sûr repérable directement à partir des données du crawl, mais la visualisation permet de l'illustrer efficacement devant le client.

Le bloc en bas à droite représente les pages de "tags", dont la structure ne s'intègre pas bien avec le reste du site non plus (il n'y a pas de page "/tag" alors que toutes ces urls sont en "/tag/[nom-du-tag]". On pourrait proposer une réécriture des URLs, on pourrait peut-être avantageusement proposer une suppression pure et simple de toutes ces pages (à part peut-être une d'entre-elles dont le PageRank interne est significatif, qui mériterait probablement d'être transformée en "vraie" rubrique du site).

Enfin, dernière observation, l'ensemble des couleurs sont mélangées dans cette vue, indiquant que les liens internes n'ont rien à voir avec la structure des urls, et donc aucune organisation en silos.

La vue "Crawler"

Cocon.se propose également une vue "Crawler", mettant en avant le premier lien qui a mené à la découverte d'une page. Pour simuler cette vue avec Gephi, nous allons reprendre notre fichier recensant les liens internes, mais cette fois, nous allons croiser les données avec la colonne "level" des données de Screaming Frog, indiquant le nombre de clics nécessaires pour atteindre la page.

À côté de chaque colonne "Source" et "Target", j'utilise la formule

=RECHERCHEV(A2;Data.$A$2:Data.$Z$1000;26;0)

qui va recherche le contenu de la cellule A2 de ma feuille actuelle dans la première colonne de la zone que j'indique (A2 -> Z1000), donc la colonne A qui est celle des URLs, et une fois la valeur trouvée, va me renvoyer la valeur de la colonne 26 colonnes à droite (colonne Z ici), la colonne du "level" : j'obtiens alors le niveau de profondeur de chacune des pages internes impliquées dans mes liens.

Dernière opération, nous allons filtrer les liens pour ne garder que ceux dont le "level" de la source est directement inférieur à celui de la destination (en créant une colone contenant la formule

=(B2+1=D2)

et en ne gardant que les lignes dont la cellule vaut "VRAI").

Nous allons à nouveau vider la table des liens de Gephi pour utiliser ces nouvelles données comme "table de liens", et en jouant un petit peu avec les algorithmes de spatialisation, on obtient un tout autre rendu :

Vue Crawler

Ici, 2 choses sont rapidement mises en avant :

  • La plupart des pages sont découvertes via la page de plan du site (le gros rond vert central au bloc du milieu) ;
  • De nombreuses pages ne sont pas liées : ce sont des pages découvertes via des balises "canonical" ou des pages dont l'URL contenait des paramètres que j'ai du supprimer pour faire fonctionner différentes formules). Il faudrait ici probablement adapter nos formules pour prendre en compte ces cas. Cependant on identifie une source potentielle de problèmes : des pages canoniques non liées directement ou des paginations nombreuses (le paramètre supprimé concernait une pagination) qui sont crawlées et indexées.

Dans le cas où le paramètre de pagination n'est pas supprimé, c'est également par cette vue que vous pouvez identifier des chaînes de pagination (ressemblant à de longues chaînes de nœuds), ou des "pièges" pour le robot (des générations de nombreuses pages de façon dynamique qui ne renvoient aucun contenu (même identification graphique que les chaînes de pagination)).

Là encore, tout cela est également identifiable à la lecture des données de crawl, mais pas forcément aussi immédiatement, et vous pouvez vous en servir pour illustrer la situation à votre client.

Conclusion

Nos objectifs initiaux ont été atteints : nous arrivons à identifier des problèmes directement à partir des visualisations, et à les illustrer pour que nos clients comprennent mieux.

Il est par contre clair que Cocon.Se met beaucoup plus de choses en avant, notamment pour l'ensemble des problèmes de "fuites" des cocons sémantiques : ici, nous pouvons obtenir un résultat approchant en observant les couleurs impliquées dans chaque cluster, car les classes de modularité devraient normalement correspondre aux cocons.

Cela dit, les résultats obtenus par notre méthode nous satisfont aujourd'hui, même si je remercie les techniciens de Cocon.Se pour m'avoir poussé à remettre les fondamentaux de la visualisation Gephi en question.

Si vous avez d'autres idées d'analyses ou de visualisation, n'hésitez pas à m'en faire part !

ABONNEZ-VOUS À LA NEWSLETTER !
Voir aussi
Découvrez la formation initiation au Python Scientifique Découvrez la formation initiation au Python Scientifique 24/11/2017

La formation initiation au Python scientifique vous permettra de vous initiez à la programmation ...

Comment mettre en place Angular Universal Comment mettre en place Angular Universal 29/06/2017

Toutes les étapes détaillées et expliquées. Les pièges à éviter.

How to setup Angular Universal How to setup Angular Universal 29/06/2017

Step by step explanation. All the pitfalls to avoid.

SEO : indexing a JavaScript application SEO : indexing a JavaScript application 29/06/2017

How to produce a server-side rendered version of your web application.

SEO : indexer une application Javascript SEO : indexer une application Javascript 29/06/2017

Comment utiliser le code de votre application pour un rendu server-side.