Sign In
조이의 연습장

클로드 코드 멀티 에이전트로 상세페이지 현지화 #2 - 파이프라인편

조이
Category
  1. 자동화
1편에서 6명의 에이전트와 6개의 스킬로 시스템을 설계한 이야기를 했습니다.
설계만 하면 뭐합니까. 실제로 돌아가야죠!
이번 편에서는 "제품 하나 현지화해줘"라고 했을 때, 이 에이전트들이 어떤 순서로 무슨 일을 하는지 파이프라인 전체를 보여드릴게요.

전체 파이프라인 한눈에 보기

Phase 0: 📥 데이터 읽기 Google Sheets(텍스트) + Drive(이미지) │ ▼ Phase 1: 🔍 시장 조사 "일본에서 헤어케어 뭐가 잘 팔려?" │ ▼ ⏸️ 사람이 한번 확인 ← 여기서 멈춤! │ ▼ Phase 2: 📝 번역 → 카피라이팅 (순차) │ ▼ Phase 3: 🖼️ 이미지 분석 → 이미지 생성 (순차) │ ▼ Phase 4: ✅ 검수 (텍스트 + 이미지 동시) │ 실패하면 → 위로 돌아감 ▼ Phase 5: 📤 저장 Sheets + Drive + Figma
하나씩 뜯어볼게요.

Phase 0: 입력 데이터 가져오기

사용자가 이렇게 말합니다:
"이 스프레드시트의 제품을 미국/일본용으로 현지화해줘 텍스트: [Google Sheets URL] 이미지: [Google Drive URL]"
Orchestrator가 URL을 파싱해서 스프레드시트에서 제품 정보를, Drive에서 이미지 목록을 가져옵니다. 타겟 국가를 확인하고 파이프라인을 시작해요.
로컬 파일도 됩니다. data/input/{brand}/{product_id}/ 폴더에 JSON이랑 이미지를 넣어두면 똑같이 동작합니다.

Phase 1: 시장 조사 - 모든 결정의 기반

Market Researcher 에이전트가 타겟 국가별로 조사를 합니다.

캐시 우선 정책

매번 조사하면 시간이 오래 걸리니까, 캐시 우선 정책을 적용했어요.
# 의사코드 def should_research(country): cache = f"config/market-research/{country}.json" if cache 있음 and 30일 이내: return False # 캐시 사용 return True # 신규 조사
config/market-research/JP.json이 이미 있으면 조사를 건너뜁니다. 같은 나라에 제품을 여러 개 올릴 때 시간 절약이 큽니다. 근데 1년 뒤에도 이 조사 내용이 유효할 리는 없잖아요? 그래서 30일 이내 정책을 뒀어요. 30일 이후에는 조사를 다시 수행하게 하는 거죠.

조사 항목

아마존 베스트셀러 분석 (Best Sellers 페이지 기준, 광고 제외)
K-Beauty 브랜드 포지셔닝
현지 마케팅 키워드
모델 선호도 (이게 이미지 생성에 직접 영향)
현지 법규 (미국 FDA, 일본 약사법 등)
조사 결과에는 이런 게 들어갑니다:
{ "country": "JP", "image_localization": { "model_replacement_required": true, "target_model_demographics": "Japanese female, 25-35, natural look", "style_adaptation": { "apply": true, "changes": ["미니멀 스타일", "부드러운 톤"] } }, "text_localization": { "before_after_terms": { "before": "ご使用前", "after": "ご使用後" } } }
model_replacement_required: true - 이 한 줄이 나중에 Image Generator한테 "일본인 모델로 바꿔"라고 지시하는 근거가 됩니다.

여기서 한번 멈춘다

Phase 1이 끝나면 시스템이 자동으로 멈춥니다. 결과를 사용자한테 보여주고 승인을 기다려요.
═══════════════════════════════════════ 📊 시장 조사 결과 - 검토 필요 ═══════════════════════════════════════ 🇯🇵 JP (일본) ──────────────────────────── 📚 참조 소스: - Amazon Japan Hair Care Best Sellers - @cosme 트렌드 리포트 - 厚生労働省 薬機法 가이드 🏆 경쟁사: - #1 BOTANIST Shampoo - #2 &honey シャンプー - K-Beauty 탑10 진입: 1개 📋 핵심: - 모델 교체: Yes (일본인 모델 선호) - 스타일: 미니멀, 엘레강스 👉 [1] 진행 [2] 수정 [3] 상세
처음에는 풀 자동화를 했었는데, 시장 조사가 잘못되면 이후 전부 엉뚱한 방향으로 갑니다. "일본에서 모델 교체 안 해도 됨"이라고 잘못 판단하면, 한국인 모델이 그대로 일본 아마존에 올라갈 수도 있거든요.
어떤 자료를 보고 이런 결론을 냈는지 참조 소스까지 보여주는 게 포인트입니다. 사람이 한번 보고 "OK" 하면 나머지가 쭉 돌아갑니다.

