# 🤖 블로그 자동화 포스팅 프로그램 만들기

> GPT-4.1(모델은 원한다면 고성능 사용해도 무관, 다만 비용올라감)으로 글을 자동 생성하고, 네이버 블로그에 자동으로 포스팅해주는 프로그램**
> 이 문서는 프로그래밍을 처음 시작하는 분도 자기만의 블로그 자동화 프로그램을 만들 수 있도록 설명합니다.

---

## 📌 이 프로그램으로 무엇을 할 수 있나요?

1. 엑셀에 키워드만 적어두면 → AI가 알아서 블로그 제목과 본문을 작성해줍니다.
2. 버튼 한 번 누르면 → 네이버 블로그에 자동으로 글이 올라갑니다.
3. 이미지도 자동 삽입 → 폴더에 넣어둔 이미지가 본문 사이사이에 들어갑니다.
4. 중복 이미지 방지 → 같은 이미지를 반복 사용하지 않도록 사용 기록을 관리합니다.
5. **자동입력방지(캡차) 자동 감지** → 캡차가 뜨면 자동으로 일시 정지, 사용자가 직접 풀면 자동으로 다음 단계 진행.

---

## 🎯 누구를 위한 문서인가요?

- "코딩 한 줄도 모르는데 따라할 수 있을까?" → 네, 가능합니다.
- "내 사업/취미 분야 블로그를 자동화하고 싶다." → 가능합니다.
- "프롬프트만 바꿔서 내 스타일로 만들고 싶다." → 이 문서의 핵심입니다.

---

## 🛠 1단계: 준비물 설치하기

### 1-1. Python 설치 (필수)

1. https://www.python.org/downloads/ 접속
2. **"Download Python 3.11"** 또는 그 이상 버전 클릭
3. 설치할 때 **"Add Python to PATH"** 체크박스를 꼭 켜세요! ⚠️
4. 설치 완료 후, 명령 프롬프트(cmd)에서 확인:
   ```
   python --version
   ```
   → `Python 3.11.x` 같은 게 나오면 성공!

### 1-2. Chrome 브라우저 설치

네이버 블로그 자동화를 위해 **Chrome 브라우저**가 필요합니다.
- https://www.google.com/chrome/ 에서 설치하세요.

### 1-3. VS Code (코드 편집기) 설치 — 권장

코드를 편집하려면 좋은 편집기가 필요합니다.
- https://code.visualstudio.com/ 에서 설치하세요.

---

## 🔑 2단계: OpenAI API 키 발급받기

GPT-4.1을 사용하려면 OpenAI에서 API 키를 발급받아야 합니다.

1. https://platform.openai.com/api-keys 접속 → 회원가입/로그인
2. 우측 상단에서 **"Create new secret key"** 클릭
3. 키 이름 입력 (예: `blog-automation`)
4. 생성된 키를 **반드시 복사해서 안전한 곳에 보관**하세요. (다시 볼 수 없습니다)
5. **결제 수단 등록 필수** (사용한 만큼 과금됨, 보통 글 한 개당 50~200원 정도)

⚠️ **API 키는 절대로 다른 사람에게 공유하지 마세요. GitHub에 올리면 안 됩니다.**

---

## 📁 3단계: 프로젝트 폴더 만들기

원하는 위치에 폴더를 하나 만드세요. 예시:
```
C:\Users\내이름\Desktop\블로그자동화\
```

이 폴더에 아래 파일들을 만들 거예요.

### 폴더 구조 (완성형)
```
블로그자동화/
├── blog_automation_gui.py   ← 메인 프로그램 (GUI)
├── naver_blog_login.py      ← 네이버 로그인/글쓰기 처리
├── posting.xlsx             ← 키워드/제목/본문 저장 엑셀
├── requirements_gui.txt     ← 필요한 라이브러리 목록
├── .env                     ← API 키 저장 (비밀)
├── 프로그램실행.bat          ← 더블클릭 실행용
├── image_usage_log.json     ← 이미지 사용 기록 (자동 생성)
└── image/                   ← 블로그에 사용할 이미지 폴더
    ├── 사진1.jpg
    ├── 사진2.jpg
    └── ...
```

