# RSS 자동 업데이트 가이드

이 가이드는 네이버 블로그 RSS 피드를 매일 자동으로 업데이트하여 최신 콘텐츠를 RAG 시스템에 학습시키는 방법을 설명합니다.

## 🎯 개요

RSS 자동 업데이트 시스템은 다음과 같이 작동합니다:

1. **RSS URL 등록**: 관리자 페이지에서 네이버 블로그 RSS URL을 등록
2. **자동 스케줄링**: 매일 새벽 1시에 cron job이 실행
3. **자동 학습**: 등록된 RSS 피드에서 최신 포스트를 가져와 RAG 시스템에 학습
4. **로그 기록**: 모든 업데이트 과정이 로그 파일에 기록

## 🚀 설정 방법

### 1. Cron Job 설정

프로젝트 루트에서 다음 명령을 실행하여 cron job을 설정합니다:

```bash
./scripts/setup-cron.sh
```

이 스크립트는 다음 작업을 수행합니다:

- RSS 자동 업데이트 실행 스크립트 생성
- 매일 새벽 1시 실행되는 cron job 등록
- 로그 디렉토리 생성

### 2. 환경 변수 설정

`.env` 파일에 다음 환경 변수를 추가합니다:

```env
# RSS 자동 업데이트 설정
NEXT_PUBLIC_BASE_URL=http://localhost:3000  # 또는 실제 도메인
CRON_SECRET=your-secure-cron-secret-key     # 보안을 위한 시크릿 키
```

### 3. 서버 실행

cron job이 작동하려면 Next.js 서버가 실행 중이어야 합니다:

```bash
npm run dev
# 또는 프로덕션 환경에서
npm run build && npm start
```

## 📱 관리자 페이지 사용법

### RSS URL 등록

1. 관리자 페이지 접속: `http://localhost:3000/rag-admin`
2. "RSS 자동화" 탭 클릭
3. RSS URL 입력 (예: `https://rss.blog.naver.com/blogid`)
4. "등록" 버튼 클릭

### 수동 업데이트

등록된 RSS를 즉시 업데이트하려면:

1. "지금 업데이트" 버튼 클릭
2. 업데이트 결과 확인

### RSS URL 관리

- **목록 확인**: 등록된 RSS URL 목록과 상태 확인
- **URL 제거**: 불필요한 RSS URL 제거
- **업데이트 결과**: 최근 업데이트 결과 및 오류 확인

## 🔧 API 엔드포인트

### RSS 자동 업데이트 관리

- **GET** `/api/rag/rss/auto-update`: 등록된 RSS URL 목록 조회
- **POST** `/api/rag/rss/auto-update`: RSS URL 등록 또는 업데이트 실행
- **DELETE** `/api/rag/rss/auto-update`: RSS URL 등록 해제

### Cron Job 엔드포인트

- **GET** `/api/cron/rss-update`: cron job에서 호출하는 자동 업데이트 엔드포인트

## 📊 로그 및 모니터링

### 로그 파일 위치

```
logs/rss-auto-update.log
```

### 로그 내용 예시

```
2025-01-15 01:00:01 - RSS 자동 업데이트 시작
{"success":true,"message":"RSS 자동 업데이트 완료: 2/2 성공","results":[...]}
2025-01-15 01:00:15 - RSS 자동 업데이트 완료
```

### 로그 확인 명령

```bash
# 최근 로그 확인
tail -f logs/rss-auto-update.log

# 특정 날짜 로그 검색
grep "2025-01-15" logs/rss-auto-update.log
```

## 🛠️ 문제 해결

### Cron Job이 실행되지 않는 경우

1. **Cron 서비스 상태 확인**:

   ```bash
   # macOS
   sudo launchctl list | grep cron

   # Linux
   systemctl status cron
   ```

2. **Cron Job 등록 확인**:

   ```bash
   crontab -l
   ```

3. **스크립트 권한 확인**:
   ```bash
   ls -la scripts/rss-auto-update.sh
   ```

### API 호출 실패

1. **서버 실행 상태 확인**
2. **환경 변수 확인** (CRON_SECRET, BASE_URL)
3. **네트워크 연결 확인**
4. **로그 파일에서 오류 메시지 확인**

### RSS 피드 가져오기 실패

1. **RSS URL 유효성 확인**
2. **네이버 블로그 RSS 형식 확인**: `https://rss.blog.naver.com/{블로그아이디}`
3. **프록시 설정 확인** (CORS 문제 시)

## 🔒 보안 고려사항

1. **CRON_SECRET**: 강력한 시크릿 키 사용
2. **API 접근 제한**: 필요시 IP 화이트리스트 적용
3. **로그 파일 권한**: 민감한 정보 노출 방지
4. **HTTPS 사용**: 프로덕션 환경에서 HTTPS 적용

## 📈 성능 최적화

1. **배치 처리**: 여러 RSS를 동시에 처리
2. **중복 제거**: 이미 학습된 콘텐츠 스킵
3. **오류 처리**: 개별 RSS 실패가 전체에 영향 없도록
4. **로그 로테이션**: 로그 파일 크기 관리

## 🚀 고급 설정

### 커스텀 스케줄

기본 스케줄(매일 새벽 1시) 외에 다른 시간으로 변경하려면:

```bash
# cron job 편집
crontab -e

# 예시: 매일 오전 6시
0 6 * * * /path/to/scripts/rss-auto-update.sh

# 예시: 매 6시간마다
0 */6 * * * /path/to/scripts/rss-auto-update.sh
```

### 다중 환경 설정

개발/스테이징/프로덕션 환경별로 다른 설정 사용:

```bash
# 환경별 스크립트 실행
ENVIRONMENT=production ./scripts/setup-cron.sh
```

## 📞 지원

문제가 발생하거나 추가 기능이 필요한 경우:

1. 로그 파일 확인
2. GitHub Issues 등록
3. 관리자 페이지에서 수동 테스트 실행

---

이 시스템을 통해 네이버 블로그의 최신 콘텐츠를 자동으로 학습하여 항상 최신 정보를 제공하는 RAG 시스템을 구축할 수 있습니다.
