Catégories
français seo community

Auditer ses backlinks avec l’API Babbar & Python

On m’a demandé récemment au support comment faire pour identifier les tops backlinks de mes hosts référents. Voici comment je ferai :

Tout d’abord, qu’est-ce que le top backlink ?

Le top backlink, c’est la liste des liens qui apportent le plus d’autorité à mon site internet. C’est ceux qu’il est préférable de conserver le plus possible car ils sont un bon apport d’autorité pour le site. Avoir cette liste permet donc d’identifier les liens qu’on veut monitorer pour éviter une régression au niveau de l’autorité.

Souvent, les SEO confondent « top backlink » avec « top url référente », et trient les liens en fonction des métriques des urls sources, et non en fonction de la valeur du lien en lui-même. Cette méthode est inefficace et est malheureusement beaucoup trop commune, et c’est l’une des raisons pourquoi je pense que la Force Induite est l’indicateur dont tout le monde a besoin pour travailler correctement.

Qu’est-ce que c’est, la Force Induite ?

La Force Induite est une valeur entre 0 et 100 qui permet de donner un score au lien qui dépend essentiellement de 2 éléments :

  • L’autorité de la page source
  • La proximité sémantique entre la source et la cible

En ajoutant à ça la notion d’anti spam qui fait du Babbar Authority Score la métrique d’autorité la plus corrélée au ranking de Google, on obtient une valeur vraiment fiable pour comparer les liens obtenus et identifier ceux qui ont le plus de valeur pour nous.

Pourquoi la Force Induite est importante ?

La Force Induite, définie dans notre article sur les métriques de Babbar, c’est une métrique qui prend la popularité d’une page source d’un lien, et qui va pondérer cette popularité avec d’autres facteurs dont des facteurs de compatibilité sémantique entre la source et la cible, et dont la valeur maximale sera la popularité de la page source, et au minimum elle serait égale à zéro.

C’est important parce que c’est la seule valeur qui est rattachée au lien et non à une page. C’est à dire que si la Force induite est de 4 pour un lien entre une page A et une page B, elle peut être de 24 entre A et une page C. Ou elle peut être améliorée entre A et B par un rapprochement sémantique.

Sylvain Peyronnet a déjà parlé de cette métrique dans cet article : utiliser la Force Induite et Gephi pour faire du bon linking.

Comment identifier rapidement ses top backlinks avec l’API Babbar et Python ?

J’ai déjà parlé dans un autre article de « comment utiliser l’API de Babbar avec Python« 

Globalement, voici comment je fais :

J’installe le package BabbarPy depuis Github :

pip install git+https://github.com/BabbarTech/BabbarPy.git

Ensuite, je crée un fichier .py (appelons le top_hosts_urls_fi.py)

Je vais ensuite importer les packages nécessaires :

from BabbarPy.host import h_backlinks_url_list
from BabbarPy.url import u_fi
from urllib.parse import urlparse
import csv

Je définis 3 fonctions, dont 2 vont m’aider à faire le traitement.

La première : extract_host(url) m’aide à identifier le host à partir de l’url. Elle est simple et je m’en sers quasiment tout le temps :

def extract_host(url):
    parsed_url = urlparse(url)
    return parsed_url.hostname

La deuxième fonction va filtrer le résultat de l’appel API pour n’afficher qu’un seul lien par site référent, celui qui a la plus haute valeur de Force Induite. (Si vous souhaitez tout afficher, cette fonction est à retirer).

def filter_max_fi_per_host(host_list):
    best_fi_per_host = {}
    for item in host_list:
        host = item['host']
        fi = item['fi']
        if host not in best_fi_per_host or fi > best_fi_per_host[host]['fi']:
            best_fi_per_host[host] = item
    return list(best_fi_per_host.values())

Enfin, la fonction principale, main(), pour faire un fichier python exécutable, demande le host en entrée, la clé d’API, et se charge de faire les appels API pour la liste des backlinks et la Force Induite pour chaque lien, puis fais appel aux deux fonctions précédemment définies pour ajouter le host dans la liste et pour filtrer le top backlink par site web référent.

