- website_parser: anchor-only href 추출로 CDN 노이즈 차단, additional_domains 를
data-lang/서브도메인 prefix 기반 글로벌 사이트 검출로 교체, main_cta 카테고리화
(전화/카톡/예약, fallback 제거) + 최대 3개 제한
- firecrawl: html → rawHtml 로 변경 (script 태그 보존 → 픽셀 검출 정상화)
- gemini_vision: logo_colors_hex 최대 5개 → 2개
- branding: 기존 brandAssets 보존하면서 logo_* 머지 (collect_brand_basics 결과
덮어쓰지 않게)
- facebook_audit: _page_patch 가 누락 필드 default 값으로 초기화 (Apify 가 페이지
데이터 못 받을 때 schema validation 실패 방어)
- schemas: top_videos / bio / linked_domain 옵셔널 처리 (실제 누락 가능 케이스 대응)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- integrations/color_extractor → integrations/site_fetcher (HTTP) + services/brand_parser (파싱) 분리
- integrations/vision → integrations/llm/gemini_vision 이동
- services/collect_extras → services/collect.collect_brand_basics (collect) + services/branding (report) 분리
- Vision prompt 에 logo_colors_hex 5개 강제 + 길이 fallback (4·6개 들어와도 5개로 정규화)
- branding 단계: HTML parser canonical logo URL 을 Vision 에 1순위 전달
→ firecrawl 가 잘못된 이미지 (마케팅 배너 등) 를 logo 로 잡는 케이스 회피
- select_run 에서 큰 JSON 컬럼 (report_data/plan_data) 빼서 meta only
→ generate_plan 만 select_run_report_data 별도 조회. 4군데 호출자는 가벼워짐
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>