← Nouveautés · 1 août 2026 · Read in English

WeDispatch, de la 1.14 à la 1.22 : le rattrapage

Neuf versions en trois jours. Le crédit devient l'unité, le volume se change tout seul, l'API sait retoucher un passage, les écoutes se rangent par auteur, et ce qui part sans vous se coupe site par site. Le tour complet, sans une note de version par jour.

La version 1.13.0 a remplacé trois forfaits par une seule offre et un curseur. Neuf versions ont
suivi en trois jours, et publier une note pour chacune aurait produit neuf lectures pour une seule
histoire. La voici d'un bloc, rangée par ce qu'elle change chez vous et non par numéro.

L'unité, c'est le crédit

Le simulateur répondait « il vous faut 120 articles » à quelqu'un qui en publie 30. Le chiffre était
juste, le mot était faux : un article de 15 500 caractères coûte quatre crédits, donc un abonnement
annoncé « 50 articles » donne douze articles réels à une rédaction qui écrit long. Ce n'était pas une
approximation, c'était une promesse qu'on ne tient pas, inscrite dans le nom de ce qu'on vend.

Le produit parle donc de crédits, partout, et le crédit ne voyage jamais seul : « un crédit = un
article jusqu'à 5 000 caractères, soit environ 830 mots ». Cette phrase vit à un seul endroit et les
écrans l'appellent, plutôt que sept formulations d'une même définition. Le simulateur montre
désormais son calcul au lieu de l'escamoter : « 30 articles × 4 crédits = 120 crédits par mois ».
C'est cette ligne qui manquait, pas le bon chiffre.

Deux corrections de vocabulaire au passage. On ne dit plus « signes » mais « caractères », parce que
le premier est du jargon de typographe et que le reste du produit disait déjà le second. Et pour
donner l'ordre de grandeur en mots, le calcul divisait par 5 : mesuré sur nos propres articles, le
français écrit tourne à 6,14 caractères par mot. L'écran annonçait 1 200 mots là où il y en a 980,
vingt pour cent d'écart, et dans le sens qui fait sous-dimensionner son volume. On s'en aperçoit en
atteignant son plafond, c'est-à-dire au pire moment. Le rapport est maintenant remesuré à chaque
exécution de nos contrôles, sur les articles réels du blog.

Atteindre son plafond n'est plus une impasse

Un client bloqué le 20 du mois n'avait aucun moyen d'en sortir seul. Le curseur de l'écran
Abonnement le fait désormais, avec une règle unique appelée par l'écran et par la caisse : en
engagement annuel, monter est immédiat et ne facture que la différence, descendre se programme à
l'échéance ; en mensuel tout attend le mois suivant. Un changement n'est jamais refusé, il est
programmé avec sa date quand il ne peut pas s'appliquer tout de suite.

Choisir et changer sont le même geste, au même endroit : les deux mènent maintenant à l'espace
client et non plus à la page des tarifs, qui argumente sans souscrire.

Une page publique explique l'abonnement, et vous laisse l'essayer

/abonnement répond à trois questions avec trois outils, et aucun n'est une illustration : ils
appellent le code de la caisse. De quel volume ai-je besoin, en partant de ce que vous savez, combien
d'articles et de quelle longueur. Qu'est-ce que je peux faire, avec un tableau engendré par la liste
des fonctionnalités elle-même, donc incapable d'oublier une nouveauté. Et si je change d'avis, avec
le simulateur qui appelle les mêmes fonctions que la route de paiement.

Une question fréquente répond aussi en toutes lettres à celle que tout le monde se pose : oui les
espaces comptent, oui les virgules aussi, voici où trouver le compte dans Word et dans Google Docs,
et ce qui est compté est le texte réellement lu, pas le code de votre page.

Quatre portes de plus dans l'API

Retoucher un passage. GET /api/v1/podcasts/{id}/words rend la position de chaque mot,
POST .../correct resynthétise le seul passage désigné et le recoud. C'est la seule opération du
produit qui ne décompte pas l'article entier.

Écouter un essai. POST /api/v1/voices/preview lit votre texte avec la voix du moteur qui
produira réellement vos articles. Non facturé, non stocké, trente essais par heure.

Retirer un audio de la circulation. DELETE /api/v1/podcasts/{id} supprime les fichiers et garde
la fiche, l'historique d'écoutes et le texte source. Il n'existait aucune route de suppression : un
article mis à la corbeille dans un CMS restait écoutable par son adresse directe.