def main():
    host = input("Enter the host: ")
    api_key = input("Enter the api key: ")
    backlinks = h_backlinks_url_list(host, api_key)
    source_target_list = [{'source': item['source'], 'target': item['target']}
                          for item in backlinks if 'source' in item and 'target' in item]
    linklist_fi = []
    for i in source_target_list:
        data = u_fi(i['source'], i['target'], api_key).iloc[0].to_dict()
        host_from_source = extract_host(i['source'])
        data_fi = int(data['fi'])
        linklist_fi.append({'host': host_from_source, 'source': data['source'], 'target': data['target'], 'fi': data_fi})
    filtered_max_fi_host_list = filter_max_fi_per_host(linklist_fi)
    with open('filtered_max_fi_host_list.csv', 'w', newline='', encoding='utf-8') as csvfile:
        fieldnames = ['host', 'source', 'target', 'fi']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
        writer.writeheader()
        for row in filtered_max_fi_host_list:
            writer.writerow(row)

Une version complète du code serait la suivante :

from BabbarPy.host import h_backlinks_url_list
from BabbarPy.url import u_fi
from urllib.parse import urlparse
import csv

def extract_host(url):
    parsed_url = urlparse(url)
    return parsed_url.hostname

def filter_max_fi_per_host(host_list):
    best_fi_per_host = {}
    for item in host_list:
        host = item['host']
        fi = item['fi']
        if host not in best_fi_per_host or fi > best_fi_per_host[host]['fi']:
            best_fi_per_host[host] = item
    return list(best_fi_per_host.values())

def main():
    host = input("Enter the host: ")
    api_key = input("Enter the api key: ")
    backlinks = h_backlinks_url_list(host, api_key)
    source_target_list = [{'source': item['source'], 'target': item['target']}
                          for item in backlinks if 'source' in item and 'target' in item]
    linklist_fi = []
    for i in source_target_list:
        data = u_fi(i['source'], i['target'], api_key).iloc[0].to_dict()
        host_from_source = extract_host(i['source'])
        data_fi = int(data['fi'])
        linklist_fi.append({'host': host_from_source, 'source': data['source'], 'target': data['target'], 'fi': data_fi})
    filtered_max_fi_host_list = filter_max_fi_per_host(linklist_fi)
    with open('filtered_max_fi_host_list.csv', 'w', newline='', encoding='utf-8') as csvfile:
        fieldnames = ['host', 'source', 'target', 'fi']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
        writer.writeheader()
        for row in filtered_max_fi_host_list:
            writer.writerow(row)

if __name__ == '__main__':
    main()

Et si vous voulez une version qui affiche la totalité des backlinks sans faire le filtre :

from BabbarPy.host import h_backlinks_url_list
from BabbarPy.url import u_fi
from urllib.parse import urlparse
import csv

def extract_host(url):
    parsed_url = urlparse(url)
    return parsed_url.hostname


def main():
    host = input("Enter the host: ")
    api_key = input("Enter the api key: ")
    backlinks = h_backlinks_url_list(host, api_key)
    source_target_list = [{'source': item['source'], 'target': item['target']}
                          for item in backlinks if 'source' in item and 'target' in item]
    linklist_fi = []
    for i in source_target_list:
        data = u_fi(i['source'], i['target'], api_key).iloc[0].to_dict()
        host_from_source = extract_host(i['source'])
        data_fi = int(data['fi'])
        linklist_fi.append({'host': host_from_source, 'source': data['source'], 'target': data['target'], 'fi': data_fi})
    with open('fi_host_list.csv', 'w', newline='', encoding='utf-8') as csvfile:
        fieldnames = ['host', 'source', 'target', 'fi']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
        writer.writeheader()
        for row in linklist_fi:
            writer.writerow(row)

if __name__ == '__main__':
    main()

Et voilà comment on obtient la liste des top backlinks en csv avec l’API Babbar et Python.

Pour télécharger les deux fichiers exemples, c’est par ici :