🔒

구매자 전용 콘텐츠

구매 시 안내받은 비밀번호를 입력해주세요.

vibe coding guide

워드프레스 자동 포스팅
시스템 구축 가이드

자동화 블로그 시스템.
서버 구축부터 크롤링, AI 글 생성, 자동 발행까지.
최근 업데이트 2025.02.2424 Chapters
▼ 시작하기
Chapter 00

이 가이드를 읽기 전에

코드를 가르치지 않습니다. 시스템이 돌아가는 원리를 알려줍니다.

🎣 물고기가 아니라 낚시를 배웁니다

이 가이드는 특정 블로그 주제에 종속되지 않습니다. 어떤 주제의 블로그든 자동 포스팅 시스템을 만들 수 있는 구조와 원리를 다룹니다.

📌 이 문서의 목적

이 전자책은 워드프레스 자동 포스팅의 구체적인 흐름을 담았습니다. 서버 세팅부터 크롤링, AI 글 생성, 자동 발행까지 전체 과정을 다룹니다.

다만, 여러분이 만들 블로그의 주제, 데이터, 수익 모델은 저마다 다릅니다. 같은 흐름을 따라도 결과물은 전부 다릅니다. 글의 템플릿도 여러 개 만들어서 랜덤으로 발행할 수 있고, 인트로·서론·FAQ 등 각 유형을 다양하게 구성해서 매번 다른 느낌의 글을 만들 수 있습니다.

이 문서의 목적은 이 흐름을 이해하고, AI에게 구체적인 지시를 할 수 있게 되는 것입니다. 코드를 외우는 게 아니라, "이 단계에서 AI에게 뭘 시켜야 하는지"를 아는 게 핵심입니다.

쉽지 않은 과정입니다. 하지만 한 번 성공시키고 나면, 다른 주제의 블로그도 자동화할 수 있는 힘이 생깁니다. 서버, DB, API, 크롤링 — 이 과정을 따라가는 것만으로도 꽤 많은 개발 지식을 자연스럽게 습득하게 됩니다. 첫 번째가 가장 어렵고, 두 번째부터는 훨씬 빠릅니다.

🗺 전체 로드맵

먼저 전체 흐름을 한눈에 보고 시작합시다. 크게 4단계입니다.

1

🖥 서버 환경 구축 CH01~CH07

AWS 서버 생성 → 접속 도구 설치 → 워드프레스 설치 → 도메인 연결
블로그가 돌아갈 집을 짓는 단계. 한 번만 하면 됩니다.

2

📋 AI와 기획 CH08~CH17

블로그 주제 → 글 구조 → DB 설계 → 크롤링 → 이미지 → AI 글 생성 → 자동 발행
가장 중요한 단계. Claude와 대화하며 모든 규칙을 정하고 .md 기획서 완성 → 코드 생성

3

🚀 배포 & 테스트 CH18~CH19

코드를 서버에 올리고 → DB 세팅 → 실행 → 에러 수정 반복
바이브코딩의 핵심 루프. 5~10번 반복하면 돌아갑니다.

4

⚙️ 자동화 & 마무리 CH20~CH23

SEO 최적화 → 크론탭(정시 자동 실행) → 글 꾸미기 → 유지보수
시스템이 알아서 돌아가게 설정하고, 안정적으로 유지합니다.

지금 전부 이해할 필요 없습니다. 한 챕터씩 따라가면 자연스럽게 연결됩니다.

⚙️ 시스템은 이렇게 돌아갑니다

완성되면 이 흐름이 매일 자동으로 반복됩니다. 지금은 그림만 보세요.

① 크롤러 (data.js)
외부 사이트에서 데이터 수집 (이름, 가격, 평점, 링크 등)
② 이미지 (image.js)
크롤링 or 무료 API로 이미지 자동 확보 → WebP 변환 → 서버 저장
③ DB (MySQL)
데이터 + 이미지 파일명이 DB에 저장됨. 모든 정보의 창고
④ AI 글 생성 (Gemini)
DB 데이터를 읽고 → 서론, 설명, FAQ 등 자연어 글 작성
⑤ 자동 발행 (autopost.php)
데이터 + AI 글 + 이미지를 HTML 템플릿에 조립 → 워드프레스에 발행
⑥ 워드프레스
글이 발행됨. SEO 메타 자동 설정. 방문자가 검색으로 유입
⑦ 크론탭 (자동 반복)
위 ①~⑥을 매일 정해진 시간에 자동 실행. 슬랙으로 결과 알림

이 흐름을 하나씩 만들어가는 게 이 가이드의 전부입니다.

가장 중요

읽기만 하면 절대 못 합니다. 이건 직접 부딪혀봐야 아는 겁니다. 읽으면서 동시에 바로바로 같이 실행해보세요. 챕터 하나 읽으면 바로 따라하고, 에러 나면 AI에게 물어보고, 해결하고, 다음 챕터로. 이 반복이 유일한 방법입니다.

AI는 Claude를 추천합니다

이 가이드에서 "AI에게 물어보세요"라고 할 때, Claude(claude.ai)를 추천합니다. 개발 지식이 풍부하고, 코드 생성 능력이 뛰어납니다. 모르는 용어나 개념이 나오면 바로 Claude에게 물어보세요. "이게 뭐야?", "쉽게 설명해줘" — AI와 대화하며 학습하는 것 자체가 바이브코딩의 일부입니다.

💡 이런 블로그에 적합합니다

핵심은 데이터와 이미지를 자동으로 가져올 수 있는 주제입니다.

🏨 호텔/숙소 추천

"서울 강남 호텔 TOP 10" → Agoda, Booking 크롤링 + 제휴 링크

🗺 여행 액티비티

"제주도 투어 추천" → Klook 크롤링 + 제휴 링크

📚 도서 추천

"2025 자기계발서 TOP 10" → 도서 사이트 크롤링 + 링크프라이스 제휴

🛒 쿠팡 어필리에이트

상품 크롤링 + 쿠팡 파트너스 제휴 링크

📱 네이버 브랜드커넥트

체험단/협찬 콘텐츠 자동화

수익 모델 팁

애드센스보다 어필리에이트(제휴 마케팅)가 수익이 높습니다. 제휴 마케팅은 두 가지 방식이 있습니다:

① 직접 가입 (기본) — 쿠팡 파트너스, 네이버 브랜드커넥트, Agoda, Amazon 등에 직접 가입하고 승인받는 방식. 커미션이 더 높습니다.

② 링크프라이스 경유 — linkprice.com에 가입하면 다양한 광고주(Agoda, Klook 등)의 제휴 링크를 바로 쓸 수 있습니다. 개별 승인 없이 편하지만, 직접 가입보다 커미션이 낮습니다.

어필리에이트가 뭔지 모르겠으면 AI에게 "제휴 마케팅이 뭐야? 어떻게 시작해?"라고 물어보세요. 이 가이드는 수익 강의가 아니라 기술 가이드이니 이 정도만 참고하세요.

🧩 바이브코딩이란

코드를 직접 짜지 않고, AI에게 원하는 걸 설명해서 코드를 만들게 하는 방식입니다. 핵심은 "무엇을 만들어야 하는지"를 아는 것.

알아야 하는 것

각 단계가 왜 필요한지, 어떤 순서인지

몰라도 되는 것

코드 문법 — AI가 해줍니다

해야 하는 것

AI에게 정확한 지시를 내리는 것

🤖 사용할 도구

이 가이드에서는 ClaudeAntigravity를 역할을 나눠서 씁니다.

Claude (기획 담당)

시스템 설계, 구조 기획, 프롬프트 작성 등 "머리 쓰는 일"을 맡깁니다. 대화하면서 전체 설계를 잡고, 결과를 .md 파일로 정리합니다.

Antigravity (코드 에디터)

코드를 작성하고 관리하는 에디터입니다. Antigravity 안에서 Claude를 쓸 수 있고, 내장 터미널에서 Claude Code도 실행 가능합니다. .md 기획서를 열고 "이 기획대로 코드 만들어줘" 하면 됩니다.

작업 흐름

1. Claude에게 기획 대화 → 시스템 구조, DB 설계, 템플릿, 크롤링, AI 프롬프트 등을 정리

2. Claude가 정리한 내용을 .md 파일로 저장 (기획서)

3. 그 .md 파일을 Antigravity에서 열고 Claude에게 "이 기획대로 코드 전부 만들어줘" 지시. Antigravity 내장 터미널에서 Claude Code를 써도 됩니다.

4. 코드를 FileZilla로 서버에 올리고, 실행해보고, 에러 나면 AI에게 물어보며 수정

⚠️ 솔직한 경고

Warning

쉽지 않습니다. 서버, DB, 여러 도구를 조합해야 합니다. 하지만 각 단계의 "개념"을 이해하면 실제 코드는 AI에게 시킬 수 있습니다.

🛠 필요한 도구 & 비용

도구용도비용
AWS EC224시간 서버6개월 프리티어 무료
도메인사이트 주소연 ~$9 (Namecheap)
CloudflareSSL + CDN무료
Gemini APIAI 글 생성무료 크레딧 $300 (카드 등록)
Slack알림무료
Xshell서버 접속무료 (개인)
FileZilla파일 업로드무료
Antigravity + Claude바이브코딩무료~$20/월
Node.js크롤러 & 이미지 처리무료
프리티어 이후

프리티어 이후에도 t3.micro를 계속 쓸 수 있습니다. 월 ~$8 정도. 트래픽이 늘어서 느려지면 그때 t3.small 등으로 업그레이드하면 됩니다. 전체 월 유지비 약 $10~20.

📖 용어 설명집

이 가이드에서 자주 등장하는 용어들입니다. 지금 외울 필요 없고, 모르는 단어가 나올 때 돌아와서 확인하세요.

용어쉽게 말하면
AWS EC2아마존에서 빌리는 클라우드 컴퓨터. 우리 서버가 여기서 돌아감
SSH내 PC에서 서버에 원격 접속하는 방법 (전화 걸기 같은 것)
SFTP서버에 파일을 올리고 내리는 보안 전송 방식
Apache웹서버. 누군가 사이트에 접속하면 페이지를 보여주는 역할
MySQL데이터베이스. 글, 호텔 정보, 이미지 파일명 등 모든 데이터의 창고
PHP워드프레스가 이 언어로 만들어져 있음. 자동 발행 코드도 PHP로 작성
Node.jsJavaScript를 서버에서 실행하는 프로그램. 크롤링 코드가 여기서 돌아감
API프로그램끼리 대화하는 통로. "데이터 주세요" → "여기요" 하는 약속된 방식
API 키API를 쓸 때 필요한 출입증. 이게 있어야 Gemini가 글을 써줌
DNS도메인(myblog.com)과 IP 주소(123.456.789)를 연결해주는 전화번호부
SSL / HTTPS사이트 보안 인증서. 주소창에 🔒 자물쇠가 뜨게 해줌
Cloudflare무료 DNS + SSL + 속도 최적화를 제공하는 서비스
Puppeteer눈에 안 보이는 크롬 브라우저를 코드로 자동 조종하는 도구 (크롤링용)
크롤링다른 사이트에서 데이터를 자동으로 긁어오는 것
DB (데이터베이스)큰 엑셀이라고 생각하면 됨. 테이블 = 시트, 컬럼 = 열, 행 = 데이터 1줄
크론탭 (Crontab)서버의 알람 시계. "매일 몇 시에 이 파일 실행해" 예약하는 기능
Webhook이벤트가 생기면 자동으로 알림을 보내는 URL (슬랙 알림에 사용)
SEO검색엔진 최적화. 구글/네이버 검색 결과에 내 글이 잘 나오게 하는 것
사이트맵내 사이트에 어떤 글이 있는지 검색엔진에 알려주는 목차 파일
robots.txt검색엔진에게 "이건 수집해, 이건 하지 마" 알려주는 규칙 파일
OG태그SNS에 링크 공유할 때 제목/이미지가 예쁘게 나오게 하는 태그
스키마 (Schema)검색 결과에 FAQ, 별점 등이 특별하게 표시되게 하는 구조화 데이터
RankMath워드프레스 SEO 플러그인. 설치하면 기본 SEO가 자동 적용됨
WebP이미지 포맷. JPEG보다 용량이 작아서 사이트가 빨라짐
어필리에이트제휴 마케팅. 내 링크로 누군가 구매/예약하면 수수료를 받는 것
Chapter 01

AWS 서버 생성

블로그가 돌아갈 서버를 만듭니다. 키페어 발급부터 보안 그룹까지.

💬 AWS에서 컴퓨터 한 대 빌리는 겁니다.

☁️ 왜 AWS인가

자동화는 24시간 돌아가야 합니다. AWS EC2는 클라우드에 있는 리눅스 컴퓨터를 빌리는 겁니다. 내가 자는 동안에도 서버는 계속 돌아갑니다.

