4 Curated Scroll Story Prompts

Scroll Story Prompts

Production recipes and workflows categorized under #scroll-story.

Meng To
@MengTo

Scroll experience

✦ClaudeScroll experience

KOISEI sakura river scroll experience (master prompt)

A 19k-character master prompt for an award-level cinematic scroll site. Live at koisei.aura.build.

KOISEI sakura river scroll experience (master prompt) by Meng To
# MASTER PROMPT — "KOISEI" Sakura River Scroll Experience Build a single-page, award-level (Awwwards/FWA style) scroll experience called **Koisei** — a cinematic journey down a Japanese river from a sakura morning to a lantern-lit night. Ukiyo-e / woodblock-illustration art direction, WebGL-enhanced imagery, scroll-scrubbed film sequences, and a day-to-night color metamorphosis. Everything below is a hard requirement — follow it exactly. --- ## 1. TECH STACK - **Vanilla HTML/CSS/JS** (single `index.html` allowed) or Vite project. - **three.js** (r160+) for: hero petal particle system, WebGL image planes with ripple/displacement shaders, and the transition dissolve shader. - **GSAP 3 + ScrollTrigger** for all scroll choreography (pinning, scrubbing, timelines). - **Lenis** smooth scroll (`lerp: 0.08`, `wheelMultiplier: 1.0`), synced to ScrollTrigger via `lenis.on('scroll', ScrollTrigger.update)` and `gsap.ticker`. - Scroll-scrubbed `<video>` elements driven by `currentTime` (details §8). - No UI frameworks. No Bootstrap aesthetics. Custom everything. --- ## 2. ASSETS (use these exact URLs) | Key | Asset | |---|---| | `HERO_RIVER` | https://hoirqrkdgbmvpwutwuwj.supabase.co/storage/v1/object/public/assets/assets/sakura-river-2026-07-05/sakura-river-hero-plate-875acd7a5205_original.png | | `KOI_RIVER` | https://hoirqrkdgbmvpwutwuwj.supabase.co/storage/v1/object/public/assets/assets/sakura-river-2026-07-05/sakura-koi-river-plate-742cc19de6b5_original.png | | `TEMPLE_CANAL` | https://hoirqrkdgbmvpwutwuwj.supabase.co/storage/v1/object/public/assets/assets/sakura-river-2026-07-05/kyoto-temple-canal-plate-60699d609a45_original.png | | `KIMONO_LANE` | https://hoirqrkdgbmvpwutwuwj.supabase.co/storage/v1/object/public/assets/assets/sakura-river-2026-07-05/rural-kimono-lane-plate-edb1d9bf1d3d_original.png | | `LANTERN_WATER` | https://hoirqrkdgbmvpwutwuwj.supabase.co/storage/v1/object/public/assets/assets/sakura-river-2026-07-05/asakusa-lantern-water-plate-73b3e135a98d_original.png | | `NIGHT_LANTERN` | https://hoirqrkdgbmvpwutwuwj.supabase.co/storage/v1/object/public/assets/assets/sakura-river-2026-07-05/night-river-lantern-plate-510dc7d4315d_original.png | | `HERO_VIDEO` (optional ambient) | https://hoirqrkdgbmvpwutwuwj.supabase.co/storage/v1/object/public/assets/assets/sakura-river-2026-07-05/sakura-river-bloom-video-5da61fc96d01_video.mp4 | | `SCROLL_FILM_1` (12s) | https://hoirqrkdgbmvpwutwuwj.supabase.co/storage/v1/object/public/assets/assets/sakura-river-2026-07-05/koi-bridge-temple-scroll-film-12s-ce0df14b7596_video.mp4 | | `SCROLL_FILM_2` (12s) | https://hoirqrkdgbmvpwutwuwj.supabase.co/storage/v1/object/public/assets/assets/sakura-river-2026-07-05/kimono-asakusa-night-scroll-film-12s-bd5434347f42_video.mp4 | Preload `HERO_RIVER`, both films' metadata, and fonts behind a loader (§4). --- ## 3. DESIGN SYSTEM ### 3.1 Colors (CSS custom properties — exact values) ```css :root { --washi: #F1E9DE; /* primary paper cream (light sections, footer) */ --washi-warm: #ECE4D9; /* hero sky wash */ --washi-deep: #E4DED5; /* gradient partner for washi-warm */ --sand: #E9D4BD; /* card fill / warm accent surface */ --river-stone: #C1BBB2; /* muted water grey-taupe, borders at 40% */ --ink: #251C16; /* primary dark — text on light, night bg */ --night: #241B15; /* night section background */ --night-deep: #1A130E; /* night vignette edge */ --cream-text: #EDE9DF; /* text over imagery / dark bg */ --sakura: #E8B4C0; /* petal pink */ --sakura-deep: #D98E9F; /* petal shadow pink */ --vermilion: #C4472F; /* torii red — accents, hover, small marks only */ --lantern: #E8A54B; /* lantern glow amber — night accents */ } ``` Rules: light sections use `--washi` bg + `--ink` text. Night uses `--night` bg + `--cream-text`. `--vermilion` appears only in tiny doses: the torii logo mark, link hover underlines, section-number tick marks, one CTA. Borders are always 1px `--ink` at 12–15% opacity on light, `--cream-text` at 15% on dark. ### 3.2 Typography - **Display serif:** `"Cormorant Garamond"` (Google Fonts), weights 400/500 + *italic*. This is the voice of the site. - **UI sans:** `"Space Grotesk"` 400/500 for nav, kickers, captions, buttons. - **Japanese accents:** `"Noto Serif JP"` 400 for vertical kanji strips. Scale (clamp-based, desktop reference): ```css --display-xl: clamp(4rem, 11vw, 11.5rem); /* hero + footer wordmark */ --display-lg: clamp(3rem, 7vw, 7rem); /* section headings */ --display-md: clamp(2rem, 4vw, 3.5rem); /* overlay lines on films */ --body: clamp(1rem, 1.15vw, 1.185rem); --caption: 0.8125rem; --kicker: 0.6875rem; /* letter-spacing: 0.32em; uppercase */ ``` Display type: `line-height: 0.95–1.05`, `letter-spacing: -0.015em`, mixed roman/italic within one headline — italicize the emotional word(s) (e.g., "Where Petals ***Drift*** Downstream"). Body: `line-height 1.7`, max-width `34em`, color `--ink` at 78% opacity on light. Kickers always render as: small vermilion or ink 6px square/tick + 0.32em-tracked uppercase Space Grotesk, e.g. `— THE JOURNEY`. ### 3.3 Texture & grain - A full-viewport fixed film-grain overlay: WebGL fragment shader or animated SVG `feTurbulence`, opacity 0.05, `mix-blend-mode: overlay`, regenerated per frame (subtle animated noise, not static). - Every image sits in a frame with a 1px inset border (`--ink` 15%) offset 10px outside the image edge — like a woodblock print mat. - Soft paper vignette on light sections: radial gradient darkening corners by 3%. --- ## 4. PRELOADER Washi bg. Center: torii mark (simple 2-stroke SVG in `--vermilion`) above the word **KOISEI** in display serif, tracking-in from `letter-spacing: 0.5em` → `0.02em` (1.2s, `power3.out`). Below, a 1px progress line growing 0→100% width tied to real asset loading, with a percentage counter in Space Grotesk. On complete: line flashes to vermilion, whole loader wipes upward with a `clip-path: inset(0 0 100% 0)` over 0.9s `power4.inOut`, revealing the hero already mid-settle. Total minimum display 1.6s. --- ## 5. NAVIGATION (fixed, persistent) - Height 88px, full-width, no background initially; padding-inline 48px. - **Left:** torii SVG mark (22px, vermilion) + wordmark `KOISEI` (Space Grotesk 500, 0.2em tracking, 14px). - **Right:** links `Journey · Stories · Gallery · Visit` (13px, 0.12em tracking) + a Japanese character `旅` in Noto Serif JP + a pill-outline button `Begin` (1px border, 12px, padding 10px 22px; hover: fills `--ink`, text `--washi`). - Link hover: 1px vermilion underline draws left→right (transform: scaleX, 0.35s `power2.out`). - On scroll down > 120px: nav background fades in as `--washi` at 82% + `backdrop-filter: blur(12px)`, height compresses to 68px. When over the night section, swap to `--night` at 82% and cream text (toggle a `.nav--night` class via ScrollTrigger `onToggle`). - Left screen edge, vertically centered, fixed: a vertical progress rail — 1px line, 160px tall, with a fill tracking total scroll progress and tiny dots at each section; below it the current section index `01 / 07` in 10px Space Grotesk, rotated 90°. --- ## 6. SECTION 1 — HERO ("Where Petals Drift Downstream") **Layout.** 100svh, full-bleed `HERO_RIVER` rendered as a **three.js textured plane** (not `<img>`) inside a fixed WebGL canvas, covering the viewport with `cover` UV math. Optionally crossfade to `HERO_VIDEO` (muted, loop, playsinline) after load for ambient motion — video as `VideoTexture` at 0 opacity fading to 1 over 2s. **Type.** Centered, slightly below vertical center: - Kicker: `— A JOURNEY DOWN THE SPRING RIVER` (cream, 0.32em tracking). - H1 in `--display-xl`, `--cream-text`, two lines: `Where Petals` / `*Drift* Downstream` (word "Drift" italic). Text has `text-shadow: 0 2px 40px rgba(37,28,22,0.35)`. - Under it: a thin 1px cream rule 64px wide, then `Koisei — 恋静` caption. - Bottom center: `SCROLL` label + 40px vertical line with a dot that loops downward (1.8s, `power1.inOut`, infinite). - Right screen edge: vertical Japanese strip `桜の川を下る` (Noto Serif JP, writing-mode: vertical-rl, cream 60%). **Entrance (after preloader).** Each headline line wrapped in an overflow-hidden mask; lines rise from `y: 110%` with `rotate: 2deg → 0`, stagger 0.12s, 1.1s `power4.out`. Kicker and rule fade/track-in 0.3s later. WebGL plane starts at `scale 1.12` easing to `1.0` over 2.4s. **WebGL petal system (signature element).** - `THREE.InstancedMesh`, 380 instances desktop / 120 mobile, each a small plane (8–18px) with a hand-drawn 5-petal sakura texture (draw it on an offscreen canvas: rounded-heart petal shape, `--sakura` fill, `--sakura-deep` inner shadow). - Per-instance attributes: size, phase, rotation speed, depth (z: -2 to 2 for parallax). - Motion in vertex shader or per-frame update: downward drift `vy = 0.15–0.4`, horizontal sway `x += sin(time*0.8 + phase) * 0.3`, plus a **curl-noise flow field** (simplex-based) bending trajectories like wind gusts; tumbling rotation on 2 axes. - Mouse interaction: pointer position pushes a radial impulse (radius 180px, force falls off quadratically) — petals scatter away from the cursor and recover. - Petals render OVER the hero image but UNDER the text (canvas z-index between). - Petal opacity ties to scroll: fade to 0 by the time section 3 begins, re-emerge tinted `--lantern` amber (fireflies/embers, slower, upward drift) in the night section. **Ripple shader on hero plane.** Fragment shader: subtle vertical sine displacement on the lower 35% of the image (the water) — `uv.x += sin(uv.y*40.0 + uTime*1.2) * 0.0015 * waterMask`, plus mouse-hover ripple: a decaying radial wave from pointer position (`uMouse`, `uWaveTime`). **Scroll exit (pinned, scrub).** ScrollTrigger pins the hero for `+=120%`. As you scroll: plane scales 1.0 → 1.18 and darkens (shader `uDarken` 0 → 0.25), headline moves up at 1.4× scroll speed and fades, and Section 2 slides over it from below like a paper sheet (Section 2 has higher z-index, `border-radius: 32px 32px 0 0` on its top edge during the overlap, flattening to 0 once fully covering). --- ## 7. SECTION 2 — MANIFESTO ("A River Remembers") Washi bg. Generous padding (16vh top/bottom). - Kicker left: `— 01 · THE PHILOSOPHY`. - A `--display-lg` serif statement spanning ~11 columns of a 12-col grid, `--ink`, mixed italics: `Every spring, the river carries a *million petals* from the mountains to the sea — and every petal remembers the tree it fell from.` - **Inline image tokens:** inside this headline, embed two small rounded-rect images (140×90px, border-radius 60px, the `KOI_RIVER` and `TEMPLE_CANAL` crops) sitting on the text baseline between words — they scale in from 0 width as the line reveals (a la modern editorial sites). - Reveal: split into lines (SplitType or manual), masked line-rise stagger 0.09s triggered at 70% viewport, scrub-free (`toggleActions: "play none none reverse"`). - Right-aligned below, max-width 34em body paragraph + a text link `Read the story of Koisei →` with draw-on underline. - Two large numbers row (`1,200 km` / `4 seasons`) in display serif with small caps labels, counter-animating up when in view. --- ## 8. SECTION 3 — SCROLL FILM I (pinned, video scrubbed by scroll) Full-bleed cinematic chapter using `SCROLL_FILM_1` (12s: koi → bridge → temple). **Mechanics (exact):** - `<video preload="auto" muted playsinline>` covering 100svh, `object-fit: cover`. - Pin the section for `+=400%` scroll. In `onUpdate`: `video.currentTime = self.progress * video.duration`, smoothed through a lerp (`current += (target - current) * 0.1` in a rAF loop) so scrubbing feels buttery, never steppy. Ensure the file is keyframe-dense; if seeking stutters, fall back to a canvas-drawn frame pipeline. - **Three text chapters** fade in/out sequentially over the film at progress 0.05–0.3, 0.38–0.63, 0.7–0.95. Each: centered kicker (`FIRST BEND`, `UNDER THE BRIDGE`, `THE TEMPLE GATE`) + one `--display-md` cream serif line (e.g., `*Koi* swim against the falling sky`). Text enters with masked rise + slight letter-spacing decay, exits fading up 40px. - Right edge: a vertical chapter indicator `Ⅰ · Ⅱ · Ⅲ` with the active numeral in vermilion. - Bottom left: a thin film-style progress bar (1px track, cream fill) showing scrub progress with `00:00 / 00:12` timecode in Space Grotesk tabular numerals. - Edge treatment: 6% `--night-deep` vignette + the global grain makes it feel filmic. --- ## 9. SECTION 4 — HORIZONTAL GALLERY ("Stations of the River") Pinned horizontal scroll on `--washi`. - Header row (static during pin): kicker `— 02 · STATIONS`, heading `Three *stations*, one current` (`--display-lg`), and right-aligned instruction `( scroll )`. - A track of **3 oversized cards** translating X from `0` to `-(trackWidth - viewport)` with `scrub: 1`, pinned `+=250%`. - Card spec: width `min(66vw, 900px)`, height 68vh, gap 6vw. Inside: the image fills the card with `overflow: hidden`; image itself is scaled 1.15 and translates X opposite to track motion (inner parallax, ±7%). 1px offset mat border. Corner radius 4px. - Card 01 — `TEMPLE_CANAL` — `Higashiyama Canal` — caption: `Stone bridges, incense, morning bells.` - Card 02 — `KIMONO_LANE` — `The Kimono Lane` — caption: `Where the road remembers slower centuries.` - Card 03 — `LANTERN_WATER` — `Asakusa Waterside` — caption: `Lanterns lean over the current at dusk.` - Each card's chrome: giant outlined number `01` (display serif, 9rem, `-webkit-text-stroke: 1px var(--ink)`, transparent fill) overlapping the image's top-left corner; title beneath the image in `--display-md`; caption + `Visit station →` link. - Numbers fill with solid ink when their card crosses viewport center. - Bottom: 1px progress line for the horizontal track + `01 — 03` counter that swaps with a small roll animation. - Cursor becomes a custom circular `DRAG`/`→` badge over this section (40px circle, mix-blend-difference). --- ## 10. SECTION 5 — DAY TO NIGHT (the metamorphosis) The emotional pivot. A pinned 100svh section, `+=200%`. - Background color animates `--washi` → `--night` via GSAP scrubbing a CSS variable (`backgroundColor` interpolation). The fixed nav flips to `.nav--night`. The global petal system swaps pink→`--lantern` embers drifting **upward**. - Centered: `LANTERN_WATER` image inside a tall portrait frame (42vw × 78vh) that **scales up to full-bleed** (transform scale + width/height interpolation via GSAP `flip` or clip-path expansion: `clip-path: inset(11vh 29vw)` → `inset(0)`), while a WebGL **dissolve shader** crossfades `LANTERN_WATER` → `NIGHT_LANTERN` using a perlin-noise threshold mask (`smoothstep(uProgress-0.08, uProgress+0.08, noise(uv*4.0))`) so day literally dissolves into night like ink in water. - Overlay copy at progress 0.1: kicker `— 03 · NIGHTFALL`, line `The river doesn't sleep — it *dreams*` in `--display-lg`, ink color transitioning to cream in sync with the bg. - Lantern glow: 6–8 positioned radial-gradient sprites (additive blending in the WebGL scene) pulsing gently (`opacity 0.6→0.9`, 3s sine loops, staggered) at the lantern positions of `NIGHT_LANTERN`. --- ## 11. SECTION 6 — SCROLL FILM II (night) Same mechanics as §8 with `SCROLL_FILM_2` (kimono → Asakusa night), pinned `+=350%`, on `--night`. - Two chapters: `THE LAST LANE` (`She walks where the lanterns *lean*`) and `ASAKUSA AT NIGHT` (`Every light is a wish going downstream`). - Ends with a full-stop moment: film settles on its final frame, darkens 30%, and a centered quote fades in — `"恋静 — quiet love, moving water."` with attribution `— Koisei` — held for the last 15% of the pin. --- ## 12. SECTION 7 — FOOTER On `--washi` (snap back to light with a quick 0.8s bg transition — dawn). - Top row: kicker `— BEGIN YOUR JOURNEY`, then a giant CTA line `Come see the river *bloom*` (`--display-lg`) with a circular vermilion button (120px, `Begin →`, magnetic hover: translates toward cursor within 24px, springs back `elastic.out(1, 0.4)`). - Middle: 3 link columns (Journey / Stories / Visit · Instagram / Vimeo / http://Are.na · Contact / Press) in Space Grotesk 13px, hover underline draw; plus a vertical `ありがとう` strip. - Bottom: the wordmark **KOISEI** at `--display-xl` stretched nearly full-width (`font-size` fitted via JS to viewport width), ink color, sitting on the baseline of the page — it rises from below with a masked reveal as the footer enters, with petals settling on top of the letters (petal system y-velocity → 0 near footer, landing on an invisible floor at the wordmark's cap line). - Very bottom: 1px rule, `© 2026 Koisei — down the spring river` left, `Kyoto → Tokyo` right, 10px. --- ## 13. GLOBAL MOTION LANGUAGE - Easing vocabulary: reveals `power4.out`, pinned scrubs linear (`scrub: 1`–`1.5`), color shifts `none` (scrub), micro-interactions `power2.out`, magnetic/elastic `elastic.out(1,0.4)`. - Every heading reveal = masked line rise (110% → 0, 1–2° rotation settle). Every image reveal = `clip-path: inset(100% 0 0 0)` → `inset(0)` at 1.2s `power4.inOut` with inner image counter-scaling 1.25 → 1. - Parallax: decorative elements move at 0.85×–1.2× via `data-speed` attributes processed by a single ScrollTrigger. - Custom cursor: 8px ink dot + 32px trailing ring (lerp 0.15); ring expands to 56px over links, morphs to `→` over cards, `▶` over films. - `prefers-reduced-motion`: kill pins/scrubs, videos become posters, petals static, reveals become simple fades. ## 14. PERFORMANCE & RESPONSIVE - One shared `WebGLRenderer` (alpha, antialiasing off, `devicePixelRatio` capped at 1.75); planes/particles added-removed per section visibility. Pause rAF work for offscreen scenes via IntersectionObserver. - Videos: `preload="metadata"` until their section is within 150% viewport, then `preload="auto"`. - Mobile (<768px): petals 120, horizontal gallery becomes native swipe track (no pin), film pins shorten to `+=250%`, display-xl clamps down, inline headline images hidden, custom cursor disabled. - Lazy-decode all plates (`decoding="async"`), and serve the WebGL textures through `THREE.TextureLoader` with `SRGBColorSpace`. ## 15. ACCEPTANCE CHECKLIST 1. Loader → hero entrance feels like one continuous shot. 2. Petals react to the mouse and change character (pink/down → amber/up) across day/night. 3. Both films scrub perfectly smoothly with lerped `currentTime`. 4. Day→night dissolve uses a noise-threshold shader, not a plain crossfade. 5. Horizontal gallery has inner-parallax images and outlined numbers that fill on center. 6. Nav adapts light/dark automatically; progress rail tracks 7 sections. 7. Footer wordmark nearly spans the viewport and petals settle on it. 8. Grain, mat borders, and vignettes present on every section. 60fps on an M1 laptop.
·78.6k uses·View original
Viktor Oddy
@viktoroddy

