СубмаринаКодовое слово: ФОЛИО
Выберите пример и повторите три шага

Пять эффектных сайтов-портфолио

Higgsfield создаст картинку или короткий ролик. Claude превратит их в готовую страницу. Программировать вручную не придётся.

5 примеров3 шагаПромпты внутри
Посмотреть примеры
Пять стеклянных экранов с интерактивными сайтами-портфолио
У каждого варианта есть картинка, три действия и готовые промпты.

Как пользоваться этим гайдом

Сначала посмотрите картинки и выберите один эффект. Затем выполните три действия под ним.

01
Создайте картинку или ролик

Откройте Higgsfield, раскройте нужный промпт и скопируйте его целиком.

02
Сохраните под указанным именем

Например, anim.mp4 или photo.png. Имя написано прямо в шагах.

03
Отдайте материал Claude

Откройте папку в приложении Claude Code и вставьте промпт для сборки сайта.

Вам понадобится компьютер. Терминал открывать не нужно. Все сложные действия уже прописаны внутри промпта для Claude.

01. Под портретом появляется второй образ

Что увидит человек. Он ведёт курсором по вашей фотографии, и под ней проявляется хромированная версия.

Пример сайта, где курсор проявляет хромированную версию портрета
Курсор стирает верхнее фото и показывает второе.
01
Сделайте обычный портрет

Загрузите в Higgsfield своё фото анфас и вставьте первый промпт.

02
Сделайте хромированную копию

Загрузите первый результат обратно в Higgsfield и вставьте второй промпт.

03
Отдайте оба фото Claude

Назовите их base.jpg и chrome.jpg, положите в одну папку и вставьте третий промпт в Claude Code.

