개인 맞춤형 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 계정을 연결해야 합니다.
http://localhost:4000에 접속- 좌측 메뉴에서 "계정 관리" 클릭
- QR 코드 스캔 후 로그인
2. 구독 추가
연결된 계정으로 구독하고자 하는 공식 계정을 추가합니다.
- "공식 계정" 탭으로 이동
- "+" 버튼 클릭
- 해당 공식 계정의 게시물 링크를 붙여넣기
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는 오픈소스 프로젝트로, 누구나 기여할 수 있습니다. 새로운 기능이나 개선점을 제안해보세요!