Crawl et audit SEO de site

GoogleBot

Lorsque l’on possède un site web et que l’on se préoccupe de son positionnement dans les résultats des moteurs de recherche, il est indispensable de pouvoir identifier ses forces et ses faiblesses pour faire en sorte de tout mettre œuvre pour qu’il soit « SEO friendly ». Pour cela, il est habituellement recommandé de crawler le site, c’est à dire simuler le passage d’un robot sur celui-ci. Il existe quelques outils pour réaliser cette tâche comme Xenu, Screaming frog ou Microsoft SEO toolkit par exemple. Pour avoir testé de nombreux outils de crawl comme ceux-ci, je me suis rapidement rendu compte qu’il n’existait aucun outil répondant à toutes mes exigences et capable de faciliter l’audit SEO d’un site. J’ai donc retroussé mes manches afin de réaliser cet outil.

Qu’est-ce qu’un lien ?
Avant de se lancer dans la création d’un crawler de site, il est nécessaire de définir quelque axiomes concernant le comportement des robots sur un site. On pourra par exemple définir qu’un robot est capable de suivre un href ou un src, d’interpréter du Javascript, du Flash, ou un document pdf. Ces bases ont primordiales pour obtenir un audit fiable du site analysé. L’objectif étant de réaliser un robot dont le comportement serait similaire au fameux GoogleBot.

Une fois cette étape réalisée, il est nécessaire de lister les fonctionnalités que devrait avoir le crawler et les données attendues en retour. Voyons donc ensemble ce que devrait mettre en avant ce crawler…

Pages 404
Détecter les pages qui répondent avec le code d’erreur 404 signifiant que celles-ci sont introuvables. Idéalement le crawler devrait nous fournir facilement les sources de ces erreurs, c’est à dire les pages contenant un lien vers une page 404. Il pourra par exemple s’agir d’une url mal formée ou d’une page n’existant plus.

Redirections
Il est assez normal qu’un site mette en place des redirections en cas de changement d’url par exemple. Mais celles-ci génèrent une déperdition de la popularité transmise. On changera donc les liens internes pouvant pointer sur une redirection afin qu’ils pointent directement sur l’url finale. Le crawler sera évidement capable de faire la distinction entre toutes les types de redirections : permanentes (301) ou temporaires (302).

Autres codes réponse
En plus des 404, 301 et 302, il sera essentiel de pouvoir identifier les urls qui ne répondent pas avec le code réponse 200 pour envisager une correction.

Temps de chargement
Pourquoi ne pas profiter du parcours du site pour mesurer, page par page, le temps de chargement de celles-ci. On pourra ainsi identifier facilement les types de pages trop longues à charger et identifier les pistes d’optimisation de cette durée.

Taille des pages
On pourra profiter de l’audit du site pour détecter les pages trop lourdes qui pourront avoir un temps de chargement élevé et ainsi décider de découper la page en plusieurs autres ou alléger le code source en supprimant le contenu non utile.

TITLE
Le TITLE de la page se doit d’être correctement renseigné sur chaque page et respecter les règles imposées par les moteurs de recherche : pas plus de 70 caractères, unique sur chaque page, pas trop court,…

Meta description
Non prise en compte par les moteurs de recherche dans l’élaboration de leurs classements, la balise meta description se doit pourtant d’être bien renseignée et de respecter quelques règles : pas plus de 150 caractères, unique sur toutes les pages du site, etc.

Balises Hn
En parsant le code de chaque page le crawler pourra identifier la présence ou non de balises Hn, leur bon remplissage ainsi que leur bonne structuration.

Attribut rel= »canonical »
Poussé par Google, l’attribut rel= »canonical » permet de spécifier aux moteurs la page canonique d’un ensemble de pages similaires. Cependant, un mauvais paramétrage de cet attribut peut avoir de lourdes conséquences pour l’indexation et le positionnement des pages de votre site. Il parait donc judicieux d’extraire les pages présentant un rel= »canonical » différent de l’url visitée pour s’assurer que tout soit conforme à ce que l’on souhaitait montrer aux moteurs.

Consignes d’indexation
Il est possible de fournir des consignes d’indexation (ou non) aux moteurs. Ceci passe par exemple par l’utilisation de commandes dans le fichier robots.txt ou par l’utilisation de balises meta robots. On pourra profiter du parcours du site par le robot pour extraite des pages auxquelles nous avons interdit l’indexation ou le passage aux robots.

Liens sortants
Vous devez avoir le contrôle des liens qui sortent de votre site. Le crawler pourra en explorant votre site vous fournir une liste complète des liens pointant vers d’autres sites pour vous assurer que ce soit cohérent.

Urls avec paramètres GET
Il pourra être utile (même si vous pratiquez la réécriture d’url) de pouvoir extraire facilement les urls contenant des paramètres qui pourraient causer des problèmes de duplication de contenu.