Hero section

✦ClaudeHero section

Scroll-scrubbed video hero (Framer Motion)

A fixed background video scrubbed by scroll position with lerp smoothing in Framer Motion.

Scroll-scrubbed video hero (Framer Motion) by Viktor Oddy
Build a full-screen hero section with a fixed background video (position: fixed, object-cover, muted, playsInline, preload="auto"). Tie video playback to scroll using Framer Motion's useScroll hook - map scroll progress (0-1) to video.currentTime via targetTimeRef, then smoothly interpolate with requestAnimationFrame loop using lerp (currentTimeRef += diff * lerpFactor). Add a dark overlay (bg-background/50) on the video. Create multiple text sections that fade in/out based on scroll position using useTransform for opacity, Y translation, and blur. Make the hero container h-[300vh] with a sticky top-0 h-screen inner wrapper so content scrolls over the fixed video. Include a scroll indicator at the bottom that fades out on scroll (useTransform(scrollYProgress, [0, 0.05], [1, 0])).
·58.3k uses·View original
Bee
@thtbee_

3D landing

▲Gemini 3.8 Flash3D landing

Particle-morph 3D storytelling landing page

A fixed 3D canvas of glowing particles morphs through 4 story acts as the user scrolls.

Particle-morph 3D storytelling landing page by Bee
I have an idea for a high-end, award-winning interactive landing page. As the user scrolls down the page, I want a single fixed 3D canvas where thousands of glowing micro-particles morph to visually tell a story across 4 sections: 1. The Storyboard (What happens as you scroll): Act 1 (Intelligence): We open with a high-definition 3D human brain made of particles sitting on the right side of the screen, subtly breathing. As you scroll slightly, it rotates to show its side profile while text appears on the left. Act 2 (Chaos): As you scroll deeper, the brain suddenly bursts outward into an expansive, cosmic cloud of drifting fragments and floating wireframe geometric shapes (like pyramids/tetrahedrons) to represent overwhelming chaos. Act 3 (The Idea): Keep scrolling, and the chaotic cloud gathers and locks into a tilted vintage Edison lightbulb with an illuminated glowing filament loop inside. Act 4 (Global Reach): Finally, the particles reorganize into a rotating 3D globe with continental landmasses and coordinate rings. 2. The Aesthetic & Color (The Vibe): Don't make it look like a generic AI site with bright purple/cyan neon. I want a peaceful, luxury architectural feel: warm deep espresso-stone background, with the particles shaded in natural botanical and mineral tones (soft sage green, warm sand/linen, muted amber, and pale champagne highlights). Clean editorial typography with generous spacing and frosted glass cards. 3. Physical Feel & Interactions: Scroll: Ultra-smooth kinetic momentum scrolling (like butter). Mouse reaction: When you hover your cursor over the brain or shapes, don't swing or tilt the whole 3D object like a toy. Make it feel alive—like getting goosebumps, where only the local particles directly under the mouse gently lift upward off the surface. Readability rule: Moving particles must NEVER make text hard to read. Clear a pocket or halo around headlines so copy is always crisp. Quality mandate: Zero blobby or potato-like shapes. The brain must have real cerebral folds, the bulb must have the screw base and filament, and the globe must have recognizable continents. Build this in Three.js and GSAP so it runs at a silky smooth 60+ FPS in the browser." ~ And here's the post build structured prompt.. you may give it screenshots of my post or the video itself as an reference to compare to if you want the exact results # MISSION: High-End WebGL 3D Particle Scrollytelling Experience Build an Awwwards-grade, production-ready 3D particle scrollytelling web application from scratch using Vite, Vanilla Three.js, Custom GLSL Shaders, GSAP ScrollTrigger, and Lenis kinetic smooth scrolling. --- ## 1. CORE ARCHITECTURE & TECH STACK - **Bundler:** Vite (minimal config, ES modules, <250ms build time). - **3D Engine:** Three.js (r160+) with a single continuous full-screen `<canvas id="webgl-canvas">` fixed in the background (`z-index: 0`). - **Scrollytelling:** GSAP (v3) + ScrollTrigger plugin tied to a continuous timeline (`uProgress: 0.0 → 4.0`). - **Kinetic Smooth Scroll:** Lenis.js configured for weighted, butter-smooth momentum scrolling. - **Shader Pipeline:** Custom GLSL Vertex and Fragment shaders operating on a single `THREE.BufferGeometry` holding 36,000 GPU particles. - **Target Performance:** 60–144 FPS hardware-accelerated rendering; zero WebGL compile warnings; zero memory leaks on resize. --- ## 2. 3D STRUCTURAL GEOMETRIES (STRICT: ZERO BLOBBY SHAPES) Create 4 mathematically precise point clouds with an identical point count (36,000 vertices) passed as GPU BufferAttributes (`position`, `aPosChaos`, `aPosBulb`, `aPosGlobe`, `aNormBrain`, `aNormBulb`, `aNormGlobe`, `aSeed`): 1. **Stage 1 — Anatomical Human Brain (`position`):** - Must NOT be an ellipse or noisy sphere. Construct dual symmetrical cerebral hemispheres separated by a distinct longitudinal fissure. - Modulate surface with harmonic gyri crests and deep sulci folds. - Include a tapered brainstem and realistic cerebellar lobes tucked beneath the occipital pole. 2. **Stage 2 — Workplace Entropy / Chaos Field (`aPosChaos`):** - Disperse particles into an expansive 3D volumetric field using 3D Fractional Brownian Motion (fBm) and turbulent curl noise offsets. - Surround with 15–20 ambient wireframe polyhedra (tetrahedrons and octahedrons) drifting through z-space with depth-of-field scale variations. 3. **Stage 3 — Edison Lightbulb (`aPosBulb`):** - Smooth upper glass teardrop envelope transitioning into a tapered waist. - Modeled helical ridges representing the metal threaded screw cap and contact terminal at the base. - An internal glowing dual-arch tungsten filament loop. - Mesh must be positioned on the left and tilted diagonally at roughly -28° ($z$-rotation). 4. **Stage 4 — Planetary Globe (`aPosGlobe`):** - Fibonacci spiral spherical distribution. - Dense point clustering forming recognizable continental landmasses (Americas, Eurasia, Africa) with thinner coordinate rings for latitude/longitude lines and polar caps. --- ## 3. CUSTOM GLSL SHADERS & GPU MATHEMATICS ### Vertex Shader: - **Morph Interpolation:** Calculate continuous transition across 4 stages using smoothstep blends: `pos = mix(posA, posB, smoothstep(0.0, 1.0, fract(uProgress)))` - **Curl Noise Turbulence:** Inject 3D simplex/curl noise into vertex positions proportional to `sin(fract(uProgress) * 3.141592)` so particles swirl organically in 3D arcs during transitions instead of moving mechanically in straight lines. - **View-Space Particle Repulsion:** Moving particles must NEVER obscure headlines. Project particle positions into view space; if a particle falls within the screen-space bounding box of active typography, apply a radial repulsion force in view space (`mvPosition.xy += repelDir * strength; mvPosition.z -= depthOffset;`) so particles part cleanly around the text in an organic halo. - **Localized "Goosebumps" Surface Lift (Hover Physics):** - Do NOT tilt, rotate, or distort the macro 3D object on mouse move. - Track 3D cursor raycast position on the model. For vertices within a tight radius ($R < 0.65$), displace them outward strictly along their surface normal: `position += normal * (hoverIntensity * smoothstep(radius, 0.0, dist)) * 0.22` - Particles under the cursor gently elevate like ruffled feathers or goosebumps and brighten subtly, settling smoothly when the cursor moves away. ### Fragment Shader: - **Micro-Primitives:** Render sharp geometric micro-triangles and micro-dots using 2D Signed Distance Fields (SDF). Distribute primitives as 60% hollow wireframe triangles with crisp borders, 25% semi-transparent micro-triangles, and 15% specular star glints. - **Surface Normal Fresnel & Lighting:** Compute analytical surface normals across stages and apply view-space Fresnel rim lighting: `fresnel = pow(1.0 - clamp(dot(normal, viewDir), 0.0, 1.0), 2.0);` - **Non-Blowing Additive Math:** Eliminate overblown white silhouettes in `THREE.AdditiveBlending`. Instead of adding constant white scalars, scale the particle’s own base color proportionally (`col += col * (0.35 * rim)`), preserving rich internal sulci and filament details without clipping to solid white `#FFFFFF`. --- ## 4. DUAL AESTHETIC EDITIONS (CHOOSE ONE OR IMPLEMENT SWITCHER) ### Edition A: Natural Earth & Espresso (Warm Luxury Architectural) - **Background:** Warm deep espresso-stone `#131211` (strictly NO harsh `#000000` pitch black). - **Particle Tonal Spectrum:** Botanical and mineral chromas: - Base body: Warm sand (`#a88f6c`) and deep moss/sage (`#3d633a` / `#6b9666`). - Highlights: Radiant warm amber (`#db8f38`) and soft champagne (`#ebdcb8`). - Zero generic neon purple or electric cyan. - **UI & Controls:** Frosted dark navbar, warm linen/sand pill CTA button (`#ede9e1` with dark espresso text), and seamless radial gradient scrims behind text with zero boxy edges. ### Edition B: Inverted Architectural Monochrome (Editorial Light Mode) - **Background:** Crisp pure alabaster white `#ffffff` or `#fafaf9`. - **Particle Material & Blending:** Use `THREE.NormalBlending` (with `transparent: true`, `depthWrite: false`). Output deep inky black, dark charcoal (`#14161a`), graphite, and gunmetal slate particles that stamp onto the white canvas like architectural ink stippling. - **UI & Cards:** Translucent frosted glass cards (`background: rgba(255, 255, 255, 0.32); backdrop-filter: blur(14px); border: 1px solid rgba(0, 0, 0, 0.08);`) so dark particles and wireframes remain visibly gliding behind the glass. Crisp pitch-black pill CTA (`#000000` with `#ffffff` text). --- ## 5. SCROLLYTELLING LAYOUT & TYPOGRAPHY HIERARCHY - **Scroll Sequence (5 Storytelling Moments):** - Section 0 (`p = 0.0`): Hero Brain on right, headline on left (*"Unlock collective wisdom"*). - Section 1 (`p = 1.0`): Brain rotates to reveal lateral cortex on left, headline on right (*"Make decisions with confidence"*). - Section 2 (`p = 2.0`): Workplace Entropy — centered headline (*"The impossible battle to make sense of this chaos"*) framed by dispersing particles and tumbling polyhedra. - Section 3 (`p = 3.0`): Lightbulb on left tilted at -28°, glowing tungsten filament, feature cards on right (*"Spark lightbulb moments"*). - Section 4 (`p = 4.0`): Planetary Globe rotating on right, global cluster terminal card on left (*"Build a better world of work"*). - **Tracker Rail Collision Safeguard:** The fixed right-side vertical scrollytracker rail must have a dedicated clearance gutter. All right-aligned text blocks must specify `margin-right: clamp(7rem, 11vw, 13rem);` so tracker labels never collide with body copy. - **Responsive Mobile Breakpoints:** Provide `@media (max-width: 640px)` rules to hide secondary telemetry, adapt camera distance ($z = 5.6$), and stack cards cleanly without horizontal overflow. --- ## 6. VERIFICATION & QUALITY GATES 1. `npm run build` must compile cleanly with 0 errors in under 300ms. 2. Console must report 0 WebGL errors and 0 deprecation warnings (use `http://performance.now()` instead of deprecated `THREE.Clock`). 3. Verify at 1920x1080 viewport: confirm crisp text legibility, zero tracker collisions, and fluid 60+ FPS rendering throughout the entire scroll journey.
·13.3k uses·View original
Charly Wargnier ♨️
@DataChaz

