SEO Analytics for Free – Combinaison de Google Search avec l'API Moz
Je suis un propriétaire de start-up autofinancé. En tant que tel, je souhaite obtenir autant que possible gratuitement avant de convaincre notre directeur financier de dépenser nos fonds de démarrage durement gagnés. Je suis aussi un analyste avec une formation en informatique et en données, donc un geek par définition.
Ce que j'essaie de faire, avec mon chapeau d'analyste SEO, est de dénicher d'excellentes sources de données gratuites et le brouiller dans quelque chose de perspicace. Pourquoi? Parce qu’il n’est pas utile de fonder les conseils des clients sur des conjectures. Il est bien préférable de combiner des données de qualité avec une analyse de qualité et d'aider nos clients à mieux comprendre les points importants sur lesquels ils doivent se concentrer.
Dans cet article, je vais vous expliquer comment utiliser quelques ressources gratuites et illustrer comment. pour rassembler des analyses uniques qui fournissent des informations utiles pour vos articles de blog si vous êtes un écrivain, votre agence si vous êtes un SEO, ou votre site web si vous êtes un client ou un propriétaire qui fait du SEO vous-même.
Le scénario que je vais utiliser est celui que je souhaite analyser certains attributs de référencement (par exemple, des liens en arrière-plan, une autorité de page, etc.) et examiner leur effet sur le classement dans Google. Je souhaite répondre à des questions telles que «Les backlinks sont-ils vraiment importants pour accéder à la page 1 des SERPs?» Et «Quel type de score d'autorité de page dois-je vraiment figurer dans les 10 meilleurs résultats?». Pour ce faire, je devrai combiner données issues d'un certain nombre de recherches Google avec des données sur chaque résultat possédant les attributs de référencement que je souhaite mesurer.
Commençons par travailler sur la façon de combiner les tâches suivantes pour y parvenir, qui peuvent toutes être configurées gratuitement. :
- Interrogation avec le moteur de recherche personnalisé Google
- Utilisation du compte API gratuit de Moz
- Récupération de données avec PHP et MySQL
- Analyse des données avec SQL et R
Interrogation avec Google Custom Search Engine
Nous d'abord besoin d'interroger Google et obtenir des résultats stockés. Pour rester dans la partie droite des conditions d’utilisation de Google, nous ne supprimerons pas Google.com directement mais utiliserons la fonction de recherche personnalisée de Google. La recherche personnalisée de Google est principalement conçue pour permettre aux propriétaires de sites Web de fournir un widget de recherche semblable à Google sur leur site Web. Toutefois, il existe également une API de recherche Google basée sur REST qui est gratuite et qui vous permet d'interroger Google et de récupérer les résultats au format populaire JSON . Il y a limites de quota mais elles peuvent être configurées et étendues pour fournir un bon échantillon de données avec lesquelles travailler.
Nonobstant ces restrictions, de nombreuses options de recherche peuvent être transmises au moteur de recherche personnalisé pour indiquer par proxy ce que vous souhaitez que Google.com renvoie. Dans notre scénario, nous passions ce qui suit lors d'un appel:
https://www.googleapis.com/customsearch/v1?key=& userIp = & cx & q = iPhone + X & cr = countryUS & start = 1
Où:
- https://www.googleapis.com/customsearch/v1 – est l'URL de l'API de recherche personnalisée Google
- clé =
– Votre ] API de développeur Google Clé - userIp =
– Adresse IP de la machine locale effectuant l'appel - cx =
– Votre moteur de recherche personnalisé Google ID [19659007] q = iPhone + X – La chaîne de requête Google ('+' remplace '') - cr = countryUS – Restriction de pays (extrait de la liste de Goolge Country Collection Name )
- start = 1 – Le index du premier résultat à retourner – par exemple SERP page 1. Les appels successifs incrémenteraient cela pour obtenir les pages 2 à 5.
Google a déclaré que le moteur de recherche personnalisé de Google était différent de celui de Google .com mais dans le cadre de mes essais limités, la comparaison des résultats entre deuxièmement, les similitudes m'ont encouragé et j'ai donc poursuivi l'analyse. Cela dit, n'oubliez pas que les données et les résultats ci-dessous proviennent de la recherche personnalisée Google (avec des requêtes "sur le Web entier") et non de Google.com.
Utilisation du compte API gratuit de Moz
Moz fournit une application. Interface de programmation (API). Pour l'utiliser, vous devrez vous enregistrer pour une clé d'API Mozscape gratuite mais limitée à 2 500 lignes par mois et une requête toutes les dix secondes. Les plans actuels rémunérés vous donnent des quotas augmentés et commencent à 250 $ / mois. Avec un compte et une clé API gratuits, vous pouvez alors interroger l'API Links et analyser les métriques suivantes :
Champ de données Moz | Code API Moz | Description [19659029] ueid | 32 | |
---|---|---|---|---|
uid | 2048 | Le nombre de liens (externes, équivalents ou non, ou non,). à l'URL | ||
umrp ** | 16384 | Le MozRank de l'URL, en tant que score normalisé à 10 points | ||
umrr ** | 16384 | Le MozRank de l'URL, en tant que score brut | ||
fmrp ** | 32768 | Le MozRank du sous-domaine de l'URL, en tant que partition normalisée à 10 points | ||
fmrr ** | 32768 | Le MozRank du sous-domaine de l'URL, as score brut | ||
us | 536870912 | Code de statut HTTP enregistré pour cette adresse URL, si disponible | ||
upa | 34359738368 | Score normalisé à 100 points représentant la probabilité d'un pag e bien classer dans les résultats des moteurs de recherche | ||
pda | 68719476736 | Score normalisé de 100 points représentant la probabilité qu’un domaine soit bien classé dans les résultats des moteurs de recherche |
REMARQUE: Cette analyse étant capturée, Moz documenté qu'ils ont déconseillé ces champs. Cependant, lors du test (15-06-2019), les champs étaient toujours présents.
Les codes de l'API Moz sont additionnés avant d'appeler l'API Links avec un nom semblable à celui-ci:
www.apple.com% 2F? Cols = 103616137253 & AccessID = MOZ_ACCESS_ID & Expires = 1560586149 & Signature =
Où:
- http://lsapi.seomoz.com/linkscape/url-metrics/ "class =" rédacteur-autoparser-objet "> http://lsapi.seomoz.com/linksc … – L'URL de l'API Moz
- http% 3A% 2F% 2F www.apple.com% 2F – Une URL codée sur laquelle nous voulons obtenir des données sur
- Cols = 103616137253 – Somme des codes d'API Moz du tableau ci-dessus
- AccessID = MOZ_ACCESS_ID – Une version codée de l'ID d'accès Moz (figurant dans votre compte API)
- Expires = 1560586149 – Délai d'attente pour la requête – définir un délai d'attente pour la requête – quelques minutes dans l'avenir
- Signature =
– Une version codée de l'ID d'accès Moz (figurant dans votre compte API)
Moz retournera avec quelque chose comme le JSON suivant:
Array ( [ut] => Apple [uu] => www.apple.com/ [ueid] => 13078035 [uid] => 14632963 [uu] => www.apple.com/ [ueid] => 13078035 [uid] => 14632963 [umrp] => 9 [umrr] => 0.8999999762 [fmrp] => 2.602215052 [fmrr] => 0.2602215111 [us] => 200 [upa] => 90 [pda] => 100 )
Pour un bon point de départ pour interroger Moz avec PHP, Perl, Python, Ruby et Javascript, consultez le référentiel sur Github . J'ai choisi d'utiliser PHP.
Récupération de données avec PHP et MySQL
Nous disposons maintenant d'un moteur de recherche personnalisé Google et de notre API Moz. Nous sommes presque prêts à capturer des données. Google et Moz répondent aux requêtes via le format JSON et peuvent donc être interrogés par de nombreux langages de programmation courants. En plus de la langue que j'ai choisie, PHP, j'ai écrit les résultats de Google et de Moz dans une base de données et choisi MySQL Community Edition pour cela. D'autres bases de données pourraient également être utilisées, par exemple Postgres, Oracle, Microsoft SQL Server, etc. Cela permet la persistance des données et l'analyse ad-hoc en utilisant SQL (Structured Query Language) ainsi que d'autres langages (comme R, que je reviendrai plus loin). Après avoir créé des tables de base de données contenant les résultats de recherche Google (avec des champs pour le rang, l'URL, etc.) et une table contenant les champs de données Moz (ueid, uda, uda, etc.), nous sommes prêts à concevoir notre plan de collecte de données. [19659002] Google fournit un quota généreux avec le moteur de recherche personnalisé (jusqu'à 100 millions de requêtes par jour avec la même clé de la console du développeur Google), mais l'API gratuite de Moz est limitée à 2 500. Bien que pour Moz, les options payantes fournissent entre 120 000 et 40 millions de lignes par mois, selon les forfaits, et leur coût varie de 250 à 10 000 dollars par mois. Par conséquent, alors que je suis en train d’explorer l’option gratuite, j’ai conçu mon code de manière à exploiter 125 requêtes Google sur deux pages de SERP (10 résultats par page), ce qui me permet de respecter le quota de 2 500 lignes de Moz. En ce qui concerne les recherches sur Google, il existe de nombreuses ressources à utiliser. J'ai choisi d'utiliser Mondovo car ils fournissent de nombreuses listes par catégorie et jusqu'à 500 mots par liste, ce qui est amplement suffisant pour l'expérience.
J'ai également intégré quelques classes d'aide PHP à côté de mon propre code pour base de données. I / O et HTTP.
En résumé, les principaux composants et sources de PHP utilisés sont les suivants:
Un facteur à prendre en compte est l'intervalle de 10 secondes entre les appels d'API de Moz . Ceci afin d'éviter que Moz ne soit surchargé par les utilisateurs d'API libres. Pour gérer cela dans le logiciel, j'ai écrit un "throttler de requête" qui bloquait l'accès à l'API de Moz entre des appels successifs dans une période donnée. Cependant, tout en fonctionnant parfaitement, cela signifiait qu'il fallait un peu moins de 7 heures pour appeler Moz 2500 fois de suite.
Analyse des données avec SQL et R
Données collectées. Le plaisir commence maintenant!
Il est temps de jeter un coup d’œil à ce que nous avons. Cela s'appelle parfois des querelles de données . J'utilise un langage de programmation statistique gratuit appelé R avec un environnement de développement (éditeur) appelé R Studio . Il existe d’autres langues telles que Stata et d’autres outils de science des données graphiques tels que Tableau mais ces coûts et le directeur financier de Purple Toolz n’ont personne à traverser!
J’utilise R depuis un certain nombre d’années parce qu’il est open source et qu’il compte de nombreuses bibliothèques tierces, ce qui le rend extrêmement polyvalent et approprié pour ce type de travail.
Laissons la parole.
J'ai maintenant quelques tables de base de données contenant les résultats de mes 125 requêtes de termes de recherche sur 2 pages de SERPS (c.-à-d. 20 URL classées par terme de recherche). Deux tables de base de données contiennent les résultats de Google et une autre table contient les résultats de données Moz. Pour y accéder, nous aurons besoin de créer une base de données INNER JOIN facile à réaliser en utilisant le paquet RMySQL avec R. Celui-ci est chargé en tapant "install.packages ('RMySQL") "dans R console et incluant la ligne "bibliothèque (RMySQL)" en haut de notre script R.
Nous pouvons ensuite procéder comme suit pour connecter et obtenir les données dans une variable de trame de données R appelée "theResults".
bibliothèque (RMySQL) # INNER JOIN les deux tables theQuery <- " SÉLECTIONNER A. *, B. *, C. * DE ( SÉLECTIONNER cseq_search_id DE cse_query ) A - Requête de recherche personnalisée JOINTURE INTERNE ( SÉLECTIONNER cser_cseq_id, cser_rank, cser_url DE cse_results ) B - Résultats de recherche personnalisés ON A.cseq_search_id = B.cser_cseq_id JOINTURE INTERNE ( SELECT * DE moz ) C - Champs de données Moz ON B.cser_url = C.moz_url ; " # [1] Connectez-vous à la base de données # Remplacez USER_NAME par votre nom d'utilisateur de base de données # Remplacez PASSWORD par votre mot de passe de base de données # Remplacez MY_DB par votre nom de base de données theConn <- dbConnect (dbDriver ("MySQL"), utilisateur = "USER_NAME", mot de passe = "PASSWORD", dbname = "MY_DB") # [2] Interroge la base de données et conserve les résultats. theResults <- dbGetQuery (theConn, theQuery) # [3] Déconnecter de la base de données dbDisconnect (theConn)
REMARQUE: je dispose de deux tables pour stocker les données du moteur de recherche personnalisé Google. L'un contient des données sur la requête Google (cse_query) et l'autre des résultats (cse_results).
Nous pouvons maintenant utiliser la gamme complète de fonctions statistiques de R pour commencer à nous quereller.
Commençons par quelques résumés pour avoir une idée des données. Le processus que je suis en train de suivre est fondamentalement le même pour chacun des champs. Nous allons donc illustrer et utiliser le champ "UEID" de Moz (le nombre de liens d’équité externes vers une URL). En tapant ce qui suit dans R je reçois le ceci:
> summary (theResults $ moz_ueid) Min. 1er Qu. Médiane Moyenne 3ème Qu. Max. 0 1 20 14709 182 2755274 > quantile (theResults $ moz_ueid, probs = c (1, 5, 10, 25, 50, 75, 80, 90, 95, 99, 100) / 100) 1% 5% 10% 25% 50% 75% 80% 90% 95% 99% 100% 0.0 0.0 0.0 1.0 20.0 182.0 337.2 1715.2 7873.4 412283.4 2755274.0
En regardant cela, vous pouvez voir que les données sont faussées (beaucoup) par la relation entre la médiane et la moyenne, qui est tirée par les valeurs du quartile supérieur plage (valeurs au-delà de 75% des observations). Nous pouvons toutefois représenter cela sous la forme de boîte à moustaches dans R où chaque valeur X correspond à la distribution des UEID par rang depuis la position de recherche personnalisée Google 1-20.
Notez que nous utilisons une échelle logarithmique sur l'axe des ordonnées afin d'afficher la plage complète des valeurs car elles varient beaucoup!

