Comment récupérer cent quatre-vingt-sept articles publiés sur plusieurs années sur Medium, sans perdre le lectorat fidèle qui les avait mis en favori ou partagés sur les réseaux sociaux ? C’est la question posée par un consultant indépendant en stratégie de contenu, qui souhaitait reprendre la main sur son blog technique après avoir constaté que Medium limitait la visibilité de ses articles aux seuls abonnés payants de la plateforme, réduisant fortement sa portée organique.
Le site cible reposait sur un WordPress en headless partiel, avec un front Astro consommant l’API REST pour les nouveaux contenus. La question de la migration ne portait donc pas seulement sur l’import des textes, mais aussi sur la gestion fine des redirections, condition indispensable pour ne pas perdre le référencement acquis sur Medium.
Étape 1 : exporter et convertir le contenu Medium
Medium propose un export de compte au format JSON accompagné de fichiers HTML individuels par article, mais sans structure directement compatible avec l’import natif de WordPress. Un script Python a été écrit pour parcourir ces fichiers HTML, en extraire le titre, la date de publication originale et le corps de texte, puis générer un fichier au format WXR, le format d’export-import standard de WordPress.
import os
from datetime import datetime
from bs4 import BeautifulSoup
def extraire_article(chemin_fichier):
with open(chemin_fichier, encoding='utf-8') as fichier:
soup = BeautifulSoup(fichier.read(), 'html.parser')
return {
'titre': soup.find('h1').get_text(),
'contenu': str(soup.find('section', class_='e-content')),
'date': soup.find('time').get('datetime'),
}
Étape 2 : importer dans WordPress
Le fichier WXR généré a ensuite été importé via la commande WP-CLI dédiée, plus fiable pour un volume de cent quatre-vingt-sept articles que l’import manuel depuis l’interface d’administration :
wp import export-medium.xml --authors=create

Chaque article a été relu individuellement après import, non pas pour vérifier le texte lui-même, fidèlement récupéré par le script, mais pour corriger la mise en forme des blocs de code, mal interprétée par l’import automatique dans plusieurs articles à contenu technique, où des balises <pre> avaient perdu leur indentation d’origine.
Étape 3 : cartographier les anciennes URLs
Le point le plus sensible de la migration a été la construction d’un tableau de correspondance entre chaque ancienne URL Medium, au format https://medium.com/@pseudo/titre-slugifie-hash, et sa nouvelle adresse sur le site WordPress. Aucune règle générique ne pouvait couvrir ce mappage, le hash final de chaque URL Medium étant unique et non déductible du titre de l’article.
[
{ "ancienne": "/@consultant/audit-seo-technique-en-2021-8f3a91c2", "nouvelle": "/articles/audit-seo-technique-en-2021" },
{ "ancienne": "/@consultant/pourquoi-le-cache-navigateur-vous-trompe-4b21ee90", "nouvelle": "/articles/pourquoi-le-cache-navigateur-vous-trompe" }
]
Ce tableau, stocké en JSON, a été chargé par le front Astro au démarrage pour générer les redirections HTTP 301 correspondantes, appliquées au niveau du serveur de déploiement plutôt que dans WordPress lui-même, celui-ci ne recevant jamais directement les visiteurs.
Ce qui a nécessité une attention particulière
- Les images hébergées sur les serveurs de Medium ont dû être retéléchargées une à une et réimportées dans la médiathèque WordPress, Medium ne garantissant pas leur disponibilité à long terme après la fermeture du compte
- Les liens internes d’un article Medium vers un autre article du même auteur pointaient encore vers Medium après import, un script de remplacement en masse a corrigé ces liens vers les nouvelles adresses
- La date de publication d’origine a été préservée dans WordPress, pour ne pas fausser l’ancienneté perçue des articles les plus anciens
Une migration de contenu ne se mesure pas au nombre d’articles copiés, mais au nombre de liens externes qui continuent de fonctionner après l’opération. Le texte se récupère facilement ; c’est la mémoire du web autour de ce texte qui se perd le plus vite.
Ce que cette migration ne couvre pas
La monétisation des articles ne fait pas partie de ce chantier : le programme de partenariat de Medium, qui rémunérait certains textes selon le temps de lecture des abonnés, a simplement été abandonné avec la migration, sans tentative de le reproduire sur le nouveau site. Le consultant a choisi de baser sa nouvelle stratégie sur la génération de rendez-vous de conseil plutôt que sur un revenu direct de lecture.
Le résultat trois mois après la bascule
Le trafic organique en provenance des moteurs de recherche s’est maintenu à un niveau comparable à celui observé sur Medium avant la migration, un résultat directement attribuable au soin apporté aux cent quatre-vingt-sept redirections individuelles, sans lesquelles une bonne partie du référencement acquis aurait été perdue du jour au lendemain.
En résumé
Republier un blog Medium dans WordPress n’est techniquement pas complexe pour la partie import du texte. La difficulté réelle se situe dans le traitement rigoureux des redirections, article par article, sans raccourci possible tant que les URLs Medium ne suivent aucune structure prévisible.