# 네이버 블로그 자동화 액션플랜

**작성일**: 2026-03-27
**작성자**: 헤르메스 (개발1팀장)
**Task**: task-1105.1
**상태**: 리서치 + 문서화 완료 (코딩 미착수)
**승인 필요**: 제이회장님 (구현 단계 진입 전)

---

## 1. 아키텍처 개요

### 전체 시스템 구성도

```
┌─────────────────────────────────────────────────────────────┐
│                    콘텐츠 생산 파이프라인                      │
│                                                             │
│  [주제 + 키워드 입력]                                        │
│         │                                                   │
│    ┌────▼────┐                                              │
│    │ 공통     │  키워드 분석, 경쟁 글 조사, 소스 팩트 수집      │
│    │ 리서치   │                                              │
│    └──┬───┬──┘                                              │
│       │   │                                                 │
│  ┌────▼─┐ ┌▼─────┐                                         │
│  │구글용 │ │네이버용│                                         │
│  │ 분기  │ │ 분기  │                                         │
│  └──┬───┘ └──┬───┘                                         │
│     │        │                                              │
│  ┌──▼──────┐ ┌──▼──────┐                                    │
│  │blog-    │ │blog-    │                                    │
│  │writer   │ │writer   │                                    │
│  │tistory  │ │naver    │                                    │
│  │4000~    │ │2000~    │                                    │
│  │6000자   │ │3000자   │                                    │
│  └──┬──────┘ └──┬──────┘                                    │
│     │           │                                           │
│  ┌──▼──────┐ ┌──▼──────┐                                    │
│  │geo-opt  │ │naver-seo│                                    │
│  │schema   │ │AIO 최적화│                                    │
│  └──┬──────┘ └──┬──────┘                                    │
└─────┼───────────┼───────────────────────────────────────────┘
      │           │
┌─────▼───────────▼───────────────────────────────────────────┐
│                    발행 레이어                                │
│                                                             │
│  [구글/티스토리]          [네이버 블로그]                      │
│  Tistory API             Playwright + CDP                   │
│  자동 배포               휴먼 시뮬레이션 발행                  │
│  (위험: 없음)            (위험: 약관 위반 HIGH)               │
└─────────────────────────────────────────────────────────────┘
```

### 핵심 설계 원칙

1. **콘텐츠 생산은 완전 자동화** — Claude API 기반 blog-writer 스킬 활용
2. **구글 발행은 API 자동화** — 기술적/법적 제약 없음
3. **네이버 발행은 휴먼 시뮬레이션** — 봇 탐지 회피를 위한 사람 행동 모방
4. **계층적 탐지 우회** — 5레이어 방어 (브라우저/API/핑거프린트/행동/네트워크)

---

## 2. 기술 스택

### Python 레이어 (핵심)

