Files
site11/backup-services/rss-feed/README.md
2025-09-28 20:41:57 +09:00

204 lines
4.3 KiB
Markdown

# RSS Feed Subscription Service
RSS/Atom 피드를 구독하고 관리하는 서비스입니다.
## 주요 기능
### 1. 피드 구독 관리
- RSS/Atom 피드 URL 구독
- 카테고리별 분류 (뉴스, 기술, 비즈니스 등)
- 자동 업데이트 스케줄링
- 피드 상태 모니터링
### 2. 엔트리 관리
- 새로운 글 자동 수집
- 읽음/안읽음 상태 관리
- 별표 표시 기능
- 전체 내용 저장
### 3. 자동 업데이트
- 설정 가능한 업데이트 주기 (기본 15분)
- 백그라운드 스케줄러
- 에러 처리 및 재시도
## API 엔드포인트
### 피드 구독
```
POST /api/feeds
{
"url": "https://example.com/rss",
"title": "Example Blog",
"category": "tech",
"update_interval": 900
}
```
### 피드 목록 조회
```
GET /api/feeds?category=tech&status=active
```
### 엔트리 조회
```
GET /api/entries?feed_id=xxx&is_read=false&limit=50
```
### 읽음 표시
```
PUT /api/entries/{entry_id}/read?is_read=true
```
### 별표 표시
```
PUT /api/entries/{entry_id}/star?is_starred=true
```
### 통계 조회
```
GET /api/stats?feed_id=xxx
```
### OPML 내보내기
```
GET /api/export/opml
```
## 사용 예제
### 1. 기술 블로그 구독
```bash
curl -X POST http://localhost:8017/api/feeds \
-H "Content-Type: application/json" \
-d '{
"url": "https://techcrunch.com/feed/",
"category": "tech"
}'
```
### 2. 한국 뉴스 RSS 구독
```bash
curl -X POST http://localhost:8017/api/feeds \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.hani.co.kr/rss/",
"category": "news",
"update_interval": 600
}'
```
### 3. 안읽은 엔트리 조회
```bash
curl "http://localhost:8017/api/entries?is_read=false&limit=20"
```
### 4. 모든 엔트리 읽음 처리
```bash
curl -X POST "http://localhost:8017/api/entries/mark-all-read?feed_id=xxx"
```
## 지원 카테고리
- `news`: 뉴스
- `tech`: 기술
- `business`: 비즈니스
- `science`: 과학
- `health`: 건강
- `sports`: 스포츠
- `entertainment`: 엔터테인먼트
- `lifestyle`: 라이프스타일
- `politics`: 정치
- `other`: 기타
## 환경 설정
### 필수 설정
```env
MONGODB_URL=mongodb://mongodb:27017
DB_NAME=rss_feed_db
REDIS_URL=redis://redis:6379
REDIS_DB=3
```
### 선택 설정
```env
DEFAULT_UPDATE_INTERVAL=900 # 기본 업데이트 주기 (초)
MAX_ENTRIES_PER_FEED=100 # 피드당 최대 엔트리 수
ENABLE_SCHEDULER=true # 자동 업데이트 활성화
SCHEDULER_TIMEZONE=Asia/Seoul # 스케줄러 타임존
```
## Docker 실행
```bash
# 빌드 및 실행
docker-compose build rss-feed-backend
docker-compose up -d rss-feed-backend
# 로그 확인
docker-compose logs -f rss-feed-backend
```
## 데이터 구조
### FeedSubscription
- `title`: 피드 제목
- `url`: RSS/Atom URL
- `description`: 설명
- `category`: 카테고리
- `status`: 상태 (active/inactive/error)
- `update_interval`: 업데이트 주기
- `last_fetch`: 마지막 업데이트 시간
- `error_count`: 에러 횟수
### FeedEntry
- `feed_id`: 피드 ID
- `title`: 글 제목
- `link`: 원문 링크
- `summary`: 요약
- `content`: 전체 내용
- `author`: 작성자
- `published`: 발행일
- `categories`: 태그/카테고리
- `thumbnail`: 썸네일 이미지
- `is_read`: 읽음 상태
- `is_starred`: 별표 상태
## 추천 RSS 피드
### 한국 뉴스
- 한겨레: `https://www.hani.co.kr/rss/`
- 조선일보: `https://www.chosun.com/arc/outboundfeeds/rss/`
- 중앙일보: `https://rss.joins.com/joins_news_list.xml`
### 기술 블로그
- TechCrunch: `https://techcrunch.com/feed/`
- The Verge: `https://www.theverge.com/rss/index.xml`
- Ars Technica: `https://feeds.arstechnica.com/arstechnica/index`
### 개발자 블로그
- GitHub Blog: `https://github.blog/feed/`
- Stack Overflow Blog: `https://stackoverflow.blog/feed/`
- Dev.to: `https://dev.to/feed`
## 헬스 체크
```bash
curl http://localhost:8017/health
```
## 문제 해결
### 1. 피드 파싱 실패
- RSS/Atom 형식이 올바른지 확인
- URL이 접근 가능한지 확인
- 피드 인코딩 확인 (UTF-8 권장)
### 2. 업데이트 안됨
- 스케줄러 활성화 확인 (`ENABLE_SCHEDULER=true`)
- MongoDB 연결 상태 확인
- 피드 상태가 `active`인지 확인
### 3. 중복 엔트리
- 피드에서 고유 ID를 제공하는지 확인
- 엔트리 ID 생성 로직 확인