Obtenir des rapports de qualité en temps opportun est essentiel pour prendre les bonnes décisions, surtout en SEO lorsque vous gérez une entreprise via un site web. Le web évolue rapidement, et une décision interne chez Google peut avoir d’énormes répercussions sur le classement de votre site ou de celui de vos clients.
Dans cet article, nous allons combiner Python, MongoDB et le service Twilio pour automatiser la production et l’envoi de rapports SEO via WhatsApp.
Évidemment, le code présenté ici peut être adapté pour produire n’importe quel type de rapport. Personnellement, je construis mes rapports en utilisant les données SEO des API de Babbar.tech et Yourtext.guru, mais vous pouvez tout à fait utiliser d’autres API pour créer vos propres rapports.
Nous allons également créer une petite API permettant d’ajouter ou de supprimer des sites web des rapports. Les interactions avec cette API se feront via WhatsApp, ce qui nécessite de disposer d’un compte Twilio et d’un compte WhatsApp professionnel. Vous pouvez suivre cette procédure pour les configurer. Le reporting étant effectué via WhatsApp, il est essentiel que ces outils soient bien mis en place.
Cette API sera accessible directement via WhatsApp, ce qui en fait une interface naturelle pour vos clients. Ils pourront ainsi ajouter ou supprimer des informations dans leurs rapports en toute simplicité. Non seulement ils recevront leurs rapports via le service de messagerie, mais ils pourront également y ajouter ou retirer des sites sans avoir à utiliser une interface complexe ou à se souvenir d’un identifiant/mot de passe supplémentaire.
Contenu du rapport
Le rapport contiendra des informations SEO classiques sur les sites inclus :
- Nous recueillerons les principales métriques de Babbar pour obtenir une vue d’ensemble de la performance SEO du site.
- Nous inclurons également quelques pages du site qui se trouvent sur la deuxième page des résultats de recherche Google et obtiendrons les scores d’optimisation de Yourtext.guru pour ces pages et pour les pages concurrentes figurant sur la première page.
Cela permettra aux clients de comprendre les efforts nécessaires pour améliorer leur classement sur Google pour un mot-clé spécifique. Avec toutes ces informations pour chaque site, vos clients pourront identifier les dangers immédiats pour leur site et les actions à entreprendre pour améliorer le classement des pages qui frôlent la première page des résultats Google.
Nous ne présenterons pas tous les mots-clés sur lesquels le site est classé, car cela représenterait trop d’informations pour un rapport WhatsApp. Nous nous concentrerons sur des mots-clés spécifiques qui offrent de belles opportunités avec des efforts SEO relativement modérés.
Étapes à suivre dans cet article
- Créer le rapport SEO.
- Obtenir des informations générales sur les performances SEO des sites.
- Identifier les classements des pages spécifiques.
- Calculer les scores d’optimisation des pages et de leurs concurrents.
- Configurer une API avec Flask.
- Interagir avec l’API via WhatsApp.
Création d’un rapport SEO
Notre première tâche sera de créer un rapport SEO pour un site spécifique. Nous utiliserons les API de Babbar.tech et Yourtext.guru pour obtenir des métriques générales sur le site, ainsi que des métriques de qualité spécifiques sur certaines URLs du site qui se classent sur la deuxième page des résultats de recherche Google.
Le rapport inclura également des informations sur les pages figurant sur la première page des résultats de recherche Google, afin d’évaluer les efforts nécessaires pour atteindre cette première page.
L’accès aux données d’aperçu de Babbar.tech pour un site se fait via la route /host/overview/main
.
Cette fonction prend un site (host) en argument et tente de récupérer les informations générales disponibles sur ce site via Babbar.tech.

