Articles de fond qui traitent de techniques avancées en référencement, avec notamment le traitement de données de pagerank, de crawl, de logs dans le but de comprendre réellement comment google perçoit un site et ainsi apporter des optimisations détaillées.

maillage interne

Le maillage interne est surement le levier le plus important en SEO et souvent négligé ou peu maîtrisé sur les sites web. Je constate régulièrement sur mes sites clients l’efficacité de l’optimisation des liens internes, d’autant plus sur de gros sites. Google utilise plusieurs types de PageRank, algorithmes servant au classement des pages web sur le moteur de recherche, qui se basent justement sur les liens internes et externes. Dans cet article, on va s’intéresser au maillage de liens internes au site, c’est à dire au sein du même domaine et à ce que j’appelle le « Multi Pagerank sculping » soit la manière d’optimiser (sculpter) son maillage de liens en fonction de ses différents PageRanks. Lire la suite

Je ne vais pas ici faire une liste de définitions SEO exhaustives, ce serait trop long, sans doute ennuyeux pour les non débutants et il y a bien d’autres articles qui le font très bien. Je vais  plutôt essayer de réaliser un lexique de termes utilisés dans des techniques SEO avancé d’analyse de crawl et de logs pour lesquels il est difficile de trouver des définitions. Il s’agit notamment de jargon de quelques experts utilisés surtout dans le cadre d’analyse de logs et d’analyse de crawl.

Le crawl depuis un moteur de recherche est l’étape n°1 (ou presque) pour amener du trafic organique: pas de crawl > pas d’indexation > pas de visites. Son optimisation représente un gros levier de croissance notamment sur de gros sites et aussi sur des sites moyens (>1000 pages) Lire la suite

Je parle souvent de l’intérêt de l’analyse de logs en SEO et j’avais pas pris le temps encore d’en faire un article tant le sujet peut être long et complexe à résumer dans un seul article. Je vais ici tenter d’expliquer les informations qu’on peut en extraire en analysant ces données et surtout en les croisant avec d’autres. Comme à mon habitude, je vais essayer de vulgariser au maximum mais si certains termes techniques vous échappent, je vous invite à lire les définitions autour du crawl en SEO.

Lire la suite

Créer un tableau de bord SEO devrait être l’étape essentielle avant de commencer un audit SEO ou maintenir un suivi pour tout référenceur. Un bon tableau de bord permet d’avoir une vue synthétique des principaux axes d’améliorations du site dans le but d’apporter des optimisations concrètes. Les logs enregistrés par le site permettent de récupérer des informations impossibles à récupérer autrement, notamment le passage de Googlebot. Je vais essayer de vous montrer ici comment récupérer certains indicateurs, grace aux logs, indispensables pour réaliser un vrai audit SEO.

Exemple d’un tableau de bord SEO

Voici une vidéo qui explique et illustre rapidement ce qu’on peut obtenir dans un tableau de bord SEO grâce aux logs. Et pour plus de détails, les formules pour calculer certains KPI avec les logs par exemple, il faut lire l’article.

Pourquoi analyser les logs pour optimiser le SEO d’un site ?

Analyser les logs d’un site est le seul moyen pour savoir ce que voit Google sur votre site. Sauf pour les petits sites de quelques dizaines de pages, Google ne connait jamais l’intégralité des pages d’un site. Et si il connait certaines des pages d’un site, il ne va pas crawler toutes les pages à la même fréquence, et ca ne signifiera pas pour autant qu’elles seront indéxées ou même bien positionnées. On verra plus tard que la fréquence de passage de googlebot sur une page influe sur ses chances de faire des visites ou pas.

Donc avec les logs, on peut savoir:

  • Quelles pages Google connait
  • Combien de fois Googlebot crawle une page sur une période donnée
  • Combien de visites une page fait
  • La fenêtre de crawl . : La fréquence de crawl Googlebot nécéssaire pour qu’une page ait des chances de faire des visites
  • Les mots clés tapés sur Google lors de la visite (le peu qui reste car beaucoup de « not provided »)

