00:00:00생성형 AI가 얼마나 강력해졌는지 보면
00:00:02새로운 도구들이 끊임없이 등장하고 있고,
00:00:03그 중에서도 Google은 Gemini 3가 출시된 이후 정말 게임을 한 단계 업그레이드했습니다.
00:00:07그래서 X에서 사람들이 이 놀라운 랜딩 페이지들을 한 번에 만들어내며 이 모델이 게임 체인저라고 말하는 걸 본 적 있을 겁니다.
00:00:14하지만 그건 거짓말입니다.
00:00:15사실은, 이런 사이트를 만들기 위해 여러 도구를 사용해야 합니다.
00:00:18그리고 Google은 Gemini 3와 Nano Banana로 구동되는 실험적인 도구들을 미친 듯이 출시하고 있습니다.
00:00:23하지만 Google은 이 모든 도구를 함께 사용할 수 있는 방법을 제공하지 않습니다.
00:00:26그래서 이 모든 도구를 결합하는 완전한 워크플로우가 필요합니다.
00:00:29오늘 할 이야기가 많은데, 사실 이 도구들이 이렇게 잘 어울릴 거라곤 기대하지 않았거든요.
00:00:34그런 사이트에서 보는 애니메이션은 단지 일련의 프레임들입니다.
00:00:37하지만 AI 도구로 이런 프레임들을 생성하면 일관된 결과를 얻을 수 없습니다.
00:00:41Google은 에셋 생성을 위해 특별히 설계된 WISC라는 실험 도구를 출시하여 이 문제를 해결합니다.
00:00:47이것은 이미지 생성을 위해 Nano Banana로 구동됩니다.
00:00:49저는 히어로 섹션용 이미지 시퀀스를 생성하기 위해 WISC를 자주 사용합니다.
00:00:53간단한 단어로 프롬프트를 제공하고,
00:00:55각 시퀀스마다 세부 사항을 단계별로 업데이트한 다음,
00:00:58결과 이미지를 히어로 섹션에 사용합니다.
00:01:01이 전체 과정을 사용해서 이 랜딩 페이지를 만들었고,
00:01:03카메라와 함께 이 멋진 애니메이션 효과를 구현할 수 있었습니다.
00:01:07시작하려면,
00:01:07시퀀스의 첫 번째와 마지막 프레임만 생성한 다음,
00:01:10히어로 섹션을 위해 이 두 키프레임을 사용해서 애니메이션을 만듭니다.
00:01:14하지만 구조 없이 그냥 프롬프트를 시작하면, 원하는 키프레임들이 같은 구조적 연속성을 갖지 못합니다.
00:01:20이를 위해 주제, 시각적 의도, 그리고 이미지에서 원하는 디테일 수준을 명확하게 정의해야 합니다.
00:01:26WISC는 주제,
00:01:27장면,
00:01:27스타일 프레임워크를 사용해 이미지 생성을 가이드하며,
00:01:30이를 하나의 새로운 비주얼로 결합할 수 있게 해줍니다.
00:01:33그래서 제가 원하는 카메라 종류,
00:01:35렌즈의 반사가 어떻게 보이길 원하는지,
00:01:37해상도,
00:01:38이미지의 깊이 등 모든 세부 사항을 포함했고,
00:01:40프롬프트에 설명한 대로 정확히 비주얼을 만들어냈습니다.
00:01:44생성된 이미지가 항상 기대에 부응하는 건 아닙니다.
00:01:47그런 경우에는 간단한 말로 변경 사항을 언급하기만 하면 되고,
00:01:50그러면 새로운 비주얼에 변경 사항이 반영됩니다.
00:01:53WISC에서 가장 마음에 드는 점은 훌륭한 결과를 얻기 위해 길고 상세한 프롬프트를 작성할 필요가 없다는 것입니다.
00:01:58이는 중간 레이어로 Gemini 3를 사용하기 때문인데,
00:02:01이것이 여러분의 간단한 말 위에 상세한 프롬프트를 작성해서 탄탄한 비주얼로 이어집니다.
00:02:05이제 제가 왜 WISC를 선택했는지에 대한 질문이 생깁니다.
00:02:08Nano Banana는 광범위한 텍스트 프롬프트가 필요하고,
00:02:10Google의 Mix Board는 무드 보드용으로 설계되어 있어서,
00:02:13둘 다 빠르고 통제된 이미지 리믹싱에 최적화되어 있지 않습니다.
00:02:16WISC의 핵심 강점은 참조 이미지를 결합하는 데 있어, 더 나은 제어로 이미지를 생성할 수 있게 해줍니다.
00:02:21첫 번째 프레임을 얻은 후,
00:02:23마지막 프레임은 카메라의 측면 각도로,
00:02:25렌즈를 분해해서 구성 요소를 보여주길 원했습니다.
00:02:28그래서 기술적 단면도를 생성하도록 프롬프트했고,
00:02:30내부 렌즈를 어떻게 레이어링해야 하는지,
00:02:32배경이 어떻게 나타나야 하는지 명시했습니다.
00:02:35첫 시도에서는 제대로 나오지 않았습니다.
00:02:37내부 회로까지 분해했는데, 이건 제가 보여주길 원하지 않았던 부분이었습니다.
00:02:40앞서 말했듯이, 필요한 변경 사항만 언급하면 됩니다.
00:02:42그래서 렌즈 레이어링만 보여달라고 지시했고,
00:02:45그러자 내부 회로를 보여주지 않고 성공적으로 이미지를 생성했습니다.
00:02:49이제, WISC는 VIO 모델을 사용한 애니메이션도 지원합니다.
00:02:53하지만 WISC의 애니메이션은 여러 키프레임을 함께 연결하기보다는 하나의 이미지를 애니메이션하는 데 초점을 맞춥니다.
00:02:58그래서 Google Flow라는 다른 도구를 사용했습니다.
00:03:01Flow는 스토리 기획을 위해 Gemini를,
00:03:02안정적인 캐릭터를 디자인하기 위해 Google의 이미지 모델을,
00:03:05비디오 콘텐츠를 만들기 위해 VIO를 사용합니다.
00:03:07저는 이미 카메라 애니메이션을 위한 시작과 끝 프레임을 만들어 놓았고,
00:03:10이제 그 사이에 전환을 만들고 싶었습니다.
00:03:13그래서 프레임을 비디오로 변환하는 옵션을 사용하고 제 프레임을 제공했습니다.
00:03:16부드러운 전환을 보장하기 위해서는 프롬프트에 시작 프레임이 어떻게 끝 프레임으로 이어지는지 언급해야 합니다.
00:03:21이는 모델에게 논리적인 경로를 제공하기 때문입니다..
00:03:24프롬프트에는 애니메이션이 어떻게 흘러가길 원하는지,
00:03:26시작 프레임이 어떻게 끝 프레임으로 전환되어야 하는지,
00:03:28그리고 애니메이션 스타일을 포함해야 합니다.
00:03:30이러한 세부 사항들이 모션이 의도적으로 구현되도록 보장합니다..
00:03:33이러한 모델들은 복잡한 작업에서 실수를 하는 경향이 있어서,
00:03:36처음에는 제 애니메이션을 제대로 생성하지 못했습니다.
00:03:38생성된 비디오는 회전 방향과 끝 프레임 모두 완전히 잘못되어 전환이 어색했습니다.
00:03:44해결 방법은 애니메이션이 올바르게 구현되도록 필요한 변경 사항을 포함하여 다시 프롬프트를 입력하는 것이었습니다.
00:03:50더 부드러운 전환을 위해 카메라 회전 방향을 변경하도록 프롬프트를 작성한 것처럼 말이죠.
00:03:54그 후 제가 원하는 버전이 생성되었고 프로젝트에 사용하기 위해 다운로드했습니다..
00:03:58비디오 생성 모델은 비용이 많이 들기 때문에 무료 플랜에서는 비디오 생성을 무제한으로 사용할 수 없습니다.
00:04:04지역에 따라 월 180 크레딧만 제공됩니다.
00:04:08VIO 3.1로 비디오를 한 번 생성할 때마다 20 크레딧을 사용하므로,
00:04:11한 달에 최대 9개의 비디오를 만들 수 있습니다.
00:04:14Flow에서 생성된 비디오는 MP4 형식이며,
00:04:17스크롤 애니메이션에 매핑하기 어렵기 때문에 Hero 섹션에서 직접 사용할 수 없습니다.
00:04:22이러한 이유로 무료 온라인 변환기를 사용하여 WebP로 변환했습니다..
00:04:26MP4 비디오를 업로드하고,
00:04:28최고 품질의 애니메이션 WebP를 생성하도록 변환 설정을 조정했고,
00:04:31WebP 형식으로 변환된 파일을 프로젝트에 사용하기 위해 다운로드했습니다.
00:04:35WebP를 선택하는 것이 중요한 이유는,
00:04:38이 형식을 사용하면 스크롤 인터랙션을 더 쉽게 매핑할 수 있기 때문입니다.
00:04:42웹에서 이 형식은 다른 형식처럼 미디어 플레이어 래퍼가 필요 없는 이미지로 취급됩니다.
00:04:47이러한 파일들은 더 작고 향상된 성능을 제공하여 단편 애니메이션 콘텐츠에 이상적입니다..
00:04:52변환된 WebP 파일을 새로 초기화한 Next.js 프로젝트의 public 디렉토리에 추가했습니다.
00:04:57프로젝트의 모든 에셋이 이곳에 위치하기 때문입니다..
00:05:00이제 애니메이션이 준비되었으니, 랜딩 페이지의 Hero 섹션에 추가하고 싶었습니다.
00:05:05저는 일반적으로 Claude에게 XML 형식으로 프롬프트를 작성하는데,
00:05:08Claude의 모델들이 XML을 이해하도록 최적화되어 있어 구조화된 의도를 더 안정적으로 파싱하고 각 섹션을 독립적으로 추론할 수 있기 때문입니다.
00:05:15애니메이션을 추가하기 위해 Claude에게 제공한 프롬프트에는 제가 만들고자 하는 것에 대한 맥락,
00:05:20애니메이션 에셋이 위치한 곳,
00:05:22스크롤 애니메이션이 어떻게 작동해야 하는지,
00:05:24그리고 context 태그 안의 목표가 포함되었습니다.
00:05:27requirement 태그에 모든 요구사항을 포함했고,
00:05:30animation behavior 태그에 애니메이션이 어떻게 동작해야 하는지 설명했으며,
00:05:35각 태그 안에 구현 세부사항,
00:05:37제약 조건 및 필요한 출력을 직접 명시했습니다.
00:05:39Claude에게 이 프롬프트를 제공했을 때, 제가 원하는 대로 정확하게 애니메이션을 자동으로 구현했습니다.
00:05:45Hero 섹션은 괜찮아 보였지만, 나머지 컴포넌트들은 AI가 생성하는 일반적인 웹사이트처럼 보였습니다.
00:05:50이는 기존의 아름다운 컴포넌트 라이브러리를 사용하는 대신 바닐라 CSS로 고품질 결과를 기대했기 때문입니다..
00:05:57각각 고유한 전문 스타일과 디자인 테마를 가진 여러 UI 라이브러리가 있지만,
00:06:01프로젝트 스타일에 가장 적합한 라이브러리를 선택해야 합니다.
00:06:04제 카메라 랜딩 페이지의 경우,
00:06:06Apple 스타일 UI를 목표로 했고,
00:06:08그 아이디어에 가장 가까운 라이브러리는 Hero UI입니다.
00:06:11Tailwind CSS 위에 구축되었으며 Framer Motion을 활용하여 웹사이트 전체에서 컴포넌트에 생동감을 불어넣습니다..
00:06:17이 라이브러리는 Next.js, Vite, Laravel과 같이 가장 널리 사용되는 프레임워크를 지원합니다.
00:06:23그래서 기존 Next.js 설정과 함께 사용하기가 쉬웠습니다.
00:06:26설치 방법에는 두 가지가 있습니다.
00:06:28설치 명령어를 통해 모든 컴포넌트를 사용할 수 있도록 프로젝트 전체에 설치하거나,
00:06:32필요에 따라 개별 컴포넌트를 설치하는 방법이 있는데,
00:06:35저는 Claude와 함께 후자의 방법을 사용했습니다.
00:06:37기존 컴포넌트를 Hero UI 컴포넌트로 교체하라고 Claude에게 지시했고,
00:06:41웹사이트가 크게 개선되어 훨씬 더 전문적인 외관과 느낌을 갖게 되었습니다.
00:06:45사용자는 UI가 얼마나 매력적인지를 보고 몇 초 안에 랜딩 페이지에 머물지 여부를 결정합니다.
00:06:50모션은 방문자의 시선을 우리가 주목하길 원하는 기능으로 유도하여 사용자 유지율을 높이는 데 도움이 됩니다.
00:06:55바닐라 JavaScript를 사용하여 처음부터 애니메이션을 구현하는 것은 어려울 수 있기 때문에,
00:07:00저는 기존 라이브러리를 활용하여 프로세스를 단순화합니다.
00:07:03이 프로젝트에서는 다양한 즉시 사용 가능한 애니메이션을 제공하는 무료 오픈 소스 라이브러리인 Motion.dev를 사용했습니다.
00:07:10일반적으로 애니메이션은 DOM 업데이트와 애니메이션 타이밍을 수동으로 동기화해야 합니다.
00:07:14하지만 Motion.dev는 DOM 업데이트를 내부적으로 처리하여 이러한 로직을 추상화합니다.
00:07:19사용자가 스크롤할 때 컴포넌트를 자동으로 업데이트하므로,
00:07:22스크롤 위치를 수동으로 추적할 필요 없이 애니메이션이 부드럽게 재생됩니다.
00:07:26이 라이브러리는 표준 컴포넌트 대신 모션 컴포넌트를 사용합니다.
00:07:29이러한 컴포넌트는 props에 시작 상태와 종료 상태가 정의되어 있으며,
00:07:33라이브러리가 그 사이의 전환 로직을 자동으로 처리합니다.
00:07:35랜딩 페이지를 위해 저는 Claude에게 이 라이브러리를 사용하여 패럴랙스 및 스크롤 애니메이션을 구현하도록 지시했습니다.
00:07:42그 결과 사용자 경험이 개선되어 페이지의 핵심 섹션으로 시선을 유도할 수 있게 되었습니다.
00:07:46페이지의 섹션이 어떻게 보여야 하는지 설명하는 것은 지루한 과정입니다.
00:07:50사람들이 자신의 창작물을 게시하는 기존 갤러리에서 영감을 얻는 것이 더 좋습니다.
00:07:54저는 여러 디자이너가 만든 다양한 UI 컴포넌트에 대한 영감을 제공하는 플랫폼인 21st.dev를 사용했습니다.
00:08:00이 컴포넌트들은 Aceternity UI,
00:08:02Prism UI,
00:08:03Coconut UI,
00:08:04Magic UI 등과 같은 인기 있는 UI 라이브러리를 기반으로 제작되었습니다.
00:08:08아이디어를 찾던 중, 제 랜딩 페이지에 멋지게 어울릴 콜 투 액션 섹션을 발견했습니다.
00:08:1221st.dev에서 제가 가장 마음에 드는 부분은 사용하고 싶은 컴포넌트에 대해 AI 코딩 에이전트를 위해 특별히 맞춤화된 프롬프트를 복사할 수 있다는 점입니다.
00:08:20제가 직접 Claude를 안내할 필요가 없습니다.
00:08:23프롬프트는 ShadCN 및 TypeScript 지원과 같은 프로젝트 요구사항을 포함하여 광범위하게 구조화되어 있습니다.
00:08:29코딩 에이전트가 컴포넌트 디렉토리에 직접 붙여넣을 수 있도록 지침이 포함된 코드를 제공합니다.
00:08:34필요한 모든 종속성 코드와 추가해야 할 경로가 포함되어 있으며,
00:08:37설치해야 할 NPM 패키지 목록도 제공합니다.
00:08:39또한 AI 에이전트를 위한 구현 가이드도 포함되어 있어,
00:08:42컴포넌트를 애플리케이션에 직접 통합하는 데 필요한 모든 단계와 에이전트가 특정 프로젝트의 요구사항에 맞게 조정하는 방법을 자세히 설명합니다.
00:08:49저는 이 프롬프트를 Claude에게 전달했고,
00:08:52Claude는 제가 프롬프트를 복사한 바로 그 콜 투 액션 섹션을 통합했습니다.
00:08:56또한 제가 모션을 추가하라고 명시적으로 언급하지 않았음에도 불구하고,
00:08:59설치했던 모션 라이브러리의 모션을 추가했습니다.
00:09:02저는 21st.dev에서 푸터도 가져왔는데,
00:09:04데모 푸터에는 GitHub과 Twitter 아이콘이 포함되어 있었습니다..
00:09:11복사한 프롬프트를 Claude에게 전달했을 때,
00:09:14Claude는 우리 프로젝트와 관련이 없는 GitHub 아이콘을 생략했습니다.
00:09:17카메라 제품 사이트와 관련된 아이콘만 포함하도록 푸터를 맞춤 제작하여,
00:09:21우리 랜딩 페이지에 완벽하게 어울리는 푸터를 만들었습니다.
00:09:23이것으로 이번 영상을 마무리하겠습니다..
00:09:25채널을 후원하고 이런 영상을 계속 제작할 수 있도록 도와주시고 싶다면,
00:09:29아래의 슈퍼 땡스 버튼을 이용해주세요.
00:09:31언제나처럼, 시청해주셔서 감사드리며 다음 영상에서 뵙겠습니다..