Открыть промпт для обычного портрета
Оригинал на английском
{
  "type": "image_generation",
  "reference_usage": "The uploaded photo IS the subject. Reproduce this exact
    person: their bone structure, eye shape and spacing, nose, mouth, jawline,
    hairline, hair and skin tone. Do not substitute, idealise or beautify them
    into a different person. Identity accuracy matters more than perfection.",
  "style": "ultra-realistic studio portrait",
  "subject": {
    "identity": "the person in the uploaded reference photo",
    "expression": "neutral, calm, quietly confident",
    "pose": "front-facing, head and shoulders, perfectly centered",
    "gaze": "direct eye contact with camera"
  },
  "composition": {
    "framing": "tight close-up from top of head to upper chest",
    "symmetry": "highly symmetrical facial alignment",
    "headroom": "consistent space above the head",
    "depth_of_field": "shallow, face in sharp focus"
  },
  "lighting": {
    "key_light": "soft frontal key slightly above eye level",
    "fill_light": "subtle fill to preserve facial detail",
    "rim_light": "minimal rim light for separation from the background",
    "contrast": "high contrast with smooth shadow falloff",
    "skin_detail": "natural skin texture, pores visible, no beauty smoothing"
  },
  "background": {
    "color": "deep matte black",
    "gradient": "subtle radial gradient behind the head",
    "noise": "clean, no grain"
  },
  "wardrobe": {
    "clothing": "dark zip-up jacket or high-collar top",
    "branding": "none"
  },
  "camera": {
    "lens": "85mm prime",
    "aperture": "f/1.8",
    "perspective": "eye-level"
  },
  "rendering": {
    "photorealism": "extreme realism, editorial quality",
    "color_grading": "neutral cinematic tones"
  },
  "mood": "intense, premium, modern, minimal",
  "negative_prompt": [
    "different person", "changed facial structure", "beautified face",
    "cartoon", "illustration", "cgi", "over-smoothing", "plastic skin",
    "dramatic colors", "harsh shadows", "visible logos", "celebrity likeness"
  ]
}
Открыть промпт для хромированного портрета
Оригинал на английском
{
  "type": "image_generation",
  "style": "ultra-realistic cinematic sci-fi portrait",
  "base_image_usage": "Use the uploaded portrait as a strict layout reference.
    The head size, head position, tilt, shoulder line, framing and crop must
    match the uploaded image EXACTLY, pixel for pixel. This image will be
    layered directly on top of the original, so any shift in position breaks
    the effect. Match the composition first, style second.",
  "subject": {
    "pose": "front-facing, head and shoulders, centered, identical to reference",
    "face_visibility": "fully concealed by helmet",
    "emotion": "powerful, mysterious, elite"
  },
  "helmet": {
    "coverage": "full-face enclosed helmet, no skin visible",
    "concept": "high-end futuristic helmet with luxury craftsmanship",
    "structure": "monolithic shell with segmented armor geometry",
    "materials": ["matte black titanium", "dark chrome alloy", "carbon fiber",
      "energy-reactive glass"],
    "visor": {
      "type": "opaque or semi-opaque visor",
      "color": "deep black with subtle inner glow",
      "visibility": "eyes NOT visible",
      "effects": "faint internal HUD reflections only"
    },
    "details": ["micro-panel seams", "precision vents",
      "etched futuristic symbols", "thin glowing energy lines along contours",
      "layered mechanical depth"]
  },
  "integration": {
    "helmet_fit": "perfect anatomical fit to the head in the reference",
    "edges": "seamless closure around neck and jaw",
    "realism": "physically accurate proportions and reflections"
  },
  "lighting": {
    "key_light": "soft frontal cinematic light matching the reference",
    "accent_lights": "controlled rim lights defining the helmet silhouette",
    "glow": "very subtle internal glow, not overpowering",
    "contrast": "high contrast, smooth shadow gradients"
  },
  "background": {
    "color": "deep matte black, identical to the reference",
    "effects": "subtle volumetric haze for depth"
  },
  "camera": {
    "lens": "85mm prime",
    "aperture": "f/1.8",
    "perspective": "eye-level, identical framing to reference"
  },
  "rendering": {
    "photorealism": "extreme realism, AAA sci-fi film quality",
    "textures": "ultra-detailed metal, glass, nano-surfaces",
    "color_grading": "dark neutral cinematic tones"
  },
  "mood": "mysterious, intimidating, futuristic, premium",
  "negative_prompt": [
    "shifted head position", "different crop", "different framing",
    "face visible", "eyes visible", "open helmet", "cartoon", "anime",
    "illustration", "cgi look", "cheap armor", "bulky proportions",
    "logos", "text", "celebrity likeness"
  ]
}
Открыть промпт для сборки сайта
Оригинал на английском
Build me a single-file interactive "liquid reveal" hero section.

I have two pixel-aligned portrait images: base.jpg (a normal portrait) and
chrome.jpg (a chrome/helmeted version, identical framing).

Behaviour:
- Full viewport hero, 100svh, images object-fit: cover.
- chrome.jpg sits underneath, base.jpg sits on top.
- As the pointer moves, a soft liquid trail follows it and erases the top
  image so the chrome version shows through, then settles back over about
  one second.
- The trail should have a lingering tail and momentum, not a hard circle.
- Add a subtle chromatic fringe (offset the red and blue channels slightly)
  at the reveal edge.

Technical requirements:
- Use pointermove, not mousemove, so touch works.
- When there is no pointer input, animate the reveal along a slow drifting
  path so it is alive on mobile and before anyone interacts.
- IMPORTANT: radial-gradient(circle 26% at ...) is INVALID CSS and fails
  silently, because a circle's explicit size must be a length, not a
  percentage. Put the radius in the colour stops instead.
- mask-image cannot be CSS-transitioned (its animation type is discrete), so
  drive the easing per frame in requestAnimationFrame with a lerp.
- Ship both -webkit-mask-image and mask-image.
- Respect prefers-reduced-motion: show a static image, no animation loop.
- Overlay a headline and subline with correct z-index.

Give me one self-contained HTML file, and tell me how to preview it.
Проверьте до сборки. На двух фотографиях голова должна находиться в одном месте. Если она сдвинулась, пересоздайте хромированный вариант.

02. Прокрутка запускает превращение

