instagram + kirby
et un peu d'IA
Voici une méthodologie pour convertir un document répétitif (une archive html Instagram*) vers une structure différente (json ou yaml…).
Je donne ma page à Claude, puis je lui donne un exemple de structure yaml et je demande un script JS (à mettre dans la console du navigateur quand on ouvre le page d’archive Instagram) pour générer le même type de yaml.
Voici le script à adapter (la suite consiste à téléverser les médias et adapter le résultat pour votre site).
* Je parle d’une archive à demander via leur formulaire chez Meta.
/**
* Outil d'import Instagram vers Kirby avec téléchargement automatique
*/
(function exportToKirby() {
const posts = [];
// Sélecteur basé sur la structure de votre fichier (classe pam)
const postElements = document.querySelectorAll('main > div.pam');
postElements.forEach((postEl, index) => {
// 1. Extraction de la légende (h2)
const captionEl = postEl.querySelector('h2');
if (captionEl) {
posts.push({
"content": {
"text": `<p>${captionEl.innerText.trim().replace(/\n/g, '<br>')}</p>`
},
"id": `block-text-${index}`,
"isHidden": false,
"type": "text"
});
}
// 2. Extraction des Médias (Images et Vidéos)
const medias = postEl.querySelectorAll('video, img');
medias.forEach((media, mIndex) => {
const rawSrc = media.getAttribute('src');
if (!rawSrc || rawSrc.includes('Instagram-Logo.png')) return;
// On extrait uniquement le nom du fichier (pour la racine)
const fileName = rawSrc.split('/').pop();
const isVideo = media.tagName.toLowerCase() === 'video';
if (isVideo) {
posts.push({
"content": {
"location": "kirby",
"video": [`${fileName}`],
"autoplay": "false",
"muted": "true",
"loop": "true",
"controls": "true"
},
"id": `block-vid-${index}-${mIndex}`,
"isHidden": false,
"type": "video"
});
} else {
posts.push({
"content": {
"location": "kirby",
"image": [`${fileName}`],
"ratio": "",
"crop": "false"
},
"id": `block-img-${index}-${mIndex}`,
"isHidden": false,
"type": "image"
});
}
});
});
// Préparation du contenu du fichier Kirby
const yamlContent = [
"Title: Archive Instagram",
"----",
"Text: " + JSON.stringify(posts, null, 2),
"----"
].join("\n");
// Fonction de téléchargement
const blob = new Blob([yamlContent], { type: 'text/plain' });
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'publication.txt';
document.body.appendChild(a);
a.click();
window.URL.revokeObjectURL(url);
document.body.removeChild(a);
console.log("Export terminé. Le fichier publication.txt a été généré.");
})();