---

## 📦 4단계: 라이브러리 설치하기

### 4-1. `requirements_gui.txt` 파일 만들기

메모장을 열고 아래 내용을 그대로 붙여넣은 뒤, `requirements_gui.txt`로 저장하세요.

```txt
openai>=1.0.0
openpyxl>=3.1.0
python-dotenv>=1.0.0
selenium>=4.15.0
webdriver-manager>=4.0.0
pyperclip>=1.8.0
pywin32>=306
pillow>=10.0.0
```

### 4-2. 설치 실행

명령 프롬프트(cmd)를 열고, 프로젝트 폴더로 이동:
```
cd C:\Users\내이름\Desktop\블로그자동화
```

라이브러리 설치:
```
pip install -r requirements_gui.txt
```

설치가 다 되면 OK!

---

## 🔐 5단계: `.env` 파일 만들기 (API 키 보관)

메모장을 열고 아래처럼 작성:

```
OPENAI_API_KEY=여기에_2단계에서_발급받은_API_키_붙여넣기
```

이 파일을 `.env` 라는 이름으로 저장하세요. (확장자 없음, 점으로 시작)

⚠️ 이 파일은 **절대 다른 사람에게 보내지 마세요.**

---

## 📊 6단계: `posting.xlsx` 엑셀 파일 만들기

엑셀을 열고 아래처럼 만드세요:

| A열 (키워드)         | B열 (제목)            | C열 (본문)             |
|----------------------|----------------------|------------------------|
| **키워드**           | **제목** (자동 생성)  | **본문** (자동 생성)   |
| (본인 업종 키워드 1) |                      |                        |
| (본인 업종 키워드 2) |                      |                        |
| (본인 업종 키워드 3) |                      |                        |

**키워드 예시 (업종별):**
- 뷰티샵 →  `왁싱 후기`, `속눈썹 연장 관리`, `네일아트 추천`
- 음식점 →  `강남 파스타 맛집`, `홈메이드 디저트`, `런치 메뉴 추천`
- 일반 기업/B2B →  `재고 관리 솔루션`, `사무실 인테리어 트렌드`, `법인카드 혜택 비교`
- 학원/교육 →  `초등 영어 공부법`, `수능 국어 고득점 전략`, `코딩 입문 가이드`
- 병원/의료 →  `라식 수술 후 관리`, `치아 미백 비용`, `여드름 치료 후기`
- 인테리어 →  `원룸 셀프 인테리어`, `주방 리모델링 비용`, `거실 조명 추천`

- **A열만 채우면 됩니다.** B, C열은 프로그램이 자동으로 채워줘요.
- 1행은 제목 행이고, 2행부터 키워드를 입력하세요.
- 파일 이름은 `posting.xlsx` 로 저장.

---

## 🖼 7단계: `image` 폴더에 사진 넣기

- 프로젝트 폴더 안에 `image` 폴더를 만들고
- **블로그에 사용할 사진(.jpg)을 30장 이상** 넣어주세요.
- 프로그램이 글 하나당 10장씩 랜덤으로 골라서 본문에 넣어줍니다.

---

## 💻 8단계: 프로그램 코드 받기

이 프로젝트의 두 핵심 파일이 필요합니다:

1. **`blog_automation_gui.py`** — GUI 메인 프로그램
2. **`naver_blog_login.py`** — 네이버 로그인 + 블로그 글쓰기 처리

원본 작성자의 코드를 복사해서 같은 폴더에 저장하세요.

---

## ⚙️ 9단계: 내 정보로 코드 수정하기 (가장 중요!)

이 부분이 **"내 것으로 만드는 핵심"** 입니다.

### 9-1. 네이버 아이디/비밀번호 입력

`naver_blog_login.py` 파일을 VS Code로 열고, 위쪽에 있는 부분을 찾으세요:

