Communitygithub.com

nathankim0/viral-ad-remix

검증된 숏폼 바이럴 광고(TikTok/Reels/Shorts)를 AI 영상 모델로 리메이크하고, AI가 잘못 만든 부분(가짜 폰 화면, 망가진 손, 깨진 립싱크, 정적)을 실제 앱 녹화본, 자막, 엔드 카드로 수정합니다.

viral-ad-remix란 무엇인가요?

이 스킬은 바이럴 숏폼 광고를 자신의 모바일 앱용으로 리메이크하려는 모바일 앱 마케터 및 개발자를 위한 종합 워크플로우입니다. Vidu나 Runway 같은 AI 영상 모델을 사용하여 참조 광고의 구조와 내러티브를 재현하되, AI가 생성한 결함(가짜 폰 화면, 어색한 손, 깨진 립싱크, 잘못된 타이밍)을 체계적으로 식별하고 수정합니다. 사용자는 실제 앱 화면 녹화본, 평면 추적(planar tracking)을 통한 폰 화면 합성, 얼굴별로 싱크를 맞춘 음성 편집, 후크(hook) 및 엔드 카드 제작, 엄격한 검증 단계를 통해 전문가 수준의 광고를 완성할 수 있습니다. Claude Code, Codex CLI, Cursor 등 개발자 도구에서 실행 가능하며, Python(ffmpeg, OpenCV, mlx-whisper 등) 환경을 필요로 합니다. 이 워크플로우는 대규모 라이브 액션 촬영, 기존 크리에이터 협업, 브랜드 안전성 심사 등 실제 광고 제작 과정을 대체하지 않습니다.

지원 대상~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/nathankim0/viral-ad-remix/tree/HEAD/skills/viral-ad-remix

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

바이럴 광고 리믹스

검증된 광고 구조를 사용자의 앱용 광고로 만듭니다. AI 모델은 사람과 장소를 제공하고, 폰 화면에 표시되는 모든 것은 실제 앱 녹화본에서 가져옵니다. 편집 시 모든 말은 해당 얼굴에 맞춰 유지합니다.

$S = 이 스킬 디렉토리의 scripts/ 입니다. ffmpeg, Python 3 (numpy pillow opencv-python-headless 필요), 그리고 음성 확인용 mlx-whisper(Apple Silicon) 또는 openai-whisper가 필요합니다. 앱 영상은 app-demo-recorder 스킬 같은 화면 녹화기(릴리스 빌드, 실제 계정, 광고 제거 상태)로 녹화합니다.

첫 번째 편집 전에 references/lessons.md를 한 번 읽으십시오. 이 워크플로우가 피하기 위해 설계된 실패 사례들이 나열되어 있습니다.

0. 목표 합의 (한 메시지)

대상 청중(사용하기를 바라는 사람이 아니라 실제 앱에 머무르는 사람), 채널(Meta / YouTube Shorts / TikTok), 보여줄 하나의 기능, 그리고 크레딧 예산. 성인 청중은 느린 페이스, 큰 텍스트, 화면 속 또래, 구체적인 혜택(돈, 시간)을 원합니다. 예산 없이 유료 생성을 시작하지 마십시오.

1. 이미 효과가 있는 참조 찾기

python3 $S/find_reference_ads.py search --country KR --objective app_install --period 180 --order like
python3 $S/find_reference_ads.py search --country KR --keyword 앱테크 --lang ko
python3 $S/find_reference_ads.py download <id> <id> --out refs

4~30초 광고(재생성 모델이 지원하는 범위)를 고르되, 그 구조가 기능에 맞는 것(발견 → 시도 → 결과 → CTA)을 선택하세요. 좋아요 수는 지출에 의해 부풀려집니다; 검색 결과 내에서만 비교하고, 검색 간 비교는 하지 마십시오. 참조 비디오에는 워터마크가 있으며 해당 광고주의 소유입니다: 재생성 작업의 구조적 출처로만 사용해야 합니다.

2. 인물 캐스팅 (캐릭터 시트)