프리티어

AWS 신규 가입 시 6개월간 프리티어. t3.micro 무료. 가입에 신용카드가 필요하지만 프리티어 안에서는 과금 없습니다.

📋 생성 순서 (키페어 포함!)

1

AWS 계정 생성

aws.amazon.com 회원가입. 이메일, 신용카드 준비

2

리전 선택: 서울 (ap-northeast-2)

AWS 콘솔 우측 상단에서 리전 선택. 한국 대상이면 서울 추천. 해외 대상이면 해당 국가 가까운 리전 선택

3

EC2 → "인스턴스 시작"

AWS 콘솔 상단에서 EC2 검색 → 주황색 "인스턴스 시작" 버튼

4

이름 입력

알아보기 쉬운 이름 (예: my-blog-server)

5

OS: Ubuntu 24.04 LTS

Amazon Linux 말고 Ubuntu. 자료가 훨씬 많고 AI도 잘 답변해줌

6

인스턴스 유형: t3.micro (프리티어)

"프리 티어 사용 가능" 라벨 확인. 시작은 이걸로 충분

7

🔑 키페어 생성 ⭐ 매우 중요

"새 키 페어 생성" 클릭 → 이름 입력 → 유형: RSA / 형식: .pem → .pem 파일 다운로드. 이 파일이 서버 접속 열쇠입니다 — 집 열쇠처럼 이게 없으면 서버에 들어갈 수 없습니다! 잃어버리면 서버를 새로 만들어야 할 수도 있습니다. USB 등에 백업하세요.

8

🛡 보안 그룹 설정 (방화벽)

보안 그룹은 서버의 "출입문"입니다. 어떤 문을 열어줄지 정하는 겁니다. "보안 그룹 생성" 선택 후 아래 3개를 열어주세요. 안 열면 접속 자체가 안 됩니다:
• SSH (22번) — 서버 접속용
• HTTP (80번) — 웹사이트
• HTTPS (443번) — SSL

9

스토리지: 30GB

서버의 "하드디스크" 용량입니다. 기본 8GB는 워드프레스 + 이미지만 넣어도 금방 참. 프리티어 범위 내 30GB까지 무료이니 넉넉하게 설정하세요

10

"인스턴스 시작" 클릭!

1~2분 후 상태가 "실행 중"이면 성공

키페어 주의

.pem 파일은 딱 한 번만 다운로드 가능합니다. 재발급 안 됨! 바탕화면 말고 안전한 폴더에 저장 + 백업.

🖥️
EC2 인스턴스 생성 화면 (키페어 + 보안그룹 설정)
— 키페어 생성과 보안그룹 설정이 같은 화면에 있습니다

🌐 탄력적 IP (고정 IP)

IP 주소는 서버의 "집 주소"입니다. 그런데 EC2는 재시작할 때마다 이 주소가 바뀝니다. 도메인(예: myblog.com)을 연결하려면 바뀌지 않는 고정 주소가 필요합니다.

1
EC2 좌측 → "탄력적 IP"
2
"탄력적 IP 주소 할당" → 할당
3
IP 선택 → "탄력적 IP 주소 연결" → 내 인스턴스 선택
주의

탄력적 IP를 인스턴스에 연결 안 하면 요금 발생. 반드시 연결!

Chapter 02

서버에 접속하기 — SSH 프로그램 설치

내 컴퓨터에서 서버를 원격 조종합니다.

💬 내 PC에서 서버를 원격 조종하는 프로그램을 깝니다.

🔐 SSH = 서버에 전화 걸기

내 컴퓨터에서 서버에 원격으로 접속하는 방법입니다. 카카오톡으로 전화 거는 것처럼, SSH 프로그램으로 서버에 연결합니다. 아까 만든 .pem 파일이 전화번호이자 비밀번호 역할입니다.

📥 SSH 프로그램 설치 & 설정

🪟 Windows — Xshell
🍎 Mac — Termius

Xshell (Windows 전용, 무료)

1

Xshell 다운로드

netsarang.com → "무료 라이선스 (가정/학교)" 버전 다운

2

새 세션 → 호스트에 탄력적 IP 입력

파일 → 새로 만들기 → 호스트란에 IP 주소

3

인증 설정

방법: Public Key / 사용자: ubuntu / 키 파일: .pem 파일 선택

4

연결 → "ubuntu@ip-xxx:~$" 보이면 성공!

축하합니다! 이 화면이 서버를 조종할 수 있는 상태입니다. 여기에 명령어를 입력하면 서버가 실행합니다

Termius (Mac 전용, 무료)

Xshell은 Windows 전용이라 Mac에서는 쓸 수 없습니다. Mac 사용자는 Termius를 쓰세요. 깔끔하고 무료이며, Xshell과 하는 일은 똑같습니다.

1

Termius 다운로드

termius.com 또는 App Store에서 "Termius" 검색 → 설치 (무료 계정으로 충분)

2

새 호스트 추가

좌측 "Hosts""+ New Host" → Address에 탄력적 IP 입력

3

인증 설정

Username: ubuntu → Keys 항목에서 "+ Key""Import from file".pem 파일 선택

4

더블클릭으로 접속 → "ubuntu@ip-xxx:~$" 보이면 성공!

Xshell과 동일한 화면입니다. 여기서부터는 입력하는 명령어가 전부 같습니다

⌨️ 쉘 기본 사용법 (꼭 읽으세요!)

Xshell은 일반 프로그램과 복사/붙여넣기 방법이 다릅니다.

하고 싶은 것일반 프로그램Xshell(쉘)
복사Ctrl+CCtrl+Shift+C (또는 드래그만 해도 복사됨)
붙여넣기Ctrl+VCtrl+Shift+V (또는 마우스 우클릭)
실행 취소Ctrl+Z없음 — 명령어는 되돌릴 수 없습니다
실행 중 멈추기Ctrl+C (쉘에서 Ctrl+C는 "멈춰!"임)
Ctrl+C 주의

쉘에서 Ctrl+C는 복사가 아니라 "실행 중인 명령 중단"입니다! 복사하려면 Ctrl+Shift+C를 쓰세요. 이 가이드에 나오는 명령어는 웹에서 복사한 뒤 Xshell에 Ctrl+Shift+V로 붙여넣으면 됩니다.

📌 접속 후 바로 할 것

Xshell로 서버에 접속한 상태에서 아래 명령어를 한 줄씩 복사 → Ctrl+Shift+V로 붙여넣기 → Enter 하세요.

Xshell
# 시스템 업데이트 (보안 패치) sudo apt update && sudo apt upgrade -y # 시간대를 한국으로 (크론탭이 이 시간 기준으로 돌아감) sudo timedatectl set-timezone Asia/Seoul date → KST 시간이 보이면 OK

⌨️ 자주 쓰는 명령어

명령어쉽게 말하면예시
ls지금 폴더에 뭐가 있어?ls -la
cd다른 폴더로 이동cd /var/www/html
sudo관리자 권한으로 실행sudo apt install …
nano파일 편집기 열기nano config.php
cat파일 내용 보기cat error.log
바이브코딩 팁

외울 필요 없습니다. AI에게 "서버에서 이런 걸 하고 싶어" 물어보면 됩니다.

Chapter 03

서버에 파일 올리기 — FileZilla 설치

드래그 앤 드롭으로 파일을 서버에 올립니다.

💬 파일을 드래그해서 서버에 올리는 프로그램을 깝니다.

📁 Xshell = 명령어 / FileZilla = 파일 관리

Xshell은 글자로 서버에 명령을 내리는 거고 (예: "이거 설치해"), FileZilla는 윈도우 탐색기처럼 파일을 눈으로 보면서 드래그로 올리고 내리는 겁니다. 왼쪽이 내 PC, 오른쪽이 서버.

📥 설정

1

filezilla-project.org → Client 다운 (Server 아님!)

Client만 받으세요. Server는 다른 프로그램

2

파일 → 사이트 관리자 → 새 사이트

접속 정보를 저장해두는 곳

3

접속 정보 입력

프로토콜: SFTP (FTP 아님! S가 붙은 보안 버전) / 호스트: 탄력적 IP / 로그온: 키 파일 / 사용자: ubuntu / 키: .pem 파일

4

연결 → 양쪽 파일 목록 보이면 성공

드래그 앤 드롭으로 파일 이동

중요 경로

워드프레스 파일: /var/www/html/
크롤러 파일: /home/ubuntu/crawler/

Chapter 04

워드프레스 엔진 깔기 — AMP 설치

워드프레스가 돌아가려면 이 3개가 먼저 깔려 있어야 합니다.

💬 워드프레스가 돌아가려면 필요한 3가지를 설치합니다.

📦 쉽게 말하면

워드프레스는 혼자 못 돌아갑니다. 3가지 도우미가 필요합니다:

Apache (아파치)

누군가 여러분 사이트에 접속하면 페이지를 보여주는 역할. 가게의 "카운터 직원"

MySQL (마이에스큐엘)

글, 사용자 정보 등 모든 데이터를 저장하는 "창고"

PHP (피에이치피)

워드프레스가 이 언어로 만들어져 있음. 이게 없으면 WP가 실행 안 됨

1단계: Apache 설치

Xshell로 서버에 접속한 상태에서 진행합니다. (Chapter 02 참고)

Xshell
# Apache 설치 sudo apt install apache2 -y # 설치 확인 — 실행 중인지 체크 sudo systemctl status apache2 → "active (running)" 보이면 OK

2단계: MySQL 설치 & 데이터베이스 생성

한 줄씩 붙여넣기

아래 명령어를 반드시 한 줄씩 복사 → 붙여넣기 → Enter 하세요. 여러 줄을 한꺼번에 붙여넣으면 에러납니다.

Xshell
# MySQL 설치 sudo apt install mysql-server -y # MySQL 보안 설정 (비밀번호 등) sudo mysql_secure_installation → 질문이 여러 개 나옴. 대부분 Y 선택하면 됨 → 비밀번호 강도는 0(LOW)으로 해도 OK # MySQL 접속해서 워드프레스용 DB 만들기 # ↓ 아래 명령어를 한 줄씩 그대로 복사 붙여넣기 하세요. 외울 필요 없습니다 sudo mysql CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4; CREATE USER 'wpuser'@'localhost' IDENTIFIED BY '여기에비밀번호'; GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost'; FLUSH PRIVILEGES; EXIT;
비밀번호 규칙

'여기에비밀번호' 부분을 자기가 정한 비밀번호로 바꾸세요. 8자 이상, 영문+숫자 조합을 추천합니다. 예: MyBlog2025! — 특수문자를 넣으면 더 안전합니다. 작은따옴표 안에 넣는 거니까 따옴표는 그대로 두세요.

메모하세요!

DB 이름: wordpress / 사용자: wpuser / 비밀번호: 내가 정한 것 — 이 3개를 나중에 워드프레스 설치할 때 입력해야 합니다.

3단계: PHP 설치

Xshell
# PHP + 워드프레스에 필요한 확장모듈 한꺼번에 설치 sudo apt install php libapache2-mod-php php-mysql php-curl php-gd php-xml php-mbstring php-zip php-intl php-imagick -y # 설치 확인 php -v → PHP 8.x.x 버전 보이면 OK # Apache 재시작 (PHP를 인식시키기 위해) sudo systemctl restart apache2

4단계: phpMyAdmin 설치

phpMyAdmin은 데이터베이스를 웹 브라우저에서 눈으로 볼 수 있는 도구입니다. 엑셀처럼 데이터를 확인하고 수정할 수 있어서 매우 편리합니다.

Xshell
sudo apt install phpmyadmin -y # 설치 중 질문: # "웹서버 선택" → 스페이스바로 apache2 선택 → 엔터 # "dbconfig-common" → Yes # "비밀번호" → 입력 # Apache에 phpMyAdmin 연결 sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin # 확인 → http://탄력적IP/phpmyadmin 접속 → 로그인 화면 나오면 성공
로그인 정보

phpMyAdmin 로그인 화면이 나오면: 사용자명: wpuser / 비밀번호: 위에서 정한 것을 입력하세요. 만약 wpuser로 안 되면 root로 시도해보세요. 그래도 안 되면 AI에게 "phpMyAdmin 로그인 안 돼, 어떻게 해?"라고 에러 메시지와 함께 물어보세요.

막히면

설치 중 에러가 나거나 화면이 다르면, AI에게 에러 메시지를 보여주세요. 또는 각 공식 문서를 참고하세요: Apache(httpd.apache.org), MySQL(dev.mysql.com/doc), PHP(php.net/manual), phpMyAdmin(phpmyadmin.net). 공식 문서가 어려우면 "Apache 설치 중 이런 에러 나왔어"라고 AI에게 물어보면 됩니다.

