🔒

구매자 전용 콘텐츠

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

vibe coding guide

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

자동화 블로그 시스템.
서버 구축부터 크롤링, AI 글 생성, 자동 발행까지.
v4.024 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" → 도서 사이트 크롤링 + 링크프라이스 제휴

🏢 내 업체 홍보

자기 사업 관련 글 자동화 → 홈페이지/예약 유입

수익 모델 팁

애드센스보다 어필리에이트(제휴 마케팅)가 수익이 높습니다. 링크프라이스(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 글 생성무료 티어
Slack알림무료
Xshell서버 접속무료 (개인)
FileZilla파일 업로드무료
Antigravity + Claude바이브코딩무료~$20/월
Node.js크롤러 & 이미지 처리무료
프리티어 이후

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

Chapter 01

AWS EC2 서버 생성

키페어 발급부터 보안 그룹까지, 서버 만들기 전 과정.

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

☁️ 왜 AWS인가

자동화는 24시간 돌아가야 합니다. AWS EC2는 클라우드에 있는 리눅스 컴퓨터를 빌리는 겁니다. 새벽 3시에도 작업을 수행합니다.

프리티어

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를 인스턴스에 연결 안 하면 요금 발생. 반드시 연결!

Chapter 02

Xshell로 서버 접속

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

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

🔐 SSH = 서버에 전화 걸기

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

📥 Xshell 설정

1

Xshell 다운로드

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

2

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

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

3

인증 설정

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

4

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

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

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

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 설치 (Apache + MySQL + PHP)

워드프레스가 돌아가려면 이 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 설치 & 데이터베이스 생성

Xshell
# MySQL 설치 sudo apt install mysql-server -y # MySQL 보안 설정 (비밀번호 등) sudo mysql_secure_installation → 첫 번째 질문 "VALIDATE PASSWORD COMPONENT" → N (비밀번호 규칙이 복잡해져서 나중에 막힘) → root 비밀번호 설정 → 원하는 비밀번호 입력 → 나머지 질문은 전부 Y # 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;
메모하세요!

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 sed -i '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf # Apache 재시작 sudo systemctl restart apache2
위 sed 명령어가 안 되면

sudo nano /etc/apache2/apache2.conf로 직접 열어서 <Directory /var/www/> 부분을 찾고, AllowOverride NoneAllowOverride All로 바꾸세요. 저장은 Ctrl+O → Enter, 나가기는 Ctrl+X. 그래도 어려우면 AI에게 물어보세요.

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_ (그대로)

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

환경마다 다를 수 있습니다

서버 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 자동 리다이렉트도 설정해줘."
참고: 인증서 저장 위치

AI가 안내해주겠지만, 보통 인증서는 /etc/ssl/certs/에, 키는 /etc/ssl/private/에 저장합니다. Apache SSL 설정 파일은 /etc/apache2/sites-available/ 안에 있습니다. 이 단계가 안 되면 사이트 접속 자체가 안 되니, AI가 알려주는 대로 하나씩 따라하세요.

⚠️ 워드프레스 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에게 만들어달라고 시킬 겁니다. 코드를 서버에 올리고 실행하는 방법은 이후 챕터에서 다룹니다.

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 기획서에 이 내용이 들어갑니다.

환경마다 다릅니다

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

Chapter 10

AI와 같이 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

파일 구조 & config 보안

시스템 파일 구성과 비밀번호 보호.

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

📁 파일 구성

파일은 크게 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 폴더
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
PHP 쪽 DB 비밀번호는요?

autopost.php 같은 PHP 파일은 워드프레스의 wp-config.php를 통해 DB에 접근합니다. wp-config.php에 이미 DB 비밀번호가 들어있으니 별도 config.php를 만들 필요 없습니다. Gemini API 키 등 추가 설정이 필요하면 AI가 코드를 만들 때 config.php를 별도로 만들어줄 수도 있습니다 — 그 경우에도 /var/www/html/ 바깥에 두고 권한을 잠그세요.

Chapter 12

Gemini API 키 발급

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

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

📋 발급 방법

1

aistudio.google.com 접속

구글 계정 로그인

2

"Get API key" → "Create API key"

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

3

키 복사 → config 파일에 저장

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

무료 티어 + 모델 추천

Gemini 무료 티어로 자동 포스팅 수준은 충분합니다. 모델은 Gemini 2.5 이상을 추천합니다. 키 발급 시 모델 선택이 가능한데, AI에게 "Gemini API에서 2.5 이상 모델 쓰는 코드 알려줘"라고 하면 됩니다.

Chapter 13

Puppeteer 소개 & 요소 찾기

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

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

🕷 쉽게 말하면

사람이 브라우저에서 하는 모든 행동(접속, 스크롤, 클릭, 복사)을 코드가 자동으로 수행합니다. 여러분이 매일 사이트에 들어가서 데이터를 하나하나 복사하는 대신, 코드가 대신 해줍니다. 눈에 안 보이는 크롬을 서버에서 돌리는 겁니다. 이걸 가능하게 해주는 도구가 Puppeteer(퍼페티어)이고, Chapter 07에서 설치한 Node.js 위에서 돌아갑니다. 앞으로 프롬프트에서 "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 결과] 이 요소들로 크롤링하면 데이터를 가져올 수 있을까? 빠진 거 있으면 알려줘."

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

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

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

이 챕터 vs 다음 챕터

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

Chapter 14

데이터 확보

글의 재료를 준비합니다.

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

크롤링으로 데이터 확보

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

방식 1: 요소 지정 크롤링

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

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

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

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

🤖 Claude에게 이렇게
"이 사이트를 Puppeteer로 크롤링하려고 해: [URL] 페이지를 통째로 가져온 뒤 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) 같은 도구로 테스트하며 "사람이 쓴 것"으로 판정 나올 때까지 프롬프트를 다듬으세요. 데이터 기반 + 객관적 톤이면 대부분 통과합니다.

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분마다 실행하려고 해."

📱 슬랙 모니터링

위에서 정한 자동 발행, 에러 복구 규칙에 모두 "슬랙으로 알림"이 들어가 있습니다. 이 알림을 실제로 받으려면 슬랙을 연결해야 합니다.

1

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

이메일로 가입

2

앱 → "Incoming Webhooks" 추가

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

3

Webhook URL 복사 → config에 저장

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

4

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

아래 프롬프트 사용

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

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

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

📄 기획서(.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가 만들어준 코드를 받았으면, 다음 챕터부터는 코드를 서버에 올리고, 설정하고, 테스트하고, 자동화하는 단계입니다.

환경마다 다릅니다

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

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태그, 스키마 등 추가 최적화 (코드 추가)

환경마다 다릅니다

서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 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 파일들을 크론탭에 등록하는 방법도 순서대로 알려줘."
환경마다 다릅니다

서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 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무료 티어무료 (초과 시 과금)
Slack무료무료
합계~$1/월~$10~20/월
비용 vs 수익

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

🎉 여기까지 읽으셨다면

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

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

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

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

💬 카카오톡 상담하기

🎓 영상 강의 제작 신청

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

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