Mais là où ça devient vraiment intéréssant, c’est lorsqu’on croise les données des logs avec les données d’un outil de crawl comme botify, oncrawl ou encore screaming frog. Car avec ces outils on va récupérer les urls qui existent sur le site et on va donc pouvoir comparer avec les urls que connait Google.

Avec les données de logs croisées avec les données d’un crawler, on peut savoir:

  • Quelles sont les pages orphelines : les pages que connait Google mais inaccessibles sur le site
  • Les pages non crawlées par Google: les pages qui existent sur le site mais Google ne voit pas
  • Quel est le taux de crawl : Le ratio entre les pages accessibles depuis la structure du site et ce que Google connait
  • Le taux de pages actives : Le ratio entre les pages accessibles depuis la structure du site et celles qui font des visites

Vous me direz, des outils comme botify et oncrawl le font déja. Oui, mais il n’y a aucun moyen avec ces outils d’avoir facilement une vue synthétique des différents KPI par catégories du site. Par exemple, impossible de voir quel est la part de crawl de Google que représente une catégorie au sein d’un site. Ou encore plus basique, la part des visites d’une catégorie sur tout le site. Des informations pourtant essentielles pour voir d’un coup d’oeil ce qui ne va pas dans le référencement naturel du site et ce qu’il faut optimiser en priorité.

Mais on va aller encore plus loin, sortir des KPI qui n’existent tout simplement pas sur les outils cités et pourtant super intéréssants. De quoi peut-être leur donner des idées si ils lisent cet article.

Et en attendant, il y a une phase essentielle qui consiste à collecter les données, les croiser, les catégoriser afin d’établir un tableau de bord SEO grace aux logs, commençons:

Etape 1: Croiser les urls des logs et les urls du crawl

schéma de croisement de données entre données d'un crawler et données issuees des logs

schéma de croisement de données entre données d’un crawler et données issuees des logs

Je considère que vous avez déja votre liste d’urls extraites d’un crawler (ex: sreaming frog) et votre liste d’urls issues des logs avec le crawl de Googlebot mobile et les visites depuis le moteur de recherche Google. Vous pouvez extraire les logs avec un outil comme apache log viewer ou en ligne de commande. A noter que j’ai précisé Googlebot mobile, et bien oui, depuis l’index mobile first, c’est le googlebot mobile qui devient majoritaire, ceci dit on peut très bien mixer les deux Googlebot dans les analyses de logs. Je considère aussi que vous maîtrisez les fondamentaux d’excel, rien de compliqué ceci dit.

Sur excel, vous collez votre liste d’urls issues du crawler dans une feuille nommé par exemple « urls structure ». Vous collez la liste des urls des logs dans une feuille nommé « urls logs ». Jusque là, tout va bien. Pour croiser les urls du crawler et les urls des logs, on va pas se contenter d’additionner les urls des 2 feuilles, ce serait trop facile et surtout ce serait faux. Avant de continuer il faut comprendre qu’on a plusieurs types d’urls:

  • Les urls dans la structure ET aussi dans les logs
  • Les urls dans la structure et PAS dans les logs
  • Les urls dans les logs et PAS dans la structure, ce qu’on appelle les pages orphelines (nomatch)

On va donc isoler ces différents groupes d’urls et ensuite on pourra les additionner afin d’avoir une liste complète des urls qui croisent les données de crawl du crawler et les données des logs.

Etape 1.1: Extraire les urls dans la structure ET aussi dans les logs

C’est simple, on prend notre feuille « urls structure » et on fait un rechercheV avec la feuille « urls logs » pour récupérer le volume de crawl et les visites pour chaque url présente dans la structure et que Google connait.

Etape 1.2 : Extraire les urls dans la structure et PAS dans les logs