```python
# ============ 설정 ============
NAVER_ID = "여기에_네이버_아이디"
NAVER_PW = "여기에_네이버_비밀번호"
```

⚠️ **보안 팁**: 가능하면 이 값도 `.env` 파일로 옮겨두는 것을 권장합니다.
```python
NAVER_ID = os.getenv("NAVER_ID")
NAVER_PW = os.getenv("NAVER_PW")
```

### 9-2. 엑셀/이미지 폴더 경로 수정

`blog_automation_gui.py` 파일에서 아래 부분을 찾으세요 (170번째 줄 근처):

 **본인 컴퓨터의 폴더 경로**로 바꿔주세요. 예시:
```python
self.excel_file = r"C:\Users\내이름\Desktop\블로그자동화\posting.xlsx"
self.image_folder = r"C:\Users\내이름\Desktop\블로그자동화\image"
```

### 9-3. AI 프롬프트 = 내 글쓰기 스타일 만들기 ⭐

**이 부분이 프로그램의 핵심이고, 가장 자유롭게 바꿀 수 있는 부분입니다.**

원본 코드의 프롬프트는 특정 업종에 맞춰져 있으므로,
**본인의 업종/브랜드/타겟 고객에 맞게 반드시 수정**해야 합니다.

`blog_automation_gui.py` 파일에서 두 함수를 찾으세요:

#### (A) `generate_title()` — 제목 생성 프롬프트 (665번째 줄 근처)

원본 프롬프트의 **특정 업종 단어**(예: 디자인, 로고 등)를 모두 지우고,
아래 템플릿을 본인 분야에 맞게 채워 넣으세요.

**📐 범용 템플릿 (어떤 업종이든 사용 가능):**
```python
"content": f"""다음 키워드에 대한 블로그 포스팅 제목을 작성해주세요: {keyword}

[업종/브랜드 컨텍스트]
- 업종: (예: 뷰티샵 / IT 솔루션 기업 / 카페 / 병원 / 학원 등)
- 타겟 독자: (예: 20~30대 여성 / 중소기업 대표 / 학부모 등)
- 브랜드 톤: (예: 감성적이고 따뜻한 / 전문적이고 신뢰감 있는 / 캐주얼하고 친근한)

[제목 작성 규칙]
- 공백 제외 16자 이상 20자 이내 (필수)
- 특수문자 사용 금지 (한글/영문/숫자/공백만)
- 독자의 관심을 끌 수 있는 매력적인 제목

[제목 패턴 예시 — 참고하되 그대로 베끼지 말 것]
1. 트렌드형: [키워드] 최신 트렌드 완벽 분석
2. 가이드형: [키워드] 시작 전 필독 사항
3. 문제해결형: [키워드] 실패 원인과 해결책
4. 비교형: [키워드] 잘된 사례와 실패 사례
5. 전문가형: 전문가가 알려주는 [키워드] 노하우
6. 체크리스트형: [키워드] 전 점검할 5가지

제목만 출력해주세요."""
```

**🌸 예시 1 — 뷰티샵(왁싱/네일/속눈썹):**
```
- 업종: 강남에 위치한 종합 뷰티샵
- 타겟 독자: 20~30대 직장인 여성
- 브랜드 톤: 친근하면서도 전문성이 느껴지는 어투
```

**💼 예시 2 — B2B 솔루션 기업:**
```
- 업종: 중소기업 대상 ERP 솔루션 제공 회사
- 타겟 독자: 중소기업 대표, 운영 담당자
- 브랜드 톤: 신뢰감 있고 전문적인, 데이터 기반의 어투
```

**🍕 예시 3 — 음식점/카페:**
```
- 업종: 합정동 수제버거 전문점
- 타겟 독자: 20~40대 데이트/회식 고객
- 브랜드 톤: 감성적이고 식욕을 자극하는 어투
```

#### (B) `generate_content()` — 본문 생성 프롬프트 (795번째 줄 근처)

