4.3 KiB
4.3 KiB
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. 기술 블로그 구독
curl -X POST http://localhost:8017/api/feeds \
-H "Content-Type: application/json" \
-d '{
"url": "https://techcrunch.com/feed/",
"category": "tech"
}'
2. 한국 뉴스 RSS 구독
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. 안읽은 엔트리 조회
curl "http://localhost:8017/api/entries?is_read=false&limit=20"
4. 모든 엔트리 읽음 처리
curl -X POST "http://localhost:8017/api/entries/mark-all-read?feed_id=xxx"
지원 카테고리
news: 뉴스tech: 기술business: 비즈니스science: 과학health: 건강sports: 스포츠entertainment: 엔터테인먼트lifestyle: 라이프스타일politics: 정치other: 기타
환경 설정
필수 설정
MONGODB_URL=mongodb://mongodb:27017
DB_NAME=rss_feed_db
REDIS_URL=redis://redis:6379
REDIS_DB=3
선택 설정
DEFAULT_UPDATE_INTERVAL=900 # 기본 업데이트 주기 (초)
MAX_ENTRIES_PER_FEED=100 # 피드당 최대 엔트리 수
ENABLE_SCHEDULER=true # 자동 업데이트 활성화
SCHEDULER_TIMEZONE=Asia/Seoul # 스케줄러 타임존
Docker 실행
# 빌드 및 실행
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 URLdescription: 설명category: 카테고리status: 상태 (active/inactive/error)update_interval: 업데이트 주기last_fetch: 마지막 업데이트 시간error_count: 에러 횟수
FeedEntry
feed_id: 피드 IDtitle: 글 제목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
헬스 체크
curl http://localhost:8017/health
문제 해결
1. 피드 파싱 실패
- RSS/Atom 형식이 올바른지 확인
- URL이 접근 가능한지 확인
- 피드 인코딩 확인 (UTF-8 권장)
2. 업데이트 안됨
- 스케줄러 활성화 확인 (
ENABLE_SCHEDULER=true) - MongoDB 연결 상태 확인
- 피드 상태가
active인지 확인
3. 중복 엔트리
- 피드에서 고유 ID를 제공하는지 확인
- 엔트리 ID 생성 로직 확인