e939f0d2a1fe9e30c012890d893cb4146b651d02
Smithery 품질 점수 개선을 위한 메타데이터 엔드포인트 추가 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Web Inspector
웹 페이지 및 사이트 품질 검사 도구. HTML/CSS, 접근성, SEO, 성능/보안 4개 카테고리 기준으로 웹 페이지를 분석하고 점수와 개선 사항을 제공한다.
주요 기능
3가지 검사 모드
| 모드 | 설명 |
|---|---|
| 한 페이지 검사 | 단일 URL 입력 → AI 기반 품질 분석 → 점수/등급/이슈 리포트 |
| 사이트 크롤링 | 루트 URL 입력 → BFS 크롤링으로 페이지 자동 발견 → 전체 사이트 일괄 검사 |
| 목록 업로드 | .txt 파일로 URL 목록 업로드 → 일괄 검사 |
검사 카테고리 (4개)
- HTML/CSS — 마크업 품질, 시맨틱 태그, CSS 모범 사례
- 접근성 (Accessibility) — WCAG 가이드라인 준수, ARIA, 키보드 접근성
- SEO — 메타태그, 구조화 데이터, 크롤러 친화성
- 성능/보안 — 로딩 속도, HTTPS, CSP 헤더 등
실시간 진행 상태
- SSE (Server-Sent Events) + Redis Pub/Sub로 크롤링/검사 진행 상태 실시간 스트리밍
- 페이지별 검사 상태(대기→검사 중→완료) 실시간 업데이트
크롤러 특징
- BFS 기반 동일 도메인 링크 탐색
- URL 정규화: fragment 제거, trailing slash 제거, www. 제거, scheme/netloc 소문자화
- 리다이렉트 추적 → 최종 URL 기준 중복 제거
- 쿼리 파라미터가 다르면 유니크 URL로 판단
- max_pages는 유니크 URL 기준 카운트
Tech Stack
| 구분 | 기술 |
|---|---|
| Frontend | Next.js 15 (App Router), TypeScript, TailwindCSS, shadcn/ui |
| State | Zustand, TanStack React Query |
| Backend | FastAPI (Python 3.11), Pydantic v2 |
| Database | MongoDB 7.0 (Motor async driver) |
| Cache/PubSub | Redis 7 |
| AI | Claude API (검사 분석) |
| Infra | Docker Compose, Nginx (리버스 프록시 + SSL) |
Project Structure
web-inspector/
├── backend/
│ └── app/
│ ├── main.py # FastAPI 엔트리포인트
│ ├── core/
│ │ ├── config.py # 환경변수 설정
│ │ └── database.py # MongoDB + Redis 연결
│ ├── models/
│ │ ├── schemas.py # 단일 검사 스키마
│ │ ├── site_schemas.py # 사이트 크롤링 스키마
│ │ └── batch_schemas.py # 배치 검사 스키마
│ ├── routers/
│ │ ├── inspections.py # 단일 검사 API
│ │ ├── site_inspections.py # 사이트 크롤링 API
│ │ ├── batch_inspections.py # 배치 검사 API
│ │ ├── reports.py # 리포트 API
│ │ └── health.py # 헬스체크
│ └── services/
│ ├── inspection_service.py # 단일 검사 서비스
│ ├── site_inspection_service.py # 사이트 크롤링 + 검사
│ ├── batch_inspection_service.py # 배치 검사 서비스
│ ├── link_crawler.py # BFS 크롤러
│ └── report_service.py # 리포트 생성
├── frontend/
│ └── src/
│ ├── app/
│ │ ├── page.tsx # 홈 (탭 UI)
│ │ ├── history/page.tsx # 이력 (탭별)
│ │ ├── inspections/[id]/page.tsx # 단일 검사 결과
│ │ ├── inspections/[id]/progress/page.tsx # 단일 검사 진행
│ │ ├── site-inspections/[id]/page.tsx # 사이트 검사 결과
│ │ ├── site-inspections/[id]/progress/ # 사이트 검사 진행
│ │ └── batch-inspections/[id]/ # 배치 검사 결과/진행
│ ├── components/
│ │ ├── inspection/ # 탭 UI, 폼 컴포넌트
│ │ ├── site-inspection/ # 페이지 트리, 진행 상태
│ │ ├── batch-inspection/ # 배치 URL 목록, 진행
│ │ ├── dashboard/ # 점수 대시보드, 이슈 목록
│ │ └── history/ # 이력 테이블
│ ├── stores/ # Zustand 스토어
│ ├── hooks/ # SSE 훅, React Query 훅
│ ├── lib/ # API 클라이언트, 유틸리티
│ └── types/ # TypeScript 타입 정의
├── nginx/
│ └── nginx.conf # 리버스 프록시 + SSE 설정
├── docker-compose.yml
└── .env
Getting Started
# 환경변수 설정
cp .env.example .env
# ANTHROPIC_API_KEY 설정 필요
# 서비스 시작
docker compose up -d
# 서비스 로그
docker compose logs -f
# 빌드 후 시작
docker compose build --no-cache && docker compose up -d
API Endpoints
단일 검사
POST /api/inspections # 검사 시작
GET /api/inspections/{id} # 결과 조회
GET /api/inspections/{id}/stream # SSE 스트림
GET /api/inspections # 이력 (페이지네이션)
사이트 크롤링
POST /api/site-inspections # 크롤링 + 검사 시작
GET /api/site-inspections/{id} # 결과 조회
GET /api/site-inspections/{id}/stream # SSE 스트림
GET /api/site-inspections # 이력 (페이지네이션)
배치 검사
POST /api/batch-inspections # 파일 업로드 + 검사 시작
GET /api/batch-inspections/{id} # 결과 조회
GET /api/batch-inspections/{id}/stream # SSE 스트림
GET /api/batch-inspections # 이력 (페이지네이션)
Deployment
- URL: https://web-inspector.yakenator.io
- Gitea: https://gitea.yakenator.io/yakenator/web-inspector
- Server: Nginx 리버스 프록시 + Namecheap 와일드카드 SSL
Description
Languages
TypeScript
54%
Python
41.9%
HTML
1.7%
JavaScript
1.5%
Dockerfile
0.4%
Other
0.5%