Sign In
조이의 연습장 (Blog)

클로드 코드 멀티 에이전트로 상세페이지 현지화 자동화 #3 - 이미지 생성 삽질편

조이
Category
  1. 자동화
2편을 적고 한달이 지나서야 3편을.. 🥹 일은 다 진행해놓고 바쁘다는 핑계로 못 적었네요. 초심자의 마음으로 다시 적습니다. 스타또-!
솔직히 텍스트 쪽은 비교적 순탄했어요. 번역하고 카피 쓰고 검수하면 끝이니까요.
진짜 문제는 이미지였습니다.

프롬프트를 쓰는 건 사람이 아니라 에이전트다

이미지 생성 얘기를 하면 대부분 이렇게 생각합니다. "프롬프트를 잘 쓰면 되는 거 아니야?"
맞는 말인데, 이 시스템에서는 프롬프트를 쓰는 게 내가 아니라 에이전트입니다.

일반적인 AI 이미지 생성 워크플로우

사람이 프롬프트 작성 → AI가 이미지 생성 → 결과 확인 → 마음에 안 들면 프롬프트 수정 → 재생성 → 반복...
근데 이러면 자동화가 아닙니다.
이미지 하나에 사람이 프롬프트를 3번 고치면, 8장짜리 상세페이지를 4개 나라에 만드는 데 프롬프트를 96번 수정해야 해요. 그건 그냥 노가다입니다. 웩

이 시스템의 워크플로우

Image Analyst가 이미지 분석 → Image Generator가 분석 결과 + 시장 조사 + 스킬 지침을 조합해서 → 스스로 프롬프트를 작성하고 → Gemini API를 호출 → QA가 검수 → 실패하면 자동 재생성
사람은 프롬프트를 한 번도 안 씁니다. 대신 에이전트가 매번 일관되게 좋은 프롬프트를 쓸 수 있도록, 스킬 파일(SKILL.md)에 규칙을 구체적으로 적어두는 거예요.
그래서 이 글에서 "프롬프트에 이렇게 썼다"는 건, 내가 직접 쓴 게 아니라 에이전트가 이렇게 쓰도록 지침을 만들었다는 뜻입니다.
이 차이가 중요합니다. 프롬프트 하나를 잘 쓰는 건 쉬워요. 에이전트가 매번 알아서 그 수준의 프롬프트를 쓰게 만드는 게 어려운 거예요.

제품 이미지 변형 문제: "이것만 바꾸고 나머지는 건드리지 마"

상세페이지 이미지를 현지화할 때 규칙은 단순합니다:
✅ 바꿔야 하는 것: 모델(인물), 배경 스타일, 텍스트 언어 ❌ 절대 바꾸면 안 되는 것: 제품 색상, 형태, 라벨, 디자인
근데 AI 이미지 생성 모델(Gemini)한테 "모델만 바꿔줘"라고 하면, 높은 확률로 제품도 같이 바꿔버립니다.
민트색 병이 초록색이 됩니다. 원통형 병이 살짝 뭉툭해집니다. 브랜드 라벨 글자가 깨집니다.. 진짜로요.
"프롬프트를 잘 쓰면 해결되지 않나?"라고 생각했는데, 결국 돌아오는 건 같은 문제입니다. 그 좋은 프롬프트를 에이전트가 매번 알아서 쓰게 만들어야 한다는 것.


해결책 #1: 원본 참조 이미지 3장 전송

