Initial commit: 블로그 자동 수익 엔진 v2
- 수집봇: Google Trends, GitHub Trending, HN, Product Hunt, RSS 수집 + 품질 점수(0-100) 시스템 + 6가지 폐기 규칙 - 발행봇: Blogger API v3 자동 발행 + 안전장치(팩트체크/위험키워드) - 링크봇: 쿠팡 파트너스 HMAC 서명 + 자동 링크 삽입 - 분석봇: 색인률/CTR/14일성과 등 5대 핵심 지표 + Telegram 리포트 - 이미지봇: manual/request/auto 3가지 모드 request 모드 — 주기적 프롬프트 전송 → Telegram으로 이미지 수령 - 스케줄러: APScheduler + Telegram 봇 명령 리스너 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
33
config/affiliate_links.json
Normal file
33
config/affiliate_links.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"fixed_links": [
|
||||
{
|
||||
"keyword": "ChatGPT Plus",
|
||||
"url": "https://chat.openai.com",
|
||||
"label": "ChatGPT Plus 바로가기",
|
||||
"type": "external"
|
||||
},
|
||||
{
|
||||
"keyword": "Claude Pro",
|
||||
"url": "https://claude.ai",
|
||||
"label": "Claude Pro 바로가기",
|
||||
"type": "external"
|
||||
}
|
||||
],
|
||||
"coupang_category_map": {
|
||||
"마이크": "mic",
|
||||
"웹캠": "webcam",
|
||||
"키보드": "keyboard",
|
||||
"마우스": "mouse",
|
||||
"모니터": "monitor",
|
||||
"노트북": "laptop",
|
||||
"이어폰": "earphone",
|
||||
"헤드셋": "headset",
|
||||
"외장하드": "external-hdd",
|
||||
"USB허브": "usb-hub",
|
||||
"책상": "desk",
|
||||
"의자": "chair",
|
||||
"서적": "book",
|
||||
"스피커": "speaker"
|
||||
},
|
||||
"disclaimer_text": "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
|
||||
}
|
||||
14
config/blogs.json
Normal file
14
config/blogs.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"blogs": [
|
||||
{
|
||||
"id": "main",
|
||||
"blog_id": "${BLOG_MAIN_ID}",
|
||||
"name": "테크인사이더",
|
||||
"persona": "tech_insider",
|
||||
"domain": "",
|
||||
"active": true,
|
||||
"phase": 1,
|
||||
"labels": ["쉬운세상", "숨은보물", "바이브리포트", "팩트체크", "한컷"]
|
||||
}
|
||||
]
|
||||
}
|
||||
72
config/quality_rules.json
Normal file
72
config/quality_rules.json
Normal file
@@ -0,0 +1,72 @@
|
||||
{
|
||||
"min_score": 70,
|
||||
"scoring": {
|
||||
"korean_relevance": {
|
||||
"max": 30,
|
||||
"description": "한국 독자 관련성",
|
||||
"keywords": ["한국", "국내", "한글", "카카오", "네이버", "쿠팡", "삼성", "LG", "현대", "기아", "배달", "토스", "당근", "야놀자"]
|
||||
},
|
||||
"freshness": {
|
||||
"max": 20,
|
||||
"description": "트렌드 신선도",
|
||||
"hours_full_score": 24,
|
||||
"hours_zero_score": 168
|
||||
},
|
||||
"search_demand": {
|
||||
"max": 20,
|
||||
"description": "검색 수요 (Google Trends 상대값)"
|
||||
},
|
||||
"source_trust": {
|
||||
"max": 15,
|
||||
"description": "출처 신뢰도",
|
||||
"levels": {
|
||||
"high": 15,
|
||||
"medium": 8,
|
||||
"low": 3
|
||||
},
|
||||
"high_sources": ["github.com", "official blog", "공식", "press release"],
|
||||
"low_sources": ["twitter.com", "x.com", "reddit.com", "개인"]
|
||||
},
|
||||
"monetization": {
|
||||
"max": 15,
|
||||
"description": "수익 연결 가능성",
|
||||
"keywords": ["도구", "앱", "서비스", "제품", "장비", "구독", "할인", "추천"]
|
||||
}
|
||||
},
|
||||
"discard_rules": [
|
||||
{
|
||||
"id": "no_korean_relevance",
|
||||
"description": "한국 독자와 무관한 주제",
|
||||
"condition": "korean_relevance_score == 0"
|
||||
},
|
||||
{
|
||||
"id": "unverified_source",
|
||||
"description": "출처 불명/미확인 사례",
|
||||
"condition": "source_trust_level == 'unknown'"
|
||||
},
|
||||
{
|
||||
"id": "duplicate_topic",
|
||||
"description": "이미 발행한 주제와 유사도 80% 이상",
|
||||
"similarity_threshold": 0.8
|
||||
},
|
||||
{
|
||||
"id": "stale_trend",
|
||||
"description": "7일 이상 지난 트렌드 (에버그린 제외)",
|
||||
"max_age_days": 7,
|
||||
"except_evergreen": true
|
||||
},
|
||||
{
|
||||
"id": "promotional",
|
||||
"description": "광고성/홍보성이 명확한 원문",
|
||||
"keywords": ["광고", "홍보", "스폰서", "협찬", "AD", "sponsored"]
|
||||
},
|
||||
{
|
||||
"id": "clickbait",
|
||||
"description": "클릭베이트성 주제",
|
||||
"patterns": ["충격", "경악", "난리", "ㅋㅋ", "ㅠㅠ", "대박", "레전드", "역대급"]
|
||||
}
|
||||
],
|
||||
"evergreen_keywords": [
|
||||
"가이드", "방법", "사용법", "입문", "튜토리얼", "기초", "완전정복", "총정리"
|
||||
]
|
||||
}
|
||||
18
config/safety_keywords.json
Normal file
18
config/safety_keywords.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"crypto_keywords": [
|
||||
"스캠", "사기", "폰지", "러그풀", "소송", "코인",
|
||||
"비트코인", "이더리움", "암호화폐", "가상화폐"
|
||||
],
|
||||
"criticism_keywords": [
|
||||
"고소", "피해", "논란", "비리", "내부고발", "고발"
|
||||
],
|
||||
"investment_keywords": [
|
||||
"수익 보장", "확실한 수익", "반드시 오른다", "무조건", "투자 권유"
|
||||
],
|
||||
"legal_keywords": [
|
||||
"불법", "위법", "처벌", "벌금", "징역", "기소"
|
||||
],
|
||||
"always_manual_review": ["팩트체크"],
|
||||
"min_sources_required": 2,
|
||||
"min_quality_score_for_auto": 75
|
||||
}
|
||||
40
config/schedule.json
Normal file
40
config/schedule.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"jobs": [
|
||||
{
|
||||
"id": "collector",
|
||||
"hour": 7,
|
||||
"minute": 0,
|
||||
"description": "수집봇 실행"
|
||||
},
|
||||
{
|
||||
"id": "ai_writer",
|
||||
"hour": 8,
|
||||
"minute": 0,
|
||||
"description": "AI 글 작성 트리거"
|
||||
},
|
||||
{
|
||||
"id": "publish_1",
|
||||
"hour": 9,
|
||||
"minute": 0,
|
||||
"description": "첫 번째 글 발행"
|
||||
},
|
||||
{
|
||||
"id": "publish_2",
|
||||
"hour": 12,
|
||||
"minute": 0,
|
||||
"description": "두 번째 글 발행"
|
||||
},
|
||||
{
|
||||
"id": "publish_3",
|
||||
"hour": 15,
|
||||
"minute": 0,
|
||||
"description": "세 번째 글 발행 (있을 경우)"
|
||||
},
|
||||
{
|
||||
"id": "analytics",
|
||||
"hour": 22,
|
||||
"minute": 0,
|
||||
"description": "분석봇 일일 리포트"
|
||||
}
|
||||
]
|
||||
}
|
||||
49
config/sources.json
Normal file
49
config/sources.json
Normal file
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"rss_feeds": [
|
||||
{
|
||||
"name": "GeekNews",
|
||||
"url": "https://feeds.feedburner.com/geeknews-feed",
|
||||
"category": "tech",
|
||||
"trust_level": "high"
|
||||
},
|
||||
{
|
||||
"name": "ZDNet Korea",
|
||||
"url": "https://www.zdnet.co.kr/rss/rss.php",
|
||||
"category": "tech",
|
||||
"trust_level": "high"
|
||||
},
|
||||
{
|
||||
"name": "Yonhap IT",
|
||||
"url": "https://www.yna.co.kr/rss/it.xml",
|
||||
"category": "tech",
|
||||
"trust_level": "high"
|
||||
},
|
||||
{
|
||||
"name": "Bloter",
|
||||
"url": "https://www.bloter.net/feed",
|
||||
"category": "tech",
|
||||
"trust_level": "high"
|
||||
}
|
||||
],
|
||||
"x_keywords": [
|
||||
"바이브코딩",
|
||||
"vibe coding",
|
||||
"AI 자동화",
|
||||
"Claude 사용",
|
||||
"ChatGPT 활용",
|
||||
"비개발자 앱",
|
||||
"노코드 AI"
|
||||
],
|
||||
"github_trending": {
|
||||
"url": "https://github.com/trending",
|
||||
"languages": ["", "python", "javascript"],
|
||||
"since": "daily"
|
||||
},
|
||||
"hacker_news": {
|
||||
"url": "https://hacker-news.firebaseio.com/v0/topstories.json",
|
||||
"top_n": 30
|
||||
},
|
||||
"product_hunt": {
|
||||
"rss_url": "https://www.producthunt.com/feed"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user