환경마다 다릅니다

서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.

Chapter 05

블로그 설치 & 테마 설정

워드프레스를 설치하고 테마를 입힙니다.

💬 블로그 엔진을 설치합니다. 클릭 몇 번이면 끝.

⚠️ 설치 전에 알아야 할 것

워드프레스 설치는 단순히 파일만 올리면 끝이 아닙니다. Apache 설정, DB 생성, PHP 모듈, 권한 설정 등 여러 단계가 있고, 서버 환경마다 다를 수 있습니다. 아래는 일반적인 순서이지만, 에러가 나면 AI에게 에러 메시지를 보여주면서 하나씩 해결하세요.

1️⃣ Apache 설정

Xshell로 서버에 접속한 상태에서 진행합니다. 워드프레스가 제대로 돌아가려면 Apache에 몇 가지 설정이 필요합니다.

Xshell
# mod_rewrite 활성화 (퍼머링크에 필요) sudo a2enmod rewrite # Apache가 .htaccess를 읽을 수 있게 설정 sudo nano /etc/apache2/apache2.conf # ↓ nano 에디터가 열리면: # 1. 화살표 키로 이동 (마우스 안 됨) # 2. <Directory /var/www/> 부분을 찾기 # 3. AllowOverride None → AllowOverride All 로 수정 # 4. Ctrl+O → Enter (저장) # 5. Ctrl+X (나가기) # Apache 재시작 sudo systemctl restart apache2
nano 편집기가 어렵다면

AI에게 "apache2.conf에서 AllowOverride All로 바꾸는 sed 명령어 알려줘"라고 하면 한 줄 명령어로 해결할 수 있습니다.

2️⃣ PHP 필수 모듈 설치

CH04에서 이미 설치했다면

Chapter 04에서 PHP 모듈을 이미 설치했으면 이 단계는 건너뛰세요. 다시 실행해도 문제는 없지만 불필요합니다.

Xshell
sudo apt install php-mysql php-curl php-xml php-mbstring php-zip php-gd php-intl -y sudo systemctl restart apache2

3️⃣ MySQL에 DB & 유저 생성

CH04에서 이미 했다면

Chapter 04에서 이미 DB와 유저를 만들었으면 이 단계는 건너뛰세요. 같은 작업을 두 번 할 필요 없습니다.

Xshell
sudo mysql CREATE DATABASE wordpress; CREATE USER 'wpuser'@'localhost' IDENTIFIED BY '비밀번호'; GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost'; FLUSH PRIVILEGES; EXIT;
메모 필수

DB 이름(wordpress), 유저(wpuser), 비밀번호 — 이 3개를 반드시 메모하세요. 나중에 wp-config.php와 브라우저 설치 화면에서 입력해야 합니다.

4️⃣ 워드프레스 다운로드 & 설치

Xshell
cd /var/www/html sudo wget https://wordpress.org/latest.tar.gz sudo tar -xzf latest.tar.gz sudo cp -r wordpress/* /var/www/html/ sudo rm -rf wordpress latest.tar.gz index.html # 권한 설정 (이게 안 되면 WP가 파일을 못 씀) sudo chown -R www-data:www-data /var/www/html/ sudo chmod -R 755 /var/www/html/

5️⃣ 브라우저에서 설치 완료

브라우저에서 http://탄력적IP 접속하면 WP 설치 화면이 나옵니다. 3단계에서 메모한 DB 정보를 입력:

항목입력값
데이터베이스 이름wordpress (또는 자기가 정한 이름)
사용자명wpuser (또는 자기가 정한 유저)
비밀번호(3단계에서 정한 비밀번호)
데이터베이스 호스트localhost
테이블 접두어wp_ (그대로)

그 다음 사이트 제목, 관리자 아이디/비밀번호 설정하면 워드프레스 설치 완료!

6️⃣ 테마 설치 (GeneratePress 추천)

워드프레스가 설치되면 기본 테마가 적용되어 있는데, 블로그용 테마로 바꿔야 합니다. 테마는 GeneratePress를 추천합니다. 가볍고, 빠르고, SEO에 유리하며, 커스터마이징이 쉽습니다.

1
WP 관리자 → 외모 → 테마 → 새로 추가
2
"GeneratePress" 검색 → 설치 → 활성화
테마 디자인은 이 가이드에서 다루지 않습니다

이 가이드는 자동 포스팅 시스템 구축에 집중하는 기술 가이드입니다. 테마 꾸미기(레이아웃, 색상, 메뉴, 위젯 등)는 별도로 학습하시는 걸 추천드립니다.

아래 영상을 따라하면 GeneratePress 테마 설정부터 SEO 플러그인(RankMath) 셋팅까지 한 번에 끝낼 수 있습니다:

📺 GeneratePress + RankMath 설정 영상 보기 →
⭐ 4-5부터 보세요. 그 앞부분은 서버 셋팅인데, 우리는 이미 CH01~CH04에서 끝냈습니다.

테마 디자인과 기본 SEO 설정을 마친 뒤, 이 가이드의 다음 챕터로 넘어오시면 됩니다.

환경마다 다를 수 있습니다

서버 OS 버전, PHP 버전, MySQL 버전에 따라 위 명령어가 안 먹을 수 있습니다. 에러가 나면 에러 메시지를 그대로 복사해서 AI에게 보여주세요. "ubuntu 24.04에서 워드프레스 설치하는데 이런 에러 나왔어" — AI가 환경에 맞는 해결법을 알려줍니다. 공식 문서는 wordpress.org/documentation을 참고하세요.

환경마다 다릅니다

서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.

Chapter 06

사이트 주소 연결 & 보안 설정

도메인 구매 + Cloudflare SSL로 HTTPS 적용.

💬 사이트 주소를 사고 https를 붙입니다.

🌐 도메인 구매

도메인은 사이트 주소입니다. 예: myblog.com. 이걸 사야 사람들이 IP 주소 대신 이름으로 접속할 수 있습니다.

Namecheap (추천)
가비아 (한국어)

Namecheap

namecheap.com → 원하는 도메인 검색 → 구매. .com 연 $9~12.

가비아

gabia.com → 도메인 검색 → 구매. .com 연 ₩15,000~20,000. 한국어 + 전화 상담.

☁️ Cloudflare 설정

1

cloudflare.com 가입 (무료)

이메일로 가입

2

"Add a site" → 도메인 입력 → Free 플랜

구매한 도메인을 추가합니다

3

DNS 레코드

A 레코드 → 이름: @ → 값: 탄력적 IP
A 레코드 → 이름: www → 값: 탄력적 IP

4

네임서버 변경 ⭐

Cloudflare가 알려주는 네임서버 2개를 도메인 구매처에서 변경. Namecheap: Domain List → 도메인 클릭 → Nameservers → Custom DNS → 2개 입력. 가비아: My가비아 → 도메인 관리 → 네임서버 설정. 반영까지 30분~24시간

5

SSL/TLS → 모드: "Full (strict)" 선택

SSL 모드는 "보안 수준"입니다. Flexible로 하면 워드프레스에서 무한 새로고침 오류가 납니다. 반드시 Full (strict)로 설정하세요.

🔒 서버에 Origin 인증서 설치 (필수!)

Cloudflare "Full" 모드를 쓰려면 서버에도 인증서가 있어야 합니다. Cloudflare에서 무료로 발급해주는 Origin Certificate를 서버 Apache에 설치합니다.

1

Cloudflare → SSL/TLS → Origin Server → "Create Certificate"

기본 설정 그대로 → "Create" 클릭

2

인증서(PEM)와 키(KEY) 복사

텍스트 박스 2개가 나옵니다. 위쪽(Origin Certificate)이 인증서(PEM)이고, 아래쪽(Private Key)이 키(KEY)입니다. 둘 다 각각 복사해서 메모장에 저장하세요. 이 화면을 닫으면 키는 다시 볼 수 없으니 반드시 저장!

3

AI에게 설치 시키기

아래 프롬프트대로 AI에게 시키면 명령어를 알려줍니다

🤖 AI에게 이렇게
"Ubuntu 24.04 + Apache에 Cloudflare Origin Certificate를 설치하려고 해. 인증서(PEM)와 키(KEY) 내용은 준비되어 있어. 서버에 파일로 저장하고 Apache SSL 설정하는 명령어를 하나씩 알려줘. 추가로 HTTP → HTTPS 자동 리다이렉트도 설정해줘."

⚠️ 워드프레스 HTTPS 설정

SSL 적용 후 워드프레스에서 주소가 안 맞으면 오류가 날 수 있습니다. wp-config.php를 수정해야 합니다.

wp-config.php 편집하는 법

FileZilla에서 서버 측 /var/www/html/wp-config.php를 찾아서 우클릭 → "보기/편집"하면 메모장(또는 기본 에디터)으로 열립니다. 수정 후 저장하면 자동으로 서버에 업로드됩니다.

🤖 AI에게 이렇게
"워드프레스에서 Cloudflare SSL 쓰는데 리다이렉트 루프가 생겨. wp-config.php에 넣어야 할 HTTPS 강제 설정과 사이트 URL 설정 코드를 알려줘."
오류가 생기면

SSL 관련 오류(무한 리다이렉트, 하얀 화면 등)는 거의 다 wp-config.php 설정으로 해결됩니다. AI에게 에러 상황을 설명하면 바로 답을 줍니다.

환경마다 다릅니다

서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.

Chapter 07

크롤링 준비 — Node.js 설치

데이터 수집 코드가 돌아가려면 Node.js가 필요합니다.

💬 크롤링 코드가 돌아가려면 Node.js가 필요합니다.

⚙️ 서버에 Node.js 설치

Node.js는 크롤링 코드와 이미지 처리 코드를 실행하는 프로그램입니다. 워드프레스(PHP)와는 별개로, 데이터 수집 쪽을 담당합니다. Xshell로 서버에 접속한 상태에서 진행합니다.

Xshell
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install nodejs -y node -v v20.x.x 보이면 OK
아직 코드는 없어도 됩니다

지금은 Node.js 설치만 해두면 됩니다. 실제 코드는 기획이 끝난 뒤 AI에게 만들어달라고 시킬 겁니다. 코드를 서버에 올리고 실행하는 방법은 이후 챕터에서 다룹니다.

📍 여기까지 완료한 것

✅ AWS 서버 생성 → SSH 접속 → 파일 전송 도구 → AMP 설치 → 워드프레스 설치 → 도메인·SSL → Node.js

서버 환경이 완성되었습니다. 다음부터는 AI와 대화하며 "뭘 자동화할지" 기획하는 단계입니다. 여기가 가장 중요합니다.

Chapter 08

AI와 대화하며 자동화 기획

가장 중요한 단계. 뭘 자동화할지 설계합니다.

💬 뭘 자동화할지 AI와 대화하며 정합니다. 가장 중요한 챕터.

🎯 자동화에 잘 맞는 블로그 유형

핵심은 "반복되는 형식 + 객관적 데이터"가 있는 주제입니다. 형식이 정해져 있으니 템플릿화가 되고, 데이터가 객관적이니 AI가 거짓말을 덜 합니다.

🏨 숙소/호텔 추천

Agoda, Booking 크롤링 + 제휴

🗺 여행 액티비티

Klook 크롤링 + 제휴

📚 도서 추천

도서 사이트 크롤링 + 링크프라이스 제휴

🛒 쿠팡 어필리에이트

상품 크롤링 + 쿠팡 파트너스 제휴 링크

📱 네이버 브랜드커넥트

체험단/협찬 콘텐츠 자동화

🤔 데이터를 어디서 가져올 것인가

🕷 크롤링 (메인)
📂 이미 데이터가 있음

Case A: 크롤링으로 수집 (대부분 이쪽)

다른 사이트에서 데이터를 자동으로 긁어오는 방식. 이 가이드의 핵심 기술입니다. 아직 크롤링이 뭔지 몰라도 괜찮습니다 — 뒤에서 자세히 다룹니다. 참고할 사이트가 있다면 (예: Agoda에서 호텔 정보) 이 방식입니다.

Case B: 데이터가 이미 있다

엑셀, CSV 등에 내가 직접 정리한 데이터가 있으면 DB에 넣기만 하면 됩니다. 어딘가에서 가져와야 한다면 Case A입니다.

API라는 것도 있습니다

공공데이터(data.go.kr), 한국관광공사 TourAPI, 구글 Places API 등 "데이터 주세요" 하면 보내주는 공식 통로도 있습니다. 크롤링보다 안정적이고 저작권 걱정 없음. 관심 있으면 AI에게 "OO API 사용법 알려줘"라고 물어보세요.

💬 Claude에게 기획 시작하기

반드시 하나의 대화에서 진행하세요

