Site web

Créer un site SaaS sombre et rapide avec une histoire produit GSAP épinglée et pilotée par le scroll

Construit un site produit multipage sur votre serveur d'hébergement, avec une histoire produit épinglée par ScrollTrigger et synchronisée au défilement, une entrée de titre SplitText et le défilement fluide Lenis. Les bibliothèques d'animation ne se chargent que là où c'est nécessaire et après le premier rendu ; le Lighthouse mobile est mesuré et maintenu au-dessus de 95.

Quand l'utiliser

Quand vous voulez monter sur votre serveur d'hébergement un site SaaS sombre, rapide et multipage qui raconte l'histoire du produit par une animation GSAP au défilement, sans dégrader les scores Lighthouse.

Ce que vous obtenez

Un site produit multipage publié avec une histoire épinglée au défilement, une configuration SEO, AEO et GEO, et un tableau de scores par page avec Lighthouse mobile au-dessus de 95, les résultats des contrôles et les corrections appliquées.

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

[nom du serveur][nom du produit][ce qu'il fait, à qui il s'adresse][trois étapes][4 à 6 fonctionnalités][e-mail][téléphone][numéro WhatsApp][adresse le cas échéant][domaine][couleur ou "tu choisis"][liens ou "aucune"]
Sur mon serveur d'hébergement Opus Growth [nom du serveur], construis un site produit sombre et multipage pour [nom du produit], qui raconte son histoire au fil du défilement. Produit : [ce qu'il fait, à qui il s'adresse]. Les trois étapes qu'un utilisateur suit dans le produit : [trois étapes]. Fonctionnalités clés : [4 à 6 fonctionnalités]. Contact : [e-mail], [téléphone], [numéro WhatsApp], [adresse le cas échéant]. Domaine : [domaine]. Préférence de couleur : [couleur ou "tu choisis"]. Vraies captures d'écran ou photos du produit : [liens ou "aucune"]. Pages : accueil (/), produit (/urun/), à propos (/hakkimizda/), contact (/iletisim/), confidentialité (/gizlilik/) et 404.html. Sections de l'accueil dans l'ordre : hero (h1, description en deux phrases, deux boutons, image du produit), l'histoire produit comme élément signature, fonctionnalités, à qui il s'adresse, FAQ et appel à l'action final. Pas de formulaire sur la page contact ; utilise l'e-mail, le téléphone et un lien WhatsApp avec message prérempli, car le serveur ne sert que des fichiers statiques. Style : motion sombre. Fond sombre, une seule couleur d'accent sobre (pas de néon), une grotesque d'affichage serrée de Fontshare (par exemple Cabinet Grotesk) et une police de texte calme (par exemple Switzer). Pas de dégradés et pas de WebGL ; garde l'audace pour l'histoire produit. Règles de motion (le plus difficile, à respecter à la lettre) : 1. Bibliothèques : GSAP 3.13 core, ScrollTrigger, SplitText et Lenis. Télécharge-les depuis jsdelivr dans `assets/vendor/` avec site_fetch et fige la version. Charge-les uniquement sur les pages d'accueil et produit ; les pages à propos, contact et confidentialité ne contiennent aucun script. Ne charge pas Swiper. 2. Ne les attache pas avec `<script defer>`. Place un petit loader en fin de page : après l'événement load, il attend deux appels à requestAnimationFrame puis requestIdleCallback, ajoute les scripts dans l'ordre avec async=false, et ne télécharge rien si `<html>` n'a pas la classe `anim`. Dans la démo, les bibliothèques en defer ont fait passer le LCP mobile à 3,2 s et la Performance à 92 ; avec ce loader, elle a atteint 99. 3. Un script d'une ligne dans `<head>` ajoute la classe `js` à `<html>`, et la classe `anim` sauf si prefers-reduced-motion vaut "reduce". Définis les états de départ masqués uniquement sous `.anim`, afin que le contenu soit visible dès le départ sans JS ou pour les visiteurs qui préfèrent moins d'animation, et que les bibliothèques ne soient jamais téléchargées pour eux. Comme filet de sécurité au cas où une bibliothèque ne se chargerait pas, ajoute une animation CSS qui rend visible chaque élément masqué après 2,5 s. Si le JS arrive plus tard que cela, ne masque pas à nouveau du contenu déjà visible ; construis seulement l'histoire épinglée. 4. Entrée du titre avec SplitText : le h1 du premier écran est l'élément LCP, ne le fais jamais démarrer masqué. Le h1 démarre visible dans une couleur atténuée qui respecte tout de même le contraste AA, et SplitText ramène ses lignes à la pleine couleur l'une après l'autre (options mask et aria activées). Garde l'entrée masquée, avec montée des lignes, pour les titres h2 plus bas, et déclenche-la au scroll avec ScrollTrigger. 5. Élément signature : dans l'histoire produit, utilise le pin et le scrub de ScrollTrigger via gsap.matchMedia uniquement à partir de 768 px de large (scrub autour de 0,6, end "+=180%"). À gauche, les trois étapes s'activent une à une ; à droite, l'écran du produit se remplit étape par étape. N'atténue pas les étapes inactives avec l'opacité ; change seulement la couleur du titre et la ligne de bordure. Dans la démo, des étapes atténuées par l'opacité ont échoué au contraste sur desktop et ont fait tomber l'Accessibilité à 95. Sur mobile, pas de pin ; les étapes apparaissent dans le flux normal. Sans JS, l'écran du produit affiche son état final. 6. N'active Lenis que sur les appareils `(pointer: fine)` afin que les appareils tactiles gardent le défilement natif. Pilote Lenis depuis gsap.ticker et déplace le focus vers la cible après le défilement vers un lien d'ancre. 7. L'écran du produit est une figure décorative avec aria-hidden et une figcaption qui explique ce qu'il montre. Chaque interaction fonctionne au clavier et l'anneau de focus reste visible. Mise en place et pièges connus (chacun a fait baisser un score dans les mesures de la démo, ne les saute pas) : 1. Si un site est déjà en ligne sur le serveur, préviens-moi d'abord, car la mise en place écrase index.html et le dossier assets. Prévisualise scaffold_site avec confirm=false et appelle-le avec confirm=true après mon accord. Lis ensuite site_design_guide et site_seo_guide. Avant d'écrire du code, consigne la direction de design (typographie, couleur, grille, élément signature, langage de motion et bibliothèques qui ne seront PAS chargées) dans un court ART.md hors du dossier assets et montre-le-moi. 2. Compile Tailwind au lieu de le charger depuis le CDN. Installe-le avec site_run_command et background=true : `npm i -D tailwindcss@3`, puis enchaine avec site_command_status. Les chemins content de `tailwind.config.js` doivent couvrir tous les fichiers HTML, les templates et tout fichier JS qui écrit des noms de classes. `_src/tw.css` contient la ligne `@import "../assets/app.css";` et les trois lignes `@tailwind` ; compile-le en un seul fichier avec `npx tailwindcss -c tailwind.config.js -i _src/tw.css -o assets/site.css --minify`. Supprime le script cdn.tailwindcss.com et le tailwind.config inline de chaque page et ne lie que `/assets/site.css`. Recompile après chaque modification du HTML. 3. Héberge les polices toi-même. Lis le CSS des familles Fontshare choisies, télécharge le fichier woff2 de chaque graisse dans `assets/fonts/` avec site_fetch, et écris les règles @font-face avec `font-display: swap` dans `assets/app.css` ; design-check y cherche une police personnalisée. Vérifie le nom font-family dans le CSS téléchargé, car Fontshare peut renvoyer une autre famille lorsqu'une graisse n'existe pas. Précharge la police du titre du premier écran et la police de texte sur chaque page avec `<link rel="preload" as="font" type="font/woff2" crossorigin>` ; dans la démo, cela a supprimé le décalage de mise en page causé par le swap de police (CLS de 0,024 à 0). La plupart des polices Fontshare n'ont pas de glyphe ₺, écris donc "TL" pour les prix. 4. Rends le menu et le pied de page en HTML statique. 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 injecte `_src/header.tpl` et `_src/footer.tpl` entre les marqueurs `<!-- nav:start --><!-- nav:end -->` et `<!-- footer:start --><!-- footer:end -->` de chaque page, en ajoutant aria-current="page" au lien courant. Ne donne pas aux templates d'extension .html et utilise des placeholders comme `[[NAV]]` plutôt que `{{...}}`, sinon design-check et seo-check les lisent comme des pages inachevées. Construis le menu mobile sans JS avec `<details>`. Garde le nom de l'entreprise, l'adresse et le téléphone en texte brut dans le pied de page. 5. Convertis les images pendant le téléchargement avec site_fetch : écris la même photo dans des fichiers séparés avec resize="480x", "800x" et "1200x", image_format="webp", quality=65. Donne à chaque `<img>` srcset, sizes, width et height. L'image principale du premier écran reçoit fetchpriority="high" et n'est jamais en lazy ; les autres reçoivent loading="lazy" decoding="async". Si l'image principale remplit l'écran du téléphone, sers sur mobile un recadrage plus large et plus léger avec `<picture>` (dans la démo, le hero mobile est passé de 89 Ko à 43 Ko). 6. Crée un favicon PNG de 48 px à partir du logo avec site_fetch et ajoute `<link rel="icon">` à chaque page. Sans lui, le navigateur journalise une erreur 404 et les Bonnes pratiques tombent à 96. 7. Règles du validateur HTML : commence chaque document par `<!DOCTYPE html>` en majuscules (les fichiers de départ du kit utilisent des minuscules), utilise `&nbsp;` pour les espaces dans le texte visible des liens tel:, n'utilise jamais d'attribut style="" et donne à chaque bouton type="button". SEO, AEO et GEO : 1. Utilise des URL de type répertoire avec barre oblique finale (/urun/, /hakkimizda/, /iletisim/, /gizlilik/). Renseigne le bloc seo de site.config.js et exécute `node seo-stamp.mjs`. Écris le schéma propre à chaque page (accueil : WebPage et FAQPage ; produit : SoftwareApplication et FAQPage ; à propos : AboutPage ; contact : ContactPage ; BreadcrumbList sur les pages internes. Pour une société de logiciels sans boutique physique, définis localBusiness:false dans site.config.js) dans des blocs `<script type="application/ld+json">` séparés et relie-le au graphe de base avec @id. N'enfouis pas BreadcrumbList dans un @graph ; donne-lui son propre bloc, car c'est la seule façon pour seo-check de le voir. 2. Titres de 48 à 60 caractères (seo-check signale comme erreur tout ce qui dépasse 65), descriptions de 145 à 158 caractères, un seul h1 par page. 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 une FAQ propre à chaque page avec `<details>` et balise-la en FAQPage. Affiche l'organisation éditrice et une mention « Dernière mise à jour » avec `<time>`. 4. Dans robots.txt, écris ta décision et sa raison pour GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, Claude-SearchBot, PerplexityBot, Perplexity-User, Google-Extended, Applebot-Extended, Bingbot et CCBot, et pointe vers le sitemap. sitemap.xml contient de vraies dates lastmod. llms.txt contient un résumé exact du site en deux phrases et la liste des pages clés. 5. N'invente rien : ni avis, ni notes, ni récompenses, ni nombre de clients, ni certificats, ni horaires d'ouverture, ni coordonnées, ni prix, sauf si je te les donne. Laisse les champs inconnus en dehors du schéma. Contrôles (dans l'ordre ; ne considère pas le travail comme terminé tant qu'ils ne sont pas tous validés) : 1. Avec site_run_command, exécute `node chrome-stamp.mjs`, la compilation 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, view="mobile" et view="desktop". site_preview capture la page avec les animations désactivées (reduced-motion) ; si du contenu manque sur cette image, l'état sans animation est cassé. Dans les captures pleine page, les images lazy plus bas peuvent apparaitre vides ; ce n'est pas une erreur, mais vérifie leurs chemins. 3. Exécute core_web_vitals pour chaque page avec strategy="mobile" et strategy="desktop". Critère de réussite : sur mobile, Performance d'au moins 95 et Accessibilité, Bonnes pratiques et SEO à 100 ; sur desktop, les quatre à au moins 95. Sur une page qui échoue, utilise resources=true pour trouver le fichier qui la freine, corrige-le et mesure à nouveau. Exécute ensuite seo_audit sur la page d'accueil avec strategy="mobile" et runs=2. La liste des requêtes réseau ne doit contenir aucun hôte autre que ton propre domaine. 4. Pas de défilement horizontal aux largeurs 360, 390, 768 et 1440 px, zones tactiles d'au moins 44 px, aucune erreur dans la console. Contrôle du motion : site_preview ne peut pas montrer le mouvement ; décris donc la section épinglée de la page d'accueil et dis-moi quoi vérifier dans mon propre navigateur : sur desktop, l'histoire produit doit rester collée en haut pendant que les étapes avancent avec le défilement ; sur téléphone, elle doit défiler normalement sans se coller ; avec la réduction des animations activée dans le système d'exploitation, rien ne doit bouger et tout doit être visible. Après la publication : prévisual

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, sans données clients réelles ; les scores sont les mesures réelles de la démo)