재생성 모델은 복사할 얼굴이 필요합니다. 사용자가 모델 사진이 없으면, 비디오 크레딧을 사용하기 전에 사람당 하나의 캐릭터 시트를 생성하고 사용자 승인을 받으십시오.

  • 대상: 타겟 시청자와 동질감 있는 사람(같은 연령, 지역, 직업, 의복), 모델처럼 예쁘기보다 평범한, 참조 영상의 역할(발표자, 고객, 이웃)과 일치하는.
  • 시트: 하나의 가로 이미지(약 1600x900), 포토리얼리스틱, 세 가지 뷰(정면 어깨 위 클로즈업, 반신, 전신)에 같은 사람과 의상; 중립적인 밝은 배경, 부드러운 자연광. 손은 편안하고 완전히 보이며, 다섯 손가락이 모두 보여야 함. 텍스트, 로고, 워터마크 또는 손에 든 폰 없음.
  • 프롬프트 뼈대: "Photorealistic character reference sheet of ONE fictional , <face/hair details>, wearing . Three views side by side on a plain light background: front close-up, half body, full body. Natural skin texture, soft daylight. No text, no logos, no props."

도구, 가장 저렴한 순서:

# Codex CLI 이미지 생성 (ChatGPT 플랜에 포함, 비디오 크레딧 불필요)
codex exec --skip-git-repo-check --sandbox workspace-write -C cast \
  "Use your image generation tool to create ONE image: <prompt skeleton>. Save it as ./cast_<name>.png and print its path."
  • Higgsfield(또는 다른 이미지 API)를 에이전트 도구를 통해 사용: generate_image 같은 프롬프트로, 또는 다중 뷰 시트를 위한 캐릭터 시트 워크플로우 사용. 크레딧이 소모됨; 먼저 견적 제시.
  • 사용자가 이미 비용을 지불하고 있는 이미지 모델.

이미지를 열어 확인: 뷰 전체에 걸쳐 일관된 얼굴, 자연스러운 손, 텍스트 없음, 실제 유명인이나 실제 인물과의 유사성 없음. 가상 인물은 플랫폼 또는 법률이 요구하는 경우 AI 생성임을 공개해야 합니다. 시트는 브리프 옆에 보관: 재생성 작업이 캐스트 이미지로 사용합니다.

3. 리메이크 생성

준비: 참조 비디오, 2단계의 캐릭터 시트, 앱 아이콘, 그리고 1~2개의 실제 앱 스크린샷.

AI 출력을 수리하기 쉽게 만드는 브리프 작성:

  • 참조의 박자와 페이스 유지; 캐스트, 세팅, 제품 교체. 대사는 그대로, 짧게, 대상 언어로 제공. "해봤는데…" 같은 증언 형식은 사실이 아닌 한 피하고, 시연 형식("계산해보자…") 선호.
  • 자막이나 화면 텍스트 없음 요청 (깨져서 나옴), 폰에 타이핑하는 손 클로즈업 없음 (손이 이상하게 보이고 손가락이 화면을 가로질러 교체 불가).
  • 폰 화면은 교체될 예정이므로, 폰을 고정시키고 카메라를 향하게 요청.
  • 먼저 비용 견적 제시; 가장 낮은 해상도로 드래프트; 한 번에 하나의 출력.

4. AI 출력 분석 (건드리기 전에)

python3 $S/analyze_source.py ai.mp4 work/ana        # 샷, 말 줄, 접촉 시트 work/ana/shots.jpg
python3 $S/analyze_source.py ai.mp4 work/ana --no-speech --rms 17.2-17.6   # 대사 근처 정확한 오디오 컷 포인트

shots.jpg를 봅니다. 모든 샷을 분류: 유지(사람, 장소), 화면 교체(폰이 카메라를 향함), 드롭(타이핑하는 손, 왜곡된 얼굴, 읽을 수 없는 액션). 각 대사가 어느 샷에서 말해지는지 기록. 인식기의 대사 시작점은 종종 0.3~0.7초 빠름: 오디오를 자르기 전에 --rms로 확인.

5. 모든 폰에 실제 앱 넣기

python3 $S/screen_replace.py auto ai.mp4 3.33 6.50 app.mp4 work/shotB.mp4 --work work/B --app-start 2.4
python3 $S/screen_replace.py auto ai.mp4 17.46 21.25 app.mp4 work/shotE.mp4 --work work/E --app-start 10.6 --blank 0,1740,1080,2020

