L'aventure de la migration vers Eleventy | blogatom.

Je savais donc que la migration de Tumblr vers Eleventy allait être délicate car le format des posts dans Tumblr est assez particulier et peu structuré. La situation est compliquée par le fait que mon contenu avait déjà été migré plusieurs fois, en dernière date de WordPress vers Tumblr, et que cela a affecté la structure de mes posts. Par ailleurs, j'ai pas mal de posts qui référencent des images que j'avais uploadées à l'époque sur Windows Live Spaces, qui a brutalement fermé ses portes en 2011, et que je n'ai pas pu récupérer.

J'avais déjà essayé d'écrire un script de migration, vers Jekyll à l'époque, mais je galérais pas mal à gérer tous les cas particuliers. Ce n'est que récemment que j'ai eu l'idée de demander de l'aide à un assistant IA, après avoir pas mal expérimenté avec Claude et ChatGPT sur divers projets pros et persos.

J'ai principalement utilisé GitHub Copilot dans Visual Studio Code comme interface principale, et Claude Sonnet 3.7 comme modèle, que je trouve vraiment très performant sur des questions de code. J'ai aussi utilisé ChatGPT pour des questions plus générales, mais je trouve que Claude est plus efficace et plus "concentré" sur la génération de code, alors que ChatGPT a tendance à être plus bavard et à digresser un peu trop.

Le résultat après quelques itérations est un script plutôt complet qui gère la plupart des cas particuliers que j'avais en tête. Il extrait les titres des différents types de posts, les tags, les dates, et le contenu. Il gère les attachement multimédia de Tumblr, principalement des images, et les associe à chaque post. Il réécrit les liens en dur vers les images pour qu'ils soient valides depuis le nouveau site. Bref, il fait le boulot!

Malgré tout, après avoir vérifié pas mal de pages manuellement, je vois bien qu'il y a encore beaucoup de problèmes qu'il va falloir que je gère à la main: des liens cassés, des images manquantes, des tags complètement obsolètes de type plugin Flash, etc. Du coup je me suis dit, est-ce que je ne pourrais pas créer un nouveau script pour analyser tous ces problèmes et me faire une liste de ce qu'il reste à faire? Là, je suis franchement passé en roue libre, car je n'avais pas vraiment d'idée de ce que je voulais faire. Avec très peu d'instructions, Claude a généré un autre script Python qui vérifié tous ces points et génère un rapport dans un fichier structuré en JSON.

Encore plus fort, je me dit que ce fichier JSON n'est pas très pratique à utiliser pour le suivi des corrections manuelles, et que je pourrais demander à Claude de générer un fichier CSV à partir de ce JSON. Ma demande étant un peu vague, il a préféré générer un outil en ligne de commande qui permet le suivi des correction, en listant les posts problématiques, et en permettant de marquer chaque problème comme corrigé, etc., le tout avec un jolie interface ASCII du plus bel effet!

Le bug fix tool créé par Claude

Bref, sur ce coup, merci l'IA.