
광고 카피 10개 일괄 생성 LLM 시스템 구현 (Google/Meta/X 대응)
요약
본 글은 마케팅 현장의 고질적인 문제인 광고 카피의 다양성 부족과 느린 A/B 테스트 사이클을 해결하는 LLM 기반 시스템 아키텍처를 제시합니다. Google, Meta, X 등 여러 플랫폼에 대응하여 병렬로 다수의 카피를 생성하며, OpenAI API 속도 제한 및 비용 관리를 위한 구체적인 기술적 고려사항들을 설명합니다.
핵심 포인트
- 플랫폼별 제약 조건을 설정 객체로 추상화하여 확장성을 확보했습니다.
- Promise.allSettled 등을 활용해 여러 플랫폼의 카피 생성을 병렬 처리하여 레이턴시를 단축합니다.
- 캐싱 전략(hash(product_info + platform))을 도입하여 API 호출 비용을 효율적으로 관리할 수 있습니다.
- 구조화된 출력과 다양성 스코어링을 통해 A/B 테스트의 과학적 근거를 마련했습니다.
광고 카피 10개 일괄 생성하는 LLM 시스템 구현 [Google/Meta/X 대응]
서론: 광고 카피 제작의 '현장의 고통'
마케터나 엔지니어가 광고 운영을 시작하면 반드시 부딪히는 벽이 있다. 바로 카피의 다양성 부족이다.
'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

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기