Les diagrammes en forme de boîte à moustaches sont excellents car ils contiennent beaucoup d’informations (voir la fonction geom_boxplot en R). La zone en violet représente la gamme inter-quartile (IQR), qui correspond aux valeurs comprises entre 25% et 75% des observations. La ligne horizontale dans chaque "case" représente la valeur médiane (celle du milieu quand il est commandé), tandis que les lignes partant de la case (appelées les "moustaches") représentent 1,5 x IQR. Les points situés à l’extérieur des moustaches sont appelés «points aberrants» et indiquent où sont les étendues des observations de chaque rang. Malgré l’échelle logarithmique, les valeurs médianes se situent entre le rang 10 et le rang 1, ce qui indique que le nombre de liens d’équité pourrait être un facteur de classement dans Google. Examinons cela plus en détail avec les diagrammes de densité .
Les diagrammes de densité ressemblent beaucoup aux distributions (histogrammes), mais montrent des lignes lisses plutôt que des barres pour les données. Tout comme un histogramme, le pic d’un graphe de densité indique où les valeurs de données sont concentrées et peut aider à comparer deux distributions. Dans le graphique de densité ci-dessous, j'ai divisé les données en deux catégories: (i) les résultats apparaissant à la page 1 des SERP classées de 1 à 10 sont en rose et; (ii) les résultats apparaissant sur le SERP sont en bleu. J'ai également tracé les médianes des deux distributions pour illustrer la différence entre les résultats de la page 1 et de la page 2.