Что увидит человек. Он листает страницу вниз, рот персонажа открывается, а чёрный круг постепенно закрывает весь экран. Если листать вверх, всё возвращается назад.

Пример анимации с лицом и чёрным кругом, который растёт при прокрутке
Прокрутка работает как кнопка вперёд и назад.
01
Создайте ролик в Higgsfield

Выберите Seedance, вставьте первый промпт и получите короткое плавное видео.

02
Переименуйте файл

Сохраните видео под точным именем anim.mp4.

03
Передайте файл Claude

Положите anim.mp4 в новую папку, откройте её в Claude Code и вставьте второй промпт.

Открыть промпт для ролика
Оригинал на английском
A simple flat 2D cartoon face centered on a plain cream background, front on,
minimal line-art style. Its mouth slowly opens wider and wider in one smooth
continuous motion, and as it opens a solid pure-black void grows out from inside the
mouth, spreading outward until it fills the entire frame in flat black. One
uninterrupted take, even constant speed the whole way, ending on a completely black
screen. No cuts, no camera shake, no flashing. Clean, minimal, playful.
Открыть промпт для сборки сайта
Оригинал на английском
Build me a single self-contained index.html: a scroll-linked animation hero. Create a
tall scroll section (about 300vh) with an inner sticky wrapper pinned to the viewport
(position: sticky; top: 0; height: 100svh) holding anim.mp4 (object-fit: cover,
muted, playsinline, preload="auto", with a poster). Keep the video PAUSED and drive
its timeline by scroll: map my scroll progress through the section from 0 to 1 onto
the video from first frame to last frame, so scrolling down opens the mouth and
scrolling up closes it. Do it in a requestAnimationFrame loop that eases currentTime
toward the target (a lerp) so it feels smooth, never set currentTime directly in the
scroll event, and guard the math until loadedmetadata so duration is not NaN. Layer
my name and a short intro over it with z-index, and fade the text out as the black
fills the screen. On touch or prefers-reduced-motion, autoplay-loop the clip or show
the poster instead. Also re-encode the video with ffmpeg using
-x264-params keyint=1:min-keyint=1 -pix_fmt yuv420p so every frame is a keyframe and
the scrub is instant, and extract the first frame as poster.jpg. Then run it and show
me a preview.
Чтобы эффект не дёргался. Видео должно идти ровно, одним кадром, без резких склеек и движения камеры.

Один эффект даёт сильное портфолио. Навык сборки даёт новую услугу

На бесплатном мастер-классе покажем, как словами создавать сайты, сервисы и AI-агентов для себя и для клиентов.

Записаться бесплатно

03. Кулак сминает бумажный портрет

Что увидит человек. Он показывает открытую ладонь, и портрет остаётся ровным. Сжимает кулак, и портрет превращается в бумажный шар.

Пример сайта с бумажным портретом и окном веб-камеры для управления рукой
Камера видит ладонь и двигает видео.
01
Сделайте бумажную версию себя

Загрузите в Higgsfield от двух до трёх чётких фото анфас и вставьте первый промпт.

02
Превратите портрет в ролик

Поставьте изображение первым кадром в Seedance, вставьте второй промпт и сохраните результат как scrunch.mp4.

03
Передайте ролик Claude

Положите scrunch.mp4 в новую папку, откройте её в Claude Code и вставьте третий промпт.

Открыть промпт для бумажного портрета
Оригинал на английском
A hyperrealistic studio photograph of a life-size papercraft sculpture portrait of a young woman, her head and shoulders constructed from hundreds of flat kraft-paper facets. Every plane of the face is a separate piece of matte warm-beige card with crisp folded edges, visible paper thickness, fine seam gaps and subtle shadow inside each crease, a physical low-poly paper model photographed in a studio, not a digital render or a texture overlay. Each facet catches a slightly different value of light.

Only her eyes and lips are real: glossy hyperrealistic eyes with wet highlights and soft lashes, naturally glossy lips, set into the matte paper face for an uncanny mixed-media contrast. Her hair is pulled back and swept over one shoulder in a loose plait built entirely from individually cut and folded strips of dark paper with visible cut edges and fine printed hair grain, a few loose paper strands framing both sides of her face.