CH08~CH17까지의 기획 과정을 Claude와 하나의 대화(채팅방) 안에서 쭉 이어가세요. 대화를 이어갈수록 Claude가 여러분의 블로그 주제, 구조, 데이터를 점점 더 잘 이해하게 됩니다. 중간에 새 대화를 열면 Claude가 앞에서 정한 내용을 모르기 때문에 처음부터 다시 설명해야 합니다. 한 대화 안에서 Claude를 학습시킨다고 생각하세요.

🤖 Claude에게 이렇게
"나는 [주제] 블로그를 만들려고 해. 워드프레스에 자동으로 글을 올리는 시스템인데, 데이터는 [크롤링해야 해 / 엑셀에 있어]. 글 하나에 들어갈 내용은 대충 이래: - [항목들 나열: 이름, 가격, 평점, 설명…] 이 시스템을 만들려면 어떤 구조가 필요한지 전체 설계를 같이 해보자. 하나씩 질문해줘."

📋 기획할 때 정해야 할 것

① 데이터 소스

크롤링 / 이미 있음

② 글 하나의 범위

"서울 맛집 10곳" 같이 글 단위 결정

③ 수익 모델

애드센스 / 제휴 링크 / 직접 판매

④ 하루 몇 건 발행

2~3건 추천. 너무 많으면 구글이 스팸으로 의심합니다

Chapter 09

자동 발행할 글의 뼈대 만들기

데이터가 들어갈 자리와, AI가 채울 자리를 구분합니다.

💬 글 한 편의 뼈대를 정합니다. DB가 채울 자리, AI가 채울 자리.

🧱 글 = 두 가지 재료

📊 데이터 부분 (반복됨)

DB에서 꺼내서 자동으로 끼워넣기. 매 글마다 형식이 똑같고 아이템만 바뀜. 예: 이름, 가격, 평점, 이미지, 링크

✍️ AI가 쓰는 부분 (주관적)

Gemini API가 작성. 서론, 각 아이템 한줄 평가, FAQ 등 자연어

📄 글 하나의 구조 예시

1

목차 데이터

아이템 이름으로 링크 자동 생성

2

서론 AI

"OO에서 추천하는 N곳을 소개합니다"

3

아이템 카드 × N개 반복 데이터+AI

이미지 + 정보(DB) + 평가(AI) + 링크(DB)

4

FAQ AI

자주 묻는 질문 5개

5

SEO 메타 데이터

제목, 설명, OG태그 자동 생성

📎 예시 보러가기 →
🤖 예시 1: 리스트형 블로그 (호텔, 맛집, 도서 TOP 10 등)
"내 블로그는 [호텔 추천 / 여행 액티비티 / 도서 추천 등] 블로그야. 글 하나의 구조를 같이 정하고 싶어. 지금 생각하는 건 이래: 1. 목차 (아이템 이름으로 앵커 링크) 2. 서론 (AI가 작성, 2~3문장) 3. 아이템 카드 반복 (N개) - 이미지 - 이름, 가격, 평점 (DB에서) - 한줄 평가 (AI가 작성) - 제휴 링크 버튼 (DB에서) 4. FAQ (AI가 작성, 3~5개) 5. SEO 메타 (제목, 설명 자동 생성) 이 구조 괜찮아? 빠진 거 있으면 알려주고, 나중에 HTML 템플릿 만들 때 {{변수명}} 형식으로 어떤 변수가 필요한지도 정리해줘."
🤖 예시 2: 정보형/리뷰 블로그 (정책자금, 워홀, 제품 리뷰 등)
"내 블로그는 [정책자금 안내 / 워홀 정보 / 제품 리뷰 등] 블로그야. 글 하나에 아이템 1개가 들어가고, 글 구조를 같이 정하고 싶어. 대충 이런 느낌인데: 1. 대표 이미지 2. 핵심 정보 요약 (DB에서) 3. 본문 섹션 여러 개 (AI가 작성) 4. 관련 링크 또는 신청 방법 5. FAQ 근데 나는 글 구조를 잘 모르겠어서 내 블로그 주제에 맞는 최적의 글 구조를 네가 제안해줘. 여러 안을 보여주고 장단점도 알려줘."
위는 예시입니다

자기 블로그 주제에 맞게 바꾸세요. 구조를 잘 모르겠으면 두 번째 예시처럼 AI에게 제안을 맡기는 게 편합니다. Claude가 주제에 맞는 구조를 여러 개 추천해줍니다.

템플릿은 여러 개 만들 수 있습니다

템플릿을 2~3개 만들어서 랜덤으로 발행하면 글마다 다른 느낌이 납니다. 서론 유형, 카드 레이아웃, FAQ 스타일 등을 다양하게 만들어두고 autopost.php에서 랜덤 선택하게 하면 됩니다. 기획할 때 Claude에게 "템플릿을 2~3가지 버전으로 만들고, 발행할 때 랜덤으로 하나 골라 쓰게 하고 싶어"라고 말해두세요. 나중에 .md 기획서에 이 내용이 들어갑니다.

🔗 제휴 마케팅을 하는 경우 — 제휴 링크란?

어필리에이트(제휴 마케팅)로 수익을 내려면, 글에 들어가는 링크가 일반 링크가 아니라 "내 고유번호가 담긴 제휴 링크"여야 합니다. 이 링크를 통해 예약이나 구매가 일어나야 수수료가 잡힙니다.

직접 제휴

광고주(Agoda, Klook 등)에서 직접 어필리에이트 승인을 받는 방식. URL에 내 고유번호가 붙어서 정상적인 상품 URL 형태가 됩니다

링크프라이스 경유

linkprice.com을 통해 제휴하는 방식. URL 구조가 다릅니다:
click.linkprice.com/click.php?m=agoda&a=내번호&l=0000

어떤 방식이든 DB에 제휴 링크(또는 링크를 조립할 고유번호)를 저장해두고, autopost.php에서 글을 만들 때 자동으로 끼워넣는 구조입니다. 기획할 때 Claude에게 "제휴 링크를 글에 자동으로 넣고 싶어"라고 말해두세요.

딥링크 참고

광고주에 따라 딥링크(특정 상품 페이지로 바로 연결되는 링크)를 지원합니다. 예를 들어 아고다는 호텔 고유 ID(hid)를 URL에 넣으면 해당 호텔 페이지로 바로 랜딩됩니다. 딥링크 구조는 광고주마다 다르니, 가입 후 제공되는 가이드를 확인하거나 AI에게 물어보세요.

제휴 마케팅 안 하시는 분은

이 부분은 건너뛰세요. 애드센스만 쓰거나 수익화 없이 블로그를 운영하는 경우에는 해당 없습니다.

환경마다 다릅니다

서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.

Chapter 10

데이터 저장소 설계 — DB 테이블

데이터를 담을 그릇을 만듭니다.

💬 데이터를 담을 그릇(테이블)의 구조를 정합니다.

🗄 DB = 큰 엑셀

테이블 = 시트(탭), 컬럼 = 열, 행 = 데이터 1줄. 템플릿에서 정한 항목이 곧 DB 열이 됩니다.

📐 왜 테이블이 2개 필요한가

쉽게 말해서 "재료 창고""작업 지시서"를 분리하는 겁니다.

① 원천데이터 테이블 (재료 창고)

수집한 데이터 전부 저장. 맛집 이름, 가격, 평점, 이미지 등. 엑셀 시트 1번

② posts 테이블 (작업 지시서)

"이 주제로 글 써" 라는 작업 지시서. 택배 송장처럼 상태(대기중/처리중/완료/에러)를 추적합니다. 엑셀 시트 2번

왜 나누냐면, 재료(데이터)는 여러 글에서 재사용될 수 있고, 발행 상태 관리를 데이터와 섞으면 복잡해지기 때문입니다. AI에게 시키면 알아서 이 구조로 만들어줍니다.

💬 AI와 DB 구조 정하기

DB 구조는 블로그 주제마다 전부 다릅니다. Claude에게 "나는 이런 글을 쓸 건데 DB를 어떻게 만들면 좋을까?"라고 물어보면서 구조를 같이 정하세요.

🤖 AI에게 이렇게
"내 블로그 주제: [주제] 내가 쓰고 싶은 글의 형식과 내용: [예: "서울 강남 호텔 TOP 10" 같은 글이야. 호텔 이름, 가격, 평점, 이미지, 예약 링크가 들어가고 서론이랑 FAQ도 넣을 거야] MySQL 테이블 2개가 필요할 것 같아: 1. 원천데이터 테이블 (재료 창고) - 위 항목들 전부 + 고유번호(PK) + 등록일시 2. posts 테이블 (작업 지시서) - keyword, status, error_log, retry_count - created_at, published_at 이 구조 괜찮아? 각 테이블에 어떤 컬럼이 필요한지 정리해줘. SQL은 나중에 만들 거니까 지금은 구조만."
DB 이름을 모르겠으면

Chapter 04에서 만든 DB 이름을 넣으면 됩니다. 예: wordpress. 다른 이름으로 만들었으면 그 이름을 넣으세요. 모르겠으면 phpMyAdmin 왼쪽 목록에서 확인하거나 AI에게 물어보세요.

📊 DB는 언제 만드나요?

지금은 "어떤 항목을 저장할지" 구조만 정하는 단계입니다. 실제 테이블을 만드는 건 나중에 .md 기획서를 완성하고 코드를 만들 때 같이 합니다.

나중에 이렇게