L'inférence tirée de ces deux diagrammes de densité est que les résultats du SERP ont plus de backlinks d'équité externes (UEID) que de page. 2 résultats Vous pouvez également voir les valeurs médianes pour ces deux catégories ci-dessous, qui montrent clairement comment la valeur de la page 1 (38) est beaucoup plus grande que celle de la page 2 (11). Nous avons donc quelques chiffres sur lesquels baser notre stratégie de référencement des backlinks.
# Créer un facteur en R en fonction de la page SERP associée au résultat (cser_rank). > theResults $ rankBin theResults $ rankBin peu à peu (theResults $ moz_ueid, theResults $ rankBin, médiane) Page 1 Page 2 38 11
Nous pouvons en déduire que les backlinks sur actions (UEID) sont importants et si je conseillais un client sur la base de ces données, je dirais qu'il devrait chercher à obtenir plus de 38 backlinks basés sur des actions pour les aider à se rendre Page 1 des SERPs. Bien sûr, il s'agit d'un échantillon limité et davantage de recherche, d'un échantillon plus grand et d'autres facteurs de classement doivent être pris en compte, mais vous voyez l'idée.
Examinons maintenant une autre métrique moins étendue que UEID. Regardez la mesure UPA de Moz, à savoir la probabilité qu'une page se classe bien dans les résultats des moteurs de recherche.
> summary (theResults $ moz_upa) Min. 1er Qu. Médiane Moyenne 3ème Qu. Max. 1,00 33,00 41,00 41,22 50,00 81,00 > quantile (theResults $ moz_upa, probs = c (1, 5, 10, 25, 50, 75, 80, 90, 95, 99, 100) / 100) 1% 5% 10% 25% 50% 75% 80% 90% 95% 99% 100% 12 20 25 33 41 50 53 58 62 75 81
UPA est un numéro attribué à une URL et compris entre 0 et 100. Les données sont mieux interprétées que la précédente variable non bornée UEID dont la moyenne et la médiane sont rapprochées, ce qui permet une distribution plus «normale», comme on peut le voir ci-dessous en traçant un histogramme dans R.

