# InforKeyword 수정: LLM Claude 전환 + 검색광고 API 연동

## 프로젝트 경로
- `/home/jay/projects/InfoKeyword/` (심볼릭: InforKeyword → InfoKeyword)

## 수정 1: LLM을 Gemini → Claude CLI로 전환

### 배경
제이회장님 지시: "우리 시스템(Claude Code)"으로 처리. 별도 API 키 없이 서버에 설치된 `claude` CLI 활용.

### 방법
`claude -p "프롬프트"` 명령어를 subprocess로 호출. Claude Code Max 구독 내에서 처리되므로 추가 비용 없음.

```python
import subprocess
result = subprocess.run(
    ['claude', '-p', prompt_text],
    capture_output=True, text=True, timeout=60
)
response = result.stdout
```

### 수정 대상 파일
1. `worker/generator/keyword_generator.py` — Gemini → Claude CLI로 교체 (키워드 30개 생성)
2. `worker/analyzer/llm_promotional.py` — Gemini → Claude CLI로 교체 (홍보성 판별)
3. `worker/analyzer/image_analysis.py` — Gemini 멀티모달 → Claude CLI 멀티모달로 교체 (스크린샷 분석)
   - `claude` CLI에 이미지 파일을 전달하는 방법 확인 필요
4. `worker/config.py` — Gemini 관련 설정 제거, Claude 관련 설정 추가
5. `.env` — GEMINI_API_KEY 제거
6. `requirements.txt` — google-generativeai 의존성 제거

### 주의사항
- `claude -p` 호출 시 timeout 설정 필수 (60초)
- 에러 핸들링: subprocess 실패 시 재시도 1회
- JSON 응답 파싱: claude 출력에서 JSON 추출 로직 필요

## 수정 2: 네이버 검색광고 API 실제 연동

### 배경
API 키 발급 완료. 환경변수에 등록됨.

### 환경변수 (`.env.keys`에서 로드)
- `NAVER_SEARCHAD_CUSTOMER_ID`
- `NAVER_SEARCHAD_API_KEY`
- `NAVER_SEARCHAD_SECRET_KEY`

### 수정 대상
- `worker/crawler/search_ad.py` — 스텁 제거, 실제 API 호출 구현
  - HMAC-SHA256 서명 생성
  - `GET https://api.searchad.naver.com/keywordstool` 호출
  - 응답에서 monthlyPcQcCnt + monthlyMobileQcCnt 합산하여 검색량 반환
- `.env` — 검색광고 키 추가 (값은 환경변수에서 로드, 하드코딩 금지)

### 참고
- 서명 생성 방법: `/home/jay/workspace/memory/research/inforkeyword-tech-research.md` 의 Section 2 참조

## 테스트
- 기존 79개 테스트 전부 PASS 유지
- Claude CLI 호출 모듈 테스트 추가
- 검색광고 API 호출 테스트 추가 (실제 API 1회 호출로 검증)
- pytest 전체 PASS 확인

## 산출물
- 수정된 파일들
- 보고서: `/home/jay/workspace/memory/reports/<task_id>.md`