Ce prompt a été suivi à la lettre pour « Vardiya Defteri », un produit fictif de planification des équipes : fond sombre, un seul accent ambre, Cabinet Grotesk et Switzer, cinq pages. Le récit produit de la page d'accueil se fige et se remplit au fil du défilement sur ordinateur, et s'écoule normalement sur mobile. GSAP, ScrollTrigger, SplitText et Lenis ne se chargent que sur les pages d'accueil et produit, après le premier rendu.

PageMobile (P/A/BP/SEO)LCP mobileOrdinateur (P/A/BP/SEO)CLS
Accueil99/100/100/1002,04 s100/100/100/1000
Produit100/100/100/1001,65 s100/100/100/1000
À propos100/100/100/1001,51 s100/100/100/1000
Contact100/100/100/1001,51 s100/100/100/1000
Confidentialité100/100/100/1001,51 s100/100/100/1000

Contrôles : 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, aucune requête réseau en dehors du domaine du site.

Corrections appliquées :
1. La même page d'accueil avec le CDN Tailwind et des ressources externes obtenait 89/94/100/100 sur mobile (CLS 0,079) ; avec un CSS compilé et des polices et scripts en local, elle obtenait 99/100/100/100.
2. Avec des bibliothèques chargées en différé, le LCP mobile était de 3,2 s et la Performance de 92 ; avec le chargeur en temps d'inactivité après le chargement, elle est passée à 99.
3. Masquer le h1 pour SplitText retardait le LCP ; le h1 est désormais visible dès le départ et ses lignes apparaissent par changement de couleur.
4. Des étapes atténuées par l'opacité faisaient tomber l'Accessibilité à 95 sur ordinateur ; le passage à un changement de couleur l'a ramenée à 100.
5. Un favicon manquant provoquait une erreur 404 dans la console et les Bonnes pratiques tombaient à 96 ; son ajout a rétabli le 100.

