(function() {
// 1. Les Données (Parsing de la string fournie dans le prompt)
// Format: Emplacement,Durée,Format,Objectif,Concurrence
const rawDataString = “Feed,Moyenne à Élevée,Carré (1:1) / 4:5,Notoriété & Conversion,Très Élevée;Story,Faible (Rapide),Vertical (9:16),Retargeting & Engagement,Moyenne;Reels,Moyenne,Vertical (9:16),Découverte & Viralité,Élevée;Audience Network,Faible,Variable (Bannière/Interstitiel),Portée & Trafic,Faible”;
// Fonction pour nettoyer et parser les données
const parseData = (str) => {
const rows = str.split(‘;’);
return rows.map(row => {
const cols = row.split(‘,’);
return {
name: cols[0].trim(),
attention: cols[1].trim(),
format: cols[2].trim(),
goal: cols[3].trim(),
competition: cols[4].trim()
};
});
};
const data = parseData(rawDataString);
const container = document.getElementById(‘comparison-rows’);
const detailPanel = document.getElementById(‘detail-panel’);
const detailTitle = document.getElementById(‘detail-title’);
const detailDesc = document.getElementById(‘detail-desc’);
const detailTags = document.getElementById(‘detail-tags’);
// Icônes SVG inline pour éviter les requêtes externes
const icons = {
feed: ”,
story: ”,
reels: ”,
network: ”
};
// Fonction utilitaire pour obtenir la couleur du badge de concurrence
const getCompetitionColor = (level) => {
if (level.includes(‘Très Élevée’) || level.includes(‘Élevée’)) return ‘bg-red-100 text-red-700 border-red-200’;
if (level.includes(‘Moyenne’)) return ‘bg-yellow-100 text-yellow-700 border-yellow-200’;
return ‘bg-green-100 text-green-700 border-green-200’;
};
// Fonction utilitaire pour l’icône correcte
const getIcon = (name) => {
if (name.includes(‘Feed’)) return icons.feed;
if (name.includes(‘Story’)) return icons.story;
if (name.includes(‘Reels’)) return icons.reels;
return icons.network;
};
// Données “Bonus” pour le panneau de détail (Logique enrichie)
const getInsight = (name) => {
if (name.includes(‘Feed’)) return “L’emplacement classique par excellence. Idéal pour construire une image de marque durable, mais nécessite des créas très soignées pour stopper le scroll.”;
if (name.includes(‘Story’)) return “Le format de l’urgence et de l’authenticité. Parfait pour les offres limitées dans le temps et le remarketing auprès d’une audience chaude.”;
if (name.includes(‘Reels’)) return “Le roi de la portée organique actuelle. Utilisez des vidéos dynamiques, de la musique tendance et du montage rapide pour capter de nouvelles audiences.”;
return “Permet d’étendre votre campagne hors des réseaux sociaux (apps tierces, sites web) à moindre coût. Attention à la qualité du trafic, souvent plus froid.”;
};
// Rendu du tableau
data.forEach((item, index) => {
const row = document.createElement(‘div’);
// Classes: Grid sur desktop, Flex col sur mobile
row.className = `group row-hover-effect relative bg-white p-5 md:p-0 md:h-20 md:grid md:grid-cols-12 gap-4 items-center cursor-pointer transition-all duration-300 border-b md:border-b-0 border-indigo-50 hover:bg-indigo-50/30`;
// Délai d’animation en cascade
row.style.animation = `fadeInUp 0.5s ease-out forwards ${index * 0.1}s`;
row.style.opacity = ‘0’; // État initial pour l’animation
// Construction du HTML interne
row.innerHTML = `
{“@context”:”https://schema.org”,”@type”:”FAQPage”,”mainEntity”:[{“@type”:”Question”,”name”:”Dois-je utiliser les placements automatiques ou manuels ?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”Pour la majoritu00e9 des campagnes, les placements automatiques (Advantage+) sont recommandu00e9s car ils permettent u00e0 l’algorithme de trouver les opportunitu00e9s les moins chu00e8res. Utilisez les placements manuels uniquement si vous avez des contraintes cru00e9atives strictes ou si vous connaissez parfaitement vos performances historiques.”}},{“@type”:”Question”,”name”:”Pourquoi mes publicitu00e9s Reels ne diffusent-elles pas ?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”Cela vient souvent d’un problu00e8me de format. Si votre vidu00e9o n’est pas en 9:16 ou si elle contient des u00e9lu00e9ments protu00e9gu00e9s par des droits d’auteur (musique non libre de droit), sa diffusion peut u00eatre bridu00e9e. La qualitu00e9 basse de la vidu00e9o peut aussi u00eatre un facteur.”}},{“@type”:”Question”,”name”:”L’Audience Network est-il vraiment utile pour les petits budgets ?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”Oui, c’est souvent un moyen tru00e8s efficace d’augmenter la visibilitu00e9 u00e0 moindre cou00fbt. Cependant, il faut impu00e9rativement surveiller la qualitu00e9 des conversions, car le trafic peut u00eatre moins qualifiu00e9 que sur Facebook ou Instagram.”}},{“@type”:”Question”,”name”:”Quelle est la duru00e9e idu00e9ale pour une publicitu00e9 en Story ?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”Bien qu’une Story puisse durer 15 secondes (et plus avec les segments multiples), le message clu00e9 doit u00eatre passu00e9 dans les 3 premiu00e8res secondes. Si vous n’accrochez pas immu00e9diatement, l’utilisateur passera u00e0 la suite.”}}]}
Je suis Kevin Grillot, consultant SEO freelance certifié. J'accompagne les TPE et PME en référencement naturel, Google Ads, Meta Ads et création de site internet.