`system` 메시지가 AI의 "역할(페르소나)"을 정의합니다.
원본 코드의 회사명, 업종명, 자랑 포인트(특징 9가지) 등을 **모두 지우고** 본인 정보로 교체하세요.

**📐 범용 템플릿:**
```python
"content": """당신은 [업종/직업]의 블로그 콘텐츠 작성자입니다.

[브랜드 소개]
- 회사/매장명: (예: ○○뷰티 / ○○컨설팅 / ○○카페)
- 위치/규모: (예: 강남점 / 전국 5개 지점 / 1인 운영)
- 차별점: (예: 10년 경력 / 친환경 재료 사용 / 맞춤 컨설팅)

[글 작성 규칙 — 매우 중요]
- 반드시 1800자 이상 2400자 이내로 작성
- 1줄에 24~30자 이내
- 문단은 2~5줄로 구성, 문단 사이 빈 줄 1개 필수
- 소제목은 ### 형식으로 정확히 4개
- 소제목 앞뒤로 빈 줄 한 줄씩

[톤 & 스타일]
- 어투: (예: 친근한 존댓말 "~해요, ~답니다" / 전문적인 격식체 / 캐주얼한 반말)
- 분위기: (예: 따뜻하고 신뢰감 있는 / 전문성이 느껴지는 / 재미있고 가벼운)
- 이모지 사용: (예: 적극 활용 / 사용 금지 / 1~2개만)

[강조하고 싶은 포인트 — 3가지만 자연스럽게 녹여내기]
1. (예: 10년 경력의 노하우)
2. (예: 1:1 맞춤 상담 제공)
3. (예: 합리적인 가격대)

[글 구조]
- 도입부: 인사 및 브랜드 간단 소개
- 본문: 소제목 4개로 구성된 정보성 콘텐츠
- 마무리: 핵심 요약 및 부드러운 CTA(상담/방문 유도)
"""
```

**🌸 작성 예시 — 뷰티샵:**
```
당신은 강남에서 5년째 운영 중인 뷰티샵의 마케팅 담당자입니다.
20~30대 여성 고객에게 친근한 어투로,
시술 정보·관리 팁·후기를 자연스럽게 전달합니다.
이모지(💄, ✨, 💕)를 적절히 사용하고,
"~해요, ~답니다" 어투를 씁니다.
```

**💼 작성 예시 — 일반 기업(B2B):**
```
당신은 중소기업 대상 IT 솔루션 회사의 마케팅 매니저입니다.
의사결정권자(대표, 임원)를 대상으로,
신뢰감 있고 전문적인 어투로 글을 씁니다.
구체적인 수치, 사례, ROI를 강조하며,
이모지는 사용하지 않고 격식 있는 존댓말을 사용합니다.
```

**🎓 작성 예시 — 학원/교육:**
```
당신은 10년 경력의 입시 전문 강사입니다.
학부모와 학생을 대상으로,
신뢰감 있으면서도 친근한 어투로 입시 정보·학습법·합격 사례를 전달합니다.
"~합니다, ~입니다" 격식체를 기본으로 하되,
중요한 부분은 강조하여 가독성을 높입니다.
```

**💡 프롬프트를 잘 만드는 팁:**
1. **역할(Role)을 명확히**: "당신은 ○○ 분야의 ○○년 차 전문가입니다"
2. **타겟 독자 지정**: 누구에게 말하는 글인지 명시 → 어투가 자동 결정됨
3. **톤(Tone)을 구체적으로**: "친근한"보다 "친근한 존댓말, ~해요체"가 더 좋음
4. **분량을 명시**: "1500자 이상", "본문 4단락"
5. **금지사항도 적기**: "광고성 표현 금지", "특정 단어 사용 금지"
6. **예시(Few-shot)를 보여주기**: 좋은 예시와 나쁜 예시를 같이 적으면 품질이 크게 올라감
7. **업종 특화 정보**: 본인 업종에서만 쓰는 용어/개념을 미리 알려주면 정확도가 올라감