Il s’agit des urls non connues de Google. On reste sur notre feuille « urls structure », on rajoute 2 colonnes: « structure » et »nomatch ». Pour les urls qui ont matché dans l’étape 2.1, on met 1 dans la colonne « structure ». Pour les urls qui n’ont pas matché, on met « 0 » dans la colonne nomatch. On peut en profiter pour copier coller les urls avec structure=1 / nomatch= 0 et les urls avec un crawl =0 dans une autre feuille qu’on appellera « urls non crawlées par Google ». C’était le principal intérêt de cette étape en réalité, pas vraiment essentiel pour croiser crawl et logs mais importante pour la suite.

Etape 1.3: Extraire les urls dans les logs et PAS dans la structure (nomatch)

Cette fois, on part de la feuille « urls logs » et on fait un rechercheV sur la feuille urls structure ». On rajoute une colonne qu’on appellera « nomatch ». Les urls qui matchent, on met 0 dans la colonne « nomatch » et les urls qui matchent pas, on met 1 dans la colonne « no match ». On filtre la feuille « urls logs » et la colonne « nomatch » égale à 1 et on colle les données dans une feuille qu’on apellera « nomatch ».

Etape 1.4: On mélange tout ça

Dans une feuille qu’on nommera « all urls », on ajoute les urls de la feuille « structure » et les urls de la feuille « nomatch ». On a donc bien nos urls de la structure vus par Google, non vues par Google et vues par Google mais pas dans la structure. Et avec les urls, on a biensur toutes nos données du crawler, ainsi que le volume de crawl et les visites issues des logs et une distinction pour savoir si l’url est dans la structure ou en nomatch (hors structure).

Etape 2: Catégoriser les urls

Schéma de catégorisation d'urls

Schéma de catégorisation d’urls

Pour l’instant, on s’est juste contenter de dresser une liste d’urls avec tout un tas d’informations. Mais pour créer notre tableau de bord SEO, il faut d’abord catégoriser le site. On va segmenter le site en différentes catégories: page d’accueil, pages produits, pages de menu, paginations, articles de blog, etc… Pourquoi ? Parce que sans ça, on se contentera d’avoir des données macro au niveau du site en entier uniquement ou d’une seule url, ce qui a très peu d’intérêt. C’est d’ailleurs le cas aussi pour les crawlers que j’ai cité, sans une bonne catégorisation, difficile d’en tirer quoi que ce soit d’opérationnel.

Prenons un cas concret, on a une catégorie de pages qui est fortement crawlée par Google mais dont le trafic est peu qualifié et une autre catégorie qui est peu crawlée mais dont le trafic est très qualifié. Une idée de maillage interne est d’utiliser le catégorie très crawlée pour faire des liens vers la catégorie peu crawlée et qu’on veux pousser davantage. Sans catégorisation, impossible de faire ce genre d’analyses.

Je ne vais pas ici expliquer comment catégoriser les urls d’un site, personnellement j’utilise des regex, un language puissant permettant de représenter des modèles de chaînes de caractère et qui est aussi utilisé en programmation. On peut aussi essayer de catégoriser des urls avec les filtres avancés d’excel, avec les quelques limites que ça implique mais qui peut parfois suffire pour des sites peu complexes.

A noter que si vous utilisez des outils botify ou oncrawl, les possibilités de filtrages sont un peu plus avancées que sur excel pour créer ses catégories, même si la solution des regex reste la meilleure pour avoir une catégorisation stricte et sans erreurs.

Etape 3: Extraire les KPI de base: Crawl, visites, pages uniques crawlées,..

Une fois qu’on a notre liste d’urls croisées avec les logs et catégorisée, on a fait le plus dur, ce qui n’était pas non plus insurmontable. Il s’agit maintenant de faire un tableau croisé dynamique sur excel avec les catégories en tant que ligne et les différents kpi en tant que valeur. Pour commencer, on va récupérer pour chaque catégorie les données de base provenant des logs:

  • Volume de crawl: somme du crawl
  • Volume de visites: somme des visites
  • Pages uniques uniques crawlées: Nombre d’urls crawlées
  • Pages actives: Nombre d’urls visitées