Nous allons faire le même graphe de fractionnement et de densité que précédemment et examiner les distributions des scores UPA lorsque nous divisons les données UPA en deux groupes.

# Signalez les médianes par page SERP en appelant 'tapply ' > tapply (theResults $ moz_upa, theResults $ rankBin, médian) Page 1 Page 2 43 39
En résumé, deux distributions très différentes à partir de deux variables d'API Moz. Mais les deux ont montré des différences dans leurs scores entre les pages de SERP et vous ont fourni des valeurs tangibles (médianes) avec lesquelles travailler et finalement conseiller les clients ou appliquer à votre propre référencement.
Bien sûr, il s’agit d’un petit échantillon qui ne doit pas être pris à la lettre. Mais avec les ressources gratuites de Google et de Moz, vous pouvez maintenant voir comment vous pouvez commencer à développer vos propres capacités d'analyse pour fonder vos hypothèses sur plutôt que d'accepter la norme. Les facteurs de classement SEO changent constamment et disposer de vos propres outils d'analyse pour effectuer vos propres tests vous permettra de gagner en crédibilité et peut-être même de vous donner une idée unique de quelque chose d'inconnu.
Google vous fournit un quota gratuit et sain pour obtenir résultats de recherche de. Si vous avez besoin de plus de 2 500 lignes / mois, Moz fournit gratuitement de nombreux forfaits payants que vous pouvez acheter. MySQL est un téléchargement gratuit et R est également un logiciel gratuit pour l'analyse statistique (et bien plus encore).
Allez explorer!
Source link