feat: Reddit 수집, 쇼츠 텔레그램 미리보기, 코너 9개 체계 정비
- Reddit 트렌딩 수집기 추가 (/reddit collect, /pick 명령어) - 쇼츠 영상 텔레그램 미리보기 후 승인 기반 YouTube 업로드 - 코너 9개로 통합 (앱추천→제품리뷰, 재테크절약→재테크, TV로보는세상/건강정보 추가) - RSS 피드 73개로 확대 (9개 코너 전체 커버) - 블로그 중복 검토 알림 수정, 글 잘림 방지 (max_tokens 8192) - 제품리뷰 다중 이미지 지원, 저품질 이미지 필터링 강화 - HookOptimizer LLM 연동, 인스타/X/틱톡 스케줄러 비활성화 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
+29
-15
@@ -35,13 +35,17 @@ logging.basicConfig(
|
||||
)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# 코너별 타입
|
||||
# 코너별 타입 (공식 9개 코너)
|
||||
CORNER_TYPES = {
|
||||
'easy_guide': '쉬운세상',
|
||||
'hidden_gems': '숨은보물',
|
||||
'vibe_report': '바이브리포트',
|
||||
'ai_insight': 'AI인사이트',
|
||||
'travel_food': '여행맛집',
|
||||
'startup': '스타트업',
|
||||
'tv_world': 'TV로보는세상',
|
||||
'product_review': '제품리뷰',
|
||||
'life_tips': '생활꿀팁',
|
||||
'health': '건강정보',
|
||||
'finance': '재테크',
|
||||
'fact_check': '팩트체크',
|
||||
'one_cut': '한컷',
|
||||
}
|
||||
|
||||
# 글감 타입 비율: 에버그린 50%, 트렌드 30%, 개성 20%
|
||||
@@ -210,16 +214,26 @@ def assign_corner(item: dict, topic_type: str) -> str:
|
||||
title = item.get('topic', '').lower()
|
||||
source = item.get('source', 'rss').lower()
|
||||
|
||||
if topic_type == 'evergreen':
|
||||
if any(kw in title for kw in ['가이드', '방법', '사용법', '입문', '튜토리얼', '기초']):
|
||||
return '쉬운세상'
|
||||
return '숨은보물'
|
||||
elif topic_type == 'trending':
|
||||
if source in ['github', 'product_hunt']:
|
||||
return '숨은보물'
|
||||
return '쉬운세상'
|
||||
else: # personality
|
||||
return '바이브리포트'
|
||||
# 키워드 기반 코너 분류
|
||||
if any(kw in title for kw in ['ai', '인공지능', 'llm', 'gpt', 'claude', 'gemini', '머신러닝', '딥러닝']):
|
||||
return 'AI인사이트'
|
||||
if any(kw in title for kw in ['스타트업', '유니콘', 'vc', '시리즈', '인수']):
|
||||
return '스타트업'
|
||||
if any(kw in title for kw in ['드라마', '예능', '방송', '넷플릭스', '티빙', '쿠팡플레이', '출연', '시청률']):
|
||||
return 'TV로보는세상'
|
||||
if any(kw in title for kw in ['리뷰', '비교', '추천', '제품', '가젯', '아이폰', '갤럭시', 'ios', 'android', '앱', 'app', '도구', '툴', 'tool', '서비스', 'saas']):
|
||||
return '제품리뷰'
|
||||
if any(kw in title for kw in ['건강', '의료', '병원', '질병', '운동', '다이어트', '영양', '수면']):
|
||||
return '건강정보'
|
||||
if any(kw in title for kw in ['절약', '재테크', '투자', '주식', '부동산', '금리', '적금', '연금']):
|
||||
return '재테크'
|
||||
if any(kw in title for kw in ['꿀팁', '생활', '방법', '가이드', '사용법', '입문', '튜토리얼']):
|
||||
return '생활꿀팁'
|
||||
if any(kw in title for kw in ['팩트체크', '가짜뉴스', '논란', '진실', '검증']):
|
||||
return '팩트체크'
|
||||
if source in ['github', 'product_hunt']:
|
||||
return '제품리뷰'
|
||||
return 'AI인사이트' # 기본 코너
|
||||
|
||||
|
||||
def calculate_quality_score(item: dict, rules: dict) -> int:
|
||||
|
||||
Reference in New Issue
Block a user