Si j’ai précisé à chaque « somme » ou « nombre » , c’est pas pour rien, car dans votre tableau croisé dynamique, il faut changer le paramètre de champ de valeur en conséquence. Par défaut, le paramètre de champ de valeur est « somme », il faudra donc bien penser à le changer en « nombre » pour les pages uniques crawlées et les pages actives.

Etape 4: Distinguer ce qui relève de la structure ou des pages orphelines

Pages orphelines (ou nomatch) = Pages vues uniquement par Google

Pages orphelines (ou nomatch) = Pages vues uniquement par Google

On reprend les kpi précédents: volume de crawl, de visites, pages uniques crawlées et pages actives mais cette fois on distingue ce qui est dans la structure ou en pages orphelines (nomatch). Même principe donc mais utilisant des filtres vu qu’on a pris le soin d’ajouter une colonne structure et une colonne nomatch. On récupère donc ceci:

  • crawl structure / crawl nomatch
  • visites structure / Visites nomatch
  • Pages uniques uniques crawlées structure / Pages uniques uniques crawlées nomatch
  • Pages actives structure / pages actives nomatch

Je vous garantis que là déja, vous avez des informations que vous n’aurez jamais avec les outils actuels du marché. Grace à ces données, vous pouvez par exemple savoir quelle est la part du crawl de google sur les pages orphelines par rapport aux pages dans la structure. Si cette part est importante c’est mauvais pour le site mais c’est une bonne piste d’optimisation pour votre audit SEO. On verra par la suite que le taux de pages actives des pages orphelines est toujours inférieur au taux de pages actives des urls dans la structure, d’où l’intérêt de ces indicateurs.

L’analyse des pages orphelines est essentielle dans le cadre d’un audit de site e-commerce par exemple. Les sites e-commerce ont tous, en fonction de la rotation des produits, des problèmes d’expiration de produits, de produits plus en stock ou plus disponible. Il est important de bien maitriser le crawl de Google sur des produits expirées qui sortent donc de la structure et qui deviennent par conséquent des pages orphelines.

Etape 5: Analyser l’efficacité des pages: Visites / crawl

Exemple client montrant les catégories de pages les plus efficaces selon le ratio visites / crawl

Exemple client montrant les catégories de pages les plus efficaces selon le ratio visites / crawl

Là aussi, c’est un indicateur que je n’ai jamais vu sur les outils du marché, même chez ceux qui croisent crawl + logs. C’est pourtant un KPI essentiel pour tout bon tableau de bord SEO et qu’on peut facilement calculer. L’indicateur visites / crawl consiste simplement à diviser les visites depuis le moteur de recherche par le crawl de Googlebot.

Par exemple:

  • Si Google explore souvent une page ou une catégorie de pages et qu’elle génère peu de visites, je considère qu’elle est peu efficace.
  • A l’inverse, Si Google crawle peu souvent une catégorie de pages et qu’elle génère beaucoup de visites, c’est une catégorie de pages efficaces.

Cette notion d’efficacité est liée au budget de crawl . Google a un temps limité lorsqu’il crawle un site, alors l’intérêt de l’indicateur Visites / crawl est multiple:

  • Orienter le crawl de Googlebot vers les pages efficaces, peu de crawlées par Google et qui font beaucoup de visites
  • Limiter ou supprimer le crawl de Googlebot vers les pages peu efficaces, très crawlées par Google et avec peu de visites
  • Se servir des pages efficaces pour pousser des pages stratégiques

Dans la pratique, je devrais rajouter un autre point car parfois des pages peu efficaces ont une légitimité à l’être davantage, car peu de contenu, peu de maillage, ou autres. C’est là que l’oeil de l’expert doit correctement analyser et interpréter les données.

Pour en revenir à notre tableau de bord SEO, il s’agit simplement de rajouter un colonne qui divise les visites sur le crawl.

Formule de l’indicateur Visites / crawl = Volume de visites / Volume de crawl Google

Plus la valeur est importante et plus notre catégorie de pages est efficace.

