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

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 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

헬스 체크

curl http://localhost:8017/health

문제 해결

1. 피드 파싱 실패

  • RSS/Atom 형식이 올바른지 확인
  • URL이 접근 가능한지 확인
  • 피드 인코딩 확인 (UTF-8 권장)

2. 업데이트 안됨

  • 스케줄러 활성화 확인 (ENABLE_SCHEDULER=true)
  • MongoDB 연결 상태 확인
  • 피드 상태가 active인지 확인

3. 중복 엔트리

  • 피드에서 고유 ID를 제공하는지 확인
  • 엔트리 ID 생성 로직 확인