15분 안에 개인 맞춤형 WeChat 공식 계정 RSS 구독 서비스 구축하기

개인 맞춤형 WeChat 공식 계정 RSS 구독 서비스를 15분 안에 빠르게 설정하는 방법을 소개합니다.

프로젝트 소개: wewe-rss

wewe-rss는 GitHub에서 오픈소스로 제공되는 도구로, WeChat 공식 계정의 게시물을 RSS 형식으로 변환하여 다양한 RSS 리더에서 통합 관리할 수 있도록 합니다. 이를 통해 광고가 없는 깔끔한 환경에서 원하는 콘텐츠만 읽을 수 있습니다.

프로젝트 링크: https://gitcode.com/GitHub_Trending/we/wewe-rss


wewe-rss의 주요 기능

  • 콘텐츠 통합: 여러 플랫폼에서 분산된 콘텐츠를 하나의 RSS 피드로 모아줍니다.
  • 깨끗한 독서 경험: 광고나 불필요한 요소 없이 순수한 텍스트로 콘텐츠를 제공합니다.
  • 자동 업데이트: 정해진 시간에 자동으로 새 게시물이 추가됩니다.
  • 키워드 필터링: 관심 있는 주제만 선택적으로 보여줍니다.

빠른 시작 가이드

환경 준비 및 배포

Docker Compose를 사용하면 간단하게 배포할 수 있습니다.

# 저장소 클론
git clone https://gitcode.com/GitHub_Trending/we/wewe-rss

# 디렉토리 이동
cd wewe-rss

# Docker Compose 실행
docker-compose up -d

배포가 완료되면 http://localhost:4000 에 접속하여 웹 인터페이스를 확인할 수 있습니다.

주요 구성 옵션

환경 변수를 조정하여 성능을 최적화할 수 있습니다.

environment:
  # 전체 텍스트 모드 활성화 (기본값은 요약)
  - FEED_MODE=fulltext
  
  # 업데이트 주기 설정 (예: 매 6시간마다)
  - CRON_EXPRESSION=0 */6 * * *
  
  # 외부 URL 설정
  - SERVER_ORIGIN_URL=https://your-domain.com
  
  # HTML 정리 활성화
  - ENABLE_CLEAN_HTML=true

주의: 전체 텍스트 모드는 더 나은 독서 경험을 제공하지만, 메모리 소비가 증가하므로 적절히 설정해야 합니다.


사용법

1. 계정 연결

처음에는 WeChat 계정을 연결해야 합니다.

  1. http://localhost:4000 에 접속
  2. 좌측 메뉴에서 "계정 관리" 클릭
  3. QR 코드 스캔 후 로그인

2. 구독 추가

연결된 계정으로 구독하고자 하는 공식 계정을 추가합니다.

  1. "공식 계정" 탭으로 이동
  2. "+" 버튼 클릭
  3. 해당 공식 계정의 게시물 링크를 붙여넣기

3. RSS 피드 가져오기

각 공식 계정별로 또는 모든 계정을 통합한 RSS 피드를 얻을 수 있습니다.

  • 특정 계정: http://localhost:4000/feeds/{계정ID}.rss
  • 전체 통합: http://localhost:4000/feeds/all.rss

이 링크들은 Feedly, Inoreader 등 다양한 RSS 리더에 추가할 수 있습니다.


고급 기능

1. 콘텐츠 필터링

필요한 정보만 골라볼 수 있습니다.

# 제목에 "AI" 또는 "머신러닝" 포함된 게시물만 보기
curl "http://localhost:4000/feeds/all.atom?title_include=AI|머신러닝"

# 제목에 "채용"이나 "광고"가 포함되지 않은 게시물 보기
curl "http://localhost:4000/feeds/all.json?title_exclude=채용|광고"

2. 수동 업데이트

특정 계정의 최신 게시물을 즉시 확인할 수 있습니다.

# 특정 계정 업데이트 강제 실행
curl "http://localhost:4000/feeds/{계정ID}.rss?update=true"

# 최근 게시물 20개 가져오기
curl "http://localhost:4000/feeds/all.json?limit=20&page=1"

3. 다양한 출력 포맷

다양한 리더와 시스템과 호환될 수 있도록 여러 포맷을 지원합니다.

  • RSS 2.0: 전통적인 RSS 리더와 호환
  • Atom 1.0: 최신 표준
  • JSON Feed: 현대적인 애플리케이션 통합 용이

성능 최적화 및 문제 해결

캐싱 메커니즘

LRU(Least Recently Used) 캐시를 통해 자주 요청되는 데이터의 응답 속도를 향상시킵니다.

const mpCache = new LRUCache<string, string>({
  max: 5000, // 최대 5000개 항목 캐싱
});

흔한 오류 및 해결 방법

  • 오류 1: "금일 이용 제한"

  • 원인: 과도한 요청으로 인한 제한

  • 해결: 24시간 대기하거나 서버 재시작

  • 오류 2: 게시물 내용 불완전

  • 원인: 기본 요약 모드 사용

  • 해결: 환경 변수 FEED_MODE=fulltext 설정


확장 가능성을 활용한 통합 사례

사례 1: DingTalk 봇 연동

새 게시물이 있을 때 즉시 알림을 받을 수 있습니다.

cd wewe-rss-dingtalk
docker-compose up -d

사례 2: 커스텀 React 프론트엔드 개발

API를 활용하여 사용자 정의 리더를 만들 수 있습니다.

import { useEffect, useState } from 'react';

function RSSReader() {
  const [posts, setPosts] = useState([]);

  useEffect(() => {
    fetch('http://localhost:4000/feeds/all.json')
      .then(res => res.json())
      .then(data => setPosts(data.items.slice(0, 10)));
  }, []);

  return (
    <div>
      {posts.map(post => (
        <article key={post.id}>
          <h3>{post.title}</h3>
          <div dangerouslySetInnerHTML={{ __html: post.content }} />
        </article>
      ))}
    </div>
  );
}

사례 3: Python 스크립트 자동화

새로운 게시물을 감지하고 알림을 보낼 수 있습니다.

import requests
import schedule
import time

def notify_new_articles():
    response = requests.get(
        "http://localhost:4000/feeds/all.json",
        params={"title_include": "AI|AI기술"}
    )
    articles = response.json().get("items", [])
    for article in articles:
        print(f"새로운 게시물: {article['title']}")

schedule.every().hour.do(notify_new_articles)

while True:
    schedule.run_pending()
    time.sleep(60)

참여 방법

wewe-rss는 오픈소스 프로젝트로, 누구나 기여할 수 있습니다. 새로운 기능이나 개선점을 제안해보세요!

태그: wewe-rss docker RSS

10월 10일 07:13에 게시됨