Aller au contenu
CranSEO
CranSEOS'inscrire

DataForSEO vs une API uniquement de liens : ce qui change dans votre pipeline R

Un démontage d'un pipeline imaginaire, étape par étape. Nous listons ce qui bouge, ce qui reste et ce que vous perdez en restreignant la source aux liens.

Équipe de recherche CranSEO ·

Deux voies de chemin de fer divergentes dans une forêt brumeuse représentant les choix de pipeline

Le pipeline, étape par étape

01

Authentifier

Notre clé voyage en tant que paramètre de requête ou en tant qu'en-tête Authorization Bearer. Les actions gratuites n'en nécessitent pas, de sorte que les premières cellules d'un notebook peuvent s'exécuter pour n'importe qui.

02

Requête

Un GET par action, avec q pour le domaine. La pagination utilise page et per (de 10 à 5000), le tri utilise sort et order.

03

Analyser

Chaque réponse est un JSON avec un champ ok. Celles authentifiées ajoutent _credits, indiquant le coût et le solde restant.

04

Stocker

Écrire le tibble et la date de capture ensemble. Le graphique s'actualise environ mensuellement, la date fait donc partie des données.

05

Rapporter

Rendre à partir du fichier stocké, et non d'un appel en direct, afin que le document quarto fournisse le même graphique demain.

Ce que vous gagnez et ce que vous abandonnez

PréoccupationAPI uniquement de liensFournisseur plus large
PérimètreBacklinks, domaines référents, ancres, pages principales, DRAjoute généralement des données SERP et de mots-clés
FacturationPar appel, 1 crédit = $0.0001, sans abonnementVérifiez sa propre liste de prix
FraîcheurActualisation approximativement mensuelleVérifiez sa propre documentation
Lignes par appelJusqu'à 1 000, facturé une seule foisVarie selon le point de terminaison
Signaux d'échecHTTP 401 clé invalide, HTTP 402 pas de créditVarie
Grue soulevant une poutre en acier facilement versus petit outil luttant pour montrer l'efficacité

L'erreur qui coûte le plus cher dans ce type de pipeline

La plupart des pipelines échouent sur le plan financier, et non sur le code. Une boucle qui appelle un point de terminaison une fois par ligne transforme une tâche peu coûteuse en tâche onéreuse.

Avec nous, un appel coûte autant pour 10 lignes que pour 1 000, donc la règle s'inverse : demandez la plus grande page possible. Définissez per à 1000, triez selon vos besoins, et arrêtez la pagination lorsque la question est résolue.

La pagination profonde est limitée à 50 000 lignes, ce qui est une fonctionnalité pour les analystes tentés de tout extraire. Si un domaine a plus de liens que cela, vous voudrez probablement utiliser toppages ou anchors à la place.

Comparez les dépenses de votre ancienne boucle avec la version à appel unique avant de célébrer. Parfois, l'économie est nulle parce que l'ancien fournisseur facturait déjà par requête.

Verdict sur ce démontage

Restreignez la source uniquement si le rapport est étroit

Si la plupart des colonnes de votre tibble sont des liens, une API uniquement de liens supprime le code d'analyse et le coût. Si la moitié des colonnes sont des données SERP, gardez votre fournisseur actuel et ajoutez le nôtre pour le reste.

  • Gardez les cellules de démonstration sur les actions gratuites
  • Épinglez la date de capture dans la sortie
  • Attendez-vous à un rythme mensuel, pas quotidien

Questions issues du démontage

Dois-je réécrire tout mon pipeline ?

Non. Remplacez uniquement l'étape des liens. Gardez vos étapes SERP et mots-clés là où elles sont, écrivez le tibble de liens dans son propre fichier, et joignez les deux en aval sur la colonne domaine.

Le CORS est-il ouvert pour les notebooks navigateur ?

Oui. Le CORS est ouvert, donc une application Shiny ou une cellule Observable peut appeler les actions gratuites directement. Gardez les clés payantes côté serveur, car tout ce qui se trouve dans le code navigateur peut être lu par les visiteurs.

Comment tester la gestion des erreurs à moindre coût ?

Envoyez une clé délibérément incorrecte pour voir le HTTP 401 sans rien dépenser. Le cas HTTP 402 n'apparaît que lorsque le solde est vide, donc simulez-le dans vos tests plutôt que de drainer le crédit.

Les totaux correspondront-ils exactement à ceux d'un autre fournisseur ?

Non. Chaque fournisseur crawl différemment et s'actualise selon son propre calendrier. Comparez les ordres de grandeur et les tendances, et considérez le DR ici comme une métrique séparée, un logarithme à échelle interne.

Erreurs, tentatives et les échecs que vous pouvez anticiper

Les échecs sont là où un pipeline uniquement de liens et un plus large se ressemblent le plus. Le code y est souvent laissé inachevé. Intégrez les chemins d'échec dans la comparaison, car une décision dataforseo vs link-only semble différente une fois les erreurs prises en compte.

HTTP 401 et HTTP 402 sont les deux à gérer

Deux codes d'état sont les plus importants. HTTP 401 signifie que la clé est manquante ou incorrecte, et la correction réside dans votre configuration plutôt que dans vos données. HTTP 402 signifie que le solde de crédit est épuisé, et la correction est un rechargement depuis la page du compte, et non un changement de code.

Écrivez-les tous les deux comme des branches explicites. Une capture générique qui avale le statut et écrit une table vide est la façon dont un prélèvement partiel silencieux se produit.

Timeouts et fichiers partiels

Un timeout n'est pas un code d'état, donc votre propre code doit le traiter comme un échec. Enveloppez l'appel de sorte qu'un timeout arrête l'exécution avant qu'une sortie ne soit écrite.

