Site web

Créer un site de rapport d'impact ou rapport annuel en scrollytelling, avec des graphiques qui se dessinent au scroll

Transforme votre rapport annuel ou rapport d'impact en site de lecture longue : graphiques linéaires SVG qui se dessinent au défilement, chiffres qui s'incrémentent, navigation par chapitres, note méthodologique et schema Report. Chiffres et graphiques restent entièrement visibles sans JavaScript, chaque graphique a son tableau de données, et le Lighthouse mobile est mesuré et maintenu au-dessus d

Quand l'utiliser

Lorsque vous voulez transformer votre rapport annuel ou d'impact en site de lecture longue, avec des graphiques qui se dessinent au défilement, plutôt qu'en PDF statique.

Ce que vous obtenez

Un site de rapport en scrollytelling publié, avec graphiques SVG, tableaux de données, page de méthodologie et schéma Report, vérifié avec un Lighthouse mobile supérieur à 95, plus un tableau des scores et les résultats des contrôles.

Modifie-t-il quelque chose dans mon compte ?

Seulement avec votre accord. L'assistant montre d'abord un aperçu de chaque modification et attend votre feu vert.

Fonctionne avec

SEO Intelligence, Search Console

À compléter avant l'envoi

[server name][year][organisation name][what it does, where, founding year][one sentence][figure, unit, one-sentence explanation][for each chart, title, periods and values][income sources and expense lines, amounts and shares][chapter names and the text or notes for each][items][which records, how missing data was handled][editor's name, date]
Sur mon serveur d'hébergement Opus Growth [server name], construis le rapport d'impact [year] de [organisation name] sous la forme d'un site qui raconte son histoire au fil du défilement. Organisation : [what it does, where, founding year]. Message principal du rapport : [one sentence]. Les quatre chiffres clés : [figure, unit, one-sentence explanation]. Données des graphiques : [for each chart, title, periods and values]. Budget : [income sources and expense lines, amounts and shares]. Chapitres : [chapter names and the text or notes for each]. Plan de l'année prochaine : [items]. Origine des chiffres et leurs limites : [which records, how missing data was handled]. Rédigé par et date de publication : [editor's name, date]. Contact : [email], [phone], [address]. Domaine : [domain]. Photos : [links; no faces of children or beneficiaries]. Pages : rapport (/ : titre de couverture, paragraphe de synthèse qui donne la réponse d'emblée, auteur et date, image de couverture, navigation de chapitres collante et, dans l'ordre, synthèse de l'année, chapitres, budget, plan de l'année prochaine et questions sur le rapport), méthodologie (/yontem/ : la source et les limites de chaque chiffre), organisation et contact (/dernek/ ou un nom adapté à votre organisation), confidentialité et KVKK (/gizlilik/) et 404.html. Écris les graphiques en SVG statique généré à partir des valeurs que je t'ai données, sans Chart.js ni D3 ; n'arrondis pas les valeurs et vérifie que les totaux concordent. Affiche le budget sous forme de `<table>` sans largeur minimale, pas sous forme de graphique. Style : une lecture longue façon data story de presse. Fond ton papier, une police serif Fontshare pour les titres (par exemple Bespoke Serif) et une police de texte lisible qui prend en charge tabular-nums (par exemple Epilogue), avec au maximum deux couleurs de graphique. Sur ordinateur, une liste de chapitres collante de 220 px à gauche ; sur mobile, une bande de chapitres à défilement horizontal collée en haut, avec une fine ligne de progression de lecture dessous. Règles d'animation (la partie la plus difficile, à suivre à la lettre) : 1. Bibliothèques : uniquement le cœur de GSAP 3.13 et ScrollTrigger, uniquement sur la page du rapport. Lenis n'est PAS chargé, car le défilement natif est plus confortable pour une lecture longue ; SplitText et les bibliothèques de graphiques ne sont pas chargés non plus. Aucun script sur les pages méthodologie, organisation et confidentialité. 2. Graphiques linéaires : chaque ligne est un `<path pathLength="1">` entièrement tracé dans le HTML. Le JS applique strokeDasharray 1 et strokeDashoffset 1 uniquement aux graphiques situés sous l'écran au chargement, puis ramène l'offset à 0 avec le scrub de ScrollTrigger (start "top 75%", end "bottom 65%") ; les points de données apparaissent progressivement au passage de la ligne. Mets le texte SVG à au moins 22 unités dans un viewBox de 600 unités pour qu'il reste au-dessus de 12 px sur mobile, et laisse au moins 40 unités à droite pour que la dernière étiquette d'axe ne soit pas coupée. 3. Chaque graphique est un `<svg role="img" aria-labelledby>` avec un title et un desc qui énonce toutes les valeurs en une phrase ; la figcaption indique la source et renvoie vers la note méthodologique, et IMMÉDIATEMENT APRÈS la figure, un `<details>` intitulé "Voir les données sous forme de tableau" contient un vrai `<table>`. Ce tableau est la version texte des données, à la fois pour l'accessibilité et pour la recherche par IA. 4. Compteurs : la valeur finale est écrite dans le HTML au format turc (par exemple 31.540). Le nombre visuel se trouve dans un span aria-hidden et la même valeur dans un span sr-only pour les lecteurs d'écran. Le JS remet à 0 uniquement les compteurs situés sous l'écran au chargement et les fait compter avec Intl.NumberFormat("tr-TR") quand ils entrent à l'écran ; ne jamais remettre à zéro un nombre déjà visible. Applique tabular-nums au nombre et une largeur minimale égale au nombre de caractères de la valeur finale (avec une classe Tailwind, pas un attribut style) pour que la ligne ne bouge pas pendant le comptage. 5. Navigation de chapitres : les liens sont des ancres qui fonctionnent sans JS. Le JS utilise ScrollTrigger par chapitre pour trouver le chapitre actif, place aria-current="true" sur son lien et fait défiler la bande mobile latéralement pour que le lien actif soit visible (la bande, pas la page). Place le comportement collant sur la barre latérale (aside), enfant direct de la grille qui couvre tout le rapport, et non sur le nav interne ; dans la démo, le sticky sur le nav interne ne collait jamais sur mobile. 6. Aucune autre animation en dehors de la ligne de progression de lecture et des images qui apparaissent avec data-reveal. Mise en place et pièges connus (chacun a couté des points ou cassé quelque chose lors de la mesure de la démo, n'en saute aucun) : 1. S'il existe déjà un site en ligne sur le serveur, dis-le-moi d'abord, car l'installation écrase index.html et le dossier assets. Prévisualise scaffold_site avec confirm=false et appelle confirm=true après mon accord. Lis ensuite site_design_guide et site_seo_guide. Avant d'écrire du code, mets la direction de design (typographie, couleur, grille, élément signature, langage d'animation et bibliothèques qui ne seront PAS chargées) dans un court ART.md en dehors d'assets et montre-le-moi. 2. Compile Tailwind, ne le charge pas depuis le CDN. Installe `npm i -D tailwindcss@3` avec site_run_command et background=true, et suis-le avec site_command_status. Les chemins content de `tailwind.config.js` doivent couvrir tous les fichiers HTML, tous les templates et tous les fichiers JS qui écrivent des classes. `_src/tw.css` contient une ligne `@import "../assets/app.css";` et les trois lignes `@tailwind` ; compile-le dans un seul fichier avec `npx tailwindcss -c tailwind.config.js -i _src/tw.css -o assets/site.css --minify`. Retire le script cdn.tailwindcss.com et le tailwind.config en ligne des pages et ne lie que `/assets/site.css`. Recompile après chaque modification du HTML. 3. Héberge les polices toi-même. Vérifie d'abord que la famille Fontshare choisie contient les lettres turques (ş, ğ, ı, İ, ç, ö, ü) : dans la démo, Tanker n'avait pas de ı sans point et Outfit n'avait ni ş, ni ğ, ni İ, donc ces lettres retombaient sur une autre police dans les titres. Télécharge le woff2 de chaque graisse séparément avec site_fetch dans `assets/fonts/`, écris les règles @font-face avec `font-display: swap` dans `assets/app.css` (design-check y cherche la police personnalisée) et vérifie le nom de font-family dans le CSS téléchargé. Précharge les polices de titre et de texte utilisées au-dessus de la ligne de flottaison sur chaque page avec `<link rel="preload" as="font" type="font/woff2" crossorigin>`, avant la feuille de style ; ne précharge pas plus de deux fichiers, car précharger une troisième graisse dans la démo a rallongé le LCP mobile de 0,2 seconde. La plupart des polices Fontshare n'ont pas le signe ₺, écris donc "TL" pour les prix. 4. Rends le menu et le pied de page statiques en HTML. Ne charge pas chrome.js ni site.config.js sur les pages. Écris un petit `chrome-stamp.mjs` qui lit la liste de navigation dans site.config.js et estampille `_src/header.tpl` et `_src/footer.tpl` entre les marqueurs `<!-- nav:start --><!-- nav:end -->` et `<!-- footer:start --><!-- footer:end -->` sur chaque page, en ajoutant aria-current="page" au lien actif. Les templates ne doivent pas se terminer par .html et doivent utiliser des placeholders comme `[[NAV]]` plutôt que `{{...}}`. Construis le menu mobile sans JS avec `<details>`. Garde le nom de l'organisation, l'adresse et le téléphone en texte brut dans le pied de page, et donne à chaque cible tactile au moins 44x44 px, liens du pied de page et du fil d'Ariane compris. 5. Convertis les images pendant leur téléchargement avec site_fetch : écris la même photo avec resize="480x", "800x" et "1200x", image_format="webp", quality=65 dans des fichiers séparés. site_fetch ne recadre jamais ; quand une photo Unsplash a besoin d'un autre ratio, télécharge la version recadrée en ajoutant des paramètres comme `?w=1600&h=1200&fit=crop` à son URL. Donne à chaque `<img>` srcset, sizes ainsi que width et height correspondant au vrai ratio. L'image principale au-dessus de la ligne de flottaison reçoit fetchpriority="high" et n'est pas lazy ; les autres reçoivent loading="lazy" decoding="async". Si l'image principale remplit l'écran sur mobile, sers un recadrage plus petit avec `<picture>`. 6. Écris la version SVG du logo en favicon.svg avec site_write_file et ajoute `<link rel="icon" href="/favicon.svg" type="image/svg+xml">` à chaque page. Sans favicon, le navigateur journalise une 404 et Best Practices tombe à 96. 7. Règles du validateur HTML : commence par un `<!DOCTYPE html>` en majuscules, utilise `&nbsp;` pour les espaces dans le texte visible des liens tel:, n'utilise jamais d'attribut style="", donne type="button" à chaque bouton, et ne mets pas de `<details>` dans une `<figure>` après sa figcaption. 8. Télécharge les bibliothèques d'animation (GSAP, ScrollTrigger) depuis jsdelivr dans `assets/vendor/` avec site_fetch, fixe la version et ne les charge que sur la page du rapport. N'utilise pas `<script defer>` ; place un petit chargeur en fin de page qui attend l'événement load, deux appels à requestAnimationFrame puis requestIdleCallback, et ajoute les scripts dans l'ordre avec async=false. Un script d'une ligne dans `<head>` ajoute la classe `js` à `<html>` et la classe `anim` sauf si prefers-reduced-motion vaut "reduce" ; sans `anim`, le chargeur ne télécharge rien. Définis les états de départ masqués uniquement sous `.anim`, et ajoute une animation CSS de secours qui révèle tous les éléments masqués après 2,5 secondes au cas où la bibliothèque n'arriverait jamais. Dans les démos précédentes, les bibliothèques en defer poussaient le LCP mobile à 3,2 secondes ; avec ce chargeur, les pages ont mesuré entre 99 et 100. Nomme l'attribut des éléments révélés au scroll data-reveal ; design-check ne reconnait l'animation que sous ce nom. SEO, AEO et GEO : 1. Utilise des URL de type répertoire avec une barre oblique finale (/yontem/, /dernek/, /gizlilik/). Remplis le bloc seo de site.config.js et exécute `node seo-stamp.mjs`. Écris le schema propre à chaque page (page du rapport : WebPage avec un Report comme mainEntity, incluant headline, datePublished, dateModified, image, author (Person, l'éditeur) et publisher, plus FAQPage ; méthodologie : Article ; page de l'organisation : AboutPage avec un sous-type adapté à l'organisation (par exemple NGO) ; BreadcrumbList sur les pages intérieures. S'il n'y a pas de bureau accueillant du public, mets localBusiness:false dans site.config.js) dans des blocs `<script type="application/ld+json">` séparés et relie-les au graphe de base par @id. N'imbrique pas BreadcrumbList dans @graph ; garde-le dans son propre bloc, car c'est la seule façon pour seo-check de le voir. 2. Garde les titres à 60 caractères maximum (seo-check signale comme erreur tout ce qui dépasse 65), les descriptions entre 120 et 158 caractères, un seul h1 par page et aucun niveau de titre sauté (un h3 juste après le h1 a fait tomber l'accessibilité à 98). Chaque page a besoin d'au moins 150 mots de contenu principal ; les pages contact et confidentialité ont tendance à rester en dessous. 3. Le premier paragraphe de chaque page répond directement à la question de la page. Rédige des FAQ propres à chaque page avec `<details>` et balise-les en FAQPage. Affiche l'organisation éditrice et une date de "Dernière mise à jour" dans `<time>`. 4. Dans robots.txt, consigne et justifie ta décision pour GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, Claude-SearchBot, PerplexityBot, Perplexity-User, Google-Extended, Applebot-Extended, Bingbot et CCBot, et indique le sitemap. Donne à sitemap.xml de vraies dates lastmod. llms.txt contient un résumé exact du site en deux phrases, les faits clés et une liste des pages importantes. 5. Aucune invention : n'écris ni avis, ni notes, ni récompenses, ni nombres de clients, ni certificats, ni horaires d'ouverture, ni coordonnées, ni prix sans me demander. Laisse totalement hors du schema tout champ que tu ne connais pas. Contrôles (dans l'ordre ; ne dis pas « terminé » avant qu'ils soient tous passés) : 1. Avec site_run_command, exécute `node chrome-stamp.mjs`, le build Tailwind, `node seo-stamp.mjs`, `node seo-check.mjs` (0 erreur, 0 avertissement), `node design-check.mjs` (0 erreur ; justifie tout avertissement restant) et `npx html-validate "**/*.html"` (0 erreur). 2. Affiche chaque page avec site_preview en view="mobile" et view="desktop". site_preview capture la page avec l'animation désactivée (reduced-motion) ; si du contenu manque dans cette capture, l'état sans animation est cassé. Les images lazy plus bas peuvent être vides dans la capture pleine page ; ne le compte pas comme une erreur, mais vérifie leurs chemins. 3. Lance core_web_vitals avec strategy="mobile" et strategy="desktop" pour chaque page. Critères d'acceptation : sur mobile, Performance d'au moins 95 et Accessibility, Best Practices et SEO à 100 ; sur desktop, les quatre à au moins 95. Pour une page qui échoue, trouve le fichier lent avec resources=true, corrige-le et mesure à nouveau. Lance ensuite seo_audit sur la page d'accueil avec strategy="mobile" et runs=2. Aucune adresse extérieure à votre propre domaine ne doit rester dans la liste des requêtes réseau. 4. Pas de défilement horizontal à 360, 390, 768 et 1440 px, cibles tactiles d'au moins 44 px et aucune erreur dans la console. Le site doit aussi être impeccable dans un cadre de 390x790 et de 1440x898, comme sur les pages de prompts. Contrôle de l'animation : site_preview ne peut pas montrer l'animation, alors dis-moi ce qu'il faut observer dans mon propre navigateur. Sur ordinateur, les compteurs doivent compter de zéro jusqu'à la valeur finale en entrant dans la vue, les lignes des graphiques doivent se dessiner de gauche à droite au défilement avec les points qui apparaissent tour à tour, et la liste de chapitres à gauche doit signaler le chapitre en cours de lecture. Sur mobile, la bande de chapitres doit rester collée en haut et faire glisser le chapitre actif dans la vue. Avec la réduction des animations activée et avec JavaScript désactivé, chaque chiffre affiche sa valeur finale et chaque graphique est entièrement tracé ; les tableaux de données peuvent être ouverts. Après la publication : prévisualise la règle `/assets/* Cache-Control: public, max-age=31536000, immutable` avec site_headers et applique-la après mon accord ; à partir de là, versionne le nom du fichier à chaque modification du CSS ou du JS (site-v2.css, etc.). Soumets sitemap.xml avec gsc_submit_sitemap et vérifie la page d'accueil avec gsc_url_inspect. Pour finir, donne-moi : un tableau des scores par page (page, quatre scores mobile, quatre scores desktop, LCP, CLS), les résultats des contrôles, le résultat des interactions testées dans un navigateur et la liste des correctifs appliqués.

Exemple de résultat

Un exemple du résultat de ce prompt. Sa structure provient de la sortie réelle des outils ; les chiffres et les noms sont fictifs.

Exemple de résultat (sur une marque de démonstration fictive, pas de données clients réelles ; les scores sont les vraies mesures de la démo)

Ce prompt a été suivi à la lettre pour « Kitap Köprüsü Derneği », le rapport d'impact 2025 d'une association fictive : fond papier, bleu rivière et rouille, Bespoke Serif et Epilogue, rapport, méthodologie, à propos et confidentialité.

PageMobile (P/A/BP/SEO)LCP mobileDesktop (P/A/BP/SEO)CLS
Rapport (accueil)99/100/100/1002,1 s100/100/100/1000
À propos99/100/100/1001,8 s100/100/100/1000
Confidentialité100/100/100/1001,7 s100/100/100/1000
Méthodologie100/100/100/1001,7 s100/100/100/1000

Contrôles (gates) : seo-check 0 erreur 0 avertissement, design-check 0 erreur 0 avertissement, html-validate 0 erreur, aucun débordement à 360/390/768/1440 px, console propre, aucun contenu masqué et aucun téléchargement de bibliothèque avec JS désactivé ou animations réduites, aucune requête réseau en dehors du domaine propre du site.

Test d'interaction : Essayé dans un navigateur (Playwright, 1440x898 et 390x790 tactile) : les 4 compteurs situés sous l'écran sont partis de 0 et ont compté jusqu'à 48, 31.540, 6.212 et 1.180 ; les deux lignes du graphique se sont tracées de strokeDashoffset 1 à 0 ; la liste des chapitres a défini aria-current sur le chapitre Kütüphaneler ; sur téléphone, la barre des chapitres est restée collée à 0 px et, au chapitre Budget, la barre a défilé de 192 px pour afficher le lien actif ; aucune erreur dans la console.

Corrections appliquées :
1. Les pages méthodologie et confidentialité avaient un h3 juste après le h1 ; l'audit de l'ordre des titres faisait tomber l'accessibilité à 98, et le passage en h2 l'a ramenée à 100.
2. Le sticky de la barre des chapitres ne se fixait jamais sur téléphone (la barre se retrouvait 3 967 px au-dessus de l'écran) ; le positionnement sticky a été déplacé sur l'aside, enfant de la grille qui couvre tout le rapport, et la barre est restée fixe à 0 px.
3. Le dernier libellé de l'axe x du graphique (2025) était coupé au bord droit ; la marge droite est passée de 20 à 40 unités.
4. La largeur minimale de 420 px du tableau budgétaire coupait la colonne des montants sur téléphone ; la largeur minimale a été supprimée.
5. L'attribut style écrit en premier pour la largeur du compteur est devenu une classe Tailwind, conformément à la règle « pas d'attribut style » ; l'élément details du tableau de données se trouvait dans le figure, après le figcaption, et html-validate signalait une erreur element-permitted-order, il a donc été sorti du figure.
6. Les pages de l'organisation et de la confidentialité comptaient moins de 150 mots (avertissement seo-check) ; des paragraphes sur la priorité des candidatures et le partage des données ont été ajoutés.

Un site d'exemple créé avec ce prompt

Rapport d'impact en scrollytelling : courbes SVG tracées au défilement, compteurs dont la valeur finale est écrite dans le HTML, navigation de section collante (sticky), schémas Report et Article ; sa

Créé pour une marque fictive en suivant ce prompt à la lettre. Les scores ont été mesurés avec Lighthouse sur chaque page.

Créer un site de rapport d'impact ou rapport annuel en scrollytelling, avec des graphiques qui se dessinent au scroll
Scores Lighthouse (page la plus faible)
MobileOrdinateur
Performance99100
Accessibilité100100
Bonnes pratiques100100
SEO100100

Contrôles réussis

  • seo check: 0 hata 0 uyarı
  • design check: 0 hata 0 uyarı
  • html validate: 0 hata
  • overflow: 360/390/768/1440 taşma yok, konsol temiz, JS kapalıyken ve reduced-motion'da gizli içerik yok (reduced-motion'da kütüphane inmiyor), kaydırma sonrası gizli kalan öğe yok, dış ağ isteği yok
  • tailwind before after: Derlenmiş Tailwind ve yerel font/betikle ölçüldü; CDN önce/sonra karşılaştırması stüdyo demosunda (webe-studyo) yapıldı
  • interactions: Tarayıcıda (Playwright, 1440x898 ve 390x790 dokunmatik) denendi: ekranın altındaki 4 sayaç 0'dan başlayıp 48, 31.540, 6.212 ve 1.180'e saydı; iki grafik çizgisi strokeDashoffset 1'den 0'a çizildi; bölüm listesi Kütüphaneler bölümünde aria-current aldı; telefonda bölüm şeridi 0 pikselde yapışık kaldı
Captures d'écran
Créer un site de rapport d'impact ou rapport annuel en scrollytelling, avec des graphiques qui se dessinent au scroll: Mobile
Mobile
Créer un site de rapport d'impact ou rapport annuel en scrollytelling, avec des graphiques qui se dessinent au scroll: Ordinateur
Ordinateur

Mesuré le: 2026-10-11

Recherches associées

Ces prompts donnent le meilleur résultat quand votre assistant IA est connecté à vos comptes avec Opus Growth.

Connecter vos comptes gratuitement

Autres prompts

Site webModifie après votre accordDémo en direct

Créer un site d'expert éditorial avec rubrique guides et schema auteur

Demandez à votre assistant de construire un site d'expert avec une page d'accueil façon une de magazine, des guides longs et un profil d'auteur. Typographie à empattements, schema Article et Person, articles datés et sourcés : une publication que l'on lit et que les réponses d'IA peuvent citer.

Quand l'utiliserQuand vous êtes expert, consultant ou indépendant et voulez un site qui prouve votre expertise par des guides détaillés et que les moteurs de recherche et les réponses d'IA peuvent citer.

SEO Intelligence, Search Console
Site webModifie après votre accordDémo en direct

Un site d'entreprise familiale au style patrimonial, aux standards modernes

Demandez à votre assistant de construire un site dans l'esprit d'une vieille étiquette et d'une enseigne de boutique, pour un producteur en troisième génération : cadre et texture papier. Le style est ancien, la fabrication est moderne : mobile first, sans JavaScript, polices auto-hébergées, WebP, schémas Product et HowTo.

Quand l'utiliserQuand vous dirigez une entreprise familiale et voulez un site au look classique, façon vieille étiquette, qui se charge vite et respecte les standards actuels de SEO et d'accessibilité.

SEO Intelligence, Search Console
Site webModifie après votre accordDémo en direct

Un site de cabinet juridique ou comptable en minimalisme suisse, riche en signaux de confiance

Demandez à votre assistant de construire un site de cabinet statique, sur une grille stricte, où la hiérarchie repose sur une seule famille typographique. Il place sur la page les signaux de confiance qu'exige un domaine YMYL : profils des praticiens, note d'information datée et sourcée, formulations conformes aux règles de publicité professionnelle et schema Person.

Quand l'utiliserQuand vous dirigez un cabinet d'avocats ou d'expertise comptable et qu'il vous faut un site crédible et rapide, qui inspire confiance sans enfreindre les règles de publicité professionnelle.

SEO Intelligence, Search Console
Site webModifie après votre accordDémo en direct

Créer un site corporate multipage sans JavaScript et le livrer à 100

Demande à votre assistant de construire un site statique, rapide et accessible pour une activité corporate : architecture, ingénierie, conseil. Menu et pied de page sont en HTML statique, polices et CSS sont hébergées sur le site, et chaque page est mesurée avant la livraison.

Quand l'utiliserQuand tu as besoin d'un nouveau site d'entreprise de plusieurs pages (architecture, ingénierie, conseil) qui se charge instantanément, fonctionne sans JavaScript et réussit les audits d'accessibilité et de SEO.

SEO Intelligence, Search Console