Et pour aller plus loin, on peut même ajouter l’indictateur visites / crawl pour les urls dans la structure et en nomatch (hors structure). Ca permettra de voir que l’efficacité des urls hors structure est moindre que celles dans la structure.

Etape 6: Calculer le taux de crawl et le taux de pages actives

Le taux de crawl c’est le ratio entre les pages vues par un crawler et les pages vues par Google. Si un site a un taux de crawl de 60%, ca signifie que Google ne voit que 60% des pages accessibles en ligne. La aussi, c’est une information qu’il faut connaitre catégorie par catégorie et non au niveau du site en entier comme le font la plupart des outils. L’objectif est d’améliorer le taux de crawl des pages génératrices de trafic et qui en ont le plus besoin. Plus Google connait de pages et plus il y aura de pages potentiellement indéxées et capables de faire des visites.

La formule du taux de crawl = urls uniques crawlées par Google dans la structure / urls dans la structure

Le taux de pages actives, c’est le ratio entre les pages qui font des visites et les pages qui existent sur le site.

La formule du taux de pages actives: Pages actives / urls connues (urls connues via le crawler et via les logs)

L’objectif sera de concentrer les efforts et de prioriser les optimisations sur les pages qui ont à la fois un taux de pages actives faible, un grand volume de pages et une bonne efficacité visites / crawl.

Vu qu ‘on distingue bien les urls de la structure et les nomatch, on peut aussi calculer:

  • un taux de crawl structure
  • un taux de crawl nomatch
  • un taux de pages actives structure
  • un taux de pages actives nomatch

Ce qui permettra notamment de mettre en évidence la nécéssité ou pas de remettre dans la structure certaines pages anciennement en nomatch. Encore une donnée que les crawlers du marché nous donnent pas.

Etape 7: Calculer le Pagerank interne des pages crawlées par Googlebot

Visualisation du pagerank interne sous forme de secteurs et sous gephi

Visualisation du pagerank interne sous forme de secteurs et sous gephi

Vous avez surement déja entendu du pagerank interne, c’est un score qui mesure le jus envoyé aux pages selon la formule du pagerank historique de Google en tenant compte uniquement des pages internes au site. En gros, cette donnée dépend fortement du nombre de liens entrants et sortants sur chaque url, et de la profondeur des pages. Même si il y a plusieurs types de pagerank et même si ce score se base uniquement sur les pages internes au site (et non le web entier, impossible à calculer) c’est une donnée intéréssante car ça montre le poids donné par la structure à chaque catégorie du site.

Certains crawlers donnent des noms différents au pagerank interne, screaming frog appelle ça le linkscore, oncrawl appelle ça l’Inrank, et Botify appele ça… le pagerank interne, normal on vient de la même « école » les fondateurs et votre serviteur. Mais les scores qui se basent sur une échelle de 1 à 10, comme c’est le cas pour le linkscore de screaming frog et le inrank de oncrawl sont très peu exploitables, car c’est une donnée trop grossière pour avoir un calcul précis du pagerank interne par catégories. Botify, en revanche le calcule correctement via ce qu’ils nomment plus exactement le « pagerank interne brut ».

On le calcule comment ce pagerank interne si on a pas botify ? D’autres outils le font assez bien comme netpeak spider et pour les utilisateurs de screaming frog, une solution consiste à passer par un script R (voir le tuto ici).

Mais attendez là, j’ai parlé du PageRank Interne (PRi), pas du PageRank Interne des pages Crawlées par Googlebot (PRic) ! En fait les scores de PRi calculés par tous les crawlers cités, botify compris, prennent en compte toutes les pages de la structure, même celles qui ne sont pas vues par Googlebot. Le PRi est donc un score de pagerank interne absolu si Google parvenait à crawler l’ensemble des pages du site.