---

## ▶️ 10단계: 실행하기

### 방법 1: 배치 파일로 실행 (추천)

`프로그램실행.bat` 파일을 만들고 아래 내용 붙여넣기:
```bat
@echo off
cd /d "%~dp0"
python blog_automation_gui.py
pause
```

이 파일을 더블클릭하면 프로그램이 실행됩니다!

### 방법 2: 명령 프롬프트로 실행

```
cd C:\Users\내이름\Desktop\블로그자동화
python blog_automation_gui.py
```

---

## 🎮 11단계: 프로그램 사용법

1. 프로그램 실행 → 엑셀의 키워드 목록이 나타남
2. 포스팅하고 싶은 키워드 **체크박스로 선택**
   - 드래그로 범위 선택 / Shift+클릭 / Ctrl+드래그로 해제
3. **`📝 스크립트 생성 (GPT-4.1)`** 버튼 클릭
   → AI가 제목 + 본문을 만들어 엑셀에 저장 (몇 분 소요)
4. 결과를 엑셀에서 확인 → 마음에 안 들면 직접 수정 가능
5. **`🚀 블로그 포스팅`** 버튼 클릭
   → Chrome이 자동으로 열리며 네이버 블로그에 포스팅됨

---

## 🛡 12단계: 자동입력방지(캡차) 발생 시 대처법

네이버는 자동화를 감지하면 **자동입력방지(캡차)** 화면을 띄웁니다.
영수증 이미지를 보고 총 금액을 입력하라고 하는 그 화면이에요.

### 🔄 이 프로그램의 동작 방식

자동 로그인 → **캡차 발생 감지** → **자동으로 일시 정지** → 사용자가 직접 풀기 → 자동으로 다음 단계 진행

### 📋 캡차가 떴을 때 해야 할 일

1. **프로그램이 멈추지 않습니다 — 당황하지 마세요!**
   - 콘솔과 GUI 로그창에 *"자동입력방지 감지됨"* 메시지가 뜹니다.
   - **최대 5분 동안 사용자 입력을 기다립니다.**

2. **Chrome 창에서 직접 처리:**
   - 화면에 보이는 영수증/이미지를 보고 정답 입력
   - `[로그인]` 버튼 클릭

3. **로그인 성공 시 → 자동으로 다음 단계 진행** ✅
   - 프로그램이 URL 변경을 자동 감지해서 알아서 이어서 작업합니다.

### ⚠️ 5분이 지나면?

- 프로그램이 자동으로 종료되며 에러 메시지가 표시됩니다.
- 다시 `🚀 블로그 포스팅` 버튼을 누르면 처음부터 재시도됩니다.

### 💡 캡차가 자주 뜨지 않게 하는 팁

| 상황 | 권장 사항 |
|------|----------|
| 사용 PC | **본인이 평소 네이버 로그인하는 PC**에서 실행 |
| Chrome 프로필 | 분리된 새 프로필 ❌ → 평소 쓰던 프로필 ✅ |
| 하루 포스팅 개수 | **5~10개 이내** 권장 (그 이상은 봇 의심) |
| 연속 포스팅 | 글 사이에 텀 두기 (한 번에 30개 몰아치기 ❌) |
| 새 IP/지역 | VPN/공유기 자주 바꾸면 캡차 ↑ |

---

## 🚨 자주 발생하는 문제와 해결 방법

### Q1. `pip` 명령어를 찾을 수 없다고 나와요
→ Python 설치 시 **"Add Python to PATH"** 체크 안 하셨네요.
   → Python을 다시 설치하면서 꼭 체크하세요.

### Q2. `OPENAI_API_KEY가 설정되지 않았습니다` 오류
→ `.env` 파일이 프로젝트 폴더 안에 있는지 확인하세요.
→ 파일 이름이 정확히 `.env` 인지 확인 (`env.txt` 가 아님)

### Q3. Chrome이 열리지 않거나 오류가 나요
→ `pip install --upgrade webdriver-manager` 실행

