- 수집봇: 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>
1140 lines
54 KiB
Plaintext
1140 lines
54 KiB
Plaintext
================================================================================
|
||
블로그 자동 수익 엔진 — 최종 마스터플랜 v2
|
||
리뷰 반영 수정본
|
||
================================================================================
|
||
|
||
작성일: 2026-03-24
|
||
버전: v2 (리뷰 5개 항목 수정 반영)
|
||
상태: 최종 확정 — Claude Code 전달 가능
|
||
|
||
이전 문서: 전부 이 문서로 대체됨
|
||
- blog-engine-masterplan.txt (초안)
|
||
- blog-engine-masterplan-update.txt (서브에이전트 구조)
|
||
- blog-engine-final-masterplan.txt (v1)
|
||
|
||
v1 → v2 수정 내역:
|
||
[수정1] 블로그 4개 동시 → 1개 시작 → 단계적 확장
|
||
[수정2] 팩트체크 코너 안전장치 강화
|
||
[수정3] 만평 코너 → Phase 1에서 주 1회 실험으로 축소
|
||
[수정4] 수집봇에 폐기 규칙 + 품질 점수 시스템 추가
|
||
[수정5] 구현 지시서 모호 표현 정리
|
||
|
||
|
||
================================================================================
|
||
PART 1: 전략 요약
|
||
================================================================================
|
||
|
||
|
||
── 1. 핵심 컨셉 ──────────────────────────────────────────
|
||
|
||
"AI 시대의 1인 미디어"
|
||
|
||
단순한 AI 글 생성 블로그가 아니라,
|
||
고유한 시각과 개성을 가진 독립 미디어를 만든다.
|
||
|
||
- 트렌드를 다루되, 우리만의 해석과 시각으로
|
||
- AI는 글쓰기만, 나머지는 효율적인 봇으로
|
||
- 국내 시장 먼저, 안정화 후 글로벌 확장
|
||
- 비용 최소화, 수익 극대화
|
||
|
||
|
||
── 2. 전략 원칙 ──────────────────────────────────────────
|
||
|
||
(1) 국내(한국어) 우선
|
||
- 영문 시장은 AI 생성 글이 이미 레드오션
|
||
- 한국어는 상대적으로 경쟁 낮음 + 쿠팡 파트너스 활용 가능
|
||
- 시스템 검증 후 글로벌 확장
|
||
|
||
(2) AI는 글쓰기에만 사용
|
||
- 트렌드 수집, 발행, 링크 삽입, 분석 → 봇(Python)
|
||
- 글 작성 → OpenClaw 서브에이전트 (ChatGPT Pro)
|
||
- 봇이 더 빠르고, 안정적이고, 비용 0원
|
||
|
||
(3) 양보다 질
|
||
- 하루 2-3개. 월 60-90개 수준.
|
||
- 5대 콘텐츠 코너로 차별화된 시각
|
||
- 트렌드 + 개성의 조합
|
||
|
||
(4) 작게 시작, 데이터로 확장 [수정1]
|
||
- Phase 1: 메인 블로그 1개에 집중
|
||
- 데이터(색인률, CTR, 체류시간)를 보고 확장 판단
|
||
- 처음부터 4개가 아니라 1 → 2 → 4 순서
|
||
|
||
(5) 비용 최소화
|
||
- OpenAI API 비용: 0원 (ChatGPT Pro 구독 활용)
|
||
- 호스팅: 0원 (Google Blogger)
|
||
- 총 추가 월 비용: ~5,000원
|
||
|
||
|
||
── 3. 비용 구조 ──────────────────────────────────────────
|
||
|
||
[이미 지불 중 — 변동 없음]
|
||
ChatGPT Pro 구독 $200/월 (OpenClaw + 글쓰기용)
|
||
|
||
[추가 비용]
|
||
미니PC 전기세 ~3,000-5,000원/월
|
||
커스텀 도메인 ~13,000-20,000원/년 (블로그당)
|
||
───────────────────────────────────────────
|
||
Phase 1 추가 총액 ~4,000-6,000원/월 (도메인 1개 기준)
|
||
|
||
|
||
── 4. 수익 구조 ──────────────────────────────────────────
|
||
|
||
[1차 수익] Google AdSense
|
||
- 블로그 광고 클릭당 수익
|
||
- IT/AI 니치 CPC: 클릭당 300-1,500원
|
||
- 현실적 Phase 1 목표: 월 0-5만원
|
||
|
||
[2차 수익] 쿠팡 파트너스
|
||
- 상품 추천 링크 → 구매 시 수수료 3%
|
||
- Phase 1에서는 IT 관련 제품만
|
||
- 현실적 Phase 1 목표: 월 0-5만원
|
||
|
||
[3차 수익] 어필리에이트 (Phase 3+)
|
||
- 크립토 거래소, SaaS 도구 등
|
||
- 블로그 분리 후 추가
|
||
|
||
[4차 수익] 콘텐츠 확장 (Phase 4+)
|
||
- 뉴스레터, 전자책 등
|
||
|
||
※ Phase 1(Month 1-3)에서는 수익 0원을 기본 가정.
|
||
수익이 나면 좋은 거고, 안 나도 정상.
|
||
이 시기는 "검색 자산 축적 기간"이라고 봐야 함.
|
||
|
||
|
||
================================================================================
|
||
PART 2: 시스템 아키텍처
|
||
================================================================================
|
||
|
||
|
||
── 5. 전체 구조도 ────────────────────────────────────────
|
||
|
||
┌─────────────────────────────────────────────────────┐
|
||
│ MINI PC (24시간) │
|
||
│ │
|
||
│ ┌───────────────────────────────────────────────┐ │
|
||
│ │ 봇 레이어 (Python — AI 없음) │ │
|
||
│ │ │ │
|
||
│ │ [수집봇] 트렌드/도구/사례 수집 + 품질 필터링 │ │
|
||
│ │ [발행봇] Blogger API 자동 발행 │ │
|
||
│ │ [링크봇] 쿠팡/어필리에이트 링크 삽입 │ │
|
||
│ │ [분석봇] Search Console/AdSense 데이터 수집 │ │
|
||
│ │ [이미지봇] 만평 이미지 생성 트리거 │ │
|
||
│ │ [스케줄러] cron 기반 시간 관리 │ │
|
||
│ └───────────────┬───────────────────────────────┘ │
|
||
│ │ 주제+데이터 전달 │
|
||
│ ▼ │
|
||
│ ┌───────────────────────────────────────────────┐ │
|
||
│ │ AI 레이어 (OpenClaw — 글쓰기만) │ │
|
||
│ │ │ │
|
||
│ │ 메인 에이전트 → 서브에이전트: blog-writer │ │
|
||
│ │ Model: GPT-5.4 (ChatGPT Pro) │ │
|
||
│ │ │ │
|
||
│ │ 입력: 주제 + 수집 데이터 + 페르소나/코너 │ │
|
||
│ │ 출력: 완성된 글 (제목+본문+메타) │ │
|
||
│ └───────────────┬───────────────────────────────┘ │
|
||
│ │ 완성된 글 반환 │
|
||
│ ▼ │
|
||
│ ┌───────────────────────────────────────────────┐ │
|
||
│ │ 봇 레이어 (후처리) │ │
|
||
│ │ │ │
|
||
│ │ [안전장치] 팩트체크/크립토 글 수동검토 판별 │ │
|
||
│ │ HTML 포맷팅 → 링크 삽입 → 발행 → 알림 │ │
|
||
│ └───────────────────────────────────────────────┘ │
|
||
└─────────────────────────────────────────────────────┘
|
||
|
||
|
||
── 6. 봇 레이어 상세 ────────────────────────────────────
|
||
|
||
[수집봇] collector_bot.py
|
||
|
||
역할: 글감이 될 데이터를 자동으로 모아오고,
|
||
나쁜 글감을 걸러낸다. [수정4]
|
||
|
||
수집 소스:
|
||
- Google Trends (pytrends): 실시간 트렌딩 키워드 (한국)
|
||
- GitHub Trending: 뜨는 오픈소스 프로젝트/도구
|
||
- Product Hunt: 신규 출시 도구/앱
|
||
- Hacker News API (상위 30개): 기술 커뮤니티 인기 글
|
||
- RSS 피드: config/sources.json에 등록된 블로그/뉴스
|
||
- X(트위터) 검색: 바이브코딩 사례, AI 이슈 (키워드 기반)
|
||
|
||
★ 품질 점수 시스템 (0-100점) [수정4]
|
||
|
||
수집된 글감마다 점수를 자동 계산합니다.
|
||
70점 이상만 글감 큐에 들어가고, 나머지는 폐기됩니다.
|
||
|
||
점수 계산 기준:
|
||
+30 한국 독자 관련성 (한국어 키워드, 한국 서비스 관련)
|
||
+20 트렌드 신선도 (24시간 이내 = 만점, 7일 초과 = 0점)
|
||
+20 검색 수요 (Google Trends 상대 검색량)
|
||
+15 출처 신뢰도 (공식 블로그/GitHub = 높음, 개인 SNS = 낮음)
|
||
+15 수익 연결 가능성 (관련 제품/서비스 존재 여부)
|
||
|
||
★ 폐기 규칙 (아래 중 하나라도 해당되면 즉시 폐기) [수정4]
|
||
|
||
- 한국 독자와 무관한 주제 (해외 로컬 뉴스 등)
|
||
- 출처 불명/미확인 사례
|
||
- 이미 발행한 주제와 유사도 80% 이상 (제목 기준)
|
||
- 7일 이상 지난 트렌드 (에버그린 주제 제외)
|
||
- 광고성/홍보성이 명확한 원문
|
||
- 클릭베이트성 주제 (자극적이지만 실질 가치 없음)
|
||
|
||
출력 형태:
|
||
{
|
||
"corner": "숨은보물",
|
||
"topic": "회의록 자동 요약 도구 — 무료 오픈소스",
|
||
"source_url": "https://github.com/...",
|
||
"quality_score": 85,
|
||
"trending_since": "12시간 전",
|
||
"related_keywords": ["회의록", "자동화", "무료 도구"],
|
||
"coupang_keywords": ["마이크", "웹캠", "사무용품"],
|
||
"sources": [
|
||
{"url": "...", "title": "...", "date": "..."},
|
||
{"url": "...", "title": "...", "date": "..."}
|
||
]
|
||
}
|
||
|
||
실행 주기: 매일 07:00
|
||
|
||
|
||
[발행봇] publisher_bot.py
|
||
|
||
역할: AI가 만든 글을 Blogger에 자동 발행.
|
||
|
||
하는 일:
|
||
1. 마크다운 → HTML 변환 (Python markdown 라이브러리)
|
||
2. 목차 자동 생성 (H2, H3 기반)
|
||
3. AdSense 플레이스홀더 삽입
|
||
- <!-- AD_SLOT_1 --> 두 번째 H2 뒤
|
||
- <!-- AD_SLOT_2 --> 결론 섹션 앞
|
||
4. Schema.org Article JSON-LD 마크업 추가
|
||
5. Blogger API v3로 발행
|
||
- POST /blogger/v3/blogs/{blogId}/posts
|
||
- OAuth2 인증 (refresh_token 자동 갱신)
|
||
6. 발행 후 Google Search Console API로 URL 제출 [수정5]
|
||
- 방법: Search Console URL Inspection API 사용
|
||
- IndexNow는 Blogger에서 직접 지원하지 않으므로 사용하지 않음
|
||
- 대안: sitemap.xml 자동 갱신 (Blogger 내장) +
|
||
Search Console API indexing.url.publish 호출
|
||
7. 발행 이력 data/published/ 에 JSON으로 로그
|
||
8. Telegram 알림 전송
|
||
|
||
★ 안전장치: 발행 전 검토 판별 [수정2]
|
||
|
||
아래 조건에 해당하면 자동 발행하지 않고,
|
||
"수동 검토 대기" 상태로 전환 → Telegram으로 알림.
|
||
사용자가 Telegram에서 "승인" 명령을 보내면 발행.
|
||
|
||
수동 검토 대기 조건:
|
||
- 코너가 "팩트체크"인 글 전체
|
||
- 글 본문에 다음 키워드 포함 시:
|
||
암호화폐 관련: 스캠, 사기, 폰지, 러그풀, 소송
|
||
기업/인물 비판: [특정 기업명], 고소, 피해, 논란
|
||
투자 관련: 수익 보장, 확실한, 반드시 오른다
|
||
법률 관련: 불법, 위법, 처벌
|
||
- 출처(source)가 2개 미만인 글 [수정2]
|
||
- 품질 점수가 75점 미만인 글감으로 작성된 글
|
||
|
||
|
||
[링크봇] linker_bot.py
|
||
|
||
역할: 글 본문에 수익 링크를 자동 삽입.
|
||
|
||
하는 일:
|
||
1. 글감 패키지의 coupang_keywords에서 키워드 추출
|
||
2. 쿠팡 파트너스 API로 상품 검색 → 링크 생성
|
||
- Access Key + Secret Key로 인증
|
||
- HMAC 서명 방식 (쿠팡 API 문서 참조)
|
||
3. config/affiliate_links.json에서 추가 링크 매칭
|
||
4. 삽입 위치:
|
||
- 제품/도구 언급 바로 아래
|
||
- 결론/추천 섹션
|
||
5. 쿠팡 필수 문구 자동 추가:
|
||
"이 포스팅은 쿠팡 파트너스 활동의 일환으로,
|
||
이에 따른 일정액의 수수료를 제공받습니다."
|
||
|
||
|
||
[분석봇] analytics_bot.py
|
||
|
||
역할: 블로그 성과 데이터를 수집하고 리포트 생성.
|
||
|
||
★ 핵심 지표 (우선순위 순서) [수정5]
|
||
|
||
1. 색인률: 발행한 글 중 구글에 색인된 비율
|
||
- Search Console API → 전체 글 수 대비 색인된 수
|
||
- 초반에 가장 중요한 지표. 색인 안 되면 모든 게 의미 없음
|
||
|
||
2. 검색 CTR: 검색 결과에 노출됐을 때 클릭하는 비율
|
||
- Search Console API → 노출수 대비 클릭수
|
||
- CTR이 낮으면 제목/메타 설명 개선 필요
|
||
|
||
3. 발행 후 14일 성과: 글 발행 후 2주간 누적 지표
|
||
- 조회수, 검색 유입수, 평균 노출 순위
|
||
- "14일 지나도 유입 0이면 해당 주제 유형 축소" 규칙
|
||
|
||
4. 어필리에이트 클릭률: 글 내 쿠팡/어필 링크 클릭 비율
|
||
- 쿠팡 파트너스 대시보드 데이터
|
||
- 클릭률 높은 글 유형 → 더 많이 생성
|
||
|
||
5. 체류시간: 독자가 글에 머무는 평균 시간
|
||
- Google Analytics (설치 시) 또는 Blogger 내장 통계
|
||
- 체류시간 긴 글 = 양질의 콘텐츠 → 비슷한 주제 확대
|
||
|
||
리포트 출력:
|
||
- 일일: Telegram 알림 (발행 결과 + 기본 지표)
|
||
- 주간: 상세 분석 (코너별 성과, 주제 유형별 비교)
|
||
- 주간 리포트 결과를 수집봇에 피드백 → 다음 주 글감 조정
|
||
|
||
|
||
[이미지봇] image_bot.py
|
||
|
||
역할: 만평 코너용 이미지 생성.
|
||
|
||
하는 일:
|
||
1. 만평 코너의 글 주제를 받음
|
||
2. 만평 프롬프트를 구성 (시사만평 스타일 지시)
|
||
3. OpenAI Images API 호출 [수정5]
|
||
- 엔드포인트: POST https://api.openai.com/v1/images/generations
|
||
- 모델: dall-e-3
|
||
- 인증: OpenAI API Key 사용
|
||
- 비용: ChatGPT Pro 구독과 별도임을 인지
|
||
→ Phase 1에서는 무료 대안 우선 검토:
|
||
(a) ChatGPT 웹에서 수동 생성 후 다운로드
|
||
(b) 오픈소스 이미지 생성 (Stable Diffusion 로컬)
|
||
(c) Canva 무료 템플릿으로 대체
|
||
→ API 비용이 부담되면 (a)로 운영
|
||
4. 이미지 다운로드 → data/images/ 저장
|
||
|
||
실행 빈도: 주 1회 (Phase 1) [수정3]
|
||
|
||
|
||
[스케줄러] scheduler.py
|
||
|
||
역할: 모든 봇의 실행 시간 관리.
|
||
라이브러리: APScheduler (Python, 무료)
|
||
Windows 자동 실행: 작업 스케줄러(Task Scheduler)에 등록
|
||
|
||
※ Windows 작업 스케줄러 등록 방법은 setup.bat에서 자동 처리.
|
||
수동 등록 시: 작업 스케줄러 → 작업 만들기 →
|
||
트리거: "시작할 때" → 동작: pythonw scheduler.py
|
||
|
||
|
||
── 7. AI 레이어 상세 ────────────────────────────────────
|
||
|
||
구조:
|
||
OpenClaw 메인 에이전트 (기존 설정 유지)
|
||
└── blog-writer 서브에이전트 (새로 생성)
|
||
|
||
blog-writer의 역할:
|
||
- 수집봇이 넘긴 "글감 패키지"를 받음
|
||
- 지정된 페르소나 + 코너 설정을 적용
|
||
- 글 작성 (제목 + 본문 + 메타 설명 + 태그)
|
||
- 완성된 글을 반환
|
||
|
||
blog-writer가 하지 않는 것:
|
||
- 트렌드 검색 (수집봇 담당)
|
||
- HTML 변환 (발행봇 담당)
|
||
- 링크 삽입 (링크봇 담당)
|
||
- 이미지 생성 (이미지봇 담당)
|
||
- 발행 (발행봇 담당)
|
||
- 발행 여부 판단 (안전장치 담당)
|
||
|
||
비용: 0원 (ChatGPT Pro 구독에 포함)
|
||
|
||
|
||
── 8. 봇 vs AI 역할 분담 요약 ───────────────────────────
|
||
|
||
작업 담당 이유
|
||
─────────────────────────────────────────────────
|
||
트렌드 키워드 수집 수집봇 API 호출
|
||
GitHub/뉴스 크롤링 수집봇 웹 스크래핑
|
||
글감 품질 점수 계산 수집봇 규칙 기반 계산
|
||
글감 폐기 판단 수집봇 규칙 기반 필터링
|
||
글 작성 AI 창의성 필요
|
||
만평 프롬프트 구성 AI 창의성 필요
|
||
HTML 변환 발행봇 템플릿 변환
|
||
쿠팡 링크 삽입 링크봇 키워드 매칭
|
||
안전장치 판별 발행봇 키워드 감지 (규칙)
|
||
Blogger API 발행 발행봇 API 호출
|
||
Search Console 제출 발행봇 API 호출
|
||
성과 데이터 수집 분석봇 API 호출 + 집계
|
||
Telegram 알림 스케줄러 메시지 전송
|
||
스케줄 관리 스케줄러 시간 체크
|
||
|
||
|
||
================================================================================
|
||
PART 3: 콘텐츠 전략
|
||
================================================================================
|
||
|
||
|
||
── 9. 5대 콘텐츠 코너 ───────────────────────────────────
|
||
|
||
★ Phase 1 운영 구분 [수정3]
|
||
|
||
Phase 1 주력 (Day 1부터):
|
||
코너 1: 쉬운 세상
|
||
코너 2: 숨은 보물
|
||
코너 3: 바이브 리포트
|
||
|
||
Phase 1 제한 운영:
|
||
코너 4: 팩트체크 — 수동 검토 필수, 주 1회 이하 [수정2]
|
||
코너 5: 한 컷(만평) — 주 1회 실험 [수정3]
|
||
|
||
Phase 2 정식 운영 (Month 3+, 시스템 안정화 후):
|
||
코너 4, 5를 정식 코너로 확대
|
||
|
||
|
||
┌─────────────────────────────────────────────────┐
|
||
│ 코너 1: 쉬운 세상 (Easy Guide) [Phase 1 주력]│
|
||
├─────────────────────────────────────────────────┤
|
||
│ │
|
||
│ 컨셉: "하나에서 열까지, 누구나 따라할 수 있게" │
|
||
│ │
|
||
│ AI/테크 주제를 비전문가도 이해하고 │
|
||
│ 바로 실행할 수 있도록 상세히 풀어쓴다. │
|
||
│ │
|
||
│ 특징: │
|
||
│ - 모든 전문 용어에 괄호 안 쉬운 설명 포함 │
|
||
│ - "이것만 따라하세요" 톤 │
|
||
│ - 단계별 구체적 절차 포함 │
|
||
│ │
|
||
│ 예시 글: │
|
||
│ "ChatGPT 처음 쓰는 사람을 위한 완전 가이드" │
|
||
│ "GitHub 뭔지도 모르는 사람이 코드 실행하는 법" │
|
||
│ "AI 자동화, 진짜 나도 할 수 있을까? — 예/아니오│
|
||
│ 판단 가이드" │
|
||
│ │
|
||
│ 발행 빈도: 주 2-3회 │
|
||
│ 수익화: AdSense (정보성 글 체류시간 높음) │
|
||
│ 검색 자산 가치: ★★★★★ (에버그린) │
|
||
└─────────────────────────────────────────────────┘
|
||
|
||
┌─────────────────────────────────────────────────┐
|
||
│ 코너 2: 숨은 보물 (Hidden Gems) [Phase 1 주력]│
|
||
├─────────────────────────────────────────────────┤
|
||
│ │
|
||
│ 컨셉: "세상의 정보격차를 줄여드립니다" │
|
||
│ │
|
||
│ 일반인은 모르지만 유용한 무료 도구, 프로젝트, │
|
||
│ 웹사이트를 발굴해서 쉽게 설명한다. │
|
||
│ │
|
||
│ 특징: │
|
||
│ - 수집봇이 GitHub Trending, Product Hunt에서 │
|
||
│ 자동으로 "일반인에게 유용한 무료 도구" 탐지 │
|
||
│ - "이런 게 무료라고?!" 반응 유도 │
|
||
│ - 설치/사용법까지 상세 가이드 │
|
||
│ │
|
||
│ 예시 글: │
|
||
│ "이 무료 앱 하나면 회의록이 자동 정리됩니다" │
|
||
│ "포토샵 대신 쓸 수 있는 무료 도구 5가지" │
|
||
│ "당신이 몰랐던 구글의 숨겨진 무료 기능 7가지" │
|
||
│ │
|
||
│ 발행 빈도: 주 2-3회 │
|
||
│ 수익화: AdSense + 쿠팡 (관련 장비/서적) │
|
||
│ 검색 자산 가치: ★★★★★ (에버그린) │
|
||
└─────────────────────────────────────────────────┘
|
||
|
||
┌─────────────────────────────────────────────────┐
|
||
│ 코너 3: 바이브 리포트 (Vibe Report) [Phase 1 주력]│
|
||
├─────────────────────────────────────────────────┤
|
||
│ │
|
||
│ 컨셉: "비개발자가 AI로 만든 놀라운 것들" │
|
||
│ │
|
||
│ 코딩 모르는 사람들이 AI를 활용해서 만든 │
|
||
│ 실제 사례를 발굴하고 상세히 리포트한다. │
|
||
│ │
|
||
│ 특징: │
|
||
│ - 수집봇이 X, Reddit에서 사례 탐지 │
|
||
│ - "이 사람은 어떻게 했나" 분석 + 교훈 │
|
||
│ - 따라해볼 수 있는 구체적 단계 포함 │
|
||
│ - 커뮤니티적 성격 → 충성 독자 형성 │
|
||
│ │
|
||
│ 예시 글: │
|
||
│ "50대 회사원이 Claude로 사내 앱을 만들었다" │
|
||
│ "비개발자의 GitHub Actions 자동화 도전기" │
|
||
│ "주부가 만든 가계부 앱 — 어떻게 가능했을까" │
|
||
│ │
|
||
│ 발행 빈도: 주 1-2회 │
|
||
│ 수익화: AdSense + SaaS 어필리에이트 (향후) │
|
||
│ 검색 자산 가치: ★★★★ (사례 고유성) │
|
||
└─────────────────────────────────────────────────┘
|
||
|
||
┌─────────────────────────────────────────────────┐
|
||
│ 코너 4: 팩트체크 (Fact Check) [Phase 1 제한]│
|
||
├─────────────────────────────────────────────────┤
|
||
│ │
|
||
│ 컨셉: "의심하고, 질문하고, 진실을 찾는다" │
|
||
│ │
|
||
│ AI/테크/경제 분야의 과대광고, 거짓 주장을 │
|
||
│ 팩트 기반으로 검증한다. │
|
||
│ │
|
||
│ ★★★ 안전장치 (필수) ★★★ [수정2]
|
||
│ │
|
||
│ 이 코너는 자동화 시스템에서 가장 위험합니다. │
|
||
│ 반드시 아래 규칙을 적용합니다. │
|
||
│ │
|
||
│ 규칙 1: 출처 최소 2개 이상 없으면 글 생성 금지 │
|
||
│ - 수집봇이 source 필드에 URL 2개 이상 첨부 │
|
||
│ - 출처 없는 글감은 이 코너에 배정 금지 │
|
||
│ │
|
||
│ 규칙 2: 자동 발행 금지 │
|
||
│ - 팩트체크 글은 항상 "수동 검토 대기" 상태 │
|
||
│ - Telegram으로 사용자에게 미리보기 전송 │
|
||
│ - 사용자가 "승인" 명령 → 발행 │
|
||
│ - 사용자가 "거부" 명령 → 폐기 │
|
||
│ │
|
||
│ 규칙 3: 금지 대상 │
|
||
│ - 특정 개인에 대한 인신공격 │
|
||
│ - 미확인 정보 기반 기업 비판 │
|
||
│ - 크립토 시세 예측 또는 특정 코인 비판 │
|
||
│ - 법적 판단이 필요한 주장 (불법, 사기 등) │
|
||
│ │
|
||
│ 규칙 4: 글 구조 분리 │
|
||
│ - AI에게 "사실", "의견", "추정"을 명확히 │
|
||
│ 구분해서 쓰도록 지시 │
|
||
│ - 본문에 [사실], [의견] 태그를 명시 │
|
||
│ │
|
||
│ 규칙 5: 필수 면책 문구 │
|
||
│ "이 글은 공개된 자료를 기반으로 한 분석이며, │
|
||
│ 특정 개인이나 기업을 비방할 의도가 없습니다."│
|
||
│ │
|
||
│ 예시 글 (안전한 주제): │
|
||
│ "AI 자동 수익 월 1000만원? — 현실 팩트체크" │
|
||
│ "무료라더니 사실은 — 숨겨진 유료 구조 분석" │
|
||
│ "이 앱 리뷰 4.8점인데 진짜일까? — 리뷰 분석" │
|
||
│ │
|
||
│ 발행 빈도: 주 1회 이하 (Phase 1) │
|
||
│ 수익화: AdSense (논쟁적 글 체류시간 높음) │
|
||
│ 검색 자산 가치: ★★★ (신뢰 구축에 기여) │
|
||
└─────────────────────────────────────────────────┘
|
||
|
||
┌─────────────────────────────────────────────────┐
|
||
│ 코너 5: 한 컷 (One Cut — 만평) [Phase 1 실험]│
|
||
├─────────────────────────────────────────────────┤
|
||
│ │
|
||
│ 컨셉: "한 장의 그림으로 세상을 읽는다" │
|
||
│ │
|
||
│ AI/테크/사회 이슈를 만평 스타일 │
|
||
│ 이미지 + 짧은 해설(300-500자)로 전달. │
|
||
│ │
|
||
│ Phase 1 운영 방식: [수정3]
|
||
│ - 주 1회만 실험적으로 발행 │
|
||
│ - 이미지 생성 방식: ChatGPT 웹에서 수동 생성 │
|
||
│ (API 비용 발생하지 않도록) │
|
||
│ - 독자 반응과 공유율을 관찰 │
|
||
│ - Phase 2에서 반응 좋으면 정식 코너로 확대 │
|
||
│ │
|
||
│ 예시: │
|
||
│ [한 컷] AI가 직업을 빼앗는다? — 진짜 빼앗기는건│
|
||
│ [한 컷] 무료 앱의 비밀 — 당신이 상품이다 │
|
||
│ │
|
||
│ 발행 빈도: 주 1회 (Phase 1) │
|
||
│ 수익화: AdSense + SNS 유입 효과 │
|
||
│ 검색 자산 가치: ★★ (SNS 바이럴에 더 적합) │
|
||
└─────────────────────────────────────────────────┘
|
||
|
||
|
||
── 10. 페르소나 설정 ─────────────────────────────────────
|
||
|
||
★ Phase 1: 메인 페르소나 1개만 운영 [수정1]
|
||
★ Phase 2+: 성과에 따라 페르소나 분리/추가
|
||
|
||
[Phase 1 메인 페르소나]
|
||
|
||
이름: 테크인사이더
|
||
역할: IT/AI/자동화 전문 블로거
|
||
운영 코너: 쉬운 세상 + 숨은 보물 + 바이브 리포트
|
||
+ 팩트체크(주 1회) + 만평(주 1회)
|
||
블로그: Blog 1 (메인, 유일한 블로그)
|
||
말투: 전문적이되 쉽게 풀어 설명. 20-40대 직장인 대상.
|
||
글 길이: 1,500-2,500 단어 (만평은 300-500자)
|
||
|
||
수익화:
|
||
- Google AdSense
|
||
- 쿠팡: IT 장비, 서적, 생산성 도구
|
||
|
||
※ 모든 코너가 하나의 블로그 안에 카테고리로 들어갑니다.
|
||
각 코너가 카테고리/태그로 구분됨.
|
||
이렇게 하면 블로그 1개에 글이 집중 → 도메인 신뢰도 빠르게 상승.
|
||
|
||
[Phase 2에서 분리할 페르소나] (Month 3-4, 성과 보고 판단)
|
||
|
||
(2) 스마트픽 — 쇼핑/리뷰 블로그 (쿠팡 수익 집중)
|
||
분리 조건: 메인 블로그 월 5,000 방문자 돌파 시
|
||
|
||
[Phase 3에서 분리할 페르소나] (Month 5+)
|
||
|
||
(3) 머니플래너 — 재테크 블로그
|
||
(4) 코인리서치 — 크립토 블로그
|
||
분리 조건: AdSense 승인 완료 + 월 10,000 방문자 돌파 시
|
||
|
||
|
||
── 11. 트렌드 감지 + 개성 전략 ───────────────────────────
|
||
|
||
[트렌드 감지] 수집봇이 매일 07:00 자동 수행
|
||
|
||
[글감 생성 비율]
|
||
- 에버그린 글감 50%: 시간 지나도 유효 (검색 자산 축적 핵심)
|
||
- 트렌드 글감 30%: 지금 뜨는 주제
|
||
- 개성 글감 20%: 5대 코너 고유 시각
|
||
|
||
※ v1에서는 트렌드 50%였으나, 초기에는 검색 자산 축적이
|
||
더 중요하므로 에버그린 비율을 높임. [수정1]
|
||
|
||
[개성 적용 — 같은 트렌드도 코너별로 다르게]
|
||
|
||
트렌드: "OpenAI 새 기능 출시"
|
||
|
||
쉬운 세상 → "일반인이 당장 써먹을 수 있는 3가지 변화"
|
||
숨은 보물 → "새 기능 중 사람들이 모르는 숨은 활용법"
|
||
바이브 리포트 → "비개발자가 새 기능으로 만든 첫 사례"
|
||
팩트체크 → "정말 10배 빠르다? 실측 데이터 분석" (수동 검토)
|
||
만평 → [한 컷] AI가 또 진화했다 — 인간은? (주 1회)
|
||
|
||
|
||
================================================================================
|
||
PART 4: 인프라 & 세팅
|
||
================================================================================
|
||
|
||
|
||
── 12. 이미 갖고 있는 것 ─────────────────────────────────
|
||
|
||
✅ 미니PC (Windows, 24시간 가동 가능)
|
||
✅ OpenClaw 설치 + 운영 중
|
||
✅ ChatGPT Pro 구독 ($200/월)
|
||
✅ GPT-5.4 Codex 연결됨
|
||
✅ Telegram 봇 (OpenClaw 제어용)
|
||
✅ Claude Code (구현 도구)
|
||
|
||
|
||
── 13. 새로 세팅할 것 ────────────────────────────────────
|
||
|
||
[Phase 1 — 반드시 필요]
|
||
□ Python 3.11+ 설치 (미설치 시)
|
||
□ Git 설치 (미설치 시)
|
||
□ blog-writer 서브에이전트 (OpenClaw에 추가)
|
||
□ Python 봇 5개 + 스케줄러
|
||
□ Google Blogger 블로그 1개 생성 [수정1]
|
||
□ Google Cloud Console → Blogger API OAuth2 인증
|
||
□ Google Search Console 등록 + 사이트맵 제출
|
||
□ 쿠팡 파트너스 계정 + API 키
|
||
□ 커스텀 도메인 1개 (AdSense 승인용)
|
||
□ 페르소나 파일 1개 (테크인사이더) + 코너 설정 5개
|
||
|
||
[Phase 1 — 불필요] [수정5]
|
||
× Docker Desktop (OpenClaw가 이미 Docker로 돌고 있으므로
|
||
추가 컨테이너 불필요. 봇은 Python으로 직접 실행)
|
||
× Node.js (봇 레이어가 전부 Python이므로 불필요)
|
||
× GitHub Actions (미니PC 로컬 스케줄러 사용)
|
||
|
||
[Phase 2에서 추가]
|
||
□ 블로그 2번째 (스마트픽 분리 시)
|
||
□ 커스텀 도메인 2번째
|
||
□ 티스토리 크로스포스팅 (선택) [수정5]
|
||
※ 티스토리는 Phase 2 이후 선택 사항.
|
||
메인 블로그 안정화가 먼저.
|
||
|
||
|
||
── 14. Google Blogger 세팅 ───────────────────────────────
|
||
|
||
Phase 1에서는 블로그 1개만 만듭니다. [수정1]
|
||
|
||
[블로그 생성]
|
||
1. https://www.blogger.com 접속 → Google 계정 로그인
|
||
2. "새 블로그 만들기" 클릭
|
||
3. 이름: "테크인사이더" (또는 원하는 이름)
|
||
4. 주소: techinsider-kr.blogspot.com (임시)
|
||
|
||
[카테고리 설정]
|
||
하나의 블로그 안에 5대 코너를 카테고리(라벨)로 구성:
|
||
- 라벨: 쉬운세상, 숨은보물, 바이브리포트, 팩트체크, 한컷
|
||
|
||
[필수 페이지 (AdSense 승인용)]
|
||
- About (소개) 페이지
|
||
- Contact (연락처) 페이지
|
||
- Privacy Policy (개인정보처리방침) 페이지
|
||
|
||
[커스텀 도메인 연결]
|
||
- Namecheap 또는 Porkbun에서 도메인 구매 (연 $10-15)
|
||
- Blogger 설정 → 맞춤 도메인 → 연결
|
||
|
||
[블로그 ID 확인]
|
||
- Blogger 대시보드 → 브라우저 주소창에서 blogID=숫자 확인
|
||
- 이 숫자를 .env 파일의 BLOG_MAIN_ID에 저장
|
||
|
||
|
||
── 15. Google OAuth2 인증 ────────────────────────────────
|
||
|
||
(이전 마스터플랜과 동일. 변경 없음.)
|
||
|
||
요약:
|
||
1. Google Cloud Console → 프로젝트 생성 → Blogger API 활성화
|
||
2. OAuth 동의 화면 설정 → 테스트 사용자 추가
|
||
3. OAuth 클라이언트 ID 생성 (데스크톱 앱)
|
||
4. credentials.json 다운로드 → C:\blog-engine\ 에 저장
|
||
5. python scripts/get_token.py 실행 → 브라우저 인증
|
||
6. 출력된 GOOGLE_REFRESH_TOKEN을 .env에 저장
|
||
|
||
|
||
── 16. 쿠팡 파트너스 세팅 ────────────────────────────────
|
||
|
||
(이전 마스터플랜과 동일. 변경 없음.)
|
||
|
||
요약:
|
||
1. https://partners.coupang.com 가입
|
||
2. 도구 → 링크 생성 API → Access Key/Secret Key 발급
|
||
3. .env에 COUPANG_ACCESS_KEY, COUPANG_SECRET_KEY 저장
|
||
|
||
|
||
================================================================================
|
||
PART 5: 운영
|
||
================================================================================
|
||
|
||
|
||
── 17. 일일 운영 플로우 ──────────────────────────────────
|
||
|
||
[자동 — 사람 개입 없음 (대부분)]
|
||
|
||
07:00 수집봇 실행
|
||
→ 트렌드/도구/사례 수집
|
||
→ 품질 점수 계산 → 70점 미만 폐기 [수정4]
|
||
→ 에버그린 50% + 트렌드 30% + 개성 20% 비율로 글감 구성
|
||
|
||
08:00 AI 글 작성 시작
|
||
→ 메인 에이전트가 blog-writer 스폰
|
||
→ 글감 + 페르소나(테크인사이더) + 코너 → 글 작성
|
||
|
||
09:00 첫 번째 글 발행
|
||
→ 안전장치 체크:
|
||
팩트체크 글? → 수동 검토 대기 → Telegram 알림 [수정2]
|
||
위험 키워드? → 수동 검토 대기
|
||
그 외? → 자동 발행
|
||
→ 발행봇: HTML 변환 → 링크 삽입 → Blogger 발행
|
||
→ Search Console URL 제출
|
||
→ Telegram 알림
|
||
|
||
12:00 두 번째 글 발행 (다른 코너)
|
||
|
||
15:00 세 번째 글 발행 (있을 경우)
|
||
|
||
22:00 분석봇 실행
|
||
→ 일일 리포트 → Telegram 발송
|
||
→ 색인률, CTR 등 핵심 지표 보고 [수정5]
|
||
|
||
[수동 — Telegram 명령]
|
||
|
||
"글 발행해줘 숨은보물"
|
||
"오늘 수집된 글감 보여줘"
|
||
"대기 중인 글 승인" / "대기 중인 글 거부" [수정2]
|
||
"이번 주 리포트"
|
||
"발행 중단" / "발행 재개"
|
||
|
||
|
||
── 18. 발행 스케줄 ───────────────────────────────────────
|
||
|
||
[Phase 1 스케줄 — 블로그 1개, 하루 2-3개] [수정1]
|
||
|
||
시간 코너 (순환)
|
||
──────────────────────────────────────
|
||
09:00 쉬운세상 / 숨은보물 (교대)
|
||
12:00 숨은보물 / 바이브리포트 (교대)
|
||
15:00 (선택) 트렌드 속보 또는 에버그린 추가
|
||
|
||
만평: 주 1회 (수요일 or 금요일) [수정3]
|
||
팩트체크: 주 1회 이하 (수동 검토 후 발행) [수정2]
|
||
|
||
주간 총: 12-18개 글
|
||
월간 총: 50-75개 글
|
||
|
||
[Phase 2 스케줄 — 블로그 2개로 확장 시]
|
||
Blog 1 (테크인사이더): 하루 2개 유지
|
||
Blog 2 (스마트픽): 하루 1개 추가
|
||
|
||
|
||
── 19. 성과 피드백 루프 ──────────────────────────────────
|
||
|
||
분석봇이 매주 자동으로 계산하는 핵심 지표: [수정5]
|
||
|
||
┌──────────────────┬───────────────────────────────┐
|
||
│ 지표 │ Phase 1 목표 │
|
||
├──────────────────┼───────────────────────────────┤
|
||
│ 색인률 │ 발행 7일 내 80% 이상 색인 │
|
||
│ 검색 CTR │ 3% 이상 │
|
||
│ 14일 성과 │ 발행 14일 후 조회수 50+ (글당)│
|
||
│ 어필리에이트 클릭│ 글당 3회 이상 클릭 │
|
||
│ 체류시간 │ 평균 2분 이상 │
|
||
└──────────────────┴───────────────────────────────┘
|
||
|
||
피드백 적용 규칙:
|
||
- 색인률 50% 미만 → 글 구조/Schema 점검
|
||
- CTR 1% 미만 → 제목/메타 설명 스타일 변경
|
||
- 14일 성과 0인 글 유형 → 해당 주제 유형 축소
|
||
- 특정 코너가 타 코너 대비 2배 성과 → 해당 코너 비율 확대
|
||
- 쿠팡 클릭률 높은 글 유형 → 비슷한 주제 더 생성
|
||
|
||
|
||
── 20. Phase별 로드맵 ────────────────────────────────────
|
||
|
||
[Phase 1] Month 1-3: 메인 블로그 1개에 집중 [수정1]
|
||
|
||
목표: 시스템 검증 + 검색 자산 축적 + AdSense 승인
|
||
|
||
- 블로그 1개 (테크인사이더) + 커스텀 도메인 1개
|
||
- 코너 3개 주력 (쉬운세상 + 숨은보물 + 바이브리포트)
|
||
- 팩트체크 주 1회 + 만평 주 1회 (실험)
|
||
- 매일 2-3개 글 자동 발행 → 월 50-75개 축적
|
||
- 쿠팡 링크 삽입 (IT 관련만)
|
||
- AdSense 신청 (20개 이상 축적 후)
|
||
- 성과 지표 모니터링 시작
|
||
|
||
현실적 수익 기대: 0원 ~ 5만원/월
|
||
핵심 판단 기준: 색인률 80%+, 검색 유입 시작 여부
|
||
|
||
[Phase 2] Month 3-5: 안정화 + 첫 분리
|
||
|
||
조건: 월 5,000 방문자 + AdSense 승인 완료
|
||
|
||
- 스마트픽 블로그 분리 (Blog 2) + 도메인 추가
|
||
- 쿠팡 수익 집중 블로그 운영 시작
|
||
- 만평 코너 정식 운영 (주 2-3회)
|
||
- 팩트체크 코너 빈도 증가 (안전장치 유지)
|
||
- 티스토리 크로스포스팅 검토
|
||
- 성과 피드백 루프 본격 가동
|
||
|
||
현실적 수익 기대: 5-20만원/월
|
||
|
||
[Phase 3] Month 5-8: 성장 + 추가 분리
|
||
|
||
조건: 월 10,000 방문자 + 안정적 수익 발생
|
||
|
||
- 머니플래너 / 코인리서치 블로그 분리 검토
|
||
- 거래소/SaaS 어필리에이트 추가
|
||
- 뉴스레터 시작 (블로그 독자 → 이메일 구독)
|
||
- 내부 링크 전략 강화
|
||
|
||
현실적 수익 기대: 10-50만원/월
|
||
|
||
[Phase 4] Month 8+: 확장
|
||
|
||
- 영문 블로그 추가 (글로벌 진출)
|
||
- 전자책 출판 (블로그 글 묶음)
|
||
- 추가 니치 테스트
|
||
|
||
현실적 수익 기대: 30-100만원/월+
|
||
|
||
|
||
================================================================================
|
||
PART 6: 구현
|
||
================================================================================
|
||
|
||
|
||
── 21. 파일 구조 ─────────────────────────────────────────
|
||
|
||
C:\blog-engine\
|
||
│
|
||
├── bots\
|
||
│ ├── collector_bot.py ← 수집봇 (품질 점수 + 폐기 규칙 포함)
|
||
│ ├── publisher_bot.py ← 발행봇 (안전장치 포함)
|
||
│ ├── linker_bot.py ← 링크봇
|
||
│ ├── analytics_bot.py ← 분석봇 (5대 핵심 지표)
|
||
│ ├── image_bot.py ← 이미지봇 (Phase 1은 수동 대체 가능)
|
||
│ └── scheduler.py ← 스케줄러
|
||
│
|
||
├── config\
|
||
│ ├── blogs.json ← 블로그 ID/도메인 (Phase 1: 1개만)
|
||
│ ├── schedule.json ← 발행 시간표
|
||
│ ├── sources.json ← 수집봇 크롤링 소스 목록
|
||
│ ├── affiliate_links.json ← 어필리에이트 링크 DB
|
||
│ ├── quality_rules.json ← 수집봇 품질/폐기 규칙 [수정4]
|
||
│ └── safety_keywords.json ← 안전장치 키워드 목록 [수정2]
|
||
│
|
||
├── data\
|
||
│ ├── topics\ ← 글감 큐 (수집봇 출력)
|
||
│ ├── collected\ ← 수집 원본 데이터
|
||
│ ├── discarded\ ← 폐기된 글감 로그 [수정4]
|
||
│ ├── pending_review\ ← 수동 검토 대기 글 [수정2]
|
||
│ ├── published\ ← 발행 이력
|
||
│ ├── analytics\ ← 분석 데이터
|
||
│ └── images\ ← 만평 이미지
|
||
│
|
||
├── scripts\
|
||
│ ├── get_token.py ← Google OAuth 토큰 발급
|
||
│ └── setup.bat ← Windows 설치 스크립트 [수정5]
|
||
│
|
||
├── requirements.txt
|
||
├── .env
|
||
├── .env.example
|
||
└── README.md
|
||
|
||
~/.openclaw/
|
||
│
|
||
├── agents\
|
||
│ ├── main\
|
||
│ │ └── AGENTS.md ← 서브에이전트 관리 규칙
|
||
│ │
|
||
│ └── blog-writer\
|
||
│ └── SOUL.md ← 글쓰기 전문가 설정
|
||
│
|
||
└── workspace-blog-writer\
|
||
├── personas\
|
||
│ └── tech_insider.md ← Phase 1은 1개만 [수정1]
|
||
├── corners\
|
||
│ ├── easy_guide.md
|
||
│ ├── hidden_gems.md
|
||
│ ├── vibe_report.md
|
||
│ ├── fact_check.md ← 안전장치 규칙 포함 [수정2]
|
||
│ └── one_cut.md
|
||
└── templates\
|
||
└── output_format.md ← 출력 포맷 템플릿
|
||
|
||
|
||
── 22. Claude Code 전달용 지시서 ─────────────────────────
|
||
|
||
아래 내용을 이 마스터플랜 파일과 함께 Claude Code에게 전달.
|
||
|
||
─────────────────────────────────────────────
|
||
지시서
|
||
─────────────────────────────────────────────
|
||
|
||
이 마스터플랜(blog-engine-final-masterplan-v2.txt)을 읽고
|
||
아래 순서대로 구현해주세요.
|
||
|
||
환경:
|
||
- OS: Windows
|
||
- Python 3.11+
|
||
- OpenClaw 설치/운영 중 (GPT-5.4 Codex 연결)
|
||
- 작업 폴더: C:\blog-engine
|
||
- Docker: 이미 OpenClaw용으로 실행 중 (추가 컨테이너 불필요)
|
||
|
||
────────────────────────────
|
||
1단계: 프로젝트 초기화
|
||
────────────────────────────
|
||
- 위 파일 구조대로 폴더/파일 생성
|
||
- requirements.txt:
|
||
pytrends
|
||
google-api-python-client
|
||
google-auth-oauthlib
|
||
google-auth-httplib2
|
||
python-dotenv
|
||
apscheduler
|
||
requests
|
||
beautifulsoup4
|
||
feedparser
|
||
markdown
|
||
python-telegram-bot
|
||
- .env.example 작성:
|
||
GOOGLE_CLIENT_ID=
|
||
GOOGLE_CLIENT_SECRET=
|
||
GOOGLE_REFRESH_TOKEN=
|
||
BLOG_MAIN_ID=
|
||
COUPANG_ACCESS_KEY=
|
||
COUPANG_SECRET_KEY=
|
||
TELEGRAM_BOT_TOKEN=
|
||
TELEGRAM_CHAT_ID=
|
||
- setup.bat 작성:
|
||
(a) python -m venv venv
|
||
(b) venv\Scripts\activate
|
||
(c) pip install -r requirements.txt
|
||
(d) copy .env.example .env (없을 경우)
|
||
(e) echo "Setup complete. Edit .env with your API keys."
|
||
(f) Windows 작업 스케줄러에 scheduler.py 등록
|
||
방법: schtasks /create /tn "BlogEngine"
|
||
/tr "C:\blog-engine\venv\Scripts\pythonw.exe
|
||
C:\blog-engine\bots\scheduler.py"
|
||
/sc onlogon /rl highest
|
||
|
||
────────────────────────────
|
||
2단계: 수집봇 (collector_bot.py)
|
||
────────────────────────────
|
||
- Google Trends pytrends 연동 (geo='KR', hl='ko')
|
||
trending_searches()로 일간 트렌딩 수집
|
||
관심 카테고리: 기술, 비즈니스
|
||
- GitHub Trending 크롤링 (requests + BeautifulSoup)
|
||
URL: https://github.com/trending?since=daily
|
||
프로젝트명, 설명, 스타수 추출
|
||
- Product Hunt RSS (feedparser)
|
||
- Hacker News API
|
||
URL: https://hacker-news.firebaseio.com/v0/topstories.json
|
||
상위 30개 스토리 제목/URL 수집
|
||
- RSS 피드 리더 (config/sources.json에서 URL 로드)
|
||
- 품질 점수 계산 로직 구현 (PART 2 섹션 6 기준)
|
||
quality_rules.json에서 점수 기준 로드
|
||
- 폐기 규칙 구현 (PART 2 섹션 6 기준)
|
||
폐기된 글감은 data/discarded/에 로그 (디버깅용)
|
||
- 글감 패키지를 data/topics/에 JSON으로 저장
|
||
- 에버그린 50%, 트렌드 30%, 개성 20% 비율 적용
|
||
|
||
────────────────────────────
|
||
3단계: 발행봇 (publisher_bot.py)
|
||
────────────────────────────
|
||
- 마크다운 → HTML 변환 (markdown 라이브러리 + extensions)
|
||
- 목차 자동 생성 (H2, H3 기반, toc extension)
|
||
- AdSense 플레이스홀더 삽입 (두 번째 H2 뒤, 결론 앞)
|
||
- Schema.org Article JSON-LD 생성 (headline, datePublished, author)
|
||
- 안전장치 구현:
|
||
config/safety_keywords.json에서 위험 키워드 로드
|
||
코너가 "팩트체크"면 무조건 수동 검토 대기
|
||
위험 키워드 감지 시 수동 검토 대기
|
||
출처 2개 미만이면 수동 검토 대기
|
||
대기 글은 data/pending_review/에 저장
|
||
Telegram으로 미리보기 + 승인/거부 버튼 전송
|
||
- Google Blogger API v3 발행
|
||
google-api-python-client 사용
|
||
OAuth2 Credentials (refresh_token 기반 자동 갱신)
|
||
service.posts().insert(blogId, body, isDraft=False)
|
||
- Google Search Console API URL 제출
|
||
searchconsole.urlInspection.index.inspect 또는
|
||
사이트맵은 Blogger 내장 자동 갱신에 의존
|
||
- 발행 이력 data/published/에 JSON 로그
|
||
- Telegram 알림 (python-telegram-bot 라이브러리)
|
||
|
||
────────────────────────────
|
||
4단계: 링크봇 (linker_bot.py)
|
||
────────────────────────────
|
||
- 글감 패키지의 coupang_keywords에서 키워드 추출
|
||
- 쿠팡 파트너스 API 연동:
|
||
인증: HMAC 서명 (Access Key + Secret Key)
|
||
엔드포인트: https://api-gateway.coupang.com/v2/providers/
|
||
affiliate_api/apis/openapi/products/search
|
||
파라미터: keyword, limit=5, subId (추적용)
|
||
- 상품명 + 가격 + 어필리에이트 링크 HTML 생성
|
||
- 글 본문 적절한 위치에 삽입
|
||
- config/affiliate_links.json에서 추가 매칭
|
||
- 쿠팡 필수 문구 자동 추가
|
||
|
||
────────────────────────────
|
||
5단계: 분석봇 (analytics_bot.py)
|
||
────────────────────────────
|
||
- 5대 핵심 지표 수집:
|
||
(1) 색인률: Search Console API → 제출 URL 중 색인된 비율
|
||
(2) 검색 CTR: Search Console API → 클릭/노출
|
||
(3) 14일 성과: 발행 이력 기반 → 발행 14일 후 조회수
|
||
(4) 어필리에이트 클릭: 쿠팡 대시보드 (수동 입력 또는 API)
|
||
(5) 체류시간: Blogger 내장 통계 (API 제한적, 추후 GA 연동)
|
||
- 일일 리포트 생성 → Telegram 전송
|
||
- 주간 리포트 생성 → 코너별/주제유형별 성과 비교
|
||
- 피드백 JSON 출력 → 수집봇이 다음 주 글감 조정에 활용
|
||
|
||
────────────────────────────
|
||
6단계: 이미지봇 (image_bot.py)
|
||
────────────────────────────
|
||
- Phase 1에서는 "수동 모드"를 기본으로 구현:
|
||
만평 주제를 받으면 → DALL-E 프롬프트만 생성 → Telegram으로 전송
|
||
사용자가 ChatGPT 웹에서 이미지 수동 생성 → 다운로드
|
||
이미지를 data/images/에 저장 → 발행봇이 글에 삽입
|
||
- "자동 모드"는 별도 플래그로 구현 (기본 OFF):
|
||
자동 모드 ON 시 OpenAI Images API 직접 호출
|
||
POST https://api.openai.com/v1/images/generations
|
||
인증: OpenAI API Key 별도 필요 (ChatGPT Pro와 무관)
|
||
비용: 이미지당 $0.04-0.08 발생
|
||
이 비용을 감수할 경우에만 자동 모드 활성화
|
||
|
||
────────────────────────────
|
||
7단계: 스케줄러 (scheduler.py)
|
||
────────────────────────────
|
||
- APScheduler 사용
|
||
- config/schedule.json 읽어서 시간별 작업 등록
|
||
- 기본 일정:
|
||
07:00 collector_bot.run()
|
||
08:00 AI 글 작성 트리거 (OpenClaw 서브에이전트 호출)
|
||
09:00 publisher_bot.publish(글1)
|
||
12:00 publisher_bot.publish(글2)
|
||
15:00 publisher_bot.publish(글3) — 있을 경우
|
||
22:00 analytics_bot.daily_report()
|
||
- Telegram 수동 명령 리스너도 포함
|
||
- 로그: logs/scheduler.log (RotatingFileHandler)
|
||
|
||
────────────────────────────
|
||
8단계: OAuth 헬퍼
|
||
────────────────────────────
|
||
- scripts/get_token.py
|
||
InstalledAppFlow.from_client_secrets_file 사용
|
||
SCOPES = ['https://www.googleapis.com/auth/blogger',
|
||
'https://www.googleapis.com/auth/webmasters']
|
||
브라우저 인증 → refresh_token 출력
|
||
token.json 저장
|
||
|
||
────────────────────────────
|
||
9단계: OpenClaw 서브에이전트
|
||
────────────────────────────
|
||
- blog-writer 에이전트 생성
|
||
- SOUL.md 작성 (PART 2 섹션 7 + PART 3 코너 규칙 반영)
|
||
- 페르소나 파일: workspace-blog-writer/personas/tech_insider.md
|
||
(Phase 1은 1개만)
|
||
- 코너 설정 파일: workspace-blog-writer/corners/ 에 5개
|
||
fact_check.md에 안전장치 규칙 명시
|
||
- 메인 에이전트 AGENTS.md 업데이트
|
||
- 출력 포맷:
|
||
---TITLE---
|
||
---META---
|
||
---SLUG---
|
||
---TAGS---
|
||
---CORNER--- (어떤 코너인지)
|
||
---BODY---
|
||
---COUPANG_KEYWORDS---
|
||
---SOURCES--- (출처 URL 목록)
|
||
---DISCLAIMER---
|
||
|
||
────────────────────────────
|
||
10단계: 통합 테스트
|
||
────────────────────────────
|
||
- 수집봇 단독 테스트 → data/topics/에 글감 생성 확인
|
||
- 품질 점수 + 폐기 규칙 동작 확인
|
||
- AI 글 작성 테스트 (쉬운세상 코너 1개)
|
||
- 발행봇 HTML 변환 + 링크 삽입 확인
|
||
- 안전장치: 팩트체크 글 → 수동 검토 대기 확인
|
||
- Blogger 발행 → 실제 블로그에 글 표시 확인
|
||
- Telegram 알림 수신 확인
|
||
- 스케줄러 5분 후 테스트 → 자동 실행 확인
|
||
|
||
─────────────────────────────────────────────
|
||
지시서 끝
|
||
─────────────────────────────────────────────
|
||
|
||
|
||
================================================================================
|
||
v2 수정 내역 요약
|
||
================================================================================
|
||
|
||
[수정1] 블로그 운영 규모
|
||
v1: 블로그 4개 동시 시작
|
||
v2: Phase 1은 블로그 1개에 집중 → 단계적 확장 (1→2→4)
|
||
에버그린 글 비율 30→50%로 상향 (검색 자산 축적 우선)
|
||
|
||
[수정2] 팩트체크 안전장치
|
||
v1: "수집봇이 팩트를 모으고 AI에 전달" (원칙만)
|
||
v2: 출처 2개 이상 필수, 자동 발행 금지, 위험 키워드 감지,
|
||
수동 검토 대기 시스템, 사실/의견 분리, 금지 대상 명시,
|
||
면책 문구 필수
|
||
|
||
[수정3] 만평 코너 운영
|
||
v1: 주 2-3회 (정식 코너)
|
||
v2: Phase 1에서 주 1회 실험, 이미지는 수동 생성 우선,
|
||
Phase 2에서 반응 보고 정식 확대 판단
|
||
|
||
[수정4] 수집봇 품질 관리
|
||
v1: 수집 소스만 정의 (폐기 규칙 없음)
|
||
v2: 품질 점수 시스템(0-100, 70점 미만 폐기),
|
||
6가지 폐기 규칙 명시, 폐기 로그 저장
|
||
|
||
[수정5] 구현 명확성
|
||
v1:
|
||
- "Search Console 색인 요청 (IndexNow)" → 모호
|
||
- "DALL-E API (ChatGPT Pro 포함)" → 비용 혼동
|
||
- Docker 불필요하게 환경에 포함
|
||
- setup.bat 범위 불명확
|
||
- 성과 지표 = 조회수 중심
|
||
|
||
v2:
|
||
- Search Console URL Inspection API 명시, IndexNow 삭제
|
||
- DALL-E는 별도 API Key/비용임을 명시, 수동 대안 제공
|
||
- Docker 추가 불필요 명시
|
||
- setup.bat 구체적 단계 명시 (venv, pip, Task Scheduler)
|
||
- 성과 지표 = 색인률/CTR/14일성과/클릭률/체류시간 5개로 구체화
|
||
- 티스토리 = Phase 2 선택사항으로 명확화
|
||
|
||
================================================================================
|
||
끝
|
||
================================================================================
|