Phase 2: 번역 → 카피라이팅 (순차 실행)

여기서 중요한 건 순서입니다. 번역이 먼저, 카피가 나중.
Translator ──→ Copywriter (정확한 의미) (판매용 최적화)
왜 분리했을까요? 번역과 카피라이팅은 목표가 다릅니다.

Translator: 정확한 의미 전달

Translator가 하는 일:
"송이버섯 추출물" → "Matsutake Extract" (용어집 참조)
"탈모 예방" → "supports healthy hair" (FDA 규정 때문에 완화)
"300ml" → "10.1 fl oz" (단위 변환)
경어체 적용 (일본어는 です/ます체)
이 단계의 목표는 정확한 의미 전달입니다.

Copywriter: 아마존 SEO 카피 최적화

그다음 Copywriter가 번역 결과를 받아서:
아마존 제목 포맷으로 재구성 (200자 이내, 키워드 배치)
불릿포인트 5개 작성 (혜택 중심)
백엔드 키워드 생성 (250바이트)
국가별 톤 적용 (미국: 직접적 / 일본: 공손)
변환 전후를 보면:
번역 결과: "0000 리스토어 샴푸 - 마츠타케 추출물로 두피 케어" 카피라이팅 후: "0000 Restore Shampoo - Matsutake Extract for Healthy Scalp & Fuller Hair | K-Beauty | Sulfate-Free | 10.1 fl oz"
한 에이전트가 둘 다 하면 번역 정확도랑 SEO 최적화 사이에서 어정쩡해집니다. 분리하니까 각자 맡은 일에 집중할 수 있어요.

Phase 3: 이미지 분석 → 생성 (순차 실행)

이미지도 마찬가지로 두 단계입니다.
Image Analyst ──→ Image Generator (뭘 바꿔야 하는지) (실제로 바꾸기)

Image Analyst: 이미지의 의도 파악

단순히 "여기 텍스트 있고, 여기 사람 있고" 수준이 아닙니다. 이미지가 뭘 말하려는 건지 파악하게 했어요.
예를 들어 Before/After 비교 이미지:
{ "image_intent": { "type": "before_after", "core_message": "샴푸 사용 전후 머릿결 질감 변화" }, "comparison_analysis": { "what_is_compared": "머릿결 질감", "before_state": ["머리카락 흩어짐", "윤기 없음"], "after_state": ["정돈된 흐름", "빛 반사 윤기"], "must_preserve": "질감 차이가 핵심 메시지!", "warning": "모델 바꿔도 양쪽 머리색은 동일해야 함" } }
"질감 차이를 보여주는 게 이 이미지의 핵심이다", "모델을 바꿔도 머리색은 양쪽이 같아야 한다" - 이런 맥락을 Image Generator한테 넘겨야 제대로 된 결과가 나옵니다.
분석 없이 바로 생성하면 Before/After에서 양쪽 머리색이 달라지거나, 질감 차이가 사라지는 일이 생겨요.

Image Generator: Gemini API로 현지화 이미지 생성

분석 결과 + 시장 조사 결과를 받아서 Gemini API로 이미지를 생성합니다.
이때 시장 조사 결과가 핵심이에요:
market = load_json("market-research/JP.json") if market["image_localization"]["model_replacement_required"]: # "일본인 여성 모델로 교체, 같은 포즈" else: # "모델 유지, 텍스트만 변경"
시장 조사에서 "모델 교체 필요"라고 했으면 교체하고, 아니면 유지합니다. 모든 이미지 변경 결정이 데이터 기반이에요.
그리고 반드시 2가지 버전을 만듭니다:
📁 JP/ ├── 📁 with-text/ ← 일본어 텍스트 포함 완성본 │ └── thumb_01.png └── 📁 without-text/ ← 텍스트 없는 깨끗한 버전 └── thumb_01.png
without-text는 보험입니다. AI가 텍스트를 이상하게 렌더링하면, 빈 버전 위에 Figma에서 수동으로 텍스트를 올릴 수 있거든요.
(이미지 생성의 구체적인 삽질은 3편에서 자세히 다룹니다)

Phase 4: QA 검수 - haiku 모델의 체크리스트

QA Reviewer 에이전트가 텍스트와 이미지를 동시에 검수합니다.
haiku 모델을 쓰는 이유는, 체크리스트 기반 검수는 패턴 매칭에 가깝기 때문입니다. "브랜드명이 0000인가?", "제목이 200자 이내인가?" 같은 건 빠르고 가벼운 모델이면 충분해요.

텍스트 검수 항목

문법/맞춤법 오류
브랜드명 일관성
금지 표현 (FDA, 약사법 위반)
아마존 정책 (제목 200자, 불릿 5개)

