너는 Hermes 개발 에이전트다.
아래 요구사항을 기준으로 newmeta 프로젝트를 처음부터 설계하고 구현하라. 이 프로젝트는 Meta 광고 운영 시간을 줄이기 위한 내부 자동화 플랫폼이지만, 외부 고객 광고계정 연결도 지원해야 하므로 멀티테넌트 SaaS 수준의 보안/권한/토큰 구조를 갖춰야 한다.
이 프로젝트는 단순 광고 생성기가 아니다. 핵심은 다음 6가지다.
- Meta 광고계정 연결 및 데이터 수집
- 이미지/영상 광고 소재 구성요소 해부
- 광고 성과 병목 진단
- 소재 요소와 Meta/Pixel/GA4/자사몰 성과 데이터 연결
- placement mismatch와 #1487569 오류 사전 방지
- 승인 기반 광고 Draft/실행 자동화
예산 자동 변경은 제외한다. 예산 변경 제안은 가능하지만 시스템은 예산 변경 API 실행 기능을 제공하지 않는다.
코드를 바로 작성하지 마라. 먼저 다음을 제출하라.
- 전체 아키텍처
- 모듈 의존성
- 데이터 흐름
- DB 스키마
- API 엔드포인트
- 권한/승인 플로우
- 테스트 계획
- 보안 리스크와 대응
- 비용 리스크와 대응
- 구현 순서
이 프로젝트가 단순 리포트/소재 생성기가 아니라 “AI 퍼포먼스 마케터 플랫폼”으로 설계되어 있는지 먼저 검증하라.
============================================================
- 제품 정의 ============================================================
제품명: newmeta / TOMCP / Meta Ads Creative Agent
제품 성격:
- Meta 광고 통합 분석/생성/검수/운영 보조 플랫폼.
- 사용자는 내부적으로 사용하지만 외부 고객 광고계정 연결도 가능해야 한다.
- 광고 운영 시간을 줄이는 것이 최우선 목적이다.
차별점:
- 단순 리포트가 아니라 병목 원인을 설명한다.
- 이미지/영상의 구성요소를 해부한다.
- 소재 요소와 Meta 성과를 연결한다.
- #1487569 같은 placement 오류를 사전 방지한다.
- 안전영역/텍스트/가격 정확도를 자동 검수한다.
- 승인 기반으로만 광고를 실행한다.
MVP 축소 범위는 없다. 최종 구현 범위에는 가능한 모든 기능이 포함된다. 단, 안전한 개발을 위해 구현 순서는 단계별로 진행한다.
필수 기능:
- Meta Connection & Auth
- Meta API/MCP Adapter
- Creative Analysis Engine
- Video Creative Analysis Engine
- Bottleneck Diagnosis Engine
- Performance Fusion Engine
- Placement Validator / #1487569 Guard
- Creative Renderer / Safezone Checker
- Variant Generator / A/B Test Designer
- Meta Draft Creator
- Approval Center
- Reporting Dashboard
- Policy Risk Checker
- Cost Guard
- Security / Audit / Tenant Isolation
- Settings / Integrations
제외 기능:
- 예산 자동 변경.
Meta 연결은 adapter 방식으로 설계한다.
interface MetaAdapter:
- listAdAccounts()
- listCampaigns()
- listAdSets()
- listAds()
- getInsights()
- getCreative()
- getAdImages()
- getAdVideos()
- uploadImage()
- uploadVideo()
- createCreative()
- createCampaignPaused()
- createAdSetPaused()
- createAdPaused()
- updateStatusWithApproval()
- validatePlacementCompatibility()
- getPixelDiagnostics()
- getSignalDiagnostics()
구현체:
- MetaGraphApiAdapter
- MetaMcpAdapter
- MockMetaAdapter
우선순위:
- 안정적 데이터 조회와 저장: Graph/Marketing API 직접 호출.
- AI Agent 연동: MCP Adapter.
- 테스트: Mock Adapter.
테스트:
- User Access Token 사용 가능.
내부 운영:
- System User Token 사용 가능.
외부 고객 광고계정 연결:
- OAuth / Business Login 기반.
- 고객에게 access token 직접 입력을 요구하지 마라.
- 고객별 encrypted token 저장.
- 앱 리뷰와 필요한 권한 승인을 고려한다.
필수 권한 후보:
- ads_read
- ads_management
- business_management
확장 권한 후보:
- pages_show_list
- pages_read_engagement
- instagram_basic
- instagram_manage_insights
- catalog_management, 필요 시
권한은 Settings에서 연결 상태와 누락 권한을 한글로 표시한다.
AI는 광고비에 영향을 줄 수 있는 액션을 사용자 승인 없이 실행하면 안 된다.
권한 레벨:
Level 0: Read Only
- 광고계정 조회
- 성과 분석
- 소재 분석
- 병목 진단
- 리포트 생성
Level 1: Draft Mode
- 이미지/영상 업로드
- Creative 생성
- Campaign/Ad Set/Ad를 PAUSED 상태로 생성
Level 2: Publish Approval
- 사용자가 명시적으로 승인한 경우 ACTIVE 전환 가능
- 변경 전/후 diff 표시 필수
Level 3: Destructive Approval
- 광고 중지/삭제/타겟 변경/creative 교체는 2단계 승인
- audit log 필수
Hard Block:
- 예산 자동 변경 API 실행 금지
- 예산 증액/감액은 추천만 가능
이미지 광고는 단일 점수로 평가하지 말고 구성요소별로 해부한다.
분석 항목:
A. Layout / Composition
- 시선 흐름
- 제품/텍스트/가격/CTA 위치
- 상단/중앙/하단 정보 구조
- 여백
- 정보 과밀도
- 모바일 피드 가독성
- 안전영역 침범 여부
B. Product Visibility
- 제품 bbox 면적 비율
- 제품 중심 위치
- 제품 대비
- 제품 가림 여부
- 사용 장면 존재 여부
- 배경/소품/동물 대비 제품 주목도
C. Hook Analysis
- hook 문구 위치
- hook type 분류
- 1초 내 이해 가능성
- 과장/허위 위험
Hook type:
- 질문형
- 공감형
- 반전형
- 혜택형
- 가격형
- 희소성형
- 사회적 증거형
- 비교형
- 문제제기형
- UGC형
D. Text / Copy Analysis
- OCR 추출
- top hook/main headline/subheadline/USP/CTA/price 구분
- 가독성
- 대비
- 문장 길이
- 줄바꿈
- 오탈자
- 가격 정확도
- 광고 관리자 primary text/headline/description과 비교
E. Offer / Price Analysis
- 가격 노출 여부
- 가격 가독성
- 할인/무료배송/리뷰/한정수량 등 오퍼 요소
- 충동구매 가능성
- 허위 가격 위험
F. CTA Analysis
- CTA 위치
- CTA 문구
- 가격과 CTA 연결성
- 클릭 행동 유도성
G. Design / Aesthetic Analysis
- 색상 팔레트
- 명도 대비
- 브랜드 톤
- 폰트 일관성
- 아이콘 일관성
- 감성/타겟 적합성
H. Emotional Trigger
- 귀여움
- 소장욕구
- 촉각 상상
- 선물 욕구
- 감성 소비
- 반려동물 친화성
- FOMO
- 유머
- 반전
I. Placement Fit
- Feed 적합성
- Stories/Reels 적합성
- 4:5/1:1/9:16별 크롭 리스크
- #1487569 발생 가능성
점수:
- Hook Score
- Product Visibility Score
- Layout Score
- Text Readability Score
- Offer Clarity Score
- CTA Strength Score
- Design Consistency Score
- Emotional Trigger Score
- Placement Fit Score
- Safe Area Score
- Policy Risk Score
영상 광고는 반드시 시간축으로 분해한다.
기본 분석:
- 길이
- 해상도
- 비율
- fps
- 파일 크기
- 음성 유무
- BGM 유무
- 효과음 유무
- 자막 유무
- 제품 첫 등장 시간
- 제품 총 노출 시간
- CTA 등장 시점
- 가격 등장 시점
- 컷 수
- 컷 전환 속도
시간 구간:
- 0.0~0.5초
- 0.5~1.0초
- 1~3초
- 3~5초
- 5~10초
- 10초 이후
각 구간 분석:
- 제품 등장 여부
- 사람/동물/손 등장 여부
- 텍스트 등장 여부
- 가격 등장 여부
- CTA 등장 여부
- 화면 변화량
- 사운드 변화량
- 감정 톤
- 이탈 위험
핵심 점수:
- First 3s Hook Score
- Product Timing Score
- Scene Rhythm Score
- Subtitle Score
- Audio Hook Score
- Message Clarity Score
- CTA Timing Score
- Retention Risk Score
- Placement Fit Score
- Policy Risk Score
영상은 무음 시청 가능성도 반드시 평가한다.
병목 진단은 별도 모듈로 구현한다. 목표는 “성과가 왜 막혔는지”를 퍼널 단계별로 판단하는 것이다.
진단 단계:
- Tracking/Data Quality
- Delivery
- Hook/Attention
- Product Clarity
- Click Intent
- Landing Arrival
- Product Page/Offer
- Checkout
- Revenue/ROAS
- Fatigue
- Placement Fit
입력 데이터:
Meta:
- spend
- impressions
- reach
- frequency
- clicks
- link_clicks
- outbound_clicks
- landing_page_views
- ctr
- cpc
- cpm
- actions
- action_values
- cost_per_action_type
- purchase_roas
- video play/retention metrics
Breakdowns:
- age
- gender
- publisher_platform
- platform_position
- impression_device
- country/region
- placement
- ad_format_asset
연동 가능 데이터:
- Meta Pixel
- Meta CAPI
- GA4
- 자사몰 DB
Shopify는 필수 지원하지 않는다.
데이터 충분성 기본값, 일예산 5만원 기준:
Observation:
- impressions < 500
- link_clicks < 20
- landing_page_views < 15
- purchases < 1
Weak Signal:
- impressions >= 500
- link_clicks >= 20
- landing_page_views >= 15
Actionable Signal:
- impressions >= 1,500
- link_clicks >= 50
- landing_page_views >= 30
- add_to_cart >= 5
- purchases >= 2
High Confidence:
- impressions >= 3,000
- link_clicks >= 100
- landing_page_views >= 80
- add_to_cart >= 10
- purchases >= 3~5
데이터 부족 시 확정 진단하지 말고 “관찰 필요” 또는 “신뢰도 낮음”으로 표시한다.
Creative Analysis 결과와 Bottleneck Diagnosis 결과를 연결한다.
목표:
- 소재의 어떤 요소가 어떤 성과 병목과 연결되는지 추정한다.
- 상관관계를 인과관계처럼 단정하지 않는다.
- A/B 테스트 전에는 “가설”로 표현한다.
예:
- hook_score 낮음 + CTR 낮음 = Hook 병목 가능성
- product_visibility 낮음 + CTR 낮음 = Product Clarity 병목 가능성
- offer_clarity 낮음 + CVR 낮음 = Offer 병목 가능성
- CTA 약함 + Link CTR 낮음 = Click Intent 병목 가능성
- CTR 높음 + LPV 낮음 = Landing Arrival 병목 가능성
- Frequency 상승 + CTR 하락 = Fatigue 병목 가능성
출력 형식:
- 관찰된 소재 요소
- 관련 성과 지표
- 가능한 원인
- confidence
- 개선 제안
- 다음 A/B 테스트 설계
표현 규칙:
- “원인입니다” 금지
- “가능성이 높습니다”, “추정됩니다”, “검증이 필요합니다” 사용
============================================================ 10. Placement Validator / #1487569 Guard
오류 #1487569: “광고의 크리에이티브를 선택한 노출 위치와 함께 사용할 수 없습니다.”
사전 검수:
- 이미지/영상 비율
- 해상도
- 파일 크기
- 영상 길이
- CTA
- creative type
- objective
- selected placement
- asset customization 여부
기본 출력:
- compatible
- incompatible
- risky
- requires_variant
권장 소재:
- Feed: 4:5 / 1080x1350
- Square/Carousel: 1:1 / 1080x1080
- Stories/Reels: 9:16 / 1080x1920
- Landscape/In-stream/Link preview: placement별 별도 변형
불일치 시:
- 광고 생성 요청 중단
- Feed only 제한 제안
- 9:16 variant 생성 제안
- 1:1 variant 생성 제안
- placement asset customization 제안
최종 광고 이미지는 소비자에게 보여지는 실제 광고다. 최종 이미지에는 가이드선, 안전영역 문구, 픽셀 치수, 레이아웃 설명을 넣지 마라.
Final image:
- 광고 업로드용
- safezone guide 없음
- 사이즈 안내 없음
- 소비자용 완성 이미지
QA image:
- 내부 검수용
- safezone overlay 가능
- 광고 업로드 금지
지원 사이즈:
- 1080x1350 / 4:5
- 1080x1080 / 1:1
- 1080x1920 / 9:16
- 1200x628 / 1.91:1, 필요 시
- 1920x1080 / 16:9, 필요 시
텍스트 렌더링:
- 생성형 이미지 모델에게 한국어 텍스트를 맡기지 마라.
- 최종 텍스트/가격/CTA는 코드 기반 렌더링.
- OCR 또는 layer manifest로 검증.
금지 문구:
- 안전영역
- 안전 영역
- 1080
- px
- 권장 사이즈
- 레이아웃
- 가이드
- safe zone
- safe area
가격 검증:
- 지정 가격이 9,900원이면 정확히 “9,900원”이어야 한다.
- 12,900원, 9900원, 9,900₩, 깨진 한국어는 실패.
============================================================ 12. Variant Generator / A/B Test Designer
Variant는 무작위 생성하지 말고 분석 결과 기반으로 만든다.
원칙:
- 한 번에 하나의 핵심 변수만 변경한다.
- 나머지는 통제한다.
- 성공 지표와 최소 데이터 기준을 명시한다.
변경 변수 예:
- hook 문구
- 제품 크기
- 제품 위치
- CTA 문구
- 가격 위치
- 색상
- 배경
- 첫 3초 영상 구조
- 자막 밀도
- 오디오 후킹
- placement 전용 비율
출력:
- control
- variant A/B/C
- changed variable
- controlled variables
- primary metric
- secondary metrics
- minimum impressions/clicks
- stop condition
지원:
- 가능한 모든 광고 형식.
- 가능한 모든 placement.
- 이미지/영상/캐러셀/컬렉션/카탈로그/동적 소재 등은 단계적으로 구현하되 최종 범위에 포함한다.
모든 생성은 기본 PAUSED 상태다.
Preflight Validation:
- token 권한
- ad account 접근
- page_id
- instagram_actor_id, 필요 시
- link_url
- image_hash/video_id
- safe_area_pass
- forbidden_text_pass
- price_accuracy_pass
- placement compatibility
- #1487569 risk
- policy risk
- cost guard
- approval requirement
ACTIVE 전환은 사용자 명시 승인 후만 가능.
검사 대상:
- 허위 가격
- 금지 상품
- 의료 관련 위험 표현
- 금융 관련 위험 표현
- 성인 상품/성인 표현
- 위험 상품
- 과장 보장 표현
- 없는 정보 꾸며내기
- 리뷰/할인/무료배송 허위 표시
- 특정 개인 속성 지칭 위험
AI는 없는 정보를 만들어내면 안 된다. 불확실한 내용은 “확인 필요”로 표시한다.
Higgsfield 또는 외부 생성형 AI 비용은 플랜/크레딧 기반으로 변동될 수 있으므로 하드코딩하지 않는다.
Settings에 다음을 둔다.
- provider
- plan name
- monthly price
- monthly credits
- model별 credit cost
- image generation unit cost
- video generation unit cost
- exchange rate
- daily cost cap
- monthly cost cap
기본값:
- 일 AI 비용 상한 = min(일 광고예산의 10%, 사용자 설정 일 한도)
- 일예산 5만원 기준 기본 상한 = 5,000원/일
- hard cap = 7,500원/일
- 영상 생성은 항상 예상 비용 표시 후 승인
- 중복 분석은 캐시
- failed generation 자동 재시도는 1회만
비용 초과 시 한글 경고: “현재 생성 비용이 설정한 일 한도를 초과할 수 있어 자동 실행을 중단했습니다.”
모든 경고 UI는 한글로 쉽고 명확하게 표시한다.
필수 화면:
- Dashboard
- 오늘의 주요 병목
- 성과 하락 광고
- 피로도 높은 소재
- placement 오류 위험
- 승인 대기 Draft
- 생성 비용 현황
- Meta Connection
- 계정 연결
- 권한 상태
- 누락 권한
- 토큰 만료/재연결 안내
- Creative Analysis
- 이미지/영상 업로드
- 구성요소별 점수
- 근거
- 개선 제안
- Bottleneck Diagnosis
- 퍼널 단계별 병목
- 증거 지표
- 신뢰도
- 다음 액션
- Placement Validator
- #1487569 위험 표시
- placement별 호환성
- 필요한 variant 제안
- Creative Renderer
- final preview
- QA safezone preview
- 가격/OCR/금지문구 검사
- Variant & Experiment
- 가설 기반 variant
- A/B 테스트 설계
- Draft Creator
- PAUSED 광고 생성
- preflight 결과
- Approval Center
- 실행 대기 액션
- 변경 전/후 비교
- 1차/2차 승인
- Settings
- Meta 연결
- Pixel/CAPI
- GA4
- 자사몰 DB
- Higgsfield/AI 비용
- 권한 레벨
- 데이터 보관/삭제
Supabase/PostgreSQL 기준. 모든 주요 테이블에는 tenant_id를 둔다.
필수 테이블:
- users
- tenants
- user_roles
- meta_connections
- ad_accounts
- campaigns_cache
- adsets_cache
- ads_cache
- insights_snapshots
- creative_assets
- creative_jobs
- creative_analysis_jobs
- creative_features
- creative_component_scores
- video_segments
- bottleneck_analysis_jobs
- bottleneck_stage_scores
- bottleneck_hypotheses
- performance_fusion_reports
- creative_hypotheses
- creative_experiments
- creative_learning_patterns
- placement_validation_reports
- ad_drafts
- approval_requests
- audit_logs
- integration_settings
- cost_usage_logs
- benchmark_profiles
데이터 보관:
- 사용자가 삭제할 때까지 보관.
- 삭제 요청 시 token, assets, reports, learning patterns, integration data 삭제 절차 제공.
Cross-tenant learning:
- 원본 데이터 혼합 금지.
- 익명화/집계/옵트인 패턴만 사용.
필수:
- 토큰 암호화 저장
- 클라이언트 토큰 노출 금지
- 로그에 토큰 출력 금지
- tenant isolation
- role based access control
- audit log
- 위험 액션 승인 플로우
- rate limit 대응
- API key rotation 대응
- data deletion workflow
- 연결 해제 기능
권한 역할:
- Owner
- Admin
- Marketer
- Analyst
- Viewer
모든 핵심 기능 테스트를 작성한다.
필수 테스트:
- Meta token test
- /me/adaccounts mock/real adapter test
- insights parsing
- breakdown parsing
- creative OCR checker
- price accuracy checker
- forbidden text checker
- safe area checker
- placement validator
- #1487569 risk detection
- image renderer
- video segmentation mock
- bottleneck scoring
- benchmark calculation
- performance fusion
- variant generation
- preflight validation
- approval guard
- policy risk checker
- cost guard
- tenant isolation
- audit log
- token encryption
MockMetaAdapter를 사용하여 광고비 없이 테스트 가능해야 한다.
최종 범위는 전체 기능이지만 구현은 아래 순서로 진행한다.
Phase 1. Foundation
- Supabase schema
- Auth/RBAC
- tenant isolation
- audit log
- MetaAdapter interface
- MockMetaAdapter
Phase 2. Meta Connection
- User token test
- OAuth/Business Login 설계
- ad accounts 조회
- insights snapshot
Phase 3. Creative Renderer / Validator
- safezone checker
- final vs QA 분리
- price/OCR/forbidden text
- 4:5/1:1/9:16 export
Phase 4. Creative Analysis
- image component analysis
- video component analysis
- component scores
Phase 5. Bottleneck Diagnosis
- funnel metrics
- data sufficiency
- benchmark profiles
- bottleneck scores
Phase 6. Performance Fusion
- creative feature + performance 연결
- hypothesis generator
Phase 7. Placement Validator
- all placement matrix
- #1487569 guard
- asset customization suggestions
Phase 8. Variant/Experiment
- variant generator
- A/B test plan
Phase 9. Draft Creator / Approval
- PAUSED campaign/adset/ad creation
- approval center
- ACTIVE transition with approval
- no budget edit
Phase 10. Integrations / Cost / Ops
- Pixel/CAPI diagnostics
- GA4 integration
- 자사몰 DB integration
- Higgsfield/AI cost guard
- monitoring
Hermes는 다음을 제공하라.
- 동작 가능한 코드베이스
- README.md
- .env.example
- Supabase migration SQL
- API 문서
- DB schema 문서
- Meta 연결 문서
- Creative Analysis 문서
- Bottleneck Diagnosis 문서
- Placement Validator 문서
- Cost Guard 문서
- Security 문서
- 테스트 코드
- Mock 데이터
- 배포 가이드
- 운영 체크리스트
- 예산 자동 변경 기능을 구현하지 마라.
- 사용자 승인 없이 ACTIVE 전환하지 마라.
- 사용자 승인 없이 광고 중지/삭제/타겟 변경하지 마라.
- User token을 외부 고객 SaaS 운영 방식으로 사용하지 마라.
- 고객에게 access token을 직접 입력받는 구조를 기본으로 만들지 마라.
- 토큰을 클라이언트에 노출하지 마라.
- 고객 원본 데이터를 섞어 학습하지 마라.
- 상관관계를 인과관계처럼 단정하지 마라.
- 최종 광고 이미지에 safezone/px/가이드 문구를 넣지 마라.
- 한국어 텍스트를 생성형 이미지 모델에 맡기지 마라.
- 없는 할인/리뷰/배송/효과를 만들어내지 마라.
- #1487569 위험을 무시하고 광고 생성 요청을 보내지 마라.