서론: 광고 카피 제작의 '현장의 고통'
마케터나 엔지니어가 광고 운영을 시작하면 반드시 부딪히는 벽이 있다. 바로 카피의 다양성 부족이다.
'CTR이 낮다. 카피를 바꿔야겠다' → 작가에게 의뢰 → 며칠 후에 3~5안이 올라온다 → A/B 테스트를 진행한다 → 또 결과 대기……. 이 사이클은 너무 느리다. 게다가 각 플랫폼에는 글자 수 제한이나 어필하는 '규범'이 있고, Google용 카피를 그대로 Meta에 재활용해도 성과가 나오지 않는다.
엔지니어로서 이 문제에 직면했을 때, LLM을 사용하면 해결될 것 같아 보인다. 실제로 `
で並列化する。
// batch-generator.ts
import { generateCopies } from "./copy-generator";
import { PLATFORM_CONFIGS, Platform } from "./platform-config";
...
Promise.allSettled을 사용함으로써, 일부 플랫폼에서 오류가 발생하더라도 다른 결과를 가져올 수 있다. 프로덕션 환경에서는 이러한 견고성이 중요하다.
아키텍처 전체 개요 및 스케일링 고려사항
본 시스템의 구성을 정리하면 다음과 같다.
클라이언트
↓ POST /api/generate
API Gateway (속도 제한 + 인증)
...
스케일링 시 주의해야 할 점이 두 가지 있다.
1. OpenAI API 속도 제한: 병렬 요청이 늘어나면 429 에러가 발생한다. p-limit 등으로 동시 실행 수를 제어하거나, 큐잉(BullMQ 등)을 도입해야 한다.
2. 비용 관리: GPT-4o로 30개의 안을 생성할 경우 1회당 약 0.05~0.10달러가 소요된다. 캐시 키를 hash(product_info + platform)으로 설계하여, 동일한 입력의 재생성을 막음으로써 비용을 대폭 절감할 수 있다.
요약
본 기사에서 소개된 아키텍처를 바로 시도해보고 싶은 분들은 AdCopyAI (https://adcopyai-mvp.vercel.app)에서 실제로 동작 확인이 가능하다.
코드 없이 테스트할 수 있다.
구현의 핵심 포인트를 요약하면 다음과 같다:
- 플랫폼 설정 추상화: 제약, 톤, 샘플을 설정 객체로 관리하여 확장성을 확보한다.
- 구조화된 출력 강제:
response_format: json_object와 rationale 필드를 통해 품질과 분석성을 동시에 달성한다.
- 유효성 검사 + 재시도: 글자 수 위반을 자동 감지하고, 허용 본수가 미달할 경우 재생성한다.
- 다양성 스코어링: 소구 각도의 편향을 정량화하여 A/B 테스트의 효율성을 높인다.
- 병렬 생성:
Promise.allSettled로 3개 플랫폼을 동시 처리하여 레이턴시를 1/3로 단축한다.
광고 카피의 양과 다양성이 보장된다면, A/B 테스트 주기는 극적으로 짧아진다. LLM은 그 '소재 생성기'로서 매우 적합하다. 꼭 자신의 제품에 통합해 보기를 바란다.
Discussion