---
task_id: task-2321
type: plan
scope: task
created: 2026-04-30
updated: 2026-04-30
status: in-progress
---

# 계획서: task-2321

**task**: task-2321
**목표**: InsuRo 트렌드 인사이트 Phase 1 — DB 5테이블 생성 + 키워드 풀 선정 파이프라인
**승인**: 제이회장님 2026-04-29 "보험 관련 급상승/검색량/조회수가 높은 보험 관련 이슈를 찾아주는 게 좋겠다"
**근거**: memory/meetings/2026-04-29-keyword-ranking-redesign.md (7사이클 에이전트 미팅)

---

## 목표

1. Supabase에 keywords, keyword_trends, keyword_saturation, keyword_rankings, failed_batches 5테이블 + 4인덱스 생성
2. 시드 키워드 30개 JSON 파일 작성
3. SearchAd API 기반 키워드 풀 자동 확장/필터링/분류 스크립트 구현
4. 월 1회 크론 등록 (매월 1일 03:00)

## 범위

### 포함
- DB 마이그레이션 SQL 파일 (server/migrations/)
- server/config/keyword-seeds.json (시드 30개)
- server/scripts/keyword_pool_refresh.py (SearchAd 확장 + 필터 + 분류 + DB INSERT)
- 크론 등록

### 제외 (Phase 2 이후)
- DataLab API 수집 (1-2)
- Blog Search API 포화도 수집 (1-3)
- 랭킹 산출 알고리즘 (1-4)
- 헬스체크 (1-5)
- API 엔드포인트 (1-7)
- 프론트엔드 UI (2-x)

## 위임 계획

- DB 마이그레이션 SQL: **불칸(백엔드)** — Codex 리뷰 반영 (UNIQUE 변경 등)
- keyword-seeds.json: **불칸(백엔드)** — 단순 JSON 작성
- keyword_pool_refresh.py: **불칸(백엔드)** — SearchAd API 인증 + 로직 구현

## 검증 기준

- 마이그레이션 SQL: `python3 -c "from supabase import create_client; ..."` → 5테이블 존재 확인
- keyword-seeds.json: `python3 -c "import json; data=json.load(open(...)); assert len(sum(data.values(),[]))==30"`
- keyword_pool_refresh.py: 드라이런 모드로 실행 → SearchAd 호출 없이 시드 파싱/필터/분류 로직 검증