이미지 검수 항목

제품 색상/형태 변형 여부 → 변형 발견 시 즉시 FAIL
제품 라벨 텍스트 선명도 → AI 생성의 고질적 문제
오버레이 텍스트 가독성
문화적 적절성
실패하면 해당 Phase를 자동으로 다시 돌립니다. 3번 연속 실패하면 "사람이 직접 확인해주세요"라고 멈춰요. 무한 루프 방지입니다.

Phase 5: 저장 - 입력한 곳에 결과가 간다

결과물은 입력한 곳과 같은 위치에 저장됩니다.
Google Sheets에서 제품 정보를 읽었으면, 같은 시트의 옆 컬럼에 결과가 들어갑니다:
| A (Field) | B (KR 원본) | C (US) | D (JP) | |--------------|---------------------|---------------------|---------------------| | product_name | 0000 리스토어 | 0000 Restore | 0000 リストア | | bullet_1 | 송이버섯 추출물 함유 | MATSUTAKE POWERED: | 松茸エキス配合: |
이미지는 Drive 입력 폴더 안에 국가별 하위폴더가 생깁니다:
📁 [입력 폴더] ├── thumb_01.jpg ← 원본 (그대로) ├── 📁 US/ │ ├── 📁 with-text/ │ └── 📁 without-text/ └── 📁 JP/ ├── 📁 with-text/ └── 📁 without-text/
Figma에도 자동으로 올라가서, 디자이너가 원본 vs 현지화 버전을 나란히 비교하게 하고 싶었는데.. → 아쉽게도 Figma MCP로 이미지 올리는 건 안 되던데 아시는 분 댓글좀 달아주세요. 진짜 안 되나?
별도 대시보드 같은 건 안 만들었습니다. 지인 회사에서 이미 쓰고 있는 Sheets, Drive, Figma에서 바로 확인할 수 있으니까요.

에이전트 간 데이터 흐름

이 파이프라인에서 제일 중요한 건, 앞 단계의 결과가 뒷 단계에 정확히 전달되는 것입니다.
시장 조사 결과 (JP.json) │ ├──→ Translator: "경어체 사용, 약사법 준수" ├──→ Copywriter: "공손한 톤, 품질 강조" └──→ Image Generator: "일본인 모델로 교체"
만약 시장 조사의 model_replacement_required: true를 Image Generator가 못 읽으면, 일본 아마존에 한국인 모델이 그대로 올라갑니다.
그래서 중간 처리 데이터를 data/processing/ 폴더에 JSON으로 저장하고, 다음 에이전트가 반드시 이 파일을 읽도록 에이전트 지침에 명시해뒀어요.
data/processing/{brand}/{product}/ ├── translation_JP.json ← Translator 출력 ├── copy_JP.json ← Copywriter 출력 ├── image_analysis/ │ ├── analysis_thumb01.json ← Image Analyst 출력 │ └── ... └── qa_report_JP.json ← QA 출력
각 에이전트의 출력이 다음 에이전트의 입력이 되는 구조입니다.

실제 실행 예시

나: "이 제품을 미국/일본용으로 현지화해줘 텍스트: [Sheets URL] 이미지: [Drive URL]" Claude: Phase 0: 제품 정보 로드 ✓ (15개 필드, 8개 이미지) Phase 1: 시장 조사... JP 캐시 있음 (스킵) / US 캐시 있음 (스킵) ⏸️ 결과 요약 → "진행" Phase 2: US 번역→카피 ✓ / JP 번역→카피 ✓ Phase 3: 이미지 분석(8장) → US 생성(16장) ✓ / JP 생성(16장) ✓ Phase 4: QA 통과 ✓ Phase 5: Sheets 업데이트 + Drive 업로드 + Figma 정리 ✓ 📋 완료: US 16장, JP 16장 생성 / Sheets 2개 국가 컬럼 추가
텍스트만 하고 싶으면 "이미지 생성 제외"라고 하면 되고, 이미지만 하고 싶으면 "텍스트는 이미 번역됨"이라고 하면 됩니다.

다음 편 예고

파이프라인은 이렇게 깔끔하게 돌아가는데... 이미지 생성 단계에서 진짜 많이 삽질했습니다.
"모델만 바꿔줘"라고 하면 제품 병 색깔까지 바꿔버리는 문제, AI가 제품 라벨 텍스트를 뭉개버리는 문제, 같은 프롬프트인데 매번 다른 결과가 나오는 문제...
3편에서는 이미지 생성에서 겪은 구체적인 문제들과, 그걸 어떻게 해결했는지 (그리고 아직 못 해결한 것들) 공유할게요.
Subscribe to 'zoeylog'
Subscribe to my site to be the first to receive notifications and emails about the latest updates, including new posts.
Join Slashpage and subscribe to 'zoeylog'!
Subscribe
👍
1