auto는 샷을 추출하고(범위 내 컷에서 멈춤), 키 프레임과 화면 모서리를 찾아 베젤에 스냅, 샷 전체에 걸쳐 폰을 추적(평면 추적, 양방향, 회전 포함), 매칭된 밝기와 약간의 눈부심으로 합성, work/X/key_preview.png(사각형 + 픽셀 그리드)와 work/X/qa.png(원본 vs 합성)를 씁니다.

항상 두 이미지를 모두 여십시오. 사각형이 잘못되었으면, 그리드에서 모서리를 읽고 --key K --quad "x,y x,y x,y x,y"(TL TR BR BR, 내부 화면 가장자리)로 다시 실행하십시오. 분석의 안전 범위에서 START/END를 사용하십시오. 앱 클립을 대사에 맞추세요: 사람이 질문할 때 입력 화면을, 반응할 때 결과 화면을 보여주세요. --blank로 구식 UI나 개인 정보가 포함된 UI를 페인트 아웃하십시오(앱 픽셀 좌표).

6. 결과 순간 및 텍스트 구축

python3 $S/pop_highlight.py result_clip.mp4 x0,y0,x1,y1 work/pop.mp4 --blank 0,975,720,1145   # 주요 숫자 팝, 글로우, 스파클
python3 $S/captions.py captions.json work/caps     # 후크, 줄 자막, 엔드 카드 (PNG)

텍스트 규칙: 첫 프레임에 후크(시청자가 가질 질문), 말 줄당 하나의 자막, 최대 두 줄, 크고, 높은 대비, 하단 20%와 오른쪽 가장자리 밖, 시청자가 읽어야 하는 앱 UI 위에 절대 배치하지 않음. 사용자가 수락하는 최소한의 텍스트 유지; 법적으로 요구되는 공지는 작게 유지. 엔드 카드 = 앱 아이콘 + 이름 (+ 사용자가 원할 경우 CTA).

7. 싱크를 유지하며 조립

타임라인 JSON(형식은 scripts/assemble.py --help)을 작성하고 실행:

python3 $S/assemble.py timeline.json out.mp4
  • 오디오는 소스 자체 오디오를 세그먼트로 잘라 사용; 말하는 얼굴이 있는 모든 샷은 비디오와 오디오에 동일한 소스 시간을 사용. 앱 화면, 와이드 샷, 엔드 카드 위에서는 대사가 음성 해설로 재생될 수 있음.
  • 모든 것을 빠르게 하는 대신 정적 구간(대사 앞 정적, 샷 사이)을 제거하십시오.
  • 사람 샷은 첫 프레임부터 움직여야 함: 절대 시간을 채우기 위해 얼굴을 정지시키지 마십시오; 반응을 늘리려면 프레임 보간(minterpolate)으로 무음 부분을 슬로우 모션하고 필요한 것보다 약간 더 많은 소스를 공급하십시오.
  • 디졸브는 컷 포인트 이후의 실제 프레임을 사용; 앱 화면은 하드 컷 가능.
  • 비디오와 오디오 총 길이가 일치해야 함(그렇지 않으면 도구가 거부).

8. 까다로운 시청자처럼 검증

python3 $S/verify.py out.mp4 --forbid ai.mp4:10.79-17.29 --person 0-3.2 --person 5.2-8.8 --sheet work/sheet.jpg

그런 다음 시트를 보고, 대본을 자막과 비교하여 읽고, 한 번 시청하십시오. 일반적인 실수: 다음 샷의 경계 프레임, 4프레임 동안 정지된 얼굴, 잘못된 얼굴 위에서 재생되는 대사, 교체된 화면 가장자리의 가짜 UI, 앱을 가리는 텍스트, 앱 UI 위에 남아 있는 후크. 수정 후 사용자에게 보여주기 전에 다시 검증하십시오.

9. 전달

하나의 폴더: 최종 mp4, AI 원시 출력, 합성 파일, 타임라인 JSON, 타임라인 테이블이 포함된 README, 사용된 크레딧, 공개된 위험(AI 인물 공개, 증언 문구, 잘못 발음된 브랜드 이름). 독립적인 검토가 필요할 때, 새로운 컨텍스트의 리뷰어에게 프레임 시트, 대본 및 타임라인을 전달하고 유지할 구조를 알려주십시오: "규정을 준수하고 더 빠르게 만들어라"라고만 말한 리뷰어는 사람과 앱 영상을 삭제할 것입니다.

관련 스킬