[chore] SEO 노출 개선 및 GA4·Vercel Analytics 연동 - #141
Conversation
- title/description을 서비스 설명이 드러나도록 구체화 - lang="en" → lang="ko" 변경 - Open Graph·Twitter Card 태그 추가 (링크 공유 미리보기 및 검색 노출 개선) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- 검색엔진 크롤링 허용 범위 명시 (관리자·마이페이지·인증 콜백 제외) - 공개 라우트(홈/아티스트/공연/발매/캘린더/약관) 기준 sitemap 작성 - 공연·아티스트 상세 페이지 등 동적 라우트는 별도 이슈에서 처리 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- src/utils/analytics.js에 gtag 초기화 함수 추가 (측정 ID 미설정 시 no-op) - main.jsx 부트스트랩 시점에 initGA 호출 - CSP script-src/connect-src에 GA4 도메인 허용 - .env.example에 VITE_GA_MEASUREMENT_ID 변수 추가 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- @vercel/analytics, @vercel/speed-insights 패키지 설치 - App.jsx에 Analytics·SpeedInsights 컴포넌트 추가 - CSP script-src/connect-src에 Vercel 도메인 허용 (로컬 개발 환경용, 프로덕션은 동일 출처 라우트로 서빙) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- src/utils/structuredData.js에 schema.org/Event JSON-LD 빌더 추가 - ConcertDetailPage에 공연 상태별(예정/진행/완료/취소) eventStatus 매핑 및 JSON-LD 삽입 - 구글 검색 결과에서 날짜·장소가 리치 스니펫으로 노출될 수 있도록 지원 - 현재 CSP는 application/ld+json 인라인 스크립트를 별도 허용 없이도 통과함 (script-src는 실행 가능한 스크립트만 제어) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Important Review skippedReview was skipped due to path filters ⛔ Files ignored due to path filters (1)
CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Free Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughThe application adds optional Google Analytics 4 initialization, Vercel Analytics, Speed Insights, crawler metadata, social metadata, and concert event JSON-LD. The HTML language and Content Security Policy are also updated. ChangesWeb discovery and observability
Note 🎁 Summarized by CodeRabbit FreeYour organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login. Comment |
- brace-expansion, js-yaml, nanoid, postcss, react-router/react-router-dom 패치 버전 업데이트 - main에도 이미 존재하던 사전 취약점으로, 메이저 버전 변경 없이 해결 - npm audit --audit-level=high 0건 확인 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
관련 이슈
Closes #140
변경 개요
"커밍" 검색 시 구글 등 검색엔진 노출을 개선하고, 사용자 수·트래픽·성능을 관측할 수 있는 분석 도구를 도입한다. index.html에 메타 설명·OG 태그가 없고 lang이 "en"으로 되어 있었으며, robots.txt/sitemap.xml도 없어 검색엔진이 서비스 맥락을 파악하기 어려운 상태였다.
변경사항
주요 구현 내용
VITE_GA_MEASUREMENT_ID환경변수 미설정 시 아무 동작도 하지 않도록 가드 처리 (배포 환경별로 안전하게 on/off 가능)eventStatus를 매핑하고, EXCLUDED 상태는 구조화 데이터를 생성하지 않음</script>조기 종료를 통한 마크업 인젝션을 막기 위해<문자를 이스케이프테스트
npm run lint,npm run build통과)리뷰어 참고사항
VITE_GA_MEASUREMENT_ID등록 필요 (코드에는 반영 완료, 실제 값은 대시보드에서 설정)코드 리뷰
변경사항 요약
SEO 메타 태그/robots/sitemap 정비, GA4·Vercel Analytics/Speed Insights 연동, 콘서트 상세 페이지 Event 구조화 데이터(JSON-LD) 추가. 총 11개 파일 변경, 신규 유틸 2개(analytics.js, structuredData.js) 추가.
검토 결과
🔵 suggestion
public/sitemap.xml:lastmod값이 고정 날짜(2026-08-10)로 하드코딩되어 있어 시간이 지나면 실제 갱신 시점과 무관하게 방치될 수 있음→ 페이지 변경 빈도가 낮은 정적 라우트라 당장 문제는 아니지만, 추후 빌드 스크립트에서 자동 생성하는 방식으로 전환하면 유지보수 부담이 줄어듦
index.html:og:url이 모든 라우트에서 홈 URL(https://comingg.com)로 고정되어 있어, 콘서트/아티스트 상세 페이지를 공유해도 OG 미리보기 URL은 홈으로 표시됨→ SPA 특성상 페이지별 메타 태그 동적 삽입(react-helmet-async 등)이 필요한데 범위가 커서 이번 PR에서는 제외. 후속 이슈로 분리 권장
Summary by CodeRabbit