Mais on sait très bien que ce n’est jamais le cas, sauf pour les petits sites. Si Google connait 50% du site, il faudrait calculer le pagerank interne uniquement sur ce que connait Google non ? et pas sur tout le site ! En fait les 2 scores sont intéressants, le PR i et le PR ic, mais ce dernier est plus « vrai »sur l’état du pagerank interne à un instant T vu qu’on se base uniquement sur ce que connait Google sur une période donnée. Et pour calculer ce PRic, il est donc nécessaire d’analyser les logs.

Le fait est qu’aucun crawler du marché ne calcule ce PRic qui est pourtant plus représentif du « vrai » pagerank interne que le PRi. Vu que dans notre fichier excel, on connait les urls dans la structure et crawlées par Googlebot, on peut les filtrer et calculer le pagerank interne uniquement sur ces urls là.

Dans tous les cas, que ce soit le Pri ou le PRic, on reste sur des valeurs approximatives et relatives, il n’y a pas donc pas vraiment de vrai pagerank interne au sens stricte. L’objectif de ces indicateurs est plus de se faire une idée sur la répartition du maillage interne et voir comment mieux distribuer le jus du site vers les pages génératrices de trafic et de conversions.

Etape 8: Mesurer la Fréquence de crawl

La fréquence de crawl, c’est le nombre de fois que Googlebot est passé sur une page. Pour calculer la fréquence de crawl la formule est: Volume de crawl / pages uniques crawlées. La aussi c’est un indicateur qui est rare de retrouver. De plus, si on filtre la fréquence de crawl avec uniquement les urls qui font des visites, on peut savoir combien de fois en moyenne Google doit passer sur une page pour qu’elle ait des chances de faire des visites. Valeur qu’on aura catégorie par catégorie, car la fréquence de crawl est différente d’une catégorie à l’autre.

Inutile d’avoir cette donnée au niveau du site en entier, car certaines pages comme la page d’accueil notamment, ont de très grosses fréquences de crawl, ce qui augmente la moyenne générale du site.

Etape 9: Afficher les ratios des kpi par catégories par rapport à tout le site

L’idée est d’afficher clairement sur le tableau de bord SEO quel est la part de crawl d’une catégorie par rapport à tout le site, sa part de visites, sa part de pagerank interne, sa part d’urls connues, sa part de nomatch, etc…

Ces information mises côté à côté dans un tableau de bord est certainement ce qu’il y a de plus intéressant car en un coup d’oeil, on peut voir ce qui ne va pas sur un site et ce qu’il faut optimiser.

Par exemple, si voit qu’une catégorie accapare 50% du pagerank interne pour seulement 10% des visites., on voit tout de suite que ça ne va pas.

Etape 10: Intégrer d’autres sources de données que les logs et le crawl

En plus des logs, on peut ajouter au tableau de bord SEO des données provenant du crawler biensur mais de l’outil de web analytics (ex: Google analytics), de la console de recherche Google, d’outils de suivi de positions (ex: semrush), d’outils de backlinks (ex: majestic SEO). Voici quelques exemples de KPI à ajouter au tableau de bord:

Via le crawler

  • Nombre de mots contenus sur les pages
  • Le ratio texte / html
  • La profondeur moyenne
  • Taille moyenne du title
  • Taille moyenne du H1

Des données très utiles dans le cadre d’un audit ou d’une analyse sémantique

Via l’outil de web analytics

  • Taux de rebond
  • Temps passé par page
  • Temps de chargement de pages interactive
  • Nombre de conversions

Des données importantes pour l’optimisation de l’expérience utilisateur et du SEO.

Via la console de recherche Google

  • Le CTR moyen
  • La position moyenne
  • Les impressions moyennes

La aussi des KPI utiles pour l’UX.

Via des outils comme semrush, majestic et autres

  • Volume de recherche moyen
  • Nombre de backlinks

Les possibilités de croisement de données sont nombreuses en fonction du besoin et des problématiques rencontrées. Mais une fois qu’on a pris le temps de bâtir un tableau de bord SEO avec ces informations déja, on peut vraiment prendre des décisions basées sur des données objectives et scientifiques. C’est d’ailleurs une devise que je met dans ma signature mail:

Le SEO n’est pas un art mais une science