Écrivez dans un fichier temporaire et renommez-le en cas de succès. Un fichier à moitié écrit qui semble complet est le pire résultat d'une exécution interrompue, car personne ne pense à le remettre en question.

Tentatives et rythme

Cette page ne cite pas de chiffre de requêtes par seconde, donc dimensionnez le pipeline par appels par cycle. C'est le nombre qui entraîne le coût, et c'est celui que vous contrôlez.

Ne réessayez que les erreurs réseau, avec une pause entre les tentatives. Ne réessayez jamais un 401 ou un 402, car chacun échouera de la même manière lors de la prochaine tentative.

Où se trouve la clé pendant les tests

Gardez la clé dans une variable d'environnement sur votre machine et dans le magasin de secrets CI, jamais dans un fichier que les tests lisent. Les actions gratuites n'ont pas besoin de clé, donc la première exécution de test est sûre pour quiconque clone le projet.

Posez la même question à chaque pipeline que vous touchez : qui peut lire la clé, et où est-elle consignée ? Une clé qui apparaît dans un fichier de logs est une fuite, même lorsque le notebook lui-même est privé.

Journaliser le coût de chaque appel

Chaque réponse d'un appel authentifié contient le champ credits, qui indique le coût et le solde restant. Copiez-le dans votre journal à côté de l'horodatage et du nom de l'action, afin qu'une question sur le coût puisse être répondue à partir du fichier plutôt que de la mémoire.

Lisez le journal une fois par mois, pas une fois par an. Une augmentation lente du coût par cycle est facile à manquer dans un graphique et évidente dans une colonne de nombres.

Une exécution échouée doit également laisser son journal derrière, avec le code d'état et l'étape où elle s'est arrêtée. Un journal qui n'enregistre que les succès cache la ligne dont vous aviez besoin.

Puzzle en bois avec des pièces manquantes sur un établi représentant la perte de données

Compter les lignes à travers les étapes

De nombreux bugs coûteux de pipeline sont des bugs de comptage. Un tableau perd des lignes lors d'une jointure, d'un filtre ou d'une déduplication, et le graphique a encore l'air plausible par la suite.

Écrivez un comptage à chaque transfert

Pensez au pipeline comme à une chaîne de tableaux : la réponse API, le tibble analysé, le fichier stocké et le rapport. Un comptage de lignes à chaque transfert montre quelle étape a perdu des lignes, si elles l'ont fait.

Les analystes ne comptent souvent qu'à la fin. À ce moment-là, la cause remonte de trois étapes, et le tibble a été remodelé deux fois depuis.

Une ligne par domaine, une ligne par lien

La granularité dépend de l'action. Un tirage de domaines référents a une ligne par site de liaison, tandis qu'un tirage de backlinks a une ligne par lien, et un site peut en envoyer plusieurs. Comptez à la mauvaise granularité et deux nombres corrects sembleront en désaccord.

Indiquez la granularité dans le nom du fichier stocké ou dans un commentaire d'en-tête, afin que la prochaine personne n'ait pas à deviner. Le glossaire des actions liste la granularité de chaque action.

Pagination et le plafond de 50 000 lignes

La pagination avec page et per fonctionne jusqu'à 5000 lignes par page, mais la pagination profonde s'arrête à 50 000 lignes. Un tirage qui en attend plus revient limité, et son comptage peut paraître suspectement rond.

Comparez le nombre que vous avez reçu avec le total que vous attendiez. Lorsqu'ils diffèrent, vérifiez l'action, son tri et la taille de page avant de blâmer la source.

Un comptage travaillé, hypothétiquement

Disons qu'un tirage hypothétique demande des sites de liaison pour 30 domaines cibles et retourne 30 lignes de comptages. Joint aux scores, le tableau conserve 27 lignes. Les trois lignes manquantes nécessitent un examen avant que tout graphique ne soit dessiné, en commençant par leurs clés.

Écrivez ces trois noms par leur nom, pas seulement comme un comptage. Un comptage vous dit que des lignes ont manqué, tandis que les noms vous disent quelles clés nettoyer.

Les jointures qui perdent des lignes silencieusement

Une jointure à gauche conserve toutes les lignes de la table de gauche, donc un score manquant apparaît comme NA plutôt que comme une ligne disparue. Une jointure interne cache le même problème en supprimant la ligne tout à fait.

Choisissez le type de jointure à dessein, et comptez les scores NA après la jointure. Ce comptage appartient au journal à côté du champ credits.

Un court plan de test avant de changer

Exécutez les deux sources pour un cycle. Mêmes domaines, même jour.

Prenez 30 domaines que vous connaissez bien, tirez les comptages de domaines référents de votre fournisseur actuel et de CranSEO, et tracez-les l'un contre l'autre sur des axes logarithmiques. Vous devriez voir une diagonale approximative, pas une exacte, car les crawls diffèrent et le nôtre s'actualise environ mensuellement ; DataForSEO, Ahrefs et Semrush voient chacun un web légèrement différent.

Lisez les valeurs aberrantes, pas la moyenne. Là où notre comptage est bien en dessous, vérifiez si le domaine est nouveau ou récemment déplacé. Là où il est bien au-dessus, vérifiez les sous-domaines. Le glossaire définit ce que nous comptons comme un domaine référent, et le manuel d'exécution montre comment stocker les deux tirages côte à côte.

Avant la première exécution en production

  • La clé est lue depuis l'environnement, et un test couvre une clé manquante
  • Un appel de test sur un seul domaine, journalisé avec son champ credits
  • Branches explicites pour HTTP 401 et HTTP 402
  • Un comptage de lignes écrit à chaque étape
  • La date de capture écrite à côté de chaque fichier stocké