Comment j'ai pu interfacer mon agent OpenClaw à Moodle
La découverte d’OpenClaw
Depuis quelques semaines déjà, un outil open-source fait beaucoup parler de lui, tout autant pour l’ensemble des actions qu’il rend possible, que pour le nombre de failles de sécurité qu’il peut occasionner. Cet outil c’est Openclaw bien sûr. Pour ceux qui ne s’intéresserait que très peu à la hype actuelle autour des intelligences artificielles, il est difficile de donner une définition unique à ce programme, sachant qu’il existe un nombre incalculable de façon de l’utiliser.
Mais de mon point de vue, je vois ça comme un système permettant d’interconnecter des applications non dotées d’intelligence artificielle, pour pouvoir y travailler via des requêtes textuelles, et non plus des actions utilisateurs. L’autre bénéfice, c’est le principe de fonctionnement passif d’OpenClaw, là où on discute habituellement de manière unidirectionnelle avec l’IA (on ouvre ChatGPT pour poser un question), ici notre agent peut revenir vers nous s’il constate des changements dans son environnement (OS ou même Internet).
Enfin voilà, cela fait moins d’une semaine que je m’y suis mis sérieusement, donc c’est encore un peu flou et je n’ai pas tout expérimenté, mais sachez que si vous ne savez pas en quoi cela pourrait vous être utile, essayez-le et généralement vous y trouverez une utilité.
Mes besoins spécifiques
Après avoir expérimenté un usage basique : mettre en place des crons jobs pour avoir les infos quotidiennement via l’API Brave Search, le but recherché de cet outil reste selon moi de pouvoir interroger et réaliser des tâches sur des applications externes. La plupart des utilisateurs donnent à leur agent un accès à leur boîte mail, leur compte Google, etc… Mais en tant qu’étudiant, l’outil que j’utilise quotidiennement s’appelle Moodle, je sais que c’est le cas de l’écrasante majorité des établissements d’enseignement supérieur en France, donc je pense que ce qui va suivre va en intéresser plus d’un !
Reste à définir les résultats exacts que l’on souhaite obtenir… On peut d’ores et déjà écarter toutes actions réservées aux comptes professeurs, car il faut une clé API (il existe déjà un skill pour ça), à savoir que par défaut les serveurs Moodle ne procurent pas cette accès via API, donc si vous êtes prof, contactez l’administrateur de votre serveur Moodle.
Mais ici mon projet est bien pensé pour les étudiants, on souhaite donc que notre agent IA puisse répondre par lui-même à ce type de questions :
- Quel est l’exercice 3 du TD2 en maths ?
- Explique-moi le chapitre sur la cinématique en cours de mécanique.
- Sur quoi portera le prochain TP de programmation ?
L’agent doit donc pouvoir parcourir les documents (qu’il soit textuel, au format PDF, liens, etc…) contenus dans les cours auxquels l’utilisateur est inscrit, pour trouver la réponse appropriée à la requête.
Le développement de l’outil
De manière générale, le fait de fournir une capacité supplémentaire personnalisée à un agent IA, s’appelle un SKILL, c’est quelque chose de normalisé, avec un certain template à respecter : voir ici. Le but est de produire un exécutable facilement déployable sur différents modèles d’IA, de manière sure.
Nous allons donc créer un skill pour expliquer à l’agent comment interagir avec la plateforme Moodle. Bien entendu, cette plateforme nécessite une connection, il y a donc un processus d’authentification à respecter. Heureusement pour cette partie, il serait idiot de ne pas faire appel aux programmes déjà codés pour ça. Sur GitHub, il existe plusieurs outils, mais les plus adaptés sont Moodle-DL ou Edu-Sync. Ces derniers font foncièrement la même chose : Scraper les cours sur la plateforme pour télécharger les documents en local. Par ailleurs, ils gèrent très bien le processus d’authentification, c’est cela qui nous intéresse le plus ici.
Le binaire codé en Rust
J’ai donc choisi de fork le projet edu-sync pour y rajouter une légère surcouche pour rendre l’outil agent-friendly, c’est à dire en ajoutant des exports des documents en JSON (+ un extracteur texte depuis PDF). Le but est que l’agent ne manipule que du texte, il convient donc de normaliser les données.
Je ne vais pas rentrer dans les détails ici, le code complet est disponible ici.
Le processus d’authentification
Lorsque l’on parle d’authentification à Moodle, il faut bien distinguer deux modes :
- La connexion directe via un username/password
- La connexion via un SSO (Single Sign-On), c’est à dire un portail d’authentification qui donne accès à plusieurs outils (ce que l’on appelle l’ENT) : votre messagerie, votre emploi du temps et Moodle.
Le premiers cas est simple, il ne nécessite pas de manipulation complexe, le second est beaucoup plus ardu, c’est le cas de mon école :
Ici pas de fatalité, il existe une méthode assez simple pour obtenir un token de connexion, il faut suivre les étapes suivantes :
- Connectez-vous via votre portail comme d’habitude.
- Ouvrez la page suivante dans un autre onglet : https://YOUR_MOODLE/admin/tool/mobile/launch.php?service=moodle_mobile_app&passport=12345&urlscheme=moodlemobile. Il faut modifier YOUR_MOODLE par l’adresse exacte de votre plateforme Moodle, dans mon cas c’est moodle.enib.fr.
- Sur cette nouvelle page, qui doit afficher une erreur ou ne rien faire du tout, faites F12 ou clique droit > Inspecter pour ouvrir les outils de développement, rendez-vous dans l’onglet Réseau, et il ne devrait y avoir qu’une seule ligne rouge (s’il n’y a rien, rechargez cette page). Cette ligne contient le token de Moodle Mobile :
Pour les curieux, ce token permet à l’origine de relier une application mobile Android/IOS à votre serveur Moodle, on récupère ce token pour relier notre scrapper à la place. D’ailleurs, il est nécessaire que le serveur Moodle de votre école accepte les applications mobiles, mais par défaut c’est le cas.
Il suffit de fournir cette adresse complète à votre agent, pour qu’il finisse la configuration. Voici le processus de configuration complet que j’ai réalisé via Telegram, au moyen du modèle gpt-5.4 mini :
Le fichier de configuration est stocké localement à l’adresse : ~/.config/edusync/edusync.toml
Utilisation
Et à partir de là, c’est magique 🤩
On peut interagir très simplement, voici quelques exemples :
- Lister les cours :
- Demander un renseignement sur un Cours/TP (même si le contenu est dans un pdf) :
- Corriger un exercice en particulier (l’énoncé est au sein d’un PDF) :
+ plein d’autres usages que vous découvrirez à l’usage
A noter que l’agent ne télécharge pas tous les fichiers de vos cours, il télécharge uniquement les fichiers nécessaires au fil des discussions. Par conséquent, vous pouvez à tout moment demander à votre agent de vider le dossier Documents contenant ces fichiers.
Installation
Seul le fichier SKILL.md est nécessaire, il est disponible ici : https://clawhub.ai/4strium/moodle-claw
Auteur : Romain MELLAZA
Date de publication : 27 Mars 2026