Copywriting

✹GPTCopywriting

Ogilvy 15-principle web copy scorer

Scores a URL's copy against 15 Ogilvy principles and rewrites it to score 100/100.

Ogilvy 15-principle web copy scorer by Charly Wargnier ♨️
You are an advertising strategist trained in David Ogilvy’s principles. Task: 1. Visit the user-provided URL. 2. Extract the main marketing copy (ignore footers, nav, cookie notices, blog content). 3. Score the copy out of 100 using the 15 Ogilvy-inspired principles (each ~6.7 points). 4. Provide a detailed score breakdown. 5. Identify the top 3 improvement areas. 6. Suggest edits to improve the score. 7. Rewrite the copy to achieve 100/100. --- ### 15 Scoring Criteria: 1. **Product Positioning** — Is the offer clear? What is it, who is it for, and why it matters? 2. **Unique Benefit** — Is there a strong, specific benefit? 3. **Headline** — Is it clear, specific, curiosity-driving, or benefit-led? 4. **Reader-Focused** — Is the copy centered on the reader's needs, not the brand? 5. **Clear Tone** — Is it plainspoken, not vague or gimmicky? 6. **Simple Language** — No jargon, easy to understand? 7. **Evidence** — Are there facts, stats, testimonials, or proof? 8. **Emotion/Story** — Is there emotional or narrative appeal? 9. **Structure** — Is it skimmable and well-formatted? 10. **Call-to-Action** — Is the next step obvious and compelling? 11. **Visuals/Captions** — If present, do they reinforce the message? 12. **Testability** — Can parts be A/B tested or measured? 13. **Length** — Is it appropriate for product complexity? 14. **Attention-Grabbing** — Does it hook early? 15. **Repetition** — Are key ideas or benefits repeated effectively? --- ### Output: **URL Analyzed:** [Insert URL] **Overall Score:** X/100 **Score Breakdown:** | Principle | Score (0–6.7) | Comments | |-----------|----------------|----------| | 1. Product Positioning | X.X | ... | | 2. Unique Benefit | X.X | ... | | ... | ... | ... | **Top 3 Areas to Improve:** 1. ... 2. ... 3. ... --- ### Rewrite (to score 100/100): [Rewritten copy applying all principles] --- ### User Input: [add url]
·90.3k uses·View original