Soft directional key light from camera left, deep black studio backdrop, shallow depth of field, medium-format portrait photography, extremely detailed.
Открыть промпт для сминания
Оригинал на английском
Start from the attached papercraft portrait exactly as it is. The entire paper sculpture crumples inward like a sheet being scrunched into a ball: facets buckle, creases collapse, the face folds in on itself, until only a tight crumpled paper ball floats against the black backdrop. Slow, continuous, satisfying motion. Studio lighting unchanged, camera locked off, black background, 9 to 10 seconds.
Открыть промпт для сборки сайта
Оригинал на английском
Build me a single self-contained index.html (all CSS and JS inline, no build step, no frameworks) for a full-screen portfolio hero where my hand controls a paper-crumple video via live webcam hand tracking. My crumple clip is in this folder as scrunch.mp4: a papercraft portrait that starts flat and intact and crumples into a paper ball in one continuous take.

First, prep the video for smooth scrubbing. Re-encode it so every frame is a keyframe: ffmpeg -i scrunch.mp4 -x264-params keyint=1:min-keyint=1 -pix_fmt yuv420p -movflags +faststart scrunch-scrub.mp4, and use scrunch-scrub.mp4 in the page. Also extract the first frame as poster.jpg: ffmpeg -i scrunch.mp4 -frames:v 1 poster.jpg. Scrubbing a normal mp4 is janky; all-keyframes makes seeking instant.

LAYOUT (dark, editorial, full viewport, no page scroll): black background, white text, one warm accent. Top nav with a serif wordmark on the left, centered text links, and two pill buttons on the right (a ghost outline and a solid white one). Under it a small tagline row, then a large headline (max-width about 58vw, font-size clamp(44px,6.6vw,96px)) whose last line is a serif italic block. Bottom-left, pushed to the bottom, a short muted bio paragraph and a white pill link.

Gentle staggered rise-in on load. Add a very faint SVG fractal-noise grain over the whole page.

THE PAPER REEL (the video the hand controls): fixed in the upper right (top about 38px, bottom 12px, a right offset around clamp(80px,13vw,280px), width min(50vw,720px)). Inside, the video at 100% width and height, object-fit contain, mirrored horizontally (transform scaleX(-1)), poster.jpg as its poster, and a soft radial-gradient CSS mask so the portrait feathers into the black page (roughly an ellipse 60% 58% at center, solid to about 48%, transparent by about 82%).

Keep the video PAUSED at all times and drive it by a scrunch amount from 0 to 1, where 0 is the flat first frame and 1 is the fully crumpled last frame; map it to currentTime = scrunch * (duration - 0.06). Ease it: keep a shown value that lerps toward the target every animation frame (shown += (target - shown) * 0.18) inside a requestAnimationFrame loop, and set currentTime ONLY there, never inside an event handler. Guard all timeline math until loadedmetadata so duration is never NaN.

Add a small status badge top-left of the reel that reads Flat under about 3% and otherwise N% scrunched, with its dot changing colour once it starts crumpling.

THE FLOATING POLAROID WEBCAM (the controller): a draggable, resizable polaroid pinned bottom-right, about 240px wide. Cream paper, a slight rotation, soft shadow, a strip of translucent tape across the top, a subtle paper-grain texture. Use container-type: inline-size and size the internals in cqw units so the whole polaroid scales cleanly when resized.

The photo window (aspect ratio about 3 / 3.4, dark) holds a canvas showing the webcam feed MIRRORED with a hand skeleton drawn over it; under it a handwritten caption reading open-hand "flat", dot, fist "scrunch". A small status pill sits over the photo. A resize grip in the bottom-right corner scales the width (clamp about 120 to 520px, keep aspect). The whole polaroid drags anywhere with pointer events (on first drag switch from right/bottom anchoring to left/top and clamp inside the viewport).