| 라이브러리 | 용도 | 버전/링크 |
|-----------|------|----------|
| **patchright** | Playwright stealth fork (Runtime.enable 패치, webdriver 숨김) | [GitHub](https://github.com/Kaliiiiiiiiii-Vinyzu/patchright) |
| **humanization-playwright** | 타이핑 + 마우스 통합 인간 행동 시뮬레이션 | [PyPI](https://pypi.org/project/humanization-playwright/) |
| **browserforge** | 베이지안 네트워크 기반 현실적 브라우저 핑거프린트 생성 | [PyPI](https://pypi.org/project/browserforge/) |
| **piexif** | EXIF 메타데이터 조작 (촬영시간, 기기정보) | [PyPI](https://pypi.org/project/piexif/) |
| **Pillow** | 이미지 최적화 (리사이징, 포맷 변환) | 표준 |
| **pyotp** | TOTP 기반 2FA 자동화 | [PyPI](https://pypi.org/project/pyotp/) |
| **numpy/scipy** | 가우시안 분포, 베지어 곡선 계산 | 표준 |

### JavaScript 레이어 (보조, Node.js 병용 시)

| 라이브러리 | 용도 |
|-----------|------|
| **ghost-cursor-play** | 베지어 곡선 마우스 이동 (Playwright 포트) |
| **rebrowser-patches** | CDP Runtime.enable 탐지 우회 |
| **fingerprint-suite** | 브라우저 핑거프린트 스위트 (원본) |

### 인프라

| 구성요소 | 설명 |
|---------|------|
| **제이회장님 윈도우 노트북** | 실제 Chrome + CDP 9222 포트 (비headless) |
| **Playwright CDP 연결** | `p.chromium.connect_over_cdp('http://localhost:9222')` |
| **한국 Residential IP** | 데이터센터 IP 회피 필수 (네이버 GeoIP 검사) |

---

## 3. 휴먼 시뮬레이션 상세 스펙

### 3.1 타이핑 시뮬레이션

#### 기본 파라미터

| 파라미터 | 값 | 분포 | 검증 근거 |
|---------|-----|------|----------|
| 문자당 기본 딜레이 | 50~300ms | 가우시안(평균=120ms, SD=40ms) | HumanTyping 실측: 일반인 평균 150ms/char (40WPM) |
| 단어 사이 pause | 200~500ms | 균등분포 | HumanTyping 실측: 평균 250ms |
| 문장 끝 pause | 500~2000ms | 균등분포 | 학술연구: 문장경계 700~1500ms |
| 오타 빈도 | 4% keystroke rate | 베르누이 시행 | HumanTyping: 4% keystroke error rate |
| 오타 인지 딜레이 | 300~800ms | 균등분포 | 실측: error detection 350ms |
| 오타 패턴 | 인접키 swap (QWERTY 기준) | 1~3글자 오타 후 Backspace | 실제 사용자 swap error 1.5% |
| 생각 pause | 2~5문단마다 3~15초 | 포아송 간격 | 작문 연구: composition pause 포함 시 19WPM |
| 2000자 총 작성 시간 | 15~25분 | — | 순수 타이핑 10분 + pause 포함 |

#### 추가 파라미터 (리서치 결과 추가 권장)

| 파라미터 | 값 | 설명 |
|---------|-----|------|
| Bigram acceleration | 자주 쓰는 조합 60% 가속 | "이/의/는" 등 조사는 빠르게 입력 |
| Fatigue factor | 문자당 0.05% 속도 저하 누적 | 장문 후반부 자연스러운 감속 |
| Shift key overhead | 50~150ms 추가 딜레이 | 대문자/특수문자 입력 전후 |
| Korean IME delay | 초성→중성→종성 조합 시 미세 delay | 한글 자모 조합 특성 반영 |

#### 타이핑 알고리즘 의사코드

```python
async def human_type(page, text, target_selector):
    BASE_MEAN_MS = 120
    BASE_STD_MS = 40
    char_count = 0
    fatigue_factor = 1.0

    await page.click(target_selector)

    for sentence in split_into_sentences(text):
        for word in sentence.split(' '):
            for char in word:
                delay = np.clip(
                    np.random.normal(BASE_MEAN_MS, BASE_STD_MS),
                    50, 300
                ) * fatigue_factor

                if random.random() < 0.04:  # 4% 오타율
                    await type_typo_then_correct(page, char, delay)
                else:
                    await page.keyboard.type(char)
                    await asyncio.sleep(delay / 1000)

                char_count += 1
                fatigue_factor = 1.0 + (char_count * 0.0005)

            await asyncio.sleep(random.uniform(0.2, 0.5))  # 단어간 pause
            await page.keyboard.type(' ')

        await asyncio.sleep(random.uniform(0.5, 2.0))  # 문장끝 pause

        if random.random() < 0.25:  # ~25% 확률로 생각 pause
            await asyncio.sleep(random.uniform(3.0, 15.0))
```

### 3.2 마우스 시뮬레이션

#### 기본 파라미터

| 파라미터 | 값 | 근거 |
|---------|-----|------|
| 이동 경로 | 베지어 곡선 (2차 또는 3차) | ghost-cursor 알고리즘 |
| 제어점 편차 | 경로 거리의 20% | 한쪽 방향에만 제어점 배치 |
| 미세 떨림 (jitter) | ±1.5px (가우시안 노이즈) | 실측: 사람 ±2~5px |
| 이동 속도 | 평균 427px/초 (가우시안 변이) | 연구: 봇은 1,520px/초 |
| 속도 곡선 | ease-in-out (시작/끝 느림, 중간 빠름) | Fitts's Law |
| 클릭 전 hover | 100~500ms | 실측 데이터 |
| 클릭 위치 편차 | 버튼 중심 기준 ±3~5px | 봇은 정확히 중앙 클릭 |
| 의미없는 스크롤 | 2~6회, 100~400px/회 | 읽는 행동 시뮬레이션 |

#### 마우스 이동 알고리즘

```
1. 시작점 → 끝점 사이 베지어 곡선 제어점 생성 (한쪽 방향만)
2. 100개 보간점 생성
3. 각 점에 가우시안 노이즈(jitter) 추가
4. ease-in-out 속도 커브 적용 (시작/끝 감속)
5. 각 스텝당 5~30ms 간격으로 이동
6. 목표 도달 후 hover 딜레이
```

### 3.3 세션 행동 패턴

#### 전체 세션 플로우

```
Phase 1 — 로그인 후 워밍업 (3~10분)
  ├─ 로그인 성공 인지 딜레이: 2~5초
  ├─ 다른 페이지 1~3개 방문 (피드, 이웃 블로그, 알림)
  └─ 각 페이지 체류: 10~45초 (스크롤 + 읽기)

Phase 2 — 글쓰기 준비 (5~30초)
  ├─ 글쓰기 페이지 이동
  └─ 준비/생각 대기: 5~30초

Phase 3 — 제목 입력 (30초~2분)
  ├─ 마우스로 제목 필드 이동 (베지어 곡선)
  └─ 인간 타이핑으로 제목 입력

Phase 4 — 본문 작성 (15~25분, 2000자 기준)
  ├─ 마우스로 본문 필드 이동
  ├─ 인간 타이핑으로 본문 작성
  └─ 중간 중간 생각 pause, 스크롤

Phase 5 — 이미지 업로드 (이미지당 1~3분)
  ├─ 툴바 사진 버튼 클릭
  ├─ 파일 선택 다이얼로그 처리
  ├─ 업로드 완료 대기
  └─ 미리보기 확인 행동: 1~5초 대기 + 위로 스크롤

Phase 6 — 발행 전 검토 (30초~2분)
  ├─ 전체 스크롤 (위→아래, 읽기 속도)
  └─ 15% 확률로 일부 재스크롤 (재확인 행동)

Phase 7 — 발행 (10~30초)
  ├─ 최종 결정 딜레이: 2~5초
  ├─ 발행 버튼 클릭
  ├─ 태그/카테고리/공개설정 입력
  └─ 발행 확인 클릭

Phase 8 — 발행 후 확인 (5~15초)
  ├─ 발행 완료 확인: 1~3초
  └─ 자기 글 확인 체류: 3~10초
```

### 3.4 브라우저 환경 설정

#### 필수 설정 항목

| 항목 | 설정값 | 방법 |
|-----|--------|------|
| 실행 모드 | headless=False (실제 Chrome) | CDP 9222 연결 |
| navigator.webdriver | false/undefined | patchright 자동 패치 |
| User-Agent | 실제 Chrome 131+ 값 | browserforge 생성 |
| 화면 해상도 | 1920x1080 또는 1366x768 | context viewport 설정 |
| locale | ko-KR | context 설정 |
| timezone | Asia/Seoul | context 설정 |
| Accept-Language | ko-KR,ko;q=0.9,en-US;q=0.8 | extra_http_headers |
| Sec-Ch-Ua | 실제 Chrome 값 | extra_http_headers |
| WebGL renderer | 실제 GPU 값 (SwiftShader 아님) | 실제 Chrome 사용으로 자동 해결 |
| plugins.length | 3~5개 (정상값) | 실제 Chrome 사용으로 자동 해결 |

#### CDP 연결 코드 (제이회장님 윈도우)

```python
# 윈도우에서 Chrome 실행 (remote-debugging-port=9222)
# chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\chrome-debug"

# Playwright에서 연결
from patchright.async_api import async_playwright

async with async_playwright() as p:
    browser = await p.chromium.connect_over_cdp('http://localhost:9222')
    context = browser.contexts[0]
    page = await context.new_page()
```

#### 탐지 우회 5레이어 체계

```
레이어 1 (브라우저): 실제 Chrome + headless=False + CDP 9222
레이어 2 (API):      navigator.webdriver=false + Runtime.enable 패치
레이어 3 (핑거프린트): Canvas/WebGL/Audio 정상화 + 일관된 UA
레이어 4 (행동):      가우시안 타이핑 + 베지어 마우스 + 세션 패턴
레이어 5 (네트워크):   한국 Residential IP + 적절한 요청 간격
```

---

## 4. 네이버 에디터 자동화 스펙

### 4.1 SmartEditor ONE 아키텍처

- **기반**: React + MobX + contenteditable
- **데이터 흐름**:
  - Upstream: 타이핑 → MutationObserver → MobX Store (untracked)
  - Downstream: 이미지 삽입 등 → MobX Store → React 렌더링
- **현재 상태**: 2022년부터 블로그 기본 에디터 (SmartEditor 3.0은 점진적 전환 중)

### 4.2 DOM 구조

#### 페이지 구조

```
[top window: blog.naver.com]
  └─ <iframe id="mainFrame" src="https://blog.naver.com/...">
       └─ SmartEditor ONE 에디터 HTML
            ├─ 제목 입력 영역 (contenteditable)
            ├─ 본문 편집 영역 (contenteditable)
            └─ 도구모음 (toolbar)
```

#### 추정 CSS 셀렉터 패턴 (SmartEditor ONE)

```css
/* 에디터 래퍼 */
.se-editor

/* 섹션/컴포넌트 단위 */
.se-section
.se-component
.se-component[data-type="text"]
.se-component[data-type="image"]
.se-component[contenteditable="false"]  /* 비편집 컴포넌트 */

/* 텍스트 단락 */
.se-text-paragraph
[contenteditable="true"]

/* 툴바 */
.se-toolbar
.se-toolbar-item
```

#### 검증된 XPath (gpters.org 실제 사례)

```python
# 제목 필드
title_xpath = '/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[1]/div[2]/section/article/div[1]/div[1]/div/div/p/span[2]'

# 본문 필드
body_xpath = '/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[1]/div[2]/section/article/div[2]/div/div/div/div/p'

# 발행 버튼
publish_xpath = '/html/body/div[1]/div/div[1]/div/div[2]/button[1]'
```

### 4.3 입력 방식

#### 핵심: send_keys() 직접 입력 실패 가능 → 클립보드 우회 필수

```python
import pyperclip

# 방법 1: 클립보드 + Ctrl+V (검증된 우회법)
pyperclip.copy("입력할 텍스트")
element.click()
page.keyboard.press("Control+v")

# 방법 2: 문자 단위 keyboard.type (인간 타이핑 시뮬레이션과 호환)
await page.keyboard.type(char)  # 한 글자씩
```

### 4.4 이미지 삽입 플로우

```
[1] 에디터 본문 포커스 확보
  ↓
[2] 툴바 "사진" 버튼 클릭
    selector: button[aria-label*="사진"] 또는 .husky_seditor_ui_photo_attach
  ↓
[3] 이미지 업로드 패널 표시 대기
  ↓
[4] "내 컴퓨터에서 선택" 버튼 클릭 → file input 트리거
  ↓
[5] Playwright file_chooser 처리
    async with page.expect_file_chooser() as fc:
        click_upload_button()
    fc.value.set_files(image_path)
  ↓
[6] 업로드 완료 대기 (프로그레스 바 완료)
  ↓
[7] 에디터 내 이미지 컴포넌트 삽입 확인
```

### 4.5 이미지 최적화 스펙

| 항목 | 권장값 |
|-----|--------|
| 포맷 | JPG (사진), PNG (텍스트/로고) |
| 최대 크기 | 장당 10MB, 1회 50장/50MB |
| 권장 해상도 | 폭 1200px 이하 (자동 리사이징 적용) |
| 썸네일 비율 | PC 3:2, 모바일 1:1, 공유 16:9 |
| EXIF 처리 | GPS 제거, 촬영시간/기기정보 자연스럽게 설정 |

### 4.6 발행 옵션

```
발행 버튼 클릭
  └─ 발행 옵션 패널 표시
       ├─ 카테고리 선택 (드롭다운)
       ├─ 태그 입력 (input + Enter)
       ├─ 공개 설정 (전체/이웃/비공개 라디오)
       └─ 발행 확인 버튼
```

### 4.7 팝업 처리

```
처리 필요 팝업:
1. "작성 중인 글이 있습니다" → "새글 쓰기" 버튼 클릭
2. 오른쪽 "도움말" 팝업 → 닫기 버튼 클릭
3. 임시저장 알림 → 무시 또는 닫기
```

### 4.8 중요 제약사항

- **XML-RPC API**: 2020년 5월 **종료**. 현재 GUI 자동화가 유일한 방법
- **SmartEditor ONE 소스코드**: 비공개. 정확한 셀렉터는 브라우저 DevTools 실시간 DOM 검사 필수
- **DOM 변경 가능성**: 네이버 에디터 업데이트 시 셀렉터/XPath 변경 가능 → 유지보수 비용 발생

---

## 5. 위험 요소 및 대응

### 5.1 봇 탐지 리스크 매트릭스

| 탐지 벡터 | 리스크 | 우회 난이도 | 대응 전략 |
|----------|-------|-----------|----------|
| IP/GeoIP 검증 | **높음** | 중간 | 한국 Residential IP 필수 |
| C-Rank/DIA 알고리즘 | **높음** | 높음 | 고품질 콘텐츠 + 주제 일관성 + 자연 독자 유입 |
| 게시 시간 패턴 | **높음** | 낮음 | 포아송 분포 스케줄러, 30분+ 간격 |
| 세션 행동 패턴 | **높음** | 중간 | 워밍업 + 랜덤 딜레이 + 자연 탐색 |
| navigator.webdriver | **높음** | 낮음 | patchright 패치 |
| 마우스 이동 분석 | **높음** | 높음 | 베지어 곡선 + 가우시안 노이즈 |
| 2FA/OTP | 중간 | 중간 | pyotp + 신뢰기기 등록 |
| 타이핑 패턴 | 중간 | 낮음 | 가우시안 분포 딜레이 |
| CAPTCHA | 중간 | 중간 | 예방 우선 + 발생 시 수동 알림 |
| 이미지 EXIF | 낮음 | 낮음 | EXIF 스트리핑/조작 |

### 5.2 네이버 이용약관 위반 리스크

#### 관련 약관 조항

> **네이버 서비스 이용약관 (2018년 5월 개정)**
> "매크로 프로그램이나 로봇 등 자동화된 수단으로 회원 가입이나 로그인, **게시물 게재**, 검색 등을 하는 행위"를 금지

#### 제재 단계

| 단계 | 제재 내용 | 회복 가능성 |
|-----|----------|-----------|
| 1단계: 저품질 판정 | 검색 노출 제한 (비공지) | 장기간 정상 운영 시 가능 |
| 2단계: 기능 제한 | 포스트 삭제/비공개, 애드포스트 30일+ 차단 | 가능 (심사 필요) |
| 3단계: 계정 영구정지 | 블로그 전체 비공개, 접근 불가, 수익 소멸 | **불가능** |

#### 실제 사례

- **2024~2025 저품질 대란**: 하루 100건+ AI 자동 포스팅 유입 → 네이버 일괄 저품질 판정 강화
- **블로그 공장 연쇄 정지**: 다수 계정 운영 시 패턴 인식으로 연쇄 정지 발생
- **애드포스트 수익 차단**: 자동화 발각 시 수익 전액 소멸

#### 법적 리스크

| 법령 | 적용 가능성 | 현실적 위험 |
|-----|-----------|-----------|
| 정보통신망법 | 서버 과부하 유발 시 | 소규모 자동화에는 증명 어려움 |
| 업무방해죄 | 구체적 피해 입증 필요 | 대부분 민사 처리 |
| 네이버 약관 위반 | **확실히 적용** | 계정 정지 + 수익 몰수 |

### 5.3 종합 리스크 점수

```
[B] 저품질 대란           확률: 0.7  영향: 4  위험도: 28  ★최고위험
[A] 계정 영구정지          확률: 0.4  영향: 5  위험도: 20  ★고위험
[D] 수익 차단(30일+)      확률: 0.5  영향: 3  위험도: 15
[F] 콘텐츠 비공개          확률: 0.6  영향: 2  위험도: 12
[E] IP 차단               확률: 0.4  영향: 2  위험도: 8
[C] 법적 경고              확률: 0.15 영향: 3  위험도: 4.5
```

### 5.4 캡챠 대응 전략

```
1단계 - 예방:
  - 계정 워밍업 (신규 2~4주 수동 활동)
  - 한국 Residential IP 고정
  - 자연스러운 딜레이 삽입

2단계 - 자동 처리 (소프트 캡챠):
  - 2captcha / Anti-Captcha API 연동 가능

3단계 - 수동 개입 (하드 캡챠):
  - 캡챠 감지 → 텔레그램 알림 → 5분 수동 대기
  - 대기 초과 시 세션 종료 + 재스케줄링
```

---

## 6. 이중 생산 파이프라인

### 6.1 구글 vs 네이버 콘텐츠 차이점 매핑

| 항목 | 구글 (티스토리) | 네이버 (블로그) |
|-----|----------------|----------------|
| 알고리즘 핵심 | E-E-A-T + 백링크 | C-Rank + D.I.A |
| 글 길이 | 4,000~6,000자 (심층) | 2,000~3,000자 (적정) |
| 구조 | Schema JSON-LD + H1/H2/H3 | 에디터 서식 (굵게/구분선/강조) |
| 이미지 | WebP, alt 텍스트, 구조화 | JPG/PNG, 에디터 업로드 |
| SEO 신호 | meta description, OG, canonical | 제목형식, 이웃/공감 |
| 링크 | 내부+외부 백링크 모두 중요 | 외부 백링크 거의 무의미 |
| 문체 | 정보 백과사전형, 객관적 서술 | 1인칭 경험담, "~했어요" 구어체 |
| 발행 | Tistory API 자동 배포 | GUI 자동화 또는 수동 |
| 최신성 | 품질 > 최신성 | 최신성 높게 반영 (정기 업데이트) |

### 6.2 파이프라인 데이터 흐름

```
입력: 주제 + 키워드 1개
  예) "홈카페 만들기" + "핸드드립 커피"

  ↓ [공통 리서치 모듈]
  ↓ 키워드 분석, 경쟁 글 조사, 소스 팩트 수집

  ├──► 분기 1: 구글용
  │    blog-writer(platform=tistory)
  │    → 4000~6000자, H1/H2/H3, 정보형 심층
  │    → geo-optimizer (지역 키워드, 롱테일)
  │    → schema-markup (JSON-LD BlogPosting + OG)
  │    → 산출물: HTML + meta + JSON-LD + WebP images
  │    → Tistory API 자동 배포
  │
  └──► 분기 2: 네이버용
       blog-writer(platform=naver)
       → 2000~3000자, 에디터 서식, 경험담 문체
       → naver-seo AIO 최적화 (C-Rank, 제목형식)
       → image-formatter (JPG/PNG 변환, EXIF 관리)
       → 산출물: 에디터 호환 텍스트 + JPG 이미지
       → 휴먼 시뮬레이션 발행 또는 수동 복사붙여넣기
```

### 6.3 콘텐츠 차별화 전략

**동일 주제에서 중복 판정 방지를 위한 구조적 차별화:**

```
구글(티스토리):
 - 제목: "홈카페 구축 완전 가이드: 원두 선택부터 장비 세팅까지"
 - 구조: 목차 → 원론 → 단계별 가이드 → 비교표 → FAQ → 결론
 - 톤: 객관적 서술, 통계 인용, 전문가 인용

네이버:
 - 제목: "홈카페 꾸미기 후기 | 직접 써봤어요 (솔직 후기)"
 - 구조: 감성 도입 → 경험담 → 제품 사진 → 개인 평가 → 이웃 추천
 - 톤: 1인칭, 구어체, 댓글 유도
```

---

## 7. 구현 로드맵

> ★ 모든 Phase의 코딩 착수는 제이회장님 별도 승인 후 진행

### Phase 1: 인프라 세팅 (예상 2~3일)

| 항목 | 설명 |
|-----|------|
| CDP 환경 구축 | 윈도우 노트북 Chrome remote-debugging 설정 |
| Python 환경 | patchright, browserforge, humanization-playwright 설치 |
| 기본 연결 테스트 | CDP → Playwright 연결 → 네이버 메인페이지 접근 확인 |

### Phase 2: 휴먼 시뮬레이션 엔진 (예상 5~7일)

| 항목 | 설명 |
|-----|------|
| 타이핑 엔진 | 가우시안 분포, 오타, 생각 pause, 피로도 구현 |
| 마우스 엔진 | 베지어 곡선, jitter, ease-in-out, hover 딜레이 |
| 세션 행동 엔진 | 워밍업, 탐색, 검토, 확인 등 전체 플로우 |
| 테스트 | 봇 감지 테스트 사이트(bot.sannysoft.com 등)에서 검증 |

### Phase 3: 에디터 자동화 (예상 5~7일)

| 항목 | 설명 |
|-----|------|
| DOM 분석 | CDP로 실제 에디터 DOM 실시간 검사, 셀렉터 확정 |
| 텍스트 입력 | 클립보드 우회 + 인간 타이핑 통합 |
| 이미지 삽입 | file_chooser API + EXIF 관리 + 업로드 대기 |
| 발행 플로우 | 카테고리/태그/공개설정 + 발행 버튼 |
| 팝업 핸들링 | 임시저장, 도움말 등 팝업 자동 처리 |

### Phase 4: 로그인/세션 관리 (예상 2~3일)

| 항목 | 설명 |
|-----|------|
| 쿠키 저장/복원 | 로그인 세션 파일 저장 + 재사용 |
| 2FA 처리 | pyotp 연동 또는 앱 알림 수동 대기 |
| 세션 만료 감지 | 주기적 상태 확인 + 자동 재로그인 |
| 캡챠 대응 | 감지 → 알림 → 수동 개입 플로우 |

### Phase 5: 이중 생산 파이프라인 (예상 3~5일)

| 항목 | 설명 |
|-----|------|
| 공통 리서치 모듈 | 키워드 분석, 경쟁 글 수집 |
| blog-writer 통합 | platform=tistory / platform=naver 분기 |
| SEO 모듈 연동 | geo-optimizer, schema-markup, naver-seo |
| 스케줄러 | 포아송 분포 기반 발행 시간 결정 |
| 모니터링 | 발행 성공/실패 로깅, 저품질 감지 알림 |

### Phase 6: 통합 테스트 및 안정화 (예상 3~5일)

| 항목 | 설명 |
|-----|------|
| E2E 테스트 | 전체 파이프라인 (주제 입력 → 이중 발행) 테스트 |
| 봇 감지 테스트 | 네이버 비공개 모드로 발행 → 저품질 판정 모니터링 |
| 안정성 | 에러 핸들링, 재시도 로직, 장애 복구 |

**총 예상 소요: 20~30일 (Phase별 승인 후 순차 진행)**

---

## 8. 비용/리소스 추정

### 8.1 콘텐츠 1세트 (구글+네이버) 비용

| 항목 | 구글용 | 네이버용 | 합계 |
|-----|--------|---------|------|
| Claude API (blog-writer) | $0.12~0.25 | $0.06~0.12 | $0.18~0.37 |
| Claude API (SEO 모듈) | $0.03~0.05 | $0.03~0.05 | $0.06~0.10 |
| 이미지 처리 | $0.01~0.02 | $0.01~0.02 | $0.02~0.04 |
| 브라우저 자동화 (발행) | — | $0.02~0.09 | $0.02~0.09 |
| **1세트 합계** | | | **$0.28~0.60** |

### 8.2 Claude API 상세

```
모델: Claude Sonnet 4.6
  입력: $3.00 / 1M 토큰
  출력: $15.00 / 1M 토큰

구글용 (5,000자 ≈ 3,500 토큰 출력):
  ~$0.07/호출 × 2~3회 = $0.14~0.21

네이버용 (2,500자 ≈ 1,750 토큰 출력):
  ~$0.04/호출 × 2회 = $0.08~0.12

배치 API 50% 할인 적용 가능
```

### 8.3 월간 인프라 비용

| 항목 | 월 비용 | 산출 근거 |
|-----|--------|----------|
| Claude API | $50~200 | 일 30세트 × 30일 |
| 원격 브라우저 | $0~35 | 자체 Chrome 시 무료, Browserless 시 $35/월 |
| 서버 (API) | $20~50 | AWS t3.small~medium |
| 도메인/CDN | $5~15 | Cloudflare + 도메인 |
| **월 총계** | **$75~300** | |

### 8.4 일일 생산 용량

| 시나리오 | 일 생산량 | 비고 |
|---------|----------|------|
| A: 구글만 완전 자동화 | 50~100포스트/일 | API 호출 병목 없음 |
| B: 네이버 수동 발행 (권장) | 10~20세트/일 | 수동 20~30분/포스트 |
| C: 네이버 자동화 강행 | 25~40세트/일 | **약관 위반 고위험** |

---

## 부록 A: 네이버 로그인 세션 관리 상세

### 주요 쿠키

```
NID_AUT    — 인증 토큰 (HttpOnly, 로그인 유지용)
NID_SES    — 세션 식별자 (HttpOnly)
NID_JKL    — 자동 로그인 플래그
NAVER_USID — 사용자 식별자
```

### 세션 만료 주기

| 쿠키 유형 | 만료 조건 |
|----------|----------|
| 세션 쿠키 (NID_SES) | 브라우저 종료 시 |
| 영구 쿠키 (NID_AUT) | ~30일 (로그인 상태 유지 체크 시) |
| 신뢰 기기 토큰 | ~30~90일 |

### 2FA 처리

| 방식 | 자동화 난이도 | 대응 |
|-----|------------|------|
| 네이버 앱 알림 | 높음 (수동 필수) | 텔레그램 알림 → 수동 승인 |
| OTP (TOTP) | 중간 | pyotp 자동 생성 가능 |
| SMS 인증 | 높음 (SIM 필요) | 텔레그램 알림 → 수동 입력 |

### 보안 레이어

```
Layer 1: IP/GeoIP 검사 (해외 IP → 추가 인증)
Layer 2: 디바이스 핑거프린트 (UA/해상도 불일치 → 인증코드)
Layer 3: 행동 패턴 (즉시 고활동 → 캡챠)
Layer 4: 계정 이력 (제재 이력 → 고위험 분류)
```

---

## 부록 B: 참조 소스 목록

### 봇 탐지/탐지 우회

1. [The Egg - Naver Blog Search Algorithm History (C-Rank, DIA)](https://www.theegg.com/seo/korea/naver-blog-search-algorithm-history/)
2. [InterAd - Naver SEO Guide (P-Rank, C-Rank, DIA+)](https://www.interad.com/en/insights/naver-seo-guide)
3. [ZenRows - navigator.webdriver Anti-Bot Detection](https://www.zenrows.com/blog/navigator-webdriver)
4. [Rebrowser - Undetected Chromedriver Guide 2025](https://rebrowser.net/blog/undetected-chromedriver-the-ultimate-guide-to-bypassing-bot-detection)
5. [Castle.io - Bot or Not: Mouse Movements](https://blog.castle.io/bot-or-not-can-you-spot-the-automated-mouse-movements/)
6. [Bureau.id - Mouse Movement Bot vs Human](https://bureau.id/resources/blog/mouse-movement-behavioral-patterns-can-reliably-tell-bots-from-humans)

### 네이버 에디터/자동화

7. [SmartEditor로 살펴보는 웹 에디터의 발전 - Naver SmartStudio Blog](https://smartstudio.tech/web-editor-history/)
8. [GPTers - 네이버 블로그 포스팅 자동화 v.1](https://www.gpters.org/dev/post/neibeo-beulrogeu-poseuting-jadonghwa-v-1-vpr5SYzLwldkKcG)
9. [SmartEditor Basic 2.0 개발자 가이드](https://usermanual.wiki/Document/SmartEditorBasic20DevelopersGuide.937260513/html)
10. [스마트에디터 - 나무위키](https://namu.wiki/w/%EC%8A%A4%EB%A7%88%ED%8A%B8%EC%97%90%EB%94%94%ED%84%B0)

### 휴먼 시뮬레이션

11. [GitHub - Lax3n/HumanTyping](https://github.com/Lax3n/HumanTyping)
12. [GitHub - Xetera/ghost-cursor](https://github.com/Xetera/ghost-cursor)
13. [GitHub - Kaliiiiiiiiii-Vinyzu/patchright](https://github.com/Kaliiiiiiiiii-Vinyzu/patchright)
14. [GitHub - rebrowser/rebrowser-patches](https://github.com/rebrowser/rebrowser-patches)
15. [GitHub - apify/fingerprint-suite](https://github.com/apify/fingerprint-suite)

### 이용약관/리스크

16. [아이보스 - AI 자동 포스팅 범람, 네이버 제재 강화](https://www.i-boss.co.kr/ab-2877-16974)
17. [NewsVerse - AI 따발총 저품질 블로그 하루 100건](https://www.newsverse.kr/news/articleView.html?idxno=9959)
18. [네이트뉴스 - 자동화 프로그램 금지 약관 개정](https://news.nate.com/view/20180404n37939)
19. [법률신문 - 자동 댓글 매크로 무죄 판결](https://www.lawtimes.co.kr/news/157994)

### SEO 비교

20. [238lab - 네이버 SEO vs 구글 SEO 비교](https://238lab.kr/blog-seo-naverseo)
21. [TILNOTE - 2025 네이버 C-Rank 완벽 분석](https://tilnote.io/en/pages/683c14c93b88c1fc497c397e)
22. [EXELIENT - 구글 SEO vs 네이버 SEO 차이점](https://www.exelient.co.kr/project/google-seo-vs-naver-seo/)

### 기타

23. [Playwright FileChooser API 공식 문서](https://playwright.dev/python/docs/api/class-filechooser)
24. [GitHub - python-naverlogin](https://github.com/hallazzang/python-naverlogin)
25. [Skyvern - Browser Automation Session Management](https://www.skyvern.com/blog/browser-automation-session-management/)
26. [PMC - Typing expertise in a large student population](https://pmc.ncbi.nlm.nih.gov/articles/PMC9356123/)

---

## 부록 C: 제이회장님 판단 요청사항

### 판단 필요 항목

1. **네이버 자동화 구현 여부**: 약관 위반 리스크(위험도 28) 감수하고 구현할 것인지?
   - 대안: 콘텐츠 생성만 자동화 + 발행은 수동 (권장)

2. **계정 전략**: 메인 계정 사용 vs 별도 계정 분리?
   - 메인 계정 정지 리스크 차단을 위한 분리 운영 권장

3. **구현 우선순위**: Phase 1~6 중 어디까지 진행할지?
   - 최소: Phase 1~2 (인프라 + 시뮬레이션 엔진만)
   - 권장: Phase 1~5 (전체 파이프라인, 네이버는 반자동)
   - 최대: Phase 1~6 (완전 자동화, 고위험)

4. **일일 생산량 목표**: 현실적 목표 설정 필요
   - 수동 발행: 10~20세트/일
   - 자동 발행: 25~40세트/일 (고위험)