### Q4. 네이버 로그인이 막혀요 / 캡차(자동입력방지)가 떠요
→ **이 프로그램은 캡차를 자동으로 감지하고 일시 정지합니다.**
→ Chrome 창에서 직접 영수증 이미지를 보고 정답을 입력 → 로그인 버튼 클릭하면 자동으로 다음 단계로 진행됩니다.
→ 자세한 내용은 위의 **12단계: 캡차 대처법** 참고하세요.
→ 캡차가 너무 자주 뜨면 평소 쓰던 PC/Chrome 프로필에서 실행하고, 하루 포스팅 개수를 줄이세요.

### Q4-1. 5분 안에 캡차를 못 풀었어요
→ 프로그램이 자동으로 종료됩니다. `🚀 블로그 포스팅` 버튼을 다시 눌러서 재시도하세요.

### Q5. 글자 수가 너무 짧거나 길어요
→ 프롬프트에서 `1800자 이상`, `2400자 이내` 같은 숫자를 조정하세요.

---

## 🎨 더 발전시키는 아이디어

자기만의 프로그램으로 만들고 싶다면:

- **다른 블로그 플랫폼 추가**: 티스토리, 워드프레스, 브런치 등
- **이미지도 AI로 생성**: DALL-E, Stable Diffusion API 연동
- **예약 포스팅**: 특정 시간에 자동 발행
- **SEO 키워드 분석**: 네이버 검색 트렌드 API 연동
- **다국어 번역 자동 포스팅**: 영문 블로그도 동시에 운영
- **카테고리 자동 분류**: 키워드별로 다른 카테고리에 발행

---

## ⚠️ 주의사항 (꼭 읽어주세요)

1. **본인 블로그에서만 사용하세요.** 타인의 블로그에 무단 포스팅은 위법입니다.
2. **저작권**: 사용하는 이미지가 본인 소유이거나 무료 라이선스인지 확인하세요.
3. **AI 생성 콘텐츠 표기**: 일부 플랫폼은 AI 생성 콘텐츠 표기 의무가 있습니다.
4. **네이버 정책 준수**: 과도한 자동화는 계정 정지 위험이 있습니다. 하루 5~10개 이내 권장.
5. **API 키 보안**: `.env` 파일을 GitHub 등 공개 저장소에 절대 올리지 마세요.

---

## 🧩 부록: URL 및 셀렉터 레퍼런스

`naver_blog_login.py`에서 사용하는 URL과 DOM 셀렉터를 정리한 표입니다. 네이버 블로그 UI가 업데이트되어 동작이 깨질 경우 이 표를 기준으로 셀렉터를 점검·수정하세요.

### URL

| 용도 | URL | 코드 위치 |
|---|---|---|
| 로그인 페이지 | `https://nid.naver.com/nidlogin.login` | `LOGIN_URL` (L30) |
| 블로그 글쓰기 페이지 | `https://blog.naver.com/GoBlogWrite.naver` | `BLOG_WRITE_URL` (L31) |

### 로그인 페이지 셀렉터

| 요소 | 셀렉터 타입 | 셀렉터 값 |
|---|---|---|
| 아이디 입력창 | `By.ID` | `id` |
| 비밀번호 입력창 | `By.ID` | `pw` |
| 로그인 버튼 | `By.ID` | `log.login` |

### 글쓰기 진입 / 팝업 셀렉터

| 요소 | 셀렉터 타입 | 셀렉터 값 | 비고 |
|---|---|---|---|
| 메인 iframe | CSS | `#mainFrame` | 글쓰기 영역은 iframe 내부 |
| 작성중인 글 팝업 (취소) | CSS | `.se-popup-button.se-popup-button-cancel` | 있을 때만 처리 |
| 도움말 패널 닫기 | CSS | `.se-help-panel-close-button` | 있을 때만 처리 |

### 제목 / 본문 영역 셀렉터

