광고 크리에이티브 피로도(creative fatigue), 임베딩으로 미리 잡기
같은 광고를 3주째 돌리는데 CTR이 슬슬 빠집니다. 언제 갈아치워야 할까. 이미지·텍스트 임베딩으로 "기존 자산과 다른 새 후보"를 자동 추천하는 운영 워크플로우.
“같은 광고 3주째 돌리니까 CTR이 1.8 → 1.1로 빠졌어요. 갈아치울까요?” — 매주 한 번쯤 받는 질문. 갈아치우는 건 쉽지만 “무엇으로?”가 어려워요. 새 크리에이티브 후보가 기존과 비슷하면 또 같은 함정에 빠집니다. 이 글은 이미지·텍스트 임베딩으로 피로도를 정량화하고, “기존 자산과 가장 다른 신선한 후보”를 자동 추천하는 운영 파이프라인입니다.
피로도(creative fatigue)는 진짜 있는 현상인가
네, 거의 모든 디지털 광고에서 측정 가능한 패턴이에요. 한 사람한테 같은 광고가 반복 노출되면 CTR/CVR이 떨어집니다. Meta는 “Frequency 7 이상에서 CTR -40%” 같은 자체 리포트를 분기마다 발표하고, Google도 비슷한 패턴을 인정해요.
기본 메커니즘:
- 주의 감소 — 본 적 있는 광고는 시각적으로 더 빨리 스킵됨
- 매력 감소 — “이미 지나간 카피”로 인식
- 광고 회피 학습 — 그 채널에서 광고 자체를 안 봄
대시보드에서는 보통 frequency(평균 노출 횟수)를 같이 보면 진단됩니다. CTR이 빠지는데 frequency가 5 이상으로 올라갔다면 99% 피로도예요.
# 기본 진단 — frequency vs CTR 분포import pandas as pdimport numpy as np
df = pd.read_csv("ad_performance_daily.csv")# 컬럼: ad_id, date, impressions, clicks, reach, ctr, frequency
# frequency 구간별 평균 CTRdf["freq_bucket"] = pd.cut(df["frequency"], bins=[0, 1.5, 3, 5, 7, 100])print(df.groupby("freq_bucket")["ctr"].mean())피로도 지표의 정의 — fatigue score
단순한 CTR-vs-시간 회귀가 한 변수예요. 더 좋은 정의는 예상 CTR(첫 1주 평균) 대비 현재 CTR의 비율:
실무 임계:
| fatigue score | 상태 | 권장 액션 |
|---|---|---|
| 0.0 ~ 0.1 | 신선 | 유지 |
| 0.1 ~ 0.3 | 주의 | 새 변형 1개 준비 |
| 0.3 ~ 0.5 | 피로 | 신선한 후보로 교체 시작 |
| 0.5 ~ | 강한 피로 | 즉시 교체, 학습 분배 재시작 |
임베딩으로 “신선함”을 정량화
피로도를 잡는 건 분석이고, 진짜 어려운 건 “무엇으로 갈아치울까”예요. 새 후보가 기존 자산과 너무 비슷하면 또 빨리 피로해집니다. 이걸 잡는 게 임베딩 기반 신선도(novelty) 점수.
광고 자산을 벡터로 만들기
광고 = 이미지 + 카피 텍스트. 둘 다 임베딩 가능.
각 광고 자산은 이미지 벡터(768차원) + 텍스트 벡터(1536차원)로 표현됩니다. 둘을 concat하거나 평균내서 단일 벡터로 만들어요.
Novelty score = 기존 자산과의 평균 거리
신선도 점수의 정의는 단순:
- = 지난 90일 운영 자산 풀
- 점수가 1에 가까울수록 기존과 다름, 0에 가까울수록 비슷함
새 후보 5개를 점수로 줄세우면 다음과 같아요.
| 후보 | Novelty | 해석 |
|---|---|---|
| 후보 1 | 0.412 | 신선 |
| 후보 2 | 0.388 | 신선 |
| 후보 3 | 0.291 | 기존과 비슷 ⚠️ — fatigue reset 효과 약함 |
| 후보 4 | 0.367 | 적당 |
| 후보 5 | 0.435 | 가장 신선 ✅ |
이 점수만 보면 후보 5번이 가장 신선해서 fatigue reset 효과가 클 거예요. 단, novelty가 너무 높으면 “브랜드 톤 이탈”일 수도 있으니 다음 항목과 함께 봅니다.
종합 점수 — Novelty × Brand-fit × 예상 CTR
세 점수의 가중합이 최종 후보 선정 기준이에요.
기본 가중치는 정도. 도메인에 따라 튜닝.
| 후보 | Novelty | Brand-fit | 예상 CTR | 종합 score | 순위 |
|---|---|---|---|---|---|
| 5 | 0.435 | 0.66 | 2.10 | 0.660 | 1 |
| 1 | 0.412 | 0.78 | 1.80 | 0.624 | 2 |
| 4 | 0.367 | 0.85 | 1.70 | 0.609 | 3 |
| 2 | 0.388 | 0.82 | 1.60 | 0.582 | 4 |
| 3 | 0.291 | 0.91 | 1.40 | 0.508 | 5 |
후보 5번이 가장 점수 높아 다음 캠페인 후보 1순위로 추천됩니다. 단, brand_fit이 0.66으로 다른 후보보다 낮으니 마지막에 사람 검수 한 번 거치는 룰. 자동 추천 + 사람 마지막 검수가 운영 안전성의 핵심.
실무 워크플로우 — 매주 한 번 돌리는 잡
1) 매주 월요일 새벽
- 운영 중인 광고들의 fatigue score 계산
- fatigue ≥ 0.3인 광고를 “교체 대상 리스트”에 적재
2) 후보 풀 임베딩 갱신
- 디자인팀이 만든 새 자산 + LLM이 생성한 카피 후보를 모두 임베딩
- 기존 90일 운영 자산 임베딩 캐시 갱신
3) 추천 알고리즘 실행
- 교체 대상별로 최적 후보 3~5개 추천 (novelty × brand_fit × pred_ctr)
- 슬랙 봇으로 운영자에게 알림
4) 운영자 검수 + 광고 매니저 업로드
- 사람이 마지막 검수 (정책·브랜드 톤 확인)
- 광고 매니저에 새 자산 활성화 + 기존 자산 비활성화
이 4단계를 자동화하면 운영자가 “이 광고 갈아치울 때 됐는데 뭘로?”를 매주 직접 고민할 필요가 없어져요.
운영 팁 — 자주 부딪히는 것들
1) Frequency cap이 우선
피로도의 1차 원인은 “같은 사람에게 너무 자주 노출”. fatigue score를 보기 전에 frequency cap(예: 주당 5회 이하)을 먼저 거는 게 더 큰 효과.
2) 브랜드 자산 임베딩 캐시
브랜드 가이드라인 평균 벡터는 분기에 한 번만 갱신해도 충분. 매주 다시 계산할 필요 없음.
3) 일찍 피로해지는 자산 패턴
도메인별로 다르지만 자주 보이는 패턴:
- 단순한 “세일 / 할인” 메시지”는 평균 fatigue 가속도가 빠름
- 스토리형 카피는 fatigue가 느리지만 첫 주 CTR이 낮은 편 (slow burner)
- 사람 얼굴이 들어간 광고가 일러스트보다 fatigue 빠름 (시각적 특이성 부족 시)
4) Cross-platform 피로도
같은 사용자가 인스타·페이스북·메신저에서 같은 광고를 본다면 frequency가 합산돼야 합니다. Meta Ads는 “Account-level frequency”로 통합 측정 가능. 안 켜져 있으면 켜세요.
마치며
크리에이티브의 신선함은 직관의 영역이었지만, 임베딩 시대에는 벡터 공간의 거리로 정량화됩니다. fatigue score + novelty score 두 개를 운영 대시보드에 넣고, 매주 자동 추천을 돌리면 운영자의 일이 “피로한 광고 찾기”가 아니라 “추천된 후보 검수하기”로 바뀝니다. 같은 인력으로 더 많은 캠페인을 돌릴 수 있는 가장 큰 레버 중 하나예요.
다음 글에서는 마케터 보고서에 자주 숨는 통계적 함정 — Simpson’s Paradox를 다뤄볼게요.
참고
- OpenAI CLIP — 이미지·텍스트 통합 임베딩 모델, 광고 자산 벡터화 표준
- text-embedding-3 — OpenAI 공식 문서
- Meta — Ad Frequency Best Practices — frequency cap 권장 설정
- Creative Fatigue in Digital Advertising — Nielsen 2023 백서 — 산업 평균 fatigue 곡선
- How Brands Grow — Byron Sharp — 광고 도달과 침투의 본질
AI·LLM 카테고리의 다른 글
전체 보기 →-
2026·05·16
LLM 운영 비용 폭주를 막는 6가지 guardrail — 마케팅 자동화의 cost·latency·품질 동시 관리
LLM을 운영에 올리면 어느 날 갑자기 비용이 10배로 튑니다. retry storm·프롬프트 폭증·모델 자동 승격·context 누적 등 폭주 패턴 6가지와 그것을 막는 guardrail을 정리합니다.
-
2026·05·10
LLM evaluation harness — 분기마다 챗봇 품질을 자동 평가하는 공장
챗봇·에이전트가 운영에 들어가면 한 번 평가가 아니라 분기 자동 평가가 필요합니다. 골든셋·regression·hyperparameter A/B를 묶는 evaluation harness 설계와 마케팅 자리에서의 적용.
-
2026·05·09
Context engineering — 200k 토큰 컨텍스트의 설계 원칙 5가지
컨텍스트 창이 200k 토큰까지 커졌지만 단순히 다 넣으면 lost-in-the-middle·비용 폭발·정확도 하락이 옵니다. 마케팅 자동화에 적용하는 5가지 컨텍스트 설계 원칙.
-
2026·05·09
Function calling 설계 패턴 — LLM이 도구를 부를 때 마케터가 점검할 것
LLM이 광고 API·BigQuery·Slack을 직접 부르기 시작하면, 답변 품질보다 "어느 도구를 언제 부를지"가 운영 사고의 진앙이 됩니다. function calling의 한 줄 직관과 마케터가 점검할 5가지.