HAND TRACKING (openness controls scrunch): request the webcam (getUserMedia, user-facing, 640x480). Load MediaPipe Tasks Vision from the jsdelivr CDN (import @mediapipe/tasks-vision@0.10 vision_bundle.mjs, FilesetResolver forVisionTasks pointed at the matching wasm, HandLandmarker with the hosted hand_landmarker float16 task model), VIDEO running mode, numHands 1; try the GPU delegate first and fall back to CPU.

Each frame, draw the mirrored video to the canvas (cover fit), run detectForVideo only when the video time advanced, and if a hand is found draw the standard 21-landmark skeleton as thin white lines with a soft glow plus small accent dots (wrist dot slightly bigger).

Compute openness continuously: average the distance from each fingertip (landmarks 8, 12, 16, 20) to the wrist (0), divide by palm size (distance from wrist 0 to middle-finger base 9), then normalize roughly as (r - 1.05) / (1.85 - 1.05) clamped 0 to 1, so a fist is about 0 and an open hand about 1. Set the scrunch target = 1 - openness (open hand = flat, closed fist = crumpled) and update the status pill.

When no hand is detected, ease the target back toward 0 (flat) slowly and show a "no hand, relaxing flat" note.

FALLBACKS AND POLISH: if hand tracking fails to load, show a "tracking offline, click reel to play/pause" message and let a click on the reel toggle play/pause instead, and expose a window.__scrunch(v) helper (0 to 1) so I can test without a hand. Responsive: under about 980px, hide the centre nav links and turn the reel into a faint full-bleed background behind the text, with the polaroid smaller in the corner; respect prefers-reduced-motion by skipping the scrub and just showing the poster.

Everything in one index.html besides scrunch-scrub.mp4 and poster.jpg. Then run it and show me a preview.
При проверке нажмите «Разрешить камеру». Откройте ладонь, затем медленно сожмите кулак. Лучше проверять в Google Chrome.

04. Фото оживает при прокрутке

Что увидит человек. Он листает страницу, а портрет медленно растворяется в частицах. Вместо лица можно показать товар, интерьер или логотип.

Пример сайта, где портрет растворяется в частицах во время прокрутки
Один короткий ролик создаёт ощущение объёмной сцены.
01
Выберите первый кадр

Возьмите портрет, фото товара или другую картинку, с которой начнётся эффект.

02
Создайте ролик в Higgsfield

Загрузите картинку в Seedance, вставьте первый промпт и сохраните результат как hero.mp4.

03
Передайте файл Claude

Положите hero.mp4 в новую папку, откройте её в Claude Code и вставьте второй промпт.

Открыть промпт для ролика
Оригинал на английском
Start from a calm portrait on a dark studio background. The face slowly dissolves
into fine drifting particles from one side, dust and tiny fragments lifting gently
and floating away in slow motion while the rest of the face stays intact. Soft
directional light, subtle glowing embers, deep black backdrop. The camera holds one
slow steady push in, one continuous take. No cuts, no flashing, no fast bursts.
Elegant, ethereal, cinematic. Even slow motion throughout, loop friendly.
Открыть промпт для сборки сайта
Оригинал на английском
Build me a single self-contained index.html: a cinematic scroll-video hero. Create a
tall scroll section (about 400vh) with an inner sticky wrapper pinned to the viewport
(position: sticky; top: 0; height: 100svh) holding hero.mp4 (object-fit: cover,
muted, playsinline, preload="auto", with a poster). Keep the video PAUSED and drive
its timeline by scroll: as I scroll through the tall section, map my progress from 0
to 1 onto the video from first frame to last frame. Do it inside a
requestAnimationFrame loop that eases currentTime toward the target (a lerp) so it
feels buttery, not jumpy. Never set currentTime directly in the scroll event, and
guard the math until loadedmetadata so duration is not NaN. Layer a headline over the
hero with z-index, and add a couple of normal page sections below it. On touch or
prefers-reduced-motion, skip the scrub and autoplay-loop the video or show the
poster. Also re-encode my video with ffmpeg using -x264-params keyint=1:min-keyint=1
-pix_fmt yuv420p so every frame is a keyframe and scrubbing is smooth, and extract
the first frame as poster.jpg (ffmpeg -frames:v 1) to use as the poster. Then run it
and show me a preview.
Оптимальная длина ролика от 5 до 8 секунд. Пусть в нём будет одно спокойное превращение и одно плавное движение камеры.