| 요소 | 셀렉터 타입 | 셀렉터 값 | 비고 |
|---|---|---|---|
| 제목 영역 | CSS | `.se-section.se-section-documentTitle` | 클릭 후 타이핑 |
| 본문 영역 | CSS | `.se-section.se-section-text` | Tab 키로도 진입 가능 |

### 툴바 — 정렬 셀렉터

| 요소 | 셀렉터 타입 | 셀렉터 값 |
|---|---|---|
| 정렬 버튼 (메뉴 열기) | CSS | `.se-toolbar-item.se-toolbar-item-align` |
| 가운데 정렬 | CSS | `[data-log="prt.center"]` |

### 소제목 (인용구) 셀렉터

| 요소 | 셀렉터 타입 | 셀렉터 값 | 비고 |
|---|---|---|---|
| 인용구 삽입 버튼 | CSS | `.se-insert-quotation-default-toolbar-button` | |
| 인용구 섹션 | CSS | `.se-section.se-section-quotation` | 마지막(`[-1]`) 요소 사용 |
| 인용구 레이아웃 2번째 | XPath | `(//button[@data-name="quotation-layout"])[2]` | |
| 인용구 컨테이너 | CSS | `.se-quotation-container` | 마지막(`[-1]`) 요소 사용 |

### 이미지 / 링크 셀렉터

| 요소 | 셀렉터 타입 | 셀렉터 값 | 비고 |
|---|---|---|---|
| 이미지 컴포넌트 | CSS | `.se-component.se-image-component` | 업로드 후 마지막 요소 클릭 |
| 링크 버튼 | CSS | `.se-context-toolbar-button-link` | 이미지 선택 후 표시 |
| 링크 URL 입력창 | CSS | `.se-popup-body input[type='text']` | |
| 링크 확인 버튼 | CSS | `.se-popup-button.se-popup-button-primary` | |

### 구분선 / 저장 셀렉터

| 요소 | 셀렉터 타입 | 셀렉터 값 | 비고 |
|---|---|---|---|
| 구분선 삽입 버튼 | CSS | `.se-insert-divider-default-toolbar-button` | |
| 저장 버튼 | CSS | `.save_btn__bzc5B` | 클래스명에 해시 포함 → 변경 가능성 ↑ |

### 외부 파일 경로

| 용도 | 파일/폴더명 |
|---|---|
| 포스팅 엑셀 | `posting.xlsx` |
| 이미지 폴더 | `image/` |

다운받은 본인의 폴더 경로로 직접 수정**해야 합니다. 수정 위치는 위 **9-2단계: 엑셀/이미지 폴더 경로 수정**을 참고하세요.

엑셀 컬럼 구조: B열 = 제목, C열 = 본문 (Row 2부터 데이터, 기본은 Row 3 사용)

### 주요 타이밍 / 동작 메모

- 캡차/추가 인증 시 최대 **300초(5분)** 수동 처리 대기
- 텍스트 입력은 한 글자씩 타이핑 (제목 0.05초/자, 소제목 0.03초/자, 본문 0.02초/자)
- 이미지 붙여넣기 후 업로드 대기 **2.5초**
- `.save_btn__bzc5B`는 해시 기반 클래스라 네이버 업데이트 시 가장 먼저 깨질 셀렉터입니다. 동작이 안 되면 이 부분부터 확인하세요.

---

## 📚 더 배우고 싶다면

- **Python 기초**: https://wikidocs.net/book/1
- **OpenAI API 공식 문서**: https://platform.openai.com/docs
- **Selenium 공식 문서**: https://www.selenium.dev/documentation/
- **프롬프트 엔지니어링**: https://www.promptingguide.ai/

---

## 🤝 도움이 필요하다면

코드를 수정하면서 막히는 부분이 있다면, **Claude Code** 같은 AI 코딩 어시스턴트에게 물어보세요.
"이 코드의 ○○ 부분을 △△로 바꾸고 싶어" 라고만 해도 친절하게 알려줍니다.

---

**Happy Blogging! 🚀**
