# InforKeyword Phase 2: 백엔드 코어 개발

## 프로젝트 개요
- 요구사항: `/home/jay/workspace/memory/specs/infor-keyword/requirements-v1.md`
- 아키텍처: `/home/jay/workspace/memory/specs/infor-keyword/architecture-v1.md`
- Phase 계획: `/home/jay/workspace/memory/specs/infor-keyword/phase-plan.md`
- 기술 리서치: `/home/jay/workspace/memory/research/inforkeyword-tech-research.md`
- 프로젝트 경로: `/home/jay/projects/InforKeyword/`
- 위 파일들을 모두 읽고 작업을 시작하라.

## 제이회장님 피드백 (반드시 반영)
1. **카페탭**: 본문 진입/분석 불필요. 검색 결과 목록에서 대표뱃지 개수만 TOP10 카운트
2. **블로그탭**: TOP10 본문만 상세 분석 (홍보성 판별)
3. **LLM**: 외부 새 서비스 가입 없이 기존 인프라 활용 (우리 시스템에서 처리)
4. **OCR**: 별도 OCR 서비스(Cloud Vision 등) 사용 금지. **Playwright 스크린샷 → 자체 LLM 멀티모달 이미지 분석**으로 전화번호/주소 감지
   - 참고: 서버에 Playwright + Chromium 설치됨 (`/home/jay/workspace/scripts/browser.py`)

## Phase 2 목표
7단계 분석 파이프라인 백엔드 전체 구현 + 테스트.

## 구현 항목

### 1. 프로젝트 초기화
- `/home/jay/projects/InforKeyword/` 에 Python Worker 구조 생성
- 의존성 설정 (requirements.txt)
- 환경변수 설정

### 2. 네이버 크롤링 모듈
- 자동완성 API (`mac.search.naver.com/mobile/ac`)
- 연관검색어 파싱
- 검색량 조회 (네이버 검색광고 API — 계정 미발급 시 스텁 처리, 나중에 연동)
- 블로그탭 검색결과 파싱 (TOP10, 광고 제외)
- 블로그 본문 크롤링 (PostView.naver)
- 카페탭 검색결과에서 대표뱃지 카운트만 (본문 진입 금지)

### 3. 홍보성 판별 모듈 (블로그 TOP10만)
- 전화번호/주소 텍스트 정규식 감지
- 이미지 속 전화번호/주소: Playwright 스크린샷 → LLM 멀티모달 분석
- 외부링크 감지 (예외 처리 포함)
- 네이버 톡톡/플레이스 감지
- 첨부파일 감지
- LLM "누가봐도 홍보" 판별

### 4. LLM 키워드 생성 모듈
- 주제 입력 → 키워드 30개 생성 (2단/3단 옵션)
- 기존 인프라의 LLM API 활용

### 5. 7단계 분석 파이프라인
- 1단계: 다단키워드 체크 (단순 로직)
- 2~4단계: 연관검색어/자동완성/검색량 OR 조건
- 5단계: 블로그 TOP10 홍보성 비율
- 6단계: 외부블로그 부재 확인
- 7단계: 카페탭 대표뱃지 카운트
- 각 단계 PASS/FAIL + 상세 사유 반환

### 6. API 엔드포인트
- FastAPI: `/generate` (키워드 생성), `/analyze` (7단계 분석), `/status` (진행률)
- 인증 미들웨어

## 테스트
- 각 모듈 단위 테스트
- 실제 키워드 "암보험 비교"로 전체 파이프라인 E2E 테스트
- pytest 전부 PASS 확인

## 산출물
- `/home/jay/projects/InforKeyword/` 에 전체 백엔드 코드
- 보고서: `/home/jay/workspace/memory/reports/<task_id>.md`