Signer un article. Le champ author accompagne l'article, et GET /api/v1/stats rend un tableau
par signature. Vous n'avez rien à envoyer si vous passez par un flux RSS : la signature s'y lit toute
seule. Deux précautions y sont tenues par des contrôles, et elles comptent plus que la fonctionnalité
elle-même. Les articles non signés forment leur propre ligne, donc la somme des auteurs redonne
toujours le total : les écarter produirait un tableau dont les chiffres ne tombent pas juste, sans
que personne sache pourquoi. Et le taux d'écoute complète se recalcule sur les totaux au lieu de
moyenner des taux, ce qui donnerait autant de poids à un article écouté trois fois qu'à un article
écouté trois mille fois.

Ce qui part sans vous se coupe, site par site

Un interrupteur « parcours automatique » existait au niveau du compte. Il en existe un par site
désormais, dans sa carte, en trois états : hérite, activé, suspendu. La règle de combinaison est
volontairement brutale, le balayage tourne si le compte et le site sont d'accord, et un site ne
rallume jamais ce que le compte a éteint puisque le compte est du côté de la facture.

Votre CMS peut aussi déclarer la nature de son envoi. trigger: "auto" place la demande sous ces
interrupteurs, exactement comme un flux ; quand c'est suspendu, rien n'est fabriqué et rien n'est
facturé. Le défaut reste "manual" : une intégration déclare qu'elle est automatique, nous ne le
devinons pas pour elle.

Pendant la suspension, les articles parus sont notés comme vus et ne sont pas rattrapés à la reprise.
C'est délibéré : réveiller une automatisation ne doit jamais déclencher une facture que personne n'a
demandée.

Ce qu'on a retiré

Les anciens tarifs ne sont plus masqués, ils n'existent plus dans le code. Un prix qu'on garde au cas
où est un prix qui sera affiché, et celui-là l'avait été, en production, sur la page où l'on paie.
Deux scripts capables de recréer l'ancienne grille ont été supprimés dans la foulée : un outil qui
sait remettre en vente une offre abandonnée est une porte laissée ouverte.

La facturation à l'usage est partie avec eux. Elle reportait chaque génération à des compteurs dont
les paliers suivants étaient payants, alors que l'offre vend un plafond dur : les deux mécaniques
coexistaient au lieu de se remplacer. Personne n'a été facturé, et c'était la bonne fenêtre pour
refermer. Le décompte en crédits reste écrit dans la trace : il n'encaisse plus, il explique.

Une porte était restée ouverte : POST /api/account/billing acceptait encore un nom d'ancien
forfait sans volume, et créait un abonnement sur un prix qui n'est plus au catalogue. Inatteignable
au clic, ouverte au programme. Fermée.

Les corrections que vous aviez signalées

Le comparatif des fonctionnalités était illisible sur téléphone : un tableau à colonnes ne se réduit
pas, il se transpose, et sous 760 px chaque ligne devient un bloc. La foire aux questions promettait
que les régénérations ne sont pas refacturées, alors que le compteur les inclut : la promesse vivait
en six endroits, tous corrigés, et ce qui reste vrai est plus intéressant, la correction ciblée ne
compte que les caractères du passage resynthétisé. Enfin l'écran Abonnement plantait en production
sur tout compte, page noire, à cause d'un ordre de déclaration ; un contrôle interdit maintenant
cette forme dans l'ensemble du produit.

Côté module WordPress

Une voix se choisit à l'oreille : un bouton « Écouter » accompagne chaque liste, partout où elle
s'affiche. Une carte rapproche enfin deux moitiés qui s'ignoraient, ce qu'il vous reste ce mois-ci et
les articles qui n'ont pas d'audio, et elle ne met jamais en file plus que le reste. Les extensions
de cache sont détectées à l'exécution et la page concernée est purgée quand l'audio arrive,
c'est-à-dire après l'enregistrement de l'article, au moment où plus personne ne purge. Le lien de connexion
en un clic annonçait « lien expiré » sans que rien n'expire, et coller une clé à la main laissait
affichés le compte et les statistiques de l'ancienne : les deux sont réparés. Et le module envoie
maintenant la signature de l'article, avec son propre écran par auteur.

Pour finir, une réparation qui nous concernait

Les articles de ce blog étaient sonorisés chaque matin par un chemin écrit en dur au moment de sa
construction, déconnecté du produit lui-même : il ne consultait ni le réglage du compte sur lequel il
produisait, ni ses clés API, ni aucune règle. On ne désarme pas un tel chemin, on le débranche. Il
faut désormais le demander, et même demandé il refuse si le compte propriétaire a coupé sa
sonorisation automatique. Un automatisme qu'on désarme est un automatisme qui se réarme.

Sonorisez vos articles avec WeDispatch

Ce blog sera lui-même sonorisé par WeDispatch. Envie de voir ce que ça donne sur vos contenus ?

Demandez une démo

Autres notes de version