phpMyAdmin 접속 (http://도메인/phpmyadmin) → 상단 "SQL" 탭 → AI가 준 SQL문을 복사 붙여넣기"실행". 끝!

⭐ posts 테이블 = 모든 작업의 시작점

이 시스템에서 posts 테이블이 모든 것의 중심입니다. 크롤링도, 발행도, 전부 이 테이블의 지시를 보고 움직입니다.

1

posts에 작업 등록

"이 주제로 글 만들어" 지시서가 등록됨 (status='pending')

2

크롤러가 posts를 봄

pending 작업의 keyword를 보고 해당 데이터를 크롤링 → 원천데이터에 저장

3

autopost.php가 posts를 봄

데이터가 준비된 작업을 꺼내서 → 원천데이터로 글 생성 → 워드프레스에 발행

4

상태 업데이트

성공하면 'published', 실패하면 'error'로 변경

이 로직을 이해하는 게 핵심입니다. 구체적인 구현(keyword 기준, 제목 생성 방식, 데이터 묶는 단위 등)은 블로그마다 다르니 AI에게 자기 상황을 설명하며 설계하세요.

📋 posts에 작업을 넣는 방법

🤖 자동
✋ 수동

자동: 스크립트가 알아서 등록

데이터가 충분히 모이면 "이 주제로 글 써"라는 작업이 posts에 자동으로 등록되게 할 수 있습니다. 처음에 AI에게 스크립트를 시킬 때 이 로직을 같이 넣으면 됩니다.

🤖 AI에게 이렇게
"posts 테이블에 작업을 자동으로 등록하고 싶어. 글 하나의 단위: [예: 지역별 / 카테고리별 / 가격대별] 원천데이터가 충분히 모이면 자동으로 '이 주제로 글 써' 작업이 등록되게. 중복 등록 방지도 필요해. 이 로직을 어떻게 짜면 좋을지 같이 정하자."

수동: AI에게 쿼리 받아서 phpMyAdmin에 복붙

직접 "이 주제로 글 써"를 등록합니다.

🤖 AI에게 이렇게
"posts에 수동으로 작업을 넣으려면 어떤 형식으로 넣으면 돼? 예를 들어 '서울 강남 호텔', '부산 해운대 호텔' 이런 주제들을 등록하고 싶은데. 나중에 phpMyAdmin에서 INSERT할 때 어떤 컬럼에 뭘 넣으면 되는지 알려줘."
환경마다 다릅니다

서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.

Chapter 11

시스템 파일 정리 & 보안 설정

파일 구조를 정하고 비밀번호를 보호합니다.

💬 파일이 몇 개 필요하고 어디에 두는지 정합니다.

📁 파일 구성

파일은 크게 2곳에 나뉩니다. /var/www/html/은 워드프레스가 설치된 폴더(=WP 폴더)이고, ~/crawler/는 크롤링 스크립트가 있는 폴더입니다. 폴더명은 예시이니 자기 프로젝트에 맞게 바꿔도 됩니다.

파일역할위치
autopost.php전체 과정 통제 (메인)WP 폴더 (/var/www/html/)
gemini.phpGemini API 호출 (AI 글 생성)WP 폴더
data.js데이터 크롤링크롤러 폴더 (~/crawler/)
image.js이미지 크롤링 & 최적화크롤러 폴더
config.js설정 (DB비번, API키 등)크롤러 폴더
slack.php슬랙 알림WP 폴더
recovery.php에러 자동 복구WP 폴더
package.jsonNode.js 패키지 목록크롤러 폴더

📝 config.js는 이런 식입니다

config.js 안에는 DB 접속 정보, API 키 등이 들어갑니다. AI가 코드를 만들어줄 때 config.js도 같이 만들어주는데, 대략 이런 구조입니다:

config.js (예시)
// DB 접속 정보 host: 'localhost', user: 'wpuser', password: '여기에_DB_비밀번호', database: 'wordpress', // Gemini API 키 geminiKey: '여기에_API_키', // 슬랙 Webhook (나중에 설정해도 됨) slackWebhook: '여기에_URL'
직접 수정하세요

'여기에_DB_비밀번호' 같은 부분을 실제 값으로 교체하면 됩니다. AI가 만들어준 config.js를 열고, 해당하는 곳만 바꾸면 끝.

🔒 config 보안

절대 금지

config 파일을 GitHub에 올리거나 /var/www/html/에 두지 마세요. 비밀번호, API 키 노출 = 과금 폭탄.

Xshell
chmod 600 ~/crawler/config.js
Chapter 12

AI 글 작성 준비 — Gemini API 발급

AI가 글을 쓸 수 있게 API 키를 받습니다.

💬 AI가 글을 쓸 수 있게 API 키를 발급받습니다.

📋 발급 방법

1

aistudio.google.com 접속

구글 계정 로그인

2

"Get API key" → "Create API key"

API 키는 "출입증" 같은 겁니다. 이 키가 있어야 우리 코드가 Gemini에게 글을 시킬 수 있습니다

3

키 복사 → config 파일에 저장

절대 공개하지 말 것! GitHub에 올리지 말 것!

⭐ 무료 크레딧 발급 (카드 등록)

API 키만 발급받고 바로 쓰면 "할당량 초과" 에러가 납니다. 무료 티어만으로는 자동 포스팅에 필요한 호출량이 부족합니다.

Google Cloud Console에서 카드를 등록하면 무료 크레딧($300)을 받을 수 있습니다. 자동 포스팅 수준이면 무료 크레딧으로 꽤 오래 쓸 수 있습니다. 무료 크레딧을 다 쓰면 그때부터는 사용한 만큼 과금됩니다. 단, 사용할 때만 요금이 나가고 사용 안 하면 안 나갑니다.

📺 무료 크레딧 발급 방법 영상 보기 →

이 영상대로 따라하면 카드 등록 + 무료 크레딧 발급이 끝납니다.

모델 추천

모델은 Gemini 2.5 이상을 추천합니다. AI에게 "Gemini API에서 2.5 이상 모델 쓰는 코드 알려줘"라고 하면 됩니다.

Chapter 13

Puppeteer로 크롤링할 데이터 위치 찾기

Puppeteer로 브라우저를 자동 조종합니다. 그리고 "어디를 긁을지" AI에게 알려주는 법.

💬 어떤 사이트에서 어떤 부분을 긁을지 확인합니다.

🕷 쉽게 말하면

사람이 브라우저에서 하는 모든 행동(접속, 스크롤, 클릭, 복사)을 코드가 자동으로 수행합니다. 이 역할을 하는 도구가 Puppeteer(퍼페티어)입니다. 눈에 안 보이는 크롬을 서버에서 돌려서, 여러분 대신 데이터를 긁어옵니다.

데이터가 이미 있다면

이 챕터와 다음 챕터를 건너뛰고 Chapter 15(이미지)로 가세요.

🛡 사람처럼 행동하기

Stealth 플러그인

"나는 로봇 아님" 위장

랜덤 딜레이

2~5초 쉬어서 사람처럼

User-Agent 교체

매번 다른 브라우저인 척

⭐ 크롤링의 핵심: "어디를 긁을지" AI에게 알려주기

크롤링은 AI가 코드를 만들어주지만, "이 사이트에서 어떤 부분을 가져와야 하는지"는 여러분이 알려줘야 합니다. 2가지 방법이 있습니다.

방법 1: F12 개발자 도구로 요소 복사 (추천)

크롬(Chrome) 브라우저에서 진행합니다. 다른 브라우저(Edge, Safari 등)에서도 비슷하지만, 이 가이드는 크롬 기준으로 설명합니다. 가져올 데이터 항목(이름, 가격, 평점, 이미지 등)을 하나씩 찾아서 각각 복사합니다.

📋 준비: 가져올 항목 먼저 정하기

메모장을 열고 가져올 항목을 적어두세요. 예:

① 호텔 이름 ② 가격 ③ 평점 ④ 이미지 URL ⑤ 상세 링크

이제 이 항목을 하나씩 아래 과정으로 찾습니다.

🔍 요소 찾기 & 복사 (항목마다 반복)

1
크롬에서 목표 사이트 열기
2
F12 키 → 화면이 둘로 나뉨 (왼쪽: 사이트, 오른쪽: 코드)
3
오른쪽 개발자 도구 왼쪽 상단의 커서 아이콘(🔍) 클릭 (또는 Ctrl+Shift+C)
4
왼쪽 사이트에서 첫 번째 항목(예: 호텔 이름)에 마우스를 올리면 파란색으로 하이라이트됨 → 클릭
5
오른쪽 코드에서 해당 요소가 파란 줄로 선택
6
그 파란 줄에서 우클릭 → Copy → Copy element (요소 복사)
7
메모장에 붙여넣기. 예: 호텔 이름: #list > div > h3 > a

다음 항목(가격)도 같은 방법으로: 커서 아이콘 클릭 → 가격 부분 클릭 → 오른쪽에서 우클릭 → Copy element → 메모장에 붙여넣기.

이걸 가져올 항목 수만큼 반복하면 메모장에 이런 식으로 모입니다:

메모장
호텔 이름: #list > div > h3 > a 가격: #list > div > .price > span 평점: #list > div > .rating 이미지: #list > div > img 링크: #list > div > h3 > a (href)

이걸 그대로 AI에게 보여주면 됩니다.

이것도 어려우면

AI에게 "크롬 F12 개발자 도구에서 요소 선택하고 Copy element(요소 복사) 하는 방법을 단계별로 자세하게 알려줘"라고 물어보세요. 또는 방법 2(페이지 소스 통째로 복사)를 쓰면 이 과정이 필요 없습니다.

🤖 AI에게 이렇게
"이 사이트를 Puppeteer로 크롤링하려고 해: [URL] 가져올 데이터: - 호텔 이름: 이 요소에 있어 → [Copy element 결과 붙여넣기] - 가격: 이 요소 → [Copy element 결과] - 평점: 이 요소 → [Copy element 결과] Puppeteer로 이 요소들을 크롤링하는 코드 만들어줘. 빠진 거 있으면 알려줘."

방법 2: 페이지 소스 전체 복사

1
목표 사이트에서 Ctrl+U (또는 우클릭 → "페이지 소스 보기")
2
Ctrl+A로 전체 선택 → Ctrl+C로 복사
3
AI에게 통째로 보여주기
🤖 AI에게 이렇게
"이 사이트를 Puppeteer로 크롤링하려고 해: [URL] 아래가 이 페이지의 전체 소스야: [Ctrl+A로 복사한 소스 전체 붙여넣기] 여기서 [가져올 데이터 항목]을 가져오려면 어떤 요소를 잡아야 하는지 알려주고, Puppeteer 크롤링 코드도 만들어줘."
어떤 방법이든

핵심은 "이 사이트에서 이 부분을 가져와야 해"를 AI에게 정확히 보여주는 겁니다. 복사해서 보여주기만 하면 AI가 알아서 코드를 만들어줍니다.

이 챕터 vs 다음 챕터

이 챕터는 "어디를 긁을지 찾는 법"이고, 다음 챕터는 "찾은 걸 AI에게 어떻게 전달하는지"입니다. 여기서 메모장에 정리해둔 내용을 다음 챕터에서 그대로 씁니다.

Chapter 14

Puppeteer 크롤링 규칙 정하기

글의 재료를 어떻게 가져올지 규칙을 정합니다.

💬 글의 재료(데이터)를 어떻게 가져올지 정합니다.
🕷 크롤링
📂 데이터 있음

크롤링으로 데이터 확보

가장 추천하는 방법입니다. 이미 정보가 잘 정리된 사이트를 크롤링하면 데이터와 이미지를 한 번에 자동으로 확보할 수 있습니다. 크롤링 방식은 2가지가 있습니다.

방식 1: 요소 지정 크롤링

앞 챕터에서 F12로 찾아둔 셀렉터로 항목별로 쪼개서 가져옵니다. 정확하고 깔끔합니다.

🤖 Claude에게 이렇게
"이 사이트를 Puppeteer로 크롤링하려고 해: [URL] 앞에서 확인한 요소 정보: [F12로 복사한 요소 정보] 수집할 데이터: [이름, 가격, 평점, 이미지URL 등] Puppeteer 크롤링 조건을 같이 정리하자: - stealth 플러그인으로 봇 탐지 우회 - 2~5초 랜덤 딜레이 (사람처럼) - 중복 데이터 처리 (INSERT ON DUPLICATE KEY UPDATE) - 에러 나도 멈추지 말고 스킵 + 로그 이 조건들 맞아? 빠진 거 있으면 알려줘."

방식 2: 통째로 가져와서 AI 정리

페이지를 통째로 긁어온 뒤 Gemini에게 정리시키는 방식입니다. 셀렉터를 안 찾아도 돼서 초보자에게 더 쉽습니다.

🤖 Claude에게 이렇게
"이 사이트를 Puppeteer로 크롤링하려고 해: [URL] Puppeteer로 페이지를 통째로 가져온 뒤 Gemini에게 보내서 아래 항목을 정리시키고 싶어: [이름, 가격, 평점, 이미지URL, 설명 등] Gemini가 JSON 형태로 정리해서 돌려주면 그걸 DB에 저장하는 흐름이야. 이 방식의 장단점이랑 주의할 점 알려줘."
방식 2의 장단점

장점: 셀렉터 안 찾아도 됨, 사이트 구조가 바뀌어도 AI가 알아서 적응. 단점: Gemini API 호출이 추가돼서 느리고, 대량 크롤링 시 비용 발생 가능. 데이터가 수십 건이면 괜찮지만 수천 건이면 방식 1이 낫습니다.

크롤링 주의

크롤링 전에 해당 사이트의 robots.txt를 확인하세요. 주소창에 사이트주소/robots.txt 치면 볼 수 있습니다. 여기서 Disallow된 경로는 크롤링하면 안 됩니다. 모르겠으면 AI에게 "이 robots.txt 내용 보여줄게, 크롤링 가능한 범위 알려줘"라고 물어보세요. 그리고 딜레이(2~5초)는 꼭 넣으세요. 안 넣으면 차단당합니다.

데이터가 이미 있는 경우

엑셀, CSV 등에 데이터가 있으면 AI에게 주고 DB에 맞는 형태로 변환시키세요. 엑셀 구조와 DB 테이블 구조가 다를 수 있으니, AI에게 "내 엑셀이 이렇게 생겼는데 DB 테이블에 맞게 변환해줘"라고 시키면 됩니다.

이미지는요?

이미지가 없어도 괜찮습니다. DB 테이블에 image_file 컬럼을 비워둔 채로 만들어두세요. 다음 챕터에서 크롤링이나 무료 이미지 API로 자동 확보합니다. 이미지 검색에 쓸 이름(name) 컬럼도 있어야 합니다.

🤖 AI에게 이렇게
"내 엑셀 데이터가 이렇게 생겼어: [엑셀 열 구조 설명 또는 몇 행 복사해서 붙여넣기] 이걸 DB에 넣으려면 테이블 구조를 어떻게 잡으면 좋을까? 엑셀 컬럼과 DB 컬럼 매핑도 같이 정리해줘."

📦 코드는 나중에 — 지금은 조건만 정합니다

실제 크롤링 코드 생성과 서버 배포는 .md 기획서를 완성한 뒤에 합니다. 코드를 받으면 이렇게 배포합니다 — 참고만 해두세요:

나중에 코드 배포할 때 (바이브코딩의 기본 루프)

1. AI에게 코드 받아서 내 PC에 저장 → 2. FileZilla로 서버에 올림 → 3. Xshell에서 cd ~/crawler && npm install (패키지 설치) → 4. node data.js 실행 → 에러 나면 AI에게 물어보기 → 수정 → 다시 올리기 → 다시 실행. 이 반복이 바이브코딩의 기본 루프입니다. 5~10번 반복하면 돌아갑니다.

환경마다 다릅니다

서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.

Chapter 15

이미지 자동 수집 & 최적화

이미지도 자동으로 가져오고, DB 싱크까지 한 번에.

💬 이미지를 자동으로 가져오고 DB와 연결하는 규칙을 정합니다.

⭐ 이미지 싱크 — 이 챕터에서 가장 중요한 개념

자동 발행할 때, 시스템이 "이 아이템에는 이 이미지를 넣어야 해"를 어떻게 알까요? 이름표를 붙이는 겁니다.

원리

1. 원천데이터 테이블에 image_file 컬럼이 있음 (예: lotte-hotel-seoul-123.webp)

2. 이미지 파일은 서버의 /wp-content/uploads/auto/ 폴더에 저장됨

3. autopost.php가 글을 만들 때, DB에서 파일명을 읽어와서 이미지 태그를 만듦

4. 예: DB에 lotte-hotel-seoul-123.webp라고 적혀있으면
<img src="/wp-content/uploads/auto/lotte-hotel-seoul-123.webp"> 이렇게 글에 넣어줌

DB의 파일명서버의 실제 파일이 일치해야 합니다. 안 맞으면 이미지가 깨집니다.

📛 파일명 규칙 (SEO + 싱크)

파일명을 영문 slug + DB id 조합으로 통일합니다.

예: DB id=123, 이름="롯데호텔 서울" → lotte-hotel-seoul-123.webp

SEO 좋음

파일명에 키워드 포함 → 구글 이미지 검색 노출

중복 없음

id가 뒤에 붙으니 겹칠 일 없음

자동 매칭

스크립트가 DB에서 이름+id 읽어서 파일명을 자동 생성

📸 이미지 확보 방법

🕷 크롤링에서 같이
🖼 Unsplash API

데이터 크롤링할 때 이미지도 같이

데이터를 긁어올 때 이미지 URL도 같이 수집 → 다운로드 → Sharp로 WebP 변환 → DB 업데이트. 하나의 스크립트에서 전부 자동으로 합니다.

🤖 AI에게 이렇게
"이미지 처리 규칙을 같이 정하고 싶어. 내가 생각하는 흐름: 1. DB에서 image_file이 비어있는 데이터를 가져와 2. 해당 이미지 URL에서 다운로드 3. Sharp(이미지 처리 도구)로 가로 800px 리사이즈 + WebP(구글이 권장하는 가벼운 이미지 형식) 변환 (품질 80) 4. 파일명: {영문slug}-{id}.webp 예: lotte-hotel-seoul-123.webp 5. /var/www/html/wp-content/uploads/auto/ 에 저장 6. DB의 image_file 컬럼에 파일명 업데이트 이 흐름 맞아? 빠진 조건 있으면 알려줘."

무료 이미지 API로 자동 매칭

크롤링 사이트에 이미지가 없거나 쓸 수 없을 때, 무료 이미지 API(Unsplash, Pexels 등)로 자동으로 가져옵니다. 라이선스 걱정 없음. 이런 사이트들은 API(자동 요청 통로)를 제공해서 스크립트가 자동으로 검색 → 다운로드할 수 있습니다.

검색어가 핵심입니다

DB에 "롯데호텔 서울"이라고 있으면 그대로 검색하면 엉뚱한 사진이 나올 수 있습니다. 그래서 Gemini에게 먼저 검색어를 추천받습니다. "롯데호텔 서울" → Gemini가 "luxury hotel seoul lobby" 같은 영문 검색어를 만들어줌 → 그걸로 이미지 API 검색. 이러면 한국어 → 영문 변환도 자동이고, 이미지에 맞는 검색어가 나옵니다.

1

DB에서 image_file이 비어있는 아이템 가져오기

아직 이미지가 없는 데이터만 대상

2

Gemini에게 영문 검색어 추천받기

"롯데호텔 서울" → "luxury hotel seoul exterior"

3

이미지 API로 검색 & 다운로드

Unsplash, Pexels 등에서 첫 번째 결과 가져오기

4

WebP 변환 + DB 업데이트

Sharp로 리사이즈 → SEO 파일명 → 서버 저장 → DB 기록

1
unsplash.com/developers 또는 pexels.com/api 가입 → API 키 발급
2
기획할 때 Claude에게 이 흐름 설명하기 (아래 프롬프트)
🤖 Claude에게 이렇게
"이미지를 무료 API로 자동 매칭하고 싶어. 흐름: 1. DB에서 image_file이 비어있는 데이터를 가져와 2. 아이템 이름(name)을 Gemini에게 보내서 그 아이템에 어울리는 영문 이미지 검색어를 추천받아 3. 그 검색어로 [Unsplash / Pexels] API 검색 4. 첫 번째 결과 다운로드 5. Sharp로 가로 800px + WebP 변환 + 용량 최적화 6. 파일명: {영문slug}-{id}.webp 7. /var/www/html/wp-content/uploads/auto/ 에 저장 8. DB image_file 컬럼 업데이트 이 방식 괜찮아? 주의할 점 있으면 알려줘."
핵심 정리

어떤 방법이든 스크립트가 하는 일은 같습니다:
이미지 가져오기 → WebP 변환 → SEO 파일명으로 저장 → DB 업데이트
이 4단계가 한 스크립트 안에서 자동으로 돌아가니까 싱크가 깨질 일이 없습니다.

직접 가지고 있는 이미지를 넣고 싶다면

직접 찍은 사진이나 이미 가지고 있는 이미지를 사용하는 것도 가능합니다. 다만 반자동입니다 — 이미지 수집은 직접 해야 하고, WebP 변환과 DB 업데이트만 자동화됩니다. 엑셀에 이미지 파일명을 적어두고 폴더에 넣어두면 스크립트가 변환·저장·DB 업데이트를 처리합니다. 자세한 방법은 Claude에게 "이미 가지고 있는 이미지를 자동 발행 시스템에 연결하고 싶어"라고 물어보세요.

환경마다 다릅니다

서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.

Chapter 16

AI가 글 쓰는 규칙 정하기

데이터를 사람이 읽는 글로 바꿉니다.

💬 AI가 데이터를 보고 자연스러운 글을 쓰게 하는 규칙을 정합니다.

🧠 핵심: "상상해서 써" ❌ → "이 데이터 기반으로 써" ✅

실제 데이터(가격, 평점 등)를 프롬프트에 넣으면 AI가 거짓말(할루시네이션)을 훨씬 덜 합니다.

가장 중요

"데이터에 없는 내용은 절대 만들지 마" — 이 한 줄을 프롬프트에 꼭 넣으세요.

📝 프롬프트 예시

서론 생성
"You are a professional [분야] writer. 아래 데이터를 기반으로 블로그 서론을 써줘. [DB에서 뽑은 JSON 데이터] - 데이터에 없는 내용 만들지 마 - 자연스럽고 객관적인 톤 - JSON 형식으로 출력"
아이템 평가 생성
"아래 [아이템] 데이터를 보고 1~2줄짜리 객관적 평가를 써줘. 데이터: [이름, 가격, 평점, 특징…] - 사실만 언급, 과장 금지 - JSON 형식"

💡 프롬프트 팁

AI에게 글을 시킬 때 가장 중요한 건 "JSON으로 출력해줘"입니다. AI가 자유롭게 글을 쓰면 형식이 매번 달라서 코드가 처리하기 어렵습니다. JSON 형태로 받으면 코드가 정확히 파싱할 수 있습니다. 이건 기획서에 AI 프롬프트를 넣을 때 같이 정해두면 됩니다.

프롬프트는 영어로 쓰세요

Gemini API에 보내는 프롬프트는 영어로 작성해야 품질이 훨씬 좋습니다. 한국어로 써도 작동하지만, 영어 프롬프트가 더 정확하고 할루시네이션도 줄어듭니다. Claude에게 "이 프롬프트를 영어로 번역해서 다듬어줘"라고 하면 됩니다. 출력 결과만 한국어로 받으면 됩니다.

🔍 AI 탐지 우회

Smodin(smodin.io) 같은 도구로 테스트하며 "사람이 쓴 것"으로 판정 나올 때까지 프롬프트를 다듬으세요. 데이터 기반 + 객관적 톤이면 대부분 통과합니다.

환경마다 다릅니다

서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.

Chapter 17

자동 발행 규칙 정하기 & 코드 생성

글이 자동으로 올라가게. 중복 방지 + 에러 복구까지.

💬 자동 발행 규칙을 정하고, 기획서를 완성하고, 코드를 만듭니다.

🚀 자동 발행이 하는 일 (쉽게 말하면)

"작업 지시서(posts 테이블)에서 할 일 하나 꺼냄 → 데이터 꺼냄 → AI가 글 씀 → 워드프레스에 올림 → 완료 표시" — 이걸 코드가 자동으로 합니다.

💬 자동 발행 규칙 정하기

autopost.php가 할 일을 Claude와 대화하며 정합니다. 아래 항목들이 .md 기획서에 들어갈 자동 발행 규칙입니다.

🤖 Claude에게 이렇게
"워드프레스 자동 발행 규칙을 같이 정하자. 내가 생각하는 흐름: 1. posts 테이블에서 status='pending' 1건을 가져와서 바로 'processing'으로 바꿔줘 (다른 프로세스가 같은 걸 안 잡도록) 2. 원천데이터 테이블에서 해당 주제의 데이터를 가져와. 데이터가 부족하면 (예: 5건 미만) → status='error' + 사유 기록하고 스킵 3. 같은 slug(URL)로 이미 올린 글이 있으면 삭제하고 새로 올려 (중복 방지) 4. 카테고리는 내가 미리 만들어둔 목록에서 배정해줘 카테고리 목록: [워드프레스에서 미리 만든 카테고리 이름들] 5. Gemini API로 서론, 아이템 평가, FAQ 생성 → HTML 템플릿에 데이터 + AI글 + 이미지 끼워넣기 6. wp_insert_post() (워드프레스에 글을 올리는 PHP 함수)로 발행. Featured Image도 첫 번째 이미지로 설정 7. 발행 성공하면 사용된 데이터에 last_posted_at 시간 기록 (다음에 같은 데이터를 또 안 쓰도록) 8. RankMath SEO 메타 설정: - rank_math_title, rank_math_description, rank_math_focus_keyword 9. 에러가 나도 멈추지 말고: - 해당 건만 status='error' + error_log에 사유 기록 - 슬랙으로 에러 알림 - 다음 pending 건으로 넘어가서 계속 시도 10. 성공하면: - status='published' + wp_post_id + published_at 기록 - 슬랙으로 성공 알림 (글 제목 + URL) 이 흐름 맞아? 빠진 조건이나 주의할 점 있으면 알려줘. 나중에 이걸 기반으로 코드 만들 거야."

🔄 중복 포스팅 방지

같은 글을 두 번 올리면 검색엔진이 중복 콘텐츠로 판단합니다. 위 프롬프트에 이미 포함되어 있지만, 핵심은 2가지입니다:

slug 중복 체크

같은 URL 주소의 글이 있으면 삭제 후 새로 올림

last_posted_at 기록

사용된 데이터에 시간 기록 → 다음에 같은 데이터 안 쓰임

🛡 에러 자동 복구 (recovery.php)

에러난 작업을 자동으로 다시 시도하는 별도 스크립트입니다.

🤖 Claude에게 이렇게 (에러 복구 규칙)
"에러 자동 복구 규칙도 정하자. 필요한 로직: 1. status='error'이고 retry_count가 3 미만인 건을 다시 'pending'으로 되돌려줘 (retry_count +1) 2. status='processing'인데 30분 이상 지난 건을 'pending'으로 되돌려줘 (멈춤/병목 방지) 3. retry_count가 3 이상이면 'failed'로 바꿔 (포기) 4. 복구한 건수를 슬랙으로 알림 이 규칙 맞아? 30분마다 실행하려고 해."

📄 기획서(.md) 만들기 & 코드 생성

여기까지 챕터를 따라오면서 정한 내용들 — 블로그 주제, 글 구조, DB 설계, 파일 구조, Gemini API, 크롤링 대상, 이미지 규칙, AI 프롬프트 — 이것들이 전부 기획입니다.

이제 이 기획을 하나의 .md 파일로 정리하고, AI에게 코드를 만들어달라고 시킵니다.

1단계: Claude에게 기획서 정리 시키기

🤖 Claude에게 이렇게
"지금까지 우리가 정한 내용을 .md 기획서로 정리해줘. 포함할 것: - 블로그 주제 & 수익 모델 (있는 경우) - 데이터 소스 (크롤링 대상 사이트, 수집할 항목) - 글 하나의 구조 (목차, 서론, 아이템 카드, FAQ 등) - HTML 템플릿 ({{변수명}} 표시) - DB 테이블 구조 (원천데이터 + posts) — SQL문 포함 - 이미지 규칙 (파일명, 저장경로, WebP 변환) - AI 콘텐츠 프롬프트 (서론, 평가, FAQ) - 파일 목록 (autopost.php, gemini.php, data.js, image.js, config.js, slack.php 등) - 발행 규칙 (하루 몇 건, 카테고리, 중복 방지) - 에러 처리 & 복구 규칙 나중에 이 파일 하나만 AI에게 주고 '이 기획대로 코드 전부 만들어줘' 할 거야. 빠짐없이 상세하게 정리해줘."

2단계: .md 기획서로 코드 생성

.md 파일이 완성되면, 그걸 들고 AI에게 코드를 시킵니다. Claude(claude.ai)에서 바로 할 수 있고, Claude Code(터미널 도구)를 써도 됩니다. 파일이 많지 않아서 claude.ai에서도 충분합니다.

🤖 Claude에게 이렇게 (코드 생성)
"아래 기획서를 보고 코드를 전부 만들어줘. [.md 기획서 내용 전체 붙여넣기] 만들어야 할 파일: 1. data.js — 크롤링 스크립트 2. image.js — 이미지 크롤링 & WebP 변환 3. config.js — DB, API 키 등 설정 파일 4. autopost.php — 자동 발행 메인 5. gemini.php — Gemini API 호출 함수 6. slack.php — 슬랙 알림 함수 7. recovery.php — 에러 자동 복구 각 파일별로 코드를 만들어줘. 파일 하나씩 나눠서 보여줘."
기획서가 핵심입니다

코드의 품질은 기획서의 품질에 달려있습니다. 기획서에 빠진 내용이 있으면 코드에도 빠집니다. 앞 챕터에서 다룬 내용(크롤링 조건, 이미지 싱크, 중복 방지, 에러 처리 등)이 전부 .md에 들어가 있는지 꼭 확인하세요.

🎉 기획 완료 → 코드 생성!

여기까지가 기획 단계입니다. AI가 만들어준 코드를 받았으면, 다음 챕터부터는 코드를 서버에 올리고, 설정하고, 테스트하고, 자동화하는 단계입니다.

📍 여기까지 완료한 것

✅ 서버 환경 구축 (CH01~07) → AI와 기획 (CH08~17) → .md 기획서 완성 → 코드 생성 완료

기획과 코드가 모두 준비되었습니다. 다음부터는 코드를 서버에 올리고 실제로 돌려보는 단계입니다. 에러가 나면 AI에게 보여주고 고치면 됩니다.

환경마다 다릅니다

서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.

Chapter 18

코드를 서버에 올리고 실행하기

코드를 서버에 올리고, DB와 설정 파일을 세팅합니다.

💬 코드를 서버에 올리고 DB, 설정 파일을 세팅합니다.

🎯 이 챕터에서 할 일

AI가 만들어준 코드를 받았으면, 이제 실제로 서버에 올리고 돌아가게 세팅합니다.

1

DB 테이블 생성

phpMyAdmin에서 SQL 실행

2

config 파일 세팅

DB 비번, API 키 입력

3

파일 업로드

FileZilla로 서버에 올리기

4

패키지 설치

npm install

5

첫 실행 & 에러 수정

처음엔 100% 에러 납니다. 에러 메시지를 AI에게 보여주고 고치는 반복 — 이게 바이브코딩입니다

1단계: DB 테이블 생성

기획서(.md)에 포함된 SQL문을 phpMyAdmin에서 실행합니다.

1
phpMyAdmin 접속 (http://도메인/phpmyadmin)
2
상단 "SQL" 탭 클릭
3
AI가 만들어준 SQL문 (CREATE TABLE)을 그대로 복사 붙여넣기"실행"
4
왼쪽에 테이블 2개가 생겼으면 성공
posts 작업도 등록하세요

테이블을 만든 뒤, AI가 만들어준 INSERT문으로 발행할 주제들을 posts 테이블에 등록하세요. status='pending'으로 넣으면 시스템이 순서대로 처리합니다.

2단계: config 파일 세팅

AI가 만들어준 config.js를 열어서 실제 정보를 입력합니다.

DB 정보

호스트(localhost), DB이름, 유저명, 비밀번호 — Chapter 04에서 메모한 것

Gemini API 키

Chapter 12에서 발급받은 키

이미지 API 키

Unsplash/Pexels에서 발급받은 키 (사용하는 경우)

슬랙 Webhook URL

슬랙 알림을 쓸 경우 (나중에 설정해도 됨)

config 보안 필수

config 파일에는 DB 비밀번호와 API 키 같은 민감한 정보가 들어있습니다. 일기장을 서랍에 넣고 잠그는 것처럼, 서버에 올린 뒤 반드시 권한을 잠가야 합니다.

Xshell
chmod 600 ~/crawler/config.js # 본인만 읽기/쓰기 가능. 다른 사람 접근 차단

3단계: FileZilla로 파일 업로드

Chapter 11에서 다뤘던 파일 구조대로 올립니다.

~/crawler/ 폴더에

data.js, image.js, config.js, package.json

/var/www/html/ 에

autopost.php, gemini.php, slack.php, recovery.php

폴더가 없으면 만드세요

Xshell에서 mkdir ~/crawler 로 폴더를 먼저 만들고, FileZilla에서 파일을 올리면 됩니다.

4단계: 패키지 설치

Xshell
cd ~/crawler npm install → package.json에 적힌 패키지들이 자동 설치됩니다 → node_modules 폴더가 생기면 성공

5단계: 첫 실행 & 에러 수정

여기서부터가 바이브코딩의 핵심 루프입니다. 한 번에 돌아가는 경우는 거의 없습니다. 5~10번 반복하면 됩니다.

실행 순서

반드시 이 순서대로 테스트하세요: ① data.js (데이터 수집) → phpMyAdmin에서 데이터 들어갔는지 확인 → ② image.js (이미지 처리) → 서버에 이미지 생겼는지 확인 → ③ autopost.php (발행). 앞 단계가 성공해야 다음 단계가 돌아갑니다. 데이터가 없으면 발행할 수 없고, 이미지가 없으면 글에 이미지가 빠집니다.

Xshell
# 크롤링 테스트 node data.js → 에러 나면? 에러 메시지 전체를 복사 # 이미지 테스트 node image.js # 발행 테스트 php /var/www/html/autopost.php
🤖 에러 나면 AI에게 이렇게
"이 코드를 서버에서 실행했는데 에러가 났어. 에러 메시지: [에러 메시지 전체 복사 붙여넣기] 코드: [해당 파일 코드 전체 또는 에러 발생 부분] 수정해줘."
이 반복이 바이브코딩입니다

실행 → 에러 → AI에게 물어보기 → 코드 수정 → FileZilla로 다시 올리기 → 다시 실행. 이 루프를 반복하면 됩니다. 처음엔 답답해도 점점 에러가 줄어듭니다.

환경마다 다릅니다

서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.

Chapter 19

돌려보고 고치기 — 테스트

자동화 전에 직접 돌려봅니다. 1건은 너무 적습니다.

💬 진짜 돌려보고 에러를 잡습니다. 이 과정이 실력이 가장 많이 느는 단계입니다.

📋 테스트 순서

여기까지 오셨다면 거의 다 왔습니다! 1건만 테스트하면 운 좋게 성공할 수 있습니다. 10건씩 돌려봐야 에러가 나옵니다. 데이터가 부족하거나, 이미지가 없거나, API 한도에 걸리는 등 실전에서 나올 문제를 미리 발견해야 합니다.

1

데이터 수집 10건 테스트

node data.js → phpMyAdmin에서 10건 들어갔는지 확인

2

이미지 처리 10건 테스트

node image.js → 서버에 webp 파일 10개 생겼는지 확인 + DB에 파일명 맞는지

3

발행 1건 테스트

php autopost.php → WP에서 글 확인. 이미지 나오는지, 링크 맞는지, SEO 들어갔는지

4

슬랙 알림 확인

핸드폰으로 알림 오는지

데이터 부족으로 실패할 수 있음

포스팅 테스트 시 "데이터가 부족해서 글 생성 실패"가 나올 수 있습니다. 이건 정상입니다. 데이터 10건을 먼저 넣고 나서 발행 테스트하세요. 그래도 안 되면 AI에게 에러를 보여주세요.

🧪 테스트할 때 AI에게

🤖 에러 날 때 이렇게
"autopost.php를 실행했는데 이런 에러가 나와: [에러 메시지 그대로 복사 붙여넣기] 어떻게 고쳐야 해?"
🤖 테스트 스크립트 만들기
"내 자동 발행 시스템 테스트용 스크립트 만들어줘. 데이터 수집 10건 → 이미지 처리 10건 → 발행 1건 순서대로 실행하고, 각 단계 결과를 보여주는 스크립트. 에러 나면 어디서 문제인지 알 수 있게 단계별로 로그를 찍어줘."

🚨 자주 만나는 에러

에러쉽게 말하면해결
Permission denied파일 권한 부족sudo chown / chmod
ECONNREFUSEDDB 연결 실패config 비번/호스트 확인
Puppeteer crash메모리 부족서버 메모리 확인, 크롬 의존성 설치
429 Too ManyAPI 한도 초과딜레이 추가
wp_insert_post 실패WP 경로/권한 문제wp-load.php 경로 확인
데이터 부족아이템이 너무 적음데이터 더 수집 후 재시도
에러 대응 = 바이브코딩의 핵심

에러 메시지를 그대로 복사 → AI에게 보여주기 → "이 에러 어떻게 해?" — 10번 중 9번 해결됩니다. 안 되면 로그 전체를 보여주세요.

환경마다 다릅니다

서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.

📍 여기까지 완료한 것

✅ 서버 환경 (CH01~07) → 기획 & 코드 생성 (CH08~17) → 배포 & 테스트 (CH18~19)

시스템이 돌아가는 것을 확인했습니다. 다음부터는 SEO 설정, 자동 실행 스케줄, 글 디자인 등 마무리 단계입니다. 거의 다 왔습니다!

Chapter 20

검색엔진에 노출시키기 — SEO

RankMath 설정 + 서치콘솔 등록 + 코드 추가.

💬 RankMath 설치하고 SEO 코드를 추가합니다.

1단계: RankMath 플러그인 설치 & 설정 마법사

SEO의 기본은 RankMath 플러그인이 해줍니다. 먼저 이걸 깔고 설정 마법사를 완료하세요.

1
WP 관리자 → 플러그인 → 새로 추가 → "Rank Math" 검색 → 설치 → 활성화
2
설치 마법사가 자동으로 뜸 → "Advanced" 모드 선택
3
사이트 유형: "Personal Blog" 또는 "Business" 선택
4
사이트맵: ON (검색엔진이 내 글을 찾을 수 있게)
5
Search Console 연결: 구글 계정으로 로그인해서 연결 (나중에 해도 됨)
6
SEO Tweaks: Noindex Empty Category → ON (빈 카테고리가 검색에 안 잡히게)
7
나머지는 기본값 그대로 → 완료
여기까지만 해도 기본 SEO는 OK

RankMath를 설치하고 설정 마법사만 완료하면 기본적인 SEO(메타태그, 사이트맵, 구조화 데이터)는 자동 적용됩니다. 아래는 "추가로" 더 하면 좋은 것들입니다.

RankMath의 세부 설정이나 워드프레스 자체의 SEO 설정(퍼머링크, 카테고리 구조 등)은 이 가이드 범위를 넘어갑니다. 워드프레스 SEO는 별도로 학습하시는 것을 추천드립니다. AI에게 "RankMath 블로그 최적화 설정 알려줘"라고 물어보면 자세히 안내받을 수 있습니다.

2단계: 자동 발행 시 SEO 데이터 자동 주입

autopost.php에서 글을 올릴 때, RankMath 메타 필드에 데이터를 같이 넣는 겁니다.

🤖 AI에게 이렇게 (autopost.php 추가)
"autopost.php에서 wp_insert_post() 한 다음에 RankMath 메타 필드에 아래를 넣는 코드 추가: - SEO 제목 - SEO 설명 - 대표 키워드 이미 RankMath 설치됨. update_post_meta 방식으로."

3단계: OG태그 & 스키마 (functions.php)

SNS에 공유 시 제목/이미지가 예쁘게 나오려면 OG태그가 필요합니다. 이건 워드프레스 테마 파일에 코드를 추가합니다.

🤖 AI에게 이렇게 (functions.php 추가)
"워드프레스 테마의 functions.php에 넣을 Open Graph 태그 자동 생성 코드 만들어줘. - og:title = 글 제목 - og:description = 글 요약 - og:image = 대표 이미지 그리고 FAQ를 JSON-LD 스키마로 마크업하는 코드도. 나는 코드를 잘 모르니까, 어떤 파일을 어디서 열고 어디에 붙여넣는지 단계별로 쉽게 알려줘."
정리하면

RankMath = 플러그인 설치 + 설정만 (기본 SEO)

autopost.php = 자동 발행 시 SEO 데이터 자동 주입 (코드 추가)

functions.php = OG태그, 스키마 등 추가 최적화 (코드 추가)

4단계: 검색엔진에 내 사이트 등록

글을 아무리 잘 써도, 검색엔진에 내 사이트를 알려주지 않으면 구글과 네이버가 내 사이트 존재를 모릅니다. 사이트맵, RSS 피드, robots.txt를 등록해서 "여기 새 글 있으니 수집해가세요"라고 알려주는 겁니다.

먼저 확인하세요

RankMath를 설치하면 사이트맵이 자동 생성됩니다. 아래 주소로 접속해서 확인하세요:

• 사이트맵: https://내도메인/sitemap_index.xml

• RSS 피드: https://내도메인/feed/

• robots.txt: https://내도메인/robots.txt

각각 접속했을 때 페이지가 나오면 정상입니다. 안 나오면 AI에게 물어보세요.

🔍 Google Search Console 등록

구글 검색에 내 사이트가 노출되려면 필수입니다.

1

search.google.com/search-console 접속

구글 계정 로그인 → "URL 접두어" 선택 → https://내도메인 입력

2

소유권 확인

RankMath 설정 마법사에서 이미 연결했으면 자동 인증. 안 했으면 HTML 태그 방식 추천 — AI에게 "구글 서치콘솔 소유권 확인 방법 알려줘"라고 물어보세요

3

사이트맵 제출 ⭐

좌측 메뉴 "Sitemaps" → 주소 입력란에 sitemap_index.xml 입력 → "제출". 1단계에서 RankMath 설정 마법사를 통해 Search Console을 연결했다면 사이트맵이 이미 등록되어 있을 수 있습니다. "제출됨" 상태로 보이면 이 단계는 건너뛰세요.

4

RSS 피드 제출 ⭐

같은 화면에서 한 번 더 — 주소 입력란에 feed/ 입력 → "제출". RSS를 등록하면 새 글이 올라올 때 구글이 더 빨리 발견합니다

5

robots.txt 수집 요청

상단 검색창(URL 검사)에 https://내도메인/robots.txt 입력 → 결과 나오면 "색인 생성 요청" 클릭. 구글이 내 사이트의 크롤링 규칙을 인식하게 됩니다

🇰🇷 네이버 서치어드바이저 등록

한국 대상 블로그라면 네이버 검색 노출도 필수입니다.

1

searchadvisor.naver.com 접속

네이버 계정 로그인 → "사이트 추가" → https://내도메인 입력

2

소유권 확인

"HTML 태그" 방식 추천 → 메타 태그를 복사해서 워드프레스 <head>에 넣기. 방법 모르면 AI에게 "네이버 서치어드바이저 HTML 태그를 워드프레스에 넣는 법 알려줘"라고 물어보세요

3

사이트맵 제출 ⭐

좌측 "요청" → "사이트맵 제출"https://내도메인/sitemap_index.xml 입력 → "확인"

4

RSS 피드 제출 ⭐

좌측 "요청" → "RSS 제출"https://내도메인/feed/ 입력 → "확인"

5

robots.txt 수집 요청

좌측 "검증" → "robots.txt""수집 요청" 클릭. 네이버가 내 사이트의 크롤링 규칙을 확인하게 됩니다

등록 후 바로 노출 안 됩니다

사이트맵과 RSS를 등록해도 검색 결과에 반영되기까지 며칠~몇 주 걸릴 수 있습니다. 정상입니다. 글이 꾸준히 쌓이면 점점 빨라집니다.

환경마다 다릅니다

서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.

Chapter 21

매일 자동 실행 & 알림 설정

크론탭으로 시간표 자동 실행 + 슬랙 알림.

💬 정해진 시간에 자동으로 돌아가게 설정합니다.

⏰ 크론탭 = 알람 시계

"매일 몇 시에 이 파일 실행해" 설정하면 서버가 알아서 합니다.

📋 크론탭 설정

아래는 예시입니다. 시간, 파일명, 경로 등은 자기 프로젝트에 맞게 바꾸세요.

Xshell
# 로그 폴더 만들기 (처음 한 번만) mkdir -p ~/logs # 크론탭 편집 crontab -e # ===== ⭐ 권한 복구 (6시간마다) — 이거 안 하면 안 돌아감! ===== 0 */6 * * * sudo chown -R www-data:www-data /var/www/html/ && sudo chmod -R 755 /var/www/html/ # ===== 데이터 크롤링 (분산) ===== 0 14 * * * cd /home/ubuntu/crawler && node data.js >> ~/logs/crawl.log 2>&1 0 16 * * * cd /home/ubuntu/crawler && node data.js >> ~/logs/crawl.log 2>&1 # ===== 이미지 처리 ===== 0 23 * * * cd /home/ubuntu/crawler && node image.js >> ~/logs/image.log 2>&1 # ===== 글 발행 (하루 2~3번 분산 — 스팸 방지) ===== 0 0 * * * php /var/www/html/autopost.php >> ~/logs/post.log 2>&1 0 8 * * * php /var/www/html/autopost.php >> ~/logs/post.log 2>&1 0 16 * * * php /var/www/html/autopost.php >> ~/logs/post.log 2>&1 # ===== 에러 복구 (30분마다) ===== */30 * * * * php /var/www/html/recovery.php >> ~/logs/recovery.log 2>&1 # ===== 30일 지난 로그 삭제 ===== 0 3 * * * find ~/logs/ -mtime +30 -delete
이건 예시입니다

위 시간, 파일명, 경로는 전부 예시입니다. AI에게 자기 상황을 설명하면서 크론탭을 설정하세요.

🤖 AI에게 이렇게
"내 서버에 크론탭을 설정하려고 해. 내 파일 구조: - 크롤러: [크롤러 파일 경로, 예: /home/ubuntu/crawler/data.js] - 이미지 처리: [이미지 파일 경로] - 자동 발행: [autopost.php 경로] 원하는 스케줄: - 크롤링: [예: 하루 2번] - 이미지: [예: 하루 1번] - 글 발행: [예: 하루 3번 분산] 크론탭 설정 전체를 만들어줘. 로그 파일도 각각 따로 저장되게. 권한 복구(chown/chmod)도 포함해줘."
권한 설정 꼭 넣으세요!

chown/chmod를 주기적으로 안 돌리면 WP 업데이트, 자동 발행 등으로 파일 권한이 꼬여서 크롤링이나 포스팅이 갑자기 안 됩니다. 이거 때문에 삽질 많이 합니다.

📂 .sh 파일이란?

크론탭에서 실행할 명령이 길어지면 .sh 파일(쉘 스크립트)로 따로 만들어서 실행합니다. .sh 파일은 명령어를 순서대로 적어둔 메모장 같은 겁니다.

1
AI에게 "크롤링 실행하는 .sh 파일 만들어줘"라고 시키면 코드를 줌
2
FileZilla로 서버에 올리기 (예: ~/scripts/crawl.sh)
3
Xshell에서 실행 권한 부여: chmod +x ~/scripts/crawl.sh
4
크론탭에서 .sh 파일을 실행하게 설정: 0 14 * * * ~/scripts/crawl.sh
왜 .sh를 쓰나?

크론탭에 긴 명령어를 직접 쓰면 보기도 어렵고 수정도 불편합니다. .sh 파일로 빼두면 FileZilla에서 편하게 수정할 수 있고, 크론탭은 깔끔하게 유지됩니다.

🤖 AI에게 이렇게
"내 서버에서 크론탭으로 자동 실행할 .sh 파일을 만들어줘. 실행할 작업들: 1. 데이터 크롤링: [크롤러 파일 경로, 예: /home/ubuntu/crawler/data.js] 2. 이미지 처리: [이미지 파일 경로] 3. 글 자동 발행: [autopost.php 경로] 조건: - 각 작업별로 .sh 파일 따로 만들어줘 - 로그는 ~/logs/ 폴더에 날짜별로 저장 - 에러 나도 멈추지 않게 - 파일 저장 위치는 ~/scripts/ 폴더 그리고 이 .sh 파일들을 크론탭에 등록하는 방법도 순서대로 알려줘."

📱 슬랙 모니터링

1

slack.com 가입 → 워크스페이스 생성 (무료)

이메일로 가입

2

앱 → "Incoming Webhooks" 추가

슬랙 앱 디렉토리에서 검색 → 설치 → 채널 선택

3

Webhook URL 복사 → config에 저장

이 URL로 메시지 보내면 슬랙에 알림

4

AI에게 slack.php 만들어달라 하기

아래 프롬프트 사용

슬랙은 기획서에 포함됩니다

CH17에서 .md 기획서를 만들 때 슬랙 알림 규칙도 같이 넣으면, 코드 생성 시 slack.php가 자동으로 만들어집니다. 이미 코드에 포함되어 있다면 Webhook URL만 config에 넣으면 됩니다.

🤖 기획서에 슬랙 규칙 추가 안 했다면
"PHP로 슬랙 알림 보내는 함수 만들어줘. 함수: sendSlack($message, $type) $type: 'success'✅, 'error'🚨, 'info'📋 Webhook URL은 config에서 가져오기. 다른 PHP 파일에서 require_once로 쓸 수 있게."
환경마다 다릅니다

서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.

Chapter 22

발행된 글 디자인 다듬기

CSS로 자동 발행된 글을 예쁘게 꾸밉니다.

💬 발행된 글을 예쁘게 꾸밉니다. CSS = 글의 색상, 크기, 배치를 정하는 디자인 코드.

🎨 AI에게 CSS 받아서 적용

🤖 AI에게 이렇게
"내 워드프레스 블로그에 자동 발행된 글이 예쁘게 보이도록 CSS를 만들어줘. 글 HTML 구조: [템플릿 HTML 붙여넣기] - 깔끔하고 읽기 좋게 - 모바일 반응형 - 이미지 카드형"

CSS를 받았으면:

1
WP 관리자 → 외모 → 사용자 정의하기
2
"추가 CSS" 클릭
3
CSS 코드 붙여넣기
4
"공개". 끝!
Chapter 23

유지보수 & 비용 정리

안정적으로 유지하고, 비용을 파악합니다.

💬 서버 비용 확인하고 안정적으로 유지합니다.

🔧 정기 유지보수

서버 업데이트

월 1회 sudo apt update && upgrade

디스크 용량

df -h 로 확인. 이미지 쌓이면 금방 참

로그 점검

슬랙 외에 주 1회 로그 직접 확인

WP 업데이트

플러그인/테마 보안 업데이트. 자동 설정 권장

🚨 에러 대응 3단계

이것만 기억하세요

1. 에러 메시지를 그대로 복사 (빨간 글씨든 뭐든 전부)

2. AI에게 "이 에러 나왔어, 어떻게 해?" + 에러 메시지 붙여넣기

3. AI가 알려주는 대로 실행. 한 번에 안 되면 로그 전체를 보여주기. 대부분 2~3번이면 해결됩니다.

💰 월 비용 정리

항목프리티어 (6개월)이후
AWS EC2무료~$8/월 (t3.micro 유지)
도메인~$0.75/월 (연 $9)동일
Cloudflare무료무료
Gemini API무료 크레딧 $300사용한 만큼 과금
Slack무료무료
합계~$1/월~$10~20/월
비용 vs 수익

월 $10~20으로 매일 자동 발행. 애드센스/제휴 수익이 이걸 넘기면 순수익.

🎉 여기까지 읽으셨다면

전체 시스템의 그림이 보이실 겁니다.
코드는 AI에게 시키세요.
여러분이 알아야 할 건 "무엇을, 왜, 어떤 순서로"입니다.
그게 바이브코딩입니다.

🛠 너무 어려우시면 저에게 맡겨주세요

이 가이드를 구매하신 분들께는 30% 할인해서
맞춤형 자동화 시스템 구축을 도와드리겠습니다.

블로그 주제 선정부터 서버 세팅, 크롤링, 자동 발행까지 — 1:1로 세팅해드립니다.

💬 카카오톡 상담하기

🎓 영상 강의 제작 신청

20명 이상 신청해주시면 이 가이드의 전 과정을
영상 강의로 제작해서 제공해드리겠습니다.

이 가이드를 구매하신 분들께는 50% 할인해서 제공합니다.

🎉 전체 완료!

✅ 서버 환경 (CH01~07) → ✅ 기획 & 코드 생성 (CH08~17) → ✅ 배포 & 테스트 (CH18~19) → ✅ SEO + 자동화 + 마무리 (CH20~23)

자동 포스팅 시스템이 완성되었습니다. 이제 서버가 매일 알아서 데이터를 수집하고, AI가 글을 쓰고, 워드프레스에 자동으로 발행합니다. 슬랙으로 결과를 확인하면서 가끔 로그만 점검해주세요.

💬 질문하기