Voici les informations que nous inclurons dans le rapport. Host Value est une métrique de popularité, tandis que Host Trust est un indicateur de confiance explicite. Semantic Value est également une métrique de popularité, mais elle prend en compte la similarité sémantique des pages pour répartir cette popularité. La métrique HTTP Health représente le pourcentage de codes « Ok » reçus lors de la récupération des pages, et le BAS (Babbar Aggregative Score) est une métrique agrégative qui intègre la popularité, la confiance et le risque de spam du site. Nous demanderons ensuite à Babbar.tech trois pages du site qui se classent entre les positions 11 et 20 sur Google, en récupérant le mot-clé associé. Nous stockerons l’URL, le classement et le mot-clé correspondant.
Je me limite à trois pages, car il s’agit ici d’un exemple simplifié, et ce rapport sera accessible via des messages WhatsApp ; il doit donc rester succinct pour être lisible. Maintenant que nous avons les informations sur les classements, l’étape suivante consiste à récupérer les données sémantiques depuis Yourtext.guru. La première étape est de commander les guides de rédaction. Un guide de rédaction peut être considéré comme le vocabulaire qui devrait figurer sur une page pour qu’elle se classe bien sur un mot-clé spécifique.
Une fois que nous avons ce guide de rédaction, nous pouvons comparer le contenu de la page web avec le vocabulaire spécifique pour obtenir son score d’optimisation. Nous récupérerons également les résultats de la première page Google pour le mot-clé afin d’obtenir les scores d’optimisation des concurrents.
Nous extrayons le contenu de la page à l’aide de Trafilatura pour ne conserver que le contenu « principal ». L’API de Yourtext.guru nous renverra de nombreuses informations détaillées, mais nous nous concentrerons uniquement sur le score d’optimisation du contenu et sur le score de danger (qui peut être interprété comme un indicateur de sur-optimisation pour les moteurs de recherche).
Nous récupérons également les scores d’optimisation et de danger pour les résultats de la première page de Google pour le mot-clé spécifié. Ces informations sont incluses dans notre rapport, avec les scores d’optimisation et de danger de la 10ᵉ position, la moyenne de la première page des résultats, ainsi que la moyenne des trois premières positions. Ces scores donnent une indication des efforts nécessaires en termes d’optimisation de contenu pour atteindre la première page.
Nous avons maintenant toutes les informations nécessaires pour notre rapport et pouvons le rédiger avant de l’envoyer à l’utilisateur.
Rédiger le rapport se résume simplement à formater une chaîne de texte avec toutes les informations dont nous disposons.
Nous sommes maintenant prêts à écrire l’API afin de pouvoir interagir avec elle via WhatsApp. Nous utiliserons le framework Flask pour construire l’API, car il est très simple et parfaitement adapté à ce type de tâche.
WhatsApp comme interface
Nous construisons une API très simple qui n’expose qu’une seule route. Cette route recevra les messages envoyés par nos utilisateurs via WhatsApp. Quelques éléments sont importants à comprendre ici. Étant donné que cette route sera utilisée par le service WhatsApp de Twilio, elle doit être accessible via les méthodes POST ou PUT. J’ai choisi la méthode POST, car elle est plus largement utilisée que son équivalent PUT.
Twilio enverra trois champs, formatés sous forme de données de formulaire, qui sont essentiels pour interagir avec son service :
- From : ce champ représente le numéro de l’expéditeur qui nous a envoyé le message. Il est au format
whatsapp:XXXXXXXX
puisque nous avons configuré un expéditeur WhatsApp sur Twilio. - To : ce champ représente le numéro de l’expéditeur WhatsApp côté Twilio. C’est le numéro auquel le client a envoyé son message. Le client s’attend à recevoir une réponse de ce numéro, et il doit donc être utilisé pour envoyer les réponses.
- Body : ce champ contient le corps du message, soit la commande envoyée par le client.
L’API n’acceptera que deux types de messages :
- ADD host : ajoute le site (host) pour les prochains rapports.

DEL host : supprime le site (host) des prochains rapports.

Si un autre message est reçu, l’API répondra simplement qu’elle ne comprend pas la commande.
L’API est donc très simple. La fonction send_message, décrite ci-dessous, crée simplement un client twilio.rest.Client à l’aide d’un SID de compte et d’un token d’autorisation. Étant donné que les messages envoyés avec cette fonction sont relativement courts, il n’est pas nécessaire de les diviser avant de les envoyer.
La route de l’API se termine en envoyant une réponse vide à Twilio. Il est plus simple d’utiliser le client Python que d’essayer de formater les messages nous-mêmes.
Gestion des sites pour les rapports
Nous utiliserons MongoDB pour stocker les sites (hosts) qui doivent être inclus dans les rapports. Les sites seront enregistrés avec le numéro de l’utilisateur afin de savoir où envoyer les rapports. Pour interagir avec le serveur MongoDB, nous utiliserons le package pymongo.
Deux fonctions Python seront utilisées pour interagir avec le serveur pymongo : add_host_to_report et delete_host_from_report. Ces deux fonctions accèdent à la collection « host » dans la base de données « reports » du serveur MongoDB. La première fonction ajoute la paire (host, utilisateur) à la collection, tandis que la seconde la supprime.
Envoi des rapports
Les rapports sont envoyés de manière automatisée, sans que le client n’ait à les demander. Nous utilisons donc un script Python qui parcourt toute la collection MongoDB, génère un rapport pour chaque site (host) qu’il trouve, puis l’envoie à l’utilisateur.
Les rapports sont envoyés via WhatsApp. Comme ces rapports peuvent être trop longs, ils sont divisés en messages de 1 000 caractères maximum, envoyés avec un intervalle d’une seconde pour ne pas surcharger le service Twilio. Ici, comme nous n’avons qu’un seul expéditeur WhatsApp actif sur Twilio, la valeur du paramètre from_ dans la fonction est codée en dur. Si vous aviez plusieurs expéditeurs (par exemple, un par pays), il serait facile d’ajouter cette information dans MongoDB.
Les messages sont ensuite reçus sur le WhatsApp de l’utilisateur.


Programmation de la génération et de l’envoi des rapports
Pour automatiser la génération et l’envoi des rapports, il suffit d’ajouter l’exécution du script à votre crontab :
bashCopier le code0 9 * * 1 /usr/bin/python3 /path/to/your/script/app.py
Cette ligne déclenchera l’envoi des rapports chaque lundi à 9h.
Et ensuite ?
Maintenant que nous avons une structure simple pour automatiser les rapports, il est possible de la dupliquer pour envoyer d’autres types de rapports aux clients via WhatsApp. Les rapports actuels sont assez simples et ne proposent que peu d’options de personnalisation en dehors de l’ajout et de la suppression de sites. Il serait possible d’étendre les commandes que les clients peuvent envoyer par message pour davantage de personnalisation.
Connecter un LLM (Large Language Model) derrière l’API pourrait également permettre aux clients d’interagir avec l’API en langage naturel plutôt qu’avec des commandes spécifiques. Cela améliorerait considérablement leur expérience utilisateur. L’utilisation du langage naturel dans un service de messagerie est plus intuitive pour l’utilisateur final, bien que cela dépasse le cadre de cet article.