가장 효과적이었던 방법은, 제품 원본 누끼컷을 최소 3장 Gemini API에 참조 이미지로 보내는 것입니다.
parts = [ # 1~3순위: 제품 원본 컷 (이걸 보고 제품을 보존해!) types.Part.from_bytes(data=bottle_front), # 정면 types.Part.from_bytes(data=bottle_side), # 측면 types.Part.from_bytes(data=bottle_detail), # 라벨 상세 # 4순위: 실제 편집할 소스 이미지 types.Part.from_bytes(data=source_image), # 5순위: 프롬프트 types.Part.from_text(text=prompt) ]
순서가 중요합니다. 제품 컷을 1~3번째로 보내야 해요. Gemini가 앞쪽 이미지를 더 강하게 참조하는 경향이 있거든요. 소스 이미지를 먼저 보내면 "이 이미지를 변형해야겠다"고 해석하는 것 같습니다.
3장을 보내기 전에는 제품 색상이 바뀌는 확률이 체감 50% 이상이었는데, 3장을 넣고 나서는 10% 미만으로 줄었습니다.

해결책 #2: 프롬프트 시작 문구 강제

모든 이미지 생성 프롬프트를 이 문장으로 시작하게 강제했습니다:
"Maintain consistent product image across all outputs. The product bottle must look EXACTLY like the three reference product images provided. Do NOT modify the product's color, shape, label, or design in any way."
그리고 프롬프트 하단에도 한번 더:
CRITICAL REQUIREMENTS - DO NOT CHANGE: 1. The product bottle must look IDENTICAL to the first reference image 2. The product texture must remain CLEAR and TRANSPARENT 3. The overall composition and layout must stay similar
이게 에이전트 지침서(SKILL.md)에 규칙으로 적혀 있어서, Image Generator 에이전트가 프롬프트를 짤 때 자동으로 이 패턴을 따릅니다.

해결책 #3: 키워드 나열 금지, 서술형 프롬프트 필수

초기에는 에이전트가 이런 식의 프롬프트를 생성했습니다:
❌ "Japanese text, product image, high quality, mint green bottle, transparent gel, clean background"
결과가 안 좋았어요. 키워드만 나열하면 Gemini가 각 키워드를 독립적으로 해석해서, "mint green"을 강조하다가 병이 더 초록색이 되거나 합니다.
이렇게 나올 수 있도록 에이전트를 바꿨습니다:
✅ "This is a 'How to Use' instructional photo showing two hands against a soft beige background. The upper hand is holding a mint green shampoo bottle at an angle, squeezing out the product. The shampoo being poured is a CLEAR, TRANSPARENT GEL-LIKE LIQUID - NOT foam, NOT white, NOT opaque..."
최소 50줄 이상의 상세한 서술을 쓰게 했습니다. 이미지의 모든 요소를 문장으로 묘사하면, AI가 "아 이 이미지가 이런 구성이구나"를 더 정확하게 이해합니다.
특히 제품 제형(투명 젤인지, 흰색 크림인지)을 명시하는 게 중요했어요. 안 쓰면 투명 젤이 흰색 거품으로 바뀌는 경우가 있었습니다.

AI 이미지 생성의 한계: 라벨 텍스트 흐림

가장 큰 미해결 문제입니다.
AI가 이미지를 생성할 때, 제품 라벨의 텍스트가 뭉개집니다. "More than 8"이 뿌옇게 보이거나, "Restore Shampoo"가 흐릿해지거나.
프롬프트에 이렇게까지 강조해도:
⚠️ PRODUCT LABEL TEXT MUST BE SHARP AND LEGIBLE (CRITICAL!) - "More than 8" brand logo - MUST be SHARP at 200% zoom - "Restore Shampoo" product name - MUST be clearly readable - Copy the label EXACTLY as shown in the product cut reference - If the label appears even slightly blurry, the generation has FAILED
100% 보장이 안 됩니다. 이건 현재 AI 이미지 생성 모델의 한계예요.

현실적인 대응 방법

1.
프롬프트에서 선명도를 3번 이상 강조 (완전 해결은 아니지만 확률 개선)
2.
QA 에이전트가 라벨 흐림을 감지하면 자동 재생성 (최대 2회)
3.
2번 재생성해도 안 되면 → without-text 버전 + Figma에서 수동 합성
without-text 버전을 만드는 이유가 여기 있었습니다. AI가 라벨을 뭉개면, 깨끗한 버전 위에 원본 누끼컷을 레이어로 올리는 게 현실적인 대안이에요.
이제는 정말 1도 안 깨지는..!!

Image Analyst를 별도 에이전트로 분리한 이유

"분석 따로, 생성 따로 할 필요 있나?"라는 생각이 들 수 있는데, 이걸 합치면 결과가 확실히 안 좋아집니다.
Image Analyst 없이 바로 생성했을 때 생긴 문제들:
Before/After 이미지에서 "무엇이 비교되는 건지" 파악 못함 → 양쪽 머리색이 달라짐
How-to-Use 이미지에서 단계 순서를 놓침
이미지의 핵심 메시지를 무시하고 텍스트만 바꿈
Image Analyst가 "이 이미지가 뭘 말하려는 건지"를 먼저 분석하고, 그 맥락을 Image Generator한테 넘기니까 실수가 크게 줄었어요. (2편에서 보여드린 분석
JSON 구조처럼, "질감 차이가 핵심이다", "모델 바꿔도 머리색은 양쪽 동일해야 한다" 같은 맥락이 전달됩니다.)

그 외 삽질 기록

아마존 크롤러를 포기한 이야기

원래 설계에는 Crawler Agent가 있었습니다. 아마존에서 경쟁사 상세페이지를 긁어오는 역할이었는데... 아마존이 다 막아놨더라고요.
WebFetch로 아마존 상품 페이지에 접근하면 봇 감지에 걸립니다. 결국 크롤러 에이전트는 폐기하고, WebSearch + Best Sellers 페이지 조합으로 우회했습니다.
Best Sellers 페이지는 비교적 접근이 되고, WebSearch로 트렌드/키워드 정보를 보완하는 식이에요. 완벽하진 않지만, 시장 조사 용도로는 충분합니다.
.claude/agents/ 폴더에 crawler-agent.md가 아직 남아있는 건... 나중에 혹시 방법이 생기면 살릴까 싶어서요.

스킬 파일(SKILL.md) 작성에서 배운 것

이미지 생성 스킬 파일이 가장 길고 상세합니다. 이유가 있어요.
"자연스럽게 생성해줘"라고 쓰면 품질이 들쭉날쭉합니다. 대신 이렇게 구체적으로 쓰면:
## 프롬프트 작성 원칙 #### ❌ 금지: 키워드 나열 "Japanese text, product image, high quality..." #### ✅ 필수: 서술형 문장 "This is a 'How to Use' instructional photo showing..." #### 필수 포함 섹션 1. SCENE DESCRIPTION - 원본 이미지 상세 묘사 2. YOUR TASK - 수행할 작업 3. TEXT CHANGES - 변경할 텍스트 목록 4. CRITICAL REQUIREMENTS - 변경 금지 사항
에이전트가 이 스킬을 읽으면, 자연스럽게 이 패턴을 따라서 프롬프트를 작성합니다. 매번 일일이 지시할 필요가 없어요.
스킬 파일의 구체성 = 결과물의 안정성이라는 걸 뼈저리게 느꼈습니다.

시리즈를 마치며

3편에 걸쳐서 공유한 이 시스템을 요약하면:
구조
6개 서브에이전트 + 6개 스킬(매뉴얼)
스킬에 구체적인 지침을 쓰고, 에이전트가 참조하면서 실행
YAML 설정으로 국가/브랜드 확장
파이프라인
시장 조사 → (사람 확인) → 번역 → 카피 → 이미지 분석 → 이미지 생성 → QA → 저장
시장 조사 캐시로 반복 비용 절감
QA 실패 시 자동 재실행
이미지 핵심
제품 원본 컷 3장을 참조 이미지로 보내기
서술형 프롬프트 (최소 50줄)
with-text / without-text 2버전 필수
라벨 흐림은 아직 AI의 한계
현재 한계
Gemini 라벨 텍스트 가끔 흐림 → without-text + 수동 합성이 현실적
아마존 크롤링 차단 → WebSearch 우회
같은 프롬프트인데 결과 편차 → 참조 이미지 3장이 현재 최선
한 나라에 2-3일 걸리던 작업이 10-15분으로 줄었습니다. 이 시스템 만드는 데 시간이 꽤 걸리긴 했지만, 한번 만들어놓으니 제품이 추가될 때마다 "현지화해줘" 한마디면 돌아갑니다.
Claude Code의 서브에이전트 시스템이 생각보다 강력합니다. AI한테 일 시키기가 아니라 AI 팀을 구성하기에 가까운 경험이었어요.
Claude Code 멀티 에이전트로 상세페이지 현지화 자동화
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
👍
1
이름 없는 황갈 서리
이번글에는 중요한 정보가 진짜 많네요 감사합니다
See latest comments