Les erreurs et les bugs dans les jeux sont de plus en plus fréquents, en particulier pour les titres qui attirent de grandes bases de joueurs grâce à un gameplay engageant. C’est la réalité à laquelle les joueurs sont confrontés aujourd’hui, y compris ceux qui plongent dans ARC Raiders. De nombreux joueurs ont signalé des […]
L’intelligence artificielle générative n’appartient plus au domaine de la spéculation : elle s’impose désormais comme un outil opérationnel au sein des départements marketing. Une récente enquête menée par SAS et Coleman Parkes révèle que plus de huit marketeurs sur dix l’utilisent activement à l’échelle mondiale. Les directeurs marketing (CMO) rapportent un retour sur investissement dans ... Lire plus
Vous avez un site WordPress et vous voulez ajouter de l’IA dedans ?
Alors pour faire ça, vous installez un super plugin qui utilise ChatGPT. Parfait ! Sauf que 2 mois après, vous découvrez l’existence d’un nouvelle version de Claude qui est bien meilleure. Ou Gemini sort une fonctionnalité que vous voulez absolument..
Mais bon, votre plugin est marié avec OpenAI, et impossible de divorcer. Du coup, vous êtes coincé. Bienvenue dans le grand bordel de l’IA, où chaque outil parle sa propre langue et refuse de discuter avec les autres.
Heureusement, WordPress vient de sortir un truc qui pourrait bien changer tout ça. En gros, ils ont créé trois outils qui fonctionnent ensemble pour transformer WordPress en “traducteur universel” pour les IA. Ça s’appelle l’Abilities API, le PHP AI Client SDK, et le support du MCP (Model Context Protocol).
D’après
l’annonce officielle sur Make WordPress
, l’idée c’est donc de créer un registre central où toutes les capacités de WordPress sont décrites de manière lisible par les machines.
Jonathan Bossenger explique
que l’Abilities API ne se limite pas à découvrir les capacités du site, mais gère aussi les permissions et l’exécution de manière sécurisée. Votre site peut dire à une IA “Voilà ce que je sais faire, voilà ce que tu peux toucher, et voilà comment tu exécutes ça”.
//N'importe quel plugin peut enregistrer ses capacités avec le hook `init`.
wp_register_ability( 'my-seo-plugin/analyze-content-seo', [
'label' => __( 'AnalyserleSEOducontenu', 'my-seo-plugin' ),
'description' => __( 'Analyselecontenudel\'article pour améliorer le SEO.','my-seo-plugin'),'thinking_message'=>__('Analyse de votre contenu en cours !','my-seo-plugin'),'success_message'=>__('Contenu analysé avec succès.','my-seo-plugin'),'execute_callback'=>['MySEOPlugin','analyze_content'],'input_schema'=>['type'=>'object','properties'=>['post_id'=>['type'=>'integer','description'=>__('L\'identifiantdel\'article.','my-seo-plugin'),'required'=>true],],'additional_properties'=>false,],'output_schema'=>['type'=>'number','description'=>__('Le score du contenu en pourcentage.','my-seo-plugin'),'required'=>true,],'permission_callback'=>'edit_posts',]);
Le truc marrant, c’est que WordPress a la réputation d’être la technologie “has-been” du web. Les hipsters du dev vous disent que c’est un dinosaure, qu’il faut passer à Next.js ou je ne sais quoi, et pourtant, c’est ce dino qui devient le premier CMS à adopter le MCP, qui est quand même un standard ultra-récent. Si vous n’avez jamais entendu parlé de MCP, c’est développé par Anthropic et ça permet de standardiser la façon dont les IA communiquent avec les outils externes.
WordPress a intégré le MCP en quelques mois et je vous explique rapidmeent comment ça marche, parce que c’est pas si compliqué.
Le PHP AI Client SDK v0.1.0
est en fait une interface unifiée pour parler à n’importe quelle IA. Vous écrivez votre code une fois, et ça fonctionne avec OpenAI, Claude, Gemini, ou même un modèle local que vous faites tourner chez vous. Ce SDK se charge donc de traduire vos requêtes dans le langage de chaque provider.
C’est donc surtout un truc pour les développeurs, les agences, les gens qui codent des plugins et des thèmes custom. Et si vous êtes un utilisateur lambda de Wordpress (qui ne code pas dans cet écosystème), sachez quand même que les plugins et thèmes que vous utiliserez demain seront construits là-dessus.
Donc indirectement, ça va influencer votre expérience car vous aurez des plugins qui vous laisseront choisir votre fournisseur de LLM IA dans les réglages. Par exemple, un plugin de rédaction pourra utiliser Claude pour le style, GPT-4 pour la structure, et Gemini pour la recherche d’images, tout en même temps si vous le souhaitez… Ce sera un peu comme le Bluetooth ou l’électricité : vous ne savez pas vraiment comment ça marche, mais vous l’utiliserez tous les jours sans y penser.
Ce SDK est déjà disponible via Composer
pour les devs qui veulent tester et WordPress 6.9 intégrera l’Abilities API directement dans son core. Après ça, on devrait donc voir une explosion de plugins qui utiliseront plusieurs IA simultanément.
Après si vous n’utilisez pas Wordpress, rassurez-vous, c’est pas juste une feature de chez eux… C’est un standard qui pourra être adopté également par d’autres CMS. Un peu comme RSS à l’époque qui a commencé dans un coin, puis que tout le monde a adopté parce que c’était ouvert et pratique. Et bien là, c’est pareil, l’Abilities API et le MCP sont open source donc n’importe qui peut les implémenter dans ses outils.
A voir maintenant comment les projets concurrents vont réagir… Wix va-t-il continuer à pousser son intégration exclusive avec ChatGPT ? Shopify va-t-il ouvrir son API IA ? Ou est-ce qu’ils vont tous regarder WordPress prendre une longueur d’avance et se dire “Merde, on a peut-être loupé un truc” ?
Bref, moi je trouve ça cool car WordPress aurait pu faire comme les autres, c’est à dire un beau partenariat exclusif avec OpenAI, un joli chèque, et enfermer 43% du web dans un écosystème propriétaire… Mais au lieu de ça, ils ont créé un standard ouvert et gratuit comme ça, c’est la communauté qui décide.
Et ça c’est beau ! Donc si vous êtes dev et que vous voulez tester,
le repo GitHub du PHP AI Client
est dispo ici avec toute la doc. Et si vous êtes juste utilisateur curieux, gardez un œil sur les plugins qui sortiront après WordPress 6.9 car ça va devenir intéressant…
Je me remets doucement dans l’univers des *arrs & médiathèques et je dois dire qu’en 2 ans, des solutions ont poussé comme les champignons en Corrèze en plein automne !
J’en étais resté aux *arrs + Plex/Emby/Jellyfin et le stockage sur NAS, serveurs ou en Cloud via rClone et Dropbox/Telegram (abus). Les hébergeurs du moment sont Uloz, Quotaless et Pikpak. Seulement, depuis 2014/2015 avec rClone + Amazone, on sait bien qu’aucune solution de hoarding de ce genre n’est pérenne. Ou reste au même prix. Ou les deux, coucou Google Workspace.
Il y a toujours la solution des serveurs dédiés type OneProvider, Hetzner ou encore SeedHost mais les prix montent toujours petit à petit et on reste très loin des Po de stockage nécessaires à ce que j’appelle en bon vieux crouton : le P4S.
J’ai aussi profité du streaming depuis Usenet (via rClone) mais ce projet n’est pas abouti, non pas du fait du développeur, mais tout simplement parce que la purge se fait de plus en plus présente sur les newsgroups. Là où on pouvait archiver le contenu de trackers BitTorrent y’a 10-15 ans, on sait maintenant que tout peut être effacé sans prévenir. Faut dire… vu les prix des abonnements et la place nécessaire, y’a un choix à faire.
L’eldorado du moment ce sont les débrideurs. Ce qui était avant plutôt exploité en streaming pour l’IPTV est maintenant « mainstream ». Les *arrs ou autres solutions envoient les fichiers .torrents (AllDebrid, RealDebrid etc) ou .nzb (TorBox notamment) chez un débrideur qui télécharge et met en cache les fichiers cibles. On utilise ensuite Stremio ou un montage (rClone ou autre) pour en profiter via son lecteur favori Plex/Emby/Jellyfin.
Et c’est là que c’est la foire d’empoigne niveau outils… L’un remplaçant l’autre, certaines versions sous abonnement (Patreon), outils compatibles uniquement avec certains hébergeurs etc. Les 2 Discord en vue pour tous ses sujets sont celui de SSDv2 (francophone) et Ragnarok (EN). Et je vous glisse également celui de Whamy qui a monté TorBox chez qui je suis client et que je vais pérenniser vu qu’ils permettent d’utiliser Usenet. Ce sera sans doute mon prochain article.
Ici je teste RealDebrid et RDT-Client. RD étant monté avec rClone et Zurg pour une lecture sur Plex. Un grand MERCI à Wassabi qui m’a bien aidé quant aux foutus méandres des droits sous UNRAID Niveau arborescence, tout va se passer dans /mnt/user/RealDebrid
root@HomeBox:/mnt/user/appdata/zurg/scripts# tree /mnt/user/RealDebrid/
/mnt/user/RealDebrid/
├── Medias
│ ├── Concerts
│ ├── Docs
│ ├── Films
│ ├── Series
│ └── Spectacles
├── local
├── rdt
├── seedtime
└── zurg
├── __all__
├── __unplayable__
└── version.txt
Medias : stockage des médias symlinkés depuis RD
local : dossier de téléchargement des symlinks pour RDT-Client, où les *arrs viendront les prendre pour les traiter
rdt : dossier de téléchargement des .torrents ajoutés sur RD par RDT afin de les seeder depuis chez moi (via VPN)
seedtime : le dossier de téléchargement/seed des .torrents. Je seed 1 mois via qBitTorrent (44000 minutes)
Zurg : montage de RD en WebDav. C’est de là que seront faits les symlinks pour /Medias
Commençons par rClone. Je suis sur UNRAID mais ça marche bien entendu sur tout Linux/Unix et j’utilise le plugin de Waseh qu’on trouve dans les Applis. Testé avec rClone normal et en BETA, RàS. Édifier le fichier de configuration et y placer les remotes pour Zurg.
[zurg]
type = webdav
url = http://localhost:9999/dav
vendor = other
pacer_min_sleep = 0
[zurghttp]
type = http
url = http://localhost:9999/http
no_head = false
no_slash = false
On peut ensuite monter RD avec un petit script rClone dans user-scripts (ou systemd sur un autre OS) : Comme je suis sur UNRAID, que user-script lance les scripts en root mais que mes Dockers tournent avec l’UID 99 et le GID 100, je les force pour ce script rClone (merci Wassabi).
Passons à Zurg(-testing) : J’utilise la version gratuite (sans DMM). C’est un WebDav pour RealDebrid qui n’en propose pas et qui permet de le monter dans rClone. AllDebrid par exemple dispose d’un WebDav en standard, c’est pourquoi on peut le monter directement dans rClone. Si c’était simple…
Si vous devez mapper d’autres ports pensez à les changer dans la configuration de rClone.
Le script d’update de Plex (en cas de changement de symlinks) : Il faut y mettre l’URL du serveur Plex et son token ainsi que le dossier de montage de RealDebrid.
#!/bin/bash
# PLEX PARTIAL SCAN script or PLEX UPDATE script
# When zurg detects changes, it can trigger this script IF your config.yml contains
# on_library_update: sh plex_update.sh "$@"
# docker compose exec zurg apk add libxml2-utils
# sudo apt install libxml2-utils
plex_url="https://plex.domain.tld"
token="***"
zurg_mount="/mnt/user/RealDebrid"
# Get the list of section IDs
section_ids=$(curl -sLX GET "$plex_url/library/sections" -H "X-Plex-Token: $token" | xmllint --xpath "//Directory/@key" - | grep -o 'key="[^"]*"' | awk -F'"' '{print $2}')
for arg in "$@"
do
parsed_arg="${arg//\\}"
echo $parsed_arg
modified_arg="$zurg_mount/$parsed_arg"
echo "Detected update on: $arg"
echo "Absolute path: $modified_arg"
for section_id in $section_ids
do
echo "Section ID: $section_id"
curl -G -H "X-Plex-Token: $token" --data-urlencode "path=$modified_arg" $plex_url/library/sections/$section_id/refresh
done
done
echo "All updated sections refreshed"
# credits to godver3, wasabipls
Son fichier de configuration : Pour la version gratuite. Très épuré, selon les recommandations de Wassabi. Y ajouter son token RealDebrid.
RDT-Client est un outil qui se fait passer pour qBitTorrent auprès des *arrs et permet de télécharger des .torrents via un débrideur, d’en télécharger le symlinks pour que les *arrs puissent faire leur travail et enfin, sur option, de télécharger le .torrent localement afin de le seeder pour respecter à la fois les règles du P2P mais aussi des trackers.
RDT est compatible avec AllDebrid, RealDebrid, TorBox, Premiumize et DebridLink. Il ne peut cependant utiliser qu’un débrideur à la fois. Si vous avez plusieurs comptes il faudra lancer autant d’instances et répartir leur utilisation avec les tags. Plutôt que d’avoir les classiques radarr, sonarr on peut imaginer radarr, sonarr, radarr4k, sonarr4k, radarranimes, sonarranimes etc.
Afin de prévenir tout couac lié aux droits d’accès entre RDT, les *arrs et Plex, remplacer le volume par défaut du Docker pour Downloads et mettre en local comme en container /mnt/user/RealDebrid/
En se rendant sur la WebUI, créer un user:pwd et commencer à configurer en se rendant sur l’onglet GUI Defaults.
Sélectionner Download all files to host. Vu qu’on va utiliser le client de téléchargement « Symlink Downloader », ça va bien rapatrier les symlinks dans le dossier /mnt/user/RealDebrid/local où les *arrs iront les chercher pour les ranger correctement dans les bibliothèques qui sont dans /mnt/user/RealDebrid/Medias
Indiquer les catégories radarr,sonarr qui seront utilisées par les applications éponymes. Et en rajouter selon vos besoins et le nombre d’instances de RDT que vous voulez.
En Post Download Action, choisir de retirer le .torrent du client
Activer (remplacer 0 par 1) Delete download when in error. De cette manière RDT supprimer tout .torrent foireux (pas de téléchargement, blacklisté par RD etc) et donc les *arrs sauront qu’il faut en chercher un autre
Onglet Provider : choisir un débrideur et sa clé API.
Cocher Automatically delete downloads removed from provider pour ne pas avoir de symlink orphelin. Si Radarr ou Sonarr voient un fichier manquant ils le remettront en téléchargement.
Onglet General, vous pouvez désactiver l’authentification en passant si c’est qu’un local chez vous, il faut indiquer le chemin de sauvegarde des .torrents que RDT envoie sur le provider. Comme expliqué plus haut, chez moi c’est /mnt/user/RealDebrid/rdt
Le but étant de seeder correctement ces derniers. Sans parler des 7-8 sites FR/QC privés qu’on quasi tous dans nos Prowlarr/Jackett, même si on ne se sert que de YGGtorrent, ne pas seeder est contre l’esprit du P2P et surtout hors règles des dits trackers BitTorrent et on s’expose à un bannissement en ne jouant pas le jeu.
Si certains utilisent ruTorrent et ses plugins pour gérer finement le seedtime selon la source, je suis venu avec mes gros sabots et utilise qBitTorrent avec un seedtime unique d’1 mois (44000 minutes). Attention en passant, la dernière version de qBit déraille pour la WebUI, restez au max sur la 5.1.2
On continue avec l’onglet Download Client de RDT : sélectionner le Symlink Downloader.
Dans le dossier local /mnt/user/RealDebrid/local et le même en chemin mappé pour les *arrs, comme ça on n’a rien à configurer de leur côté
Et viser aussi le Rclone mount path (only used for the Symlink Downloader) : /mnt/user/RealDebrid/zurg/_all_ (y’a 2 underscores de chaque côté de all, vive le markdown qui transforme all en gras…)
Normalement rien à configurer dans l’onglet qBitTorrent / *darr qui reprend les informations enregistrées dans GUI Defaults.
Je ne me sers pas de Watch, les *arrs s’occupant des films et séries mais ça pourrait pas exemple servir pour des documentaires, qu’on doit souvent récupérer à la main ou via un RSS/API et un REGEX.
Bien que je me doute que vous savez installer Radarr, Sonarr et Plex en 2025, attention encore une fois à bien mettre /mnt/user/RealDebrid/ comme volume local et container.
Pour ajouter RDT-Client comme client de téléchargement aux *arrs, passer par l’ajout du client émulé : qBitTorrent.
Je vous laisse configurer comme vous voulez les profils, tags, qualités etc.
Attention, le root folder est /mnt/user/RealDebrid/Medias/Films et ce sera d’ailleurs là aussi qu’il faudra aller chercher les bibliothèques dans Plex.
Plex indexe tout dès que le téléchargement est signalé complété par un *arrs.
Niveau consommation de ressources c’est peanuts, ça passe très bien sur mon petit NAS UNRAiD LincStation N1 et son CPU… « basse consommation »
Alors ? Où est le loup ?! Bah y’en n’a pas vraiment. Y’a de tous les avis sur chaque débrideur, encore en plus en cas de panne, sur qui a le plus de contenu VF en cache etc.
De mon côté, très petit consommateur, qui va de toute manière se concentrer sur TorBox parce qu’ils permettent d’utiliser des .nzb, j’ai pas constaté de pépin. Quelques .torrents bogues mais ils sont retirés automatiquement par RDT et un *arr en envoie un autre. J’ai juste dû le faire manuellement pour 1 film où aucune version 20160p ne passait. Mais attention, je n’ai utilisé quasi que YGG pour ce test, avec des trackers privés il n’y a aucun raison que les .torrents soient blacklisté par RealDebrid.
Après… fibré, amateur de Usenet… j’ai un peu tiqué en voyant les vitesses de téléchargement côté RD ^^
Bon, je vous rassure, c’est comme sur son propre serveur, ça fluctue selon les peers, la charge des serveurs du débrideur et le sens du vent. C’est du P2P !
Au final le système est très pratique et RDT-Client s’intègre facilement dans une stack déjà établie. Et utiliser les *arrs permet d’affiner la qualité et les sources, en comparaison avec une solution comme Stremio (en passant par les services mis à disposition publiquement).
Là j’ai testé avec Plex mais c’est aussi fonctionnel avec Emby/Jellyfin puisque si un fichier disparaît de RealDebrid, les *arrs l’identifieront comme manquant et le remettrons en téléchargement.