Code de tracking Web Analytics
Profitons également du crawl pour s’assurer que votre code de tracking de vos visiteurs (Google Analytics, AT Internet (Xiti), Clicky

Iframes
L’utilisation d’Iframe sur un site peut entrainer la découverte et l’indexation de pages non souhaitées. On pourra donc mettre en avant leur existence ainsi que les urls affichées dans ces cadres.

Structure du site
Il est essentiel de connaitre la structure de son site et d’avoir une vision « moteur » de l’arborescence de ses pages. Cette structure interne pourra avoir un rôle important de transmission de popularité interne et donc sur le positionnement des pages. On pourra ainsi tenter de schématiser la répartition des pages du site en fonction de leur profondeur de clic, la répartition de la popularité du site en se basant sur un indice théorique prenant en compte le Page Rank ou le nombre de liens externes par exemple.

Ancres de liens internes
Les liens transmettent de la popularité mais également de la sémantique. On pourra donc identifier des pistes d’optimisation en mettant en avant les répétition d’ancres de liens internes par exemple ou les ancres non optimisées du type « cliquez-ici ».

Pages crawlées VS pages indexées dans Google
Il est clairement pertinent de faire un comparatif des pages connues par Google par rapport à l’existant. Cela permettra de mettre en avant qu’il existe des pages non maillées sur le site qui se sont retrouvées dans l’indexe de Google ou à contrario des pages bien accessibles aux robots qui ne sont pas présentes dans l’indexe.

Types de liens
Nofollow, Javascript, Sans ancre, lien ancré, lien pointant vers la page courante, ce sont autant de types de liens différents que le crawler devra être capable d’identifier.

Stockage de pages en dur
Quitte à parcourir un site autant en profiter pour aspirer son contenu et faire des analyse off-line ou juste réaliser une sauvegarde des pages, on n’est jamais trop prudent.

Évolution du site dans le temps
Rares sont le sites qui restent figés dans le temps. Il m’a paru donc intéressant de prévoir la possibilité de lancer des crawls périodiques sur un site et de pouvoir comparer les données pour vérifier toutes les optimisations mises en place entre ces deux runs.

Détection automatique des templates de pages
Une catégorisation automatique des pages fonction de la structure de urls et/ou des différentes templates de page permettrait de faciliter l’analyse d’un échantillon de page du site?

J’ai donc réalisé un outil (presque) capable de mettre en avant chacun de ces points. Je me suis ensuite empressé de le lancer sur le site de communiqués de presse gigantesque.fr qui vient de subir une refonte. Voici donc une cpture d’écran des informations relevées par l’outil….

crawler seo

Peut-être qu’un jour, quand je serai pleinement satisfait du résultat, je partagerai le code source du script de crawl, en attendant, n’hésitez pas à me faire part de vos avis et de vos suggestions !

14 Comments

    • admin

      J’ai codé ça en php, parce que c’est le langage que je connais le mieux, mais ce n’est pas optimal surtout pour le temps de crawl.

  • Pourquoi pas faire un site où tu proposes aux gens de crawler leur site en ligne. Je met juste mon URL dans ton site, et ton serveur va crawler mes pages.

    Pratique pour ceux qui n’ont pas envie d’installer un truc chez eux, pour ratisser le plus large possible.

    Après, tu peux toujours mettre des limites, genre « je ne crawle que les 100 premières pages, au dela, faut payer :)) »

    • admin

      J’avais pensé à cette idée, mais justement le problème c’est la limite de nombre d’url. J’ai peur d’avoir un serveur qui explose si un petit malin venait à crawler Amazon par exemple 😉 On verra ça quand l’outil sera plus robuste. Pour l’instant, je le perfectionne pour un usage privé.

  • Pas mal du tout, tu peux ajouter titres identiques, titres commençant par la même expression…
    Mais également vérification de nofollow, canonical, code analytics.
    Je crois que j’ai fait le tour.

    Have fun.

  • Thony

    Bonsoir,

    Intéressant. Est-il possible d’obtenir le code source pour voir comment s’est fait ?

    Si ce n’est pas possible je comprendrais ce n’est pas grave 🙂

    De plus, pour un outil en ligne c’est peut-être un peu lourd de faire ça en PHP, un script exécuté en C par exemple serait beaucoup plus adapté. Mais l’idée est très bonne, merci.

  • Tout simplement excellent ! Je pense que ce qui manque surtout aux crawlers actuels c’est la partie « structure de site » que tu as évoquée et la valeur théorique de PR que les pages se transmettent en interne. Du moins c’est ce qui m’intéresserait le plus, de même qu’un ratio liens internes entrants/liens internes sortants pour chaque page. Je pense en effet que c’est un élément majeur dont on ne soucie pas assez alors qu’en maitrisant bien cet aspect on réduit les efforts à fournir en termes de netlinking 😉

  • Ton outil va en intéresser plus un. Très réussi au niveau du design, de l’ergonomie, voilà mes premières impressions par rapport à votre shoot d’écran.

  • Stone

    Yes, belle réussite, il y a là clairement un marché à prendre.
    Le fait d’avoir chiadé l’interface et le rendu des rapports ET que ce soit en français est un réel plus.

    Bravo, je garde un oeil la dessus…

  • Hello,

    Je viens de tomber par hasard sur ton outils.
    Ai moi même codé un outil de crawl très similaire, ce qui me pousse à te faire part de mon intérêt pour ton outils en PHP.

    Depuis mars 2012, as tu pu avancer dessus ?
    Comptes-tu le mettre à dispo ?
    J’aimerai en effet pouvoir merger nos 2 outils si cela t’interesse ?

    Merci et bonne continuation!

  • Salut,

    Très intéressant ton outil. Je viens de tomber sur cet article car je suis moi même en train d’en réaliser un mais contrairement à toi je me base sur un crawler différent et applicatif. Je me tate entre une application Windows / Mac ou quelque chose qui tourne en ligne de commande sur un serveur linux.
    En tout cas, le crawler me sort un rapport que j’analyse ensuite sur … Excel 🙂

Comments are closed.