From 74891eaa60d938e205bd203534858e15a19be368 Mon Sep 17 00:00:00 2001 From: gahusb Date: Tue, 7 Apr 2026 01:03:53 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20CLAUDE.md=EC=97=90=20blog-lab=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=B4=ED=94=84=EB=9D=BC=EC=9D=B8=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=EC=82=AC=ED=95=AD=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CLAUDE.md | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 61b2a04..6cf6a46 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -329,20 +329,24 @@ docker compose up -d | POST | `/api/travel/reload` | 메모리 캐시 초기화 | ### blog-lab (blog-lab/) -- 블로그 마케팅 수익화 서비스 (키워드 분석 → AI 글 생성 → 품질 리뷰 → 포스팅 → 수익 추적) +- 블로그 마케팅 수익화 서비스 (키워드 분석 → AI 글 생성 → 마케팅 강화 → 품질 리뷰 → 포스팅 → 수익 추적) - AI 엔진: Claude API (Anthropic, `claude-sonnet-4-20250514`) -- 웹 검색: Naver Search API (블로그 + 쇼핑) +- 웹 검색: Naver Search API (블로그 + 쇼핑) + 상위 블로그 본문 크롤링 - DB: `/app/data/blog_marketing.db` -- 파일 구조: `main.py`, `db.py`, `config.py`, `naver_search.py`, `content_generator.py`, `quality_reviewer.py` +- 파일 구조: `main.py`, `db.py`, `config.py`, `naver_search.py`, `content_generator.py`, `marketer.py`, `quality_reviewer.py`, `web_crawler.py` + +**파이프라인**: 리서치(+크롤링) → 작가(초안) → 마케터(링크 삽입) → 평가자(6기준 60점) +**상태 흐름**: `draft` → `marketed` → `reviewed` → `published` **blog_marketing.db 테이블** | 테이블 | 설명 | |--------|------| -| `keyword_analyses` | 키워드 분석 결과 (네이버 검색 데이터 + 경쟁도/기회 점수) | -| `blog_posts` | 블로그 글 (draft → reviewed → published) | +| `keyword_analyses` | 키워드 분석 결과 (네이버 검색 데이터 + 경쟁도/기회 점수 + 크롤링 본문) | +| `blog_posts` | 블로그 글 (draft → marketed → reviewed → published) | +| `brand_links` | 브랜드커넥트 제휴 링크 (post_id/keyword_id FK) | | `commissions` | 포스트별 월간 클릭/구매/수익 | -| `generation_tasks` | 비동기 작업 상태 (research/generate/review) | +| `generation_tasks` | 비동기 작업 상태 (research/generate/market/review) | | `prompt_templates` | AI 프롬프트 템플릿 (DB 저장, 코드 배포 없이 수정 가능) | **blog-lab API 목록** @@ -350,14 +354,19 @@ docker compose up -d | 메서드 | 경로 | 설명 | |--------|------|------| | GET | `/api/blog-marketing/status` | 서비스 상태 (API 키 설정 현황) | -| POST | `/api/blog-marketing/research` | 키워드 분석 시작 (BackgroundTask) | +| POST | `/api/blog-marketing/research` | 키워드 분석 시작 (+ 상위 블로그 크롤링) | | GET | `/api/blog-marketing/research/history` | 분석 이력 조회 | | GET | `/api/blog-marketing/research/{id}` | 분석 상세 조회 | | DELETE | `/api/blog-marketing/research/{id}` | 분석 삭제 | | GET | `/api/blog-marketing/task/{task_id}` | 작업 상태 폴링 | -| POST | `/api/blog-marketing/generate` | AI 글 생성 (트렌드 브리프 + 본문) | -| POST | `/api/blog-marketing/review/{post_id}` | 품질 리뷰 (5기준 × 10점) | +| POST | `/api/blog-marketing/generate` | 작가 단계: AI 글 생성 (크롤링 참고 + 링크 반영) | +| POST | `/api/blog-marketing/market/{post_id}` | 마케터 단계: 전환율 강화 + 링크 삽입 | +| POST | `/api/blog-marketing/review/{post_id}` | 평가자 단계: 품질 리뷰 (6기준 × 10점, 42/60 통과) | | POST | `/api/blog-marketing/regenerate/{post_id}` | 피드백 기반 재생성 | +| POST | `/api/blog-marketing/links` | 브랜드커넥트 링크 등록 | +| GET | `/api/blog-marketing/links` | 링크 조회 (post_id, keyword_id 필터) | +| PUT | `/api/blog-marketing/links/{id}` | 링크 수정 | +| DELETE | `/api/blog-marketing/links/{id}` | 링크 삭제 | | GET | `/api/blog-marketing/posts` | 포스트 목록 (status 필터) | | GET | `/api/blog-marketing/posts/{id}` | 포스트 상세 | | PUT | `/api/blog-marketing/posts/{id}` | 포스트 수정 |