05. Страница расходится на бумажные слои

Что увидит человек. При прокрутке фон, заголовок, фотография и кнопка двигаются с разной скоростью. Кажется, будто сайт собран из отдельных листов.

Пример портфолио из отдельных бумажных слоёв
Фото, текст, фон и кнопка находятся на разной глубине.
01
Подготовьте своё фото

Удалите фон и сохраните изображение под точным именем photo.png.

02
Соберите содержание

Напишите имя, короткий заголовок, одну строку о себе и текст кнопки.

03
Передайте всё Claude

Положите photo.png в новую папку, откройте её в Claude Code и вставьте промпт.

Открыть промпт для сборки сайта
Оригинал на английском
Build me a single self-contained index.html: a layered parallax hero that feels like
sheets of paper. Stack these as separate layers, back to front: a full-bleed
background, a large headline, a cut-out photo of me (photo.png, transparent), a short
subline, and a call-to-action button. On scroll, translate each layer up the page at
a DIFFERENT speed using transform: translate3d (background slowest, then headline,
then photo, then subline, then button fastest) so they separate like lifting layers
of paper and the page gains depth. Add a subtle soft shadow under the photo layer so
it reads as floating above the others. Drive it from a requestAnimationFrame loop
reading scrollY (not a scroll listener that sets styles directly), use will-change:
transform on the moving layers for smoothness, and clamp the movement so nothing
drifts off screen. On prefers-reduced-motion, disable the parallax and show a clean
static stacked hero. Make it fully responsive, and layer everything with z-index so
the photo sits above the text where they overlap. Then run it and show me a preview.
Для этого варианта видео не нужно. Если слои двигаются почти одинаково, попросите Claude сильнее развести их по скорости.

Как получить ссылку на сайт

01
Посмотрите готовую страницу

Напишите Claude: «Запусти сайт и покажи предпросмотр».

02
Откройте её с телефона

Проверьте, что изображение видно, текст читается, а эффект не зависает.

03
Опубликуйте папку

Перетащите её целиком в Netlify Drop. Сервис сразу даст ссылку.

Ссылки на сервисы

От красивого эффекта к работающему проекту

Выберите один сайт и соберите его до конца

Не пытайтесь начать со всех пяти сразу. Возьмите эффект, под который у вас уже есть фото или идея короткого ролика.

На мастер-классе покажем следующий шаг. Вы увидите, как собирать сайты, сервисы и AI-агентов по понятным инструкциям, даже если раньше не программировали.

Можно ускорять собственную работу. Можно создавать такие проекты для клиентов и превращать навык в дополнительный или основной доход.

Вайбкодинг и AI-агенты

Бесплатный мастер-класс для тех, кто уже пробует нейросети, но пока не может довести идею до работающего продукта и не понимает, как на этом зарабатывать.

Участвовать бесплатно
01
Подключите инструменты

Разберётесь, как начать без программирования и технического опыта.

02
Пройдите путь от идеи до продукта

Увидите шесть понятных шагов, по которым собираются сайты, сервисы и AI-агенты.

03
Выберите свой маршрут

Снимайте рутину в своём деле или создавайте решения для клиентов и берите заказы.

Подарки для уверенного старта

Каждый материал помогает сделать следующий шаг сразу после эфира.

  • Лучшие сервисы для вайбкодингаЧтобы выбрать инструмент под свою задачу.
  • Оплата иностранных сервисов из РоссииЧтобы спокойно подключить нужные решения.
  • 30 идей для вайбкодингаЧтобы найти первый проект для себя или клиента.
  • 10 промптов для создания сайтовЧтобы начать работу с готовой формулировки.
После участия вы получите именной сертификат мастер-класса.
* Instagram принадлежит компании Meta, деятельность которой запрещена в РФ.
Материал подготовлен Школой Субмарина · 2026