Un site d'exemple créé avec ce prompt

SaaS en dark mode avec animations : présentation du produit via GSAP ScrollTrigger (pin et scrub), animation d'entrée des titres avec SplitText, Lenis (souris uniquement), bibliothèques chargées sur 2

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

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, dış ağ isteği yok
  • tailwind before after: Ana sayfa Tailwind CDN + Fontshare + jsdelivr + JS menü ile mobil 89/94/100/100 (CLS 0,079), derlenmiş CSS + yerel font/betik + statik menü ile 99/100/100/100 (CLS 0)
Captures d'écran
Créer un site SaaS sombre et rapide avec une histoire produit GSAP épinglée et pilotée par le scroll: Mobile
Mobile
Créer un site SaaS sombre et rapide avec une histoire produit GSAP épinglée et pilotée par le 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 de guides et schema auteur

Votre assistant construit le site d'un expert : 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 indépendant, consultant ou freelance et que votre site ressemble à une brochure qui ne prouve pas votre expertise et n'est pas cité par les moteurs de recherche et les réponses d'IA.

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

Créer un site d'entreprise familiale au look classique, aux standards modernes

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

Quand l'utiliserQuand vous tenez une entreprise familiale ou une boutique et voulez un site au look d'étiquette ancienne et d'enseigne, qui reste rapide sur mobile et réussit les contrôles SEO et d'accessibilité.

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

Créer un site de cabinet juridique ou comptable, minimaliste suisse et rassurant

Demandez à votre assistant de construire un site de cabinet statique sur une grille stricte, avec une hiérarchie portée par une seule famille typographique. Il place 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'utiliserLorsque 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

Demandez à votre assistant de construire un site statique, rapide et accessible pour une activité de type architecture, ingénierie ou conseil. Le menu et le pied de page sont en HTML statique, les polices et le CSS sont auto-hébergés, et chaque page est mesurée avant la livraison.

Quand l'utiliserQuand vous avez besoin d'un site d'entreprise multipage, rapide et accessible, pour un cabinet d'architecture, d'ingénierie ou de conseil, sans aucun JavaScript.

SEO Intelligence, Search Console