이 가이드를 읽기 전에
코드를 가르치지 않습니다. 시스템이 돌아가는 원리를 알려줍니다.
🎣 물고기가 아니라 낚시를 배웁니다
이 가이드는 특정 블로그 주제에 종속되지 않습니다. 어떤 주제의 블로그든 자동 포스팅 시스템을 만들 수 있는 구조와 원리를 다룹니다.
📌 이 문서의 목적
이 전자책은 워드프레스 자동 포스팅의 구체적인 흐름을 담았습니다. 서버 세팅부터 크롤링, AI 글 생성, 자동 발행까지 전체 과정을 다룹니다.
다만, 여러분이 만들 블로그의 주제, 데이터, 수익 모델은 저마다 다릅니다. 같은 흐름을 따라도 결과물은 전부 다릅니다. 글의 템플릿도 여러 개 만들어서 랜덤으로 발행할 수 있고, 인트로·서론·FAQ 등 각 유형을 다양하게 구성해서 매번 다른 느낌의 글을 만들 수 있습니다.
이 문서의 목적은 이 흐름을 이해하고, AI에게 구체적인 지시를 할 수 있게 되는 것입니다. 코드를 외우는 게 아니라, "이 단계에서 AI에게 뭘 시켜야 하는지"를 아는 게 핵심입니다.
쉽지 않은 과정입니다. 하지만 한 번 성공시키고 나면, 다른 주제의 블로그도 자동화할 수 있는 힘이 생깁니다. 서버, DB, API, 크롤링 — 이 과정을 따라가는 것만으로도 꽤 많은 개발 지식을 자연스럽게 습득하게 됩니다. 첫 번째가 가장 어렵고, 두 번째부터는 훨씬 빠릅니다.
🗺 전체 로드맵
먼저 전체 흐름을 한눈에 보고 시작합시다. 크게 4단계입니다.
🖥 서버 환경 구축 CH01~CH07
AWS 서버 생성 → 접속 도구 설치 → 워드프레스 설치 → 도메인 연결
블로그가 돌아갈 집을 짓는 단계. 한 번만 하면 됩니다.
📋 AI와 기획 CH08~CH17
블로그 주제 → 글 구조 → DB 설계 → 크롤링 → 이미지 → AI 글 생성 → 자동 발행
가장 중요한 단계. Claude와 대화하며 모든 규칙을 정하고 .md 기획서 완성 → 코드 생성
🚀 배포 & 테스트 CH18~CH19
코드를 서버에 올리고 → DB 세팅 → 실행 → 에러 수정 반복
바이브코딩의 핵심 루프. 5~10번 반복하면 돌아갑니다.
⚙️ 자동화 & 마무리 CH20~CH23
SEO 최적화 → 크론탭(정시 자동 실행) → 글 꾸미기 → 유지보수
시스템이 알아서 돌아가게 설정하고, 안정적으로 유지합니다.
지금 전부 이해할 필요 없습니다. 한 챕터씩 따라가면 자연스럽게 연결됩니다.
⚙️ 시스템은 이렇게 돌아갑니다
완성되면 이 흐름이 매일 자동으로 반복됩니다. 지금은 그림만 보세요.
이 흐름을 하나씩 만들어가는 게 이 가이드의 전부입니다.
읽기만 하면 절대 못 합니다. 이건 직접 부딪혀봐야 아는 겁니다. 읽으면서 동시에 바로바로 같이 실행해보세요. 챕터 하나 읽으면 바로 따라하고, 에러 나면 AI에게 물어보고, 해결하고, 다음 챕터로. 이 반복이 유일한 방법입니다.
이 가이드에서 "AI에게 물어보세요"라고 할 때, Claude(claude.ai)를 추천합니다. 개발 지식이 풍부하고, 코드 생성 능력이 뛰어납니다. 모르는 용어나 개념이 나오면 바로 Claude에게 물어보세요. "이게 뭐야?", "쉽게 설명해줘" — AI와 대화하며 학습하는 것 자체가 바이브코딩의 일부입니다.
💡 이런 블로그에 적합합니다
핵심은 데이터와 이미지를 자동으로 가져올 수 있는 주제입니다.
🏨 호텔/숙소 추천
"서울 강남 호텔 TOP 10" → Agoda, Booking 크롤링 + 제휴 링크
🗺 여행 액티비티
"제주도 투어 추천" → Klook 크롤링 + 제휴 링크
📚 도서 추천
"2025 자기계발서 TOP 10" → 도서 사이트 크롤링 + 링크프라이스 제휴
🏢 내 업체 홍보
자기 사업 관련 글 자동화 → 홈페이지/예약 유입
애드센스보다 어필리에이트(제휴 마케팅)가 수익이 높습니다. 링크프라이스(linkprice.com)에 가입하면 다양한 광고주(Agoda, Klook 등)의 제휴 링크를 바로 쓸 수 있습니다. 어필리에이트·인플루언서 마케팅이 뭔지 모르겠으면 AI에게 "링크프라이스 제휴 마케팅이 뭐야? 어떻게 시작해?"라고 물어보세요. 이 가이드는 수익 강의가 아니라 기술 가이드이니 이 정도만 참고하세요.
🧩 바이브코딩이란
코드를 직접 짜지 않고, AI에게 원하는 걸 설명해서 코드를 만들게 하는 방식입니다. 핵심은 "무엇을 만들어야 하는지"를 아는 것.
알아야 하는 것
각 단계가 왜 필요한지, 어떤 순서인지
몰라도 되는 것
코드 문법 — AI가 해줍니다
해야 하는 것
AI에게 정확한 지시를 내리는 것
🤖 사용할 도구
이 가이드에서는 Claude와 Antigravity를 역할을 나눠서 씁니다.
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에게 물어보며 수정
⚠️ 솔직한 경고
쉽지 않습니다. 서버, DB, 여러 도구를 조합해야 합니다. 하지만 각 단계의 "개념"을 이해하면 실제 코드는 AI에게 시킬 수 있습니다.
🛠 필요한 도구 & 비용
| 도구 | 용도 | 비용 |
|---|---|---|
| AWS EC2 | 24시간 서버 | 6개월 프리티어 무료 |
| 도메인 | 사이트 주소 | 연 ~$9 (Namecheap) |
| Cloudflare | SSL + CDN | 무료 |
| Gemini API | AI 글 생성 | 무료 티어 |
| Slack | 알림 | 무료 |
| Xshell | 서버 접속 | 무료 (개인) |
| FileZilla | 파일 업로드 | 무료 |
| Antigravity + Claude | 바이브코딩 | 무료~$20/월 |
| Node.js | 크롤러 & 이미지 처리 | 무료 |
프리티어 이후에도 t3.micro를 계속 쓸 수 있습니다. 월 ~$8 정도. 트래픽이 늘어서 느려지면 그때 t3.small 등으로 업그레이드하면 됩니다. 전체 월 유지비 약 $10~20.
AWS EC2 서버 생성
키페어 발급부터 보안 그룹까지, 서버 만들기 전 과정.
☁️ 왜 AWS인가
자동화는 24시간 돌아가야 합니다. AWS EC2는 클라우드에 있는 리눅스 컴퓨터를 빌리는 겁니다. 새벽 3시에도 작업을 수행합니다.
AWS 신규 가입 시 6개월간 프리티어. t3.micro 무료. 가입에 신용카드가 필요하지만 프리티어 안에서는 과금 없습니다.
📋 생성 순서 (키페어 포함!)
AWS 계정 생성
aws.amazon.com 회원가입. 이메일, 신용카드 준비
리전 선택: 서울 (ap-northeast-2)
AWS 콘솔 우측 상단에서 리전 선택. 한국 대상이면 서울 추천. 해외 대상이면 해당 국가 가까운 리전 선택
EC2 → "인스턴스 시작"
AWS 콘솔 상단에서 EC2 검색 → 주황색 "인스턴스 시작" 버튼
이름 입력
알아보기 쉬운 이름 (예: my-blog-server)
OS: Ubuntu 24.04 LTS
Amazon Linux 말고 Ubuntu. 자료가 훨씬 많고 AI도 잘 답변해줌
인스턴스 유형: t3.micro (프리티어)
"프리 티어 사용 가능" 라벨 확인. 시작은 이걸로 충분
🔑 키페어 생성 ⭐ 매우 중요
"새 키 페어 생성" 클릭 → 이름 입력 → 유형: RSA / 형식: .pem → .pem 파일 다운로드. 이 파일이 서버 접속 열쇠입니다 — 집 열쇠처럼 이게 없으면 서버에 들어갈 수 없습니다! 잃어버리면 서버를 새로 만들어야 할 수도 있습니다. USB 등에 백업하세요.
🛡 보안 그룹 설정 (방화벽)
보안 그룹은 서버의 "출입문"입니다. 어떤 문을 열어줄지 정하는 겁니다. "보안 그룹 생성" 선택 후 아래 3개를 열어주세요. 안 열면 접속 자체가 안 됩니다:
• SSH (22번) — 서버 접속용
• HTTP (80번) — 웹사이트
• HTTPS (443번) — SSL
스토리지: 30GB
서버의 "하드디스크" 용량입니다. 기본 8GB는 워드프레스 + 이미지만 넣어도 금방 참. 프리티어 범위 내 30GB까지 무료이니 넉넉하게 설정하세요
"인스턴스 시작" 클릭!
1~2분 후 상태가 "실행 중"이면 성공
.pem 파일은 딱 한 번만 다운로드 가능합니다. 재발급 안 됨! 바탕화면 말고 안전한 폴더에 저장 + 백업.
🌐 탄력적 IP (고정 IP)
IP 주소는 서버의 "집 주소"입니다. 그런데 EC2는 재시작할 때마다 이 주소가 바뀝니다. 도메인(예: myblog.com)을 연결하려면 바뀌지 않는 고정 주소가 필요합니다.
탄력적 IP를 인스턴스에 연결 안 하면 요금 발생. 반드시 연결!
Xshell로 서버 접속
내 컴퓨터에서 서버를 원격 조종합니다.
🔐 SSH = 서버에 전화 걸기
내 컴퓨터에서 서버에 원격으로 접속하는 방법입니다. 카카오톡으로 전화 거는 것처럼, Xshell이라는 프로그램으로 서버에 연결합니다. 아까 만든 .pem 파일이 전화번호이자 비밀번호 역할입니다.
📥 Xshell 설정
Xshell 다운로드
netsarang.com → "무료 라이선스 (가정/학교)" 버전 다운
새 세션 → 호스트에 탄력적 IP 입력
파일 → 새로 만들기 → 호스트란에 IP 주소
인증 설정
방법: Public Key / 사용자: ubuntu / 키 파일: .pem 파일 선택
연결 → "ubuntu@ip-xxx:~$" 보이면 성공!
축하합니다! 이 화면이 서버를 조종할 수 있는 상태입니다. 여기에 명령어를 입력하면 서버가 실행합니다
⌨️ 쉘 기본 사용법 (꼭 읽으세요!)
Xshell은 일반 프로그램과 복사/붙여넣기 방법이 다릅니다.
| 하고 싶은 것 | 일반 프로그램 | Xshell(쉘) |
|---|---|---|
| 복사 | Ctrl+C | Ctrl+Shift+C (또는 드래그만 해도 복사됨) |
| 붙여넣기 | Ctrl+V | Ctrl+Shift+V (또는 마우스 우클릭) |
| 실행 취소 | Ctrl+Z | 없음 — 명령어는 되돌릴 수 없습니다 |
| 실행 중 멈추기 | — | Ctrl+C (쉘에서 Ctrl+C는 "멈춰!"임) |
쉘에서 Ctrl+C는 복사가 아니라 "실행 중인 명령 중단"입니다! 복사하려면 Ctrl+Shift+C를 쓰세요. 이 가이드에 나오는 명령어는 웹에서 복사한 뒤 Xshell에 Ctrl+Shift+V로 붙여넣으면 됩니다.
📌 접속 후 바로 할 것
Xshell로 서버에 접속한 상태에서 아래 명령어를 한 줄씩 복사 → Ctrl+Shift+V로 붙여넣기 → Enter 하세요.
⌨️ 자주 쓰는 명령어
| 명령어 | 쉽게 말하면 | 예시 |
|---|---|---|
ls | 지금 폴더에 뭐가 있어? | ls -la |
cd | 다른 폴더로 이동 | cd /var/www/html |
sudo | 관리자 권한으로 실행 | sudo apt install … |
nano | 파일 편집기 열기 | nano config.php |
cat | 파일 내용 보기 | cat error.log |
외울 필요 없습니다. AI에게 "서버에서 이런 걸 하고 싶어" 물어보면 됩니다.
FileZilla로 파일 올리기
드래그 앤 드롭으로 파일을 서버에 올립니다.
📁 Xshell = 명령어 / FileZilla = 파일 관리
Xshell은 글자로 서버에 명령을 내리는 거고 (예: "이거 설치해"), FileZilla는 윈도우 탐색기처럼 파일을 눈으로 보면서 드래그로 올리고 내리는 겁니다. 왼쪽이 내 PC, 오른쪽이 서버.
📥 설정
filezilla-project.org → Client 다운 (Server 아님!)
Client만 받으세요. Server는 다른 프로그램
파일 → 사이트 관리자 → 새 사이트
접속 정보를 저장해두는 곳
접속 정보 입력
프로토콜: SFTP (FTP 아님! S가 붙은 보안 버전) / 호스트: 탄력적 IP / 로그온: 키 파일 / 사용자: ubuntu / 키: .pem 파일
연결 → 양쪽 파일 목록 보이면 성공
드래그 앤 드롭으로 파일 이동
워드프레스 파일: /var/www/html/
크롤러 파일: /home/ubuntu/crawler/
AMP 설치 (Apache + MySQL + PHP)
워드프레스가 돌아가려면 이 3개가 먼저 깔려 있어야 합니다.
📦 쉽게 말하면
워드프레스는 혼자 못 돌아갑니다. 3가지 도우미가 필요합니다:
Apache (아파치)
누군가 여러분 사이트에 접속하면 페이지를 보여주는 역할. 가게의 "카운터 직원"
MySQL (마이에스큐엘)
글, 사용자 정보 등 모든 데이터를 저장하는 "창고"
PHP (피에이치피)
워드프레스가 이 언어로 만들어져 있음. 이게 없으면 WP가 실행 안 됨
1단계: Apache 설치
Xshell로 서버에 접속한 상태에서 진행합니다. (Chapter 02 참고)
2단계: MySQL 설치 & 데이터베이스 생성
DB 이름: wordpress / 사용자: wpuser / 비밀번호: 내가 정한 것 — 이 3개를 나중에 워드프레스 설치할 때 입력해야 합니다.
3단계: PHP 설치
4단계: phpMyAdmin 설치
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에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.
워드프레스 설치
블로그 엔진을 설치합니다.
⚠️ 설치 전에 알아야 할 것
워드프레스 설치는 단순히 파일만 올리면 끝이 아닙니다. Apache 설정, DB 생성, PHP 모듈, 권한 설정 등 여러 단계가 있고, 서버 환경마다 다를 수 있습니다. 아래는 일반적인 순서이지만, 에러가 나면 AI에게 에러 메시지를 보여주면서 하나씩 해결하세요.
1️⃣ Apache 설정
Xshell로 서버에 접속한 상태에서 진행합니다. 워드프레스가 제대로 돌아가려면 Apache에 몇 가지 설정이 필요합니다.
sudo nano /etc/apache2/apache2.conf로 직접 열어서 <Directory /var/www/> 부분을 찾고, AllowOverride None을 AllowOverride All로 바꾸세요. 저장은 Ctrl+O → Enter, 나가기는 Ctrl+X. 그래도 어려우면 AI에게 물어보세요.
2️⃣ PHP 필수 모듈 설치
Chapter 04에서 PHP 모듈을 이미 설치했으면 이 단계는 건너뛰세요. 다시 실행해도 문제는 없지만 불필요합니다.
3️⃣ MySQL에 DB & 유저 생성
Chapter 04에서 이미 DB와 유저를 만들었으면 이 단계는 건너뛰세요. 같은 작업을 두 번 할 필요 없습니다.
DB 이름(wordpress), 유저(wpuser), 비밀번호 — 이 3개를 반드시 메모하세요. 나중에 wp-config.php와 브라우저 설치 화면에서 입력해야 합니다.
4️⃣ 워드프레스 다운로드 & 설치
5️⃣ 브라우저에서 설치 완료
브라우저에서 http://탄력적IP 접속하면 WP 설치 화면이 나옵니다. 3단계에서 메모한 DB 정보를 입력:
| 항목 | 입력값 |
|---|---|
| 데이터베이스 이름 | wordpress (또는 자기가 정한 이름) |
| 사용자명 | wpuser (또는 자기가 정한 유저) |
| 비밀번호 | (3단계에서 정한 비밀번호) |
| 데이터베이스 호스트 | localhost |
| 테이블 접두어 | wp_ (그대로) |
그 다음 사이트 제목, 관리자 아이디/비밀번호 설정하면 워드프레스 설치 완료!
서버 OS 버전, PHP 버전, MySQL 버전에 따라 위 명령어가 안 먹을 수 있습니다. 에러가 나면 에러 메시지를 그대로 복사해서 AI에게 보여주세요. "ubuntu 24.04에서 워드프레스 설치하는데 이런 에러 나왔어" — AI가 환경에 맞는 해결법을 알려줍니다. 공식 문서는 wordpress.org/documentation을 참고하세요.
서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.
도메인 구매 & Cloudflare SSL
사이트 주소 연결 + HTTPS 적용. 서버 인증서도 설치합니다.
🌐 도메인 구매
도메인은 사이트 주소입니다. 예: myblog.com. 이걸 사야 사람들이 IP 주소 대신 이름으로 접속할 수 있습니다.
Namecheap
namecheap.com → 원하는 도메인 검색 → 구매. .com 연 $9~12.
가비아
gabia.com → 도메인 검색 → 구매. .com 연 ₩15,000~20,000. 한국어 + 전화 상담.
☁️ Cloudflare 설정
cloudflare.com 가입 (무료)
이메일로 가입
"Add a site" → 도메인 입력 → Free 플랜
구매한 도메인을 추가합니다
DNS 레코드
A 레코드 → 이름: @ → 값: 탄력적 IP
A 레코드 → 이름: www → 값: 탄력적 IP
네임서버 변경 ⭐
Cloudflare가 알려주는 네임서버 2개를 도메인 구매처에서 변경. Namecheap: Domain List → 도메인 클릭 → Nameservers → Custom DNS → 2개 입력. 가비아: My가비아 → 도메인 관리 → 네임서버 설정. 반영까지 30분~24시간
SSL/TLS → 모드: "Full (strict)" 선택
SSL 모드는 "보안 수준"입니다. Flexible로 하면 워드프레스에서 무한 새로고침 오류가 납니다. 반드시 Full (strict)로 설정하세요.
🔒 서버에 Origin 인증서 설치 (필수!)
Cloudflare "Full" 모드를 쓰려면 서버에도 인증서가 있어야 합니다. Cloudflare에서 무료로 발급해주는 Origin Certificate를 서버 Apache에 설치합니다.
Cloudflare → SSL/TLS → Origin Server → "Create Certificate"
기본 설정 그대로 → "Create" 클릭
인증서(PEM)와 키(KEY) 복사
텍스트 박스 2개가 나옵니다. 위쪽(Origin Certificate)이 인증서(PEM)이고, 아래쪽(Private Key)이 키(KEY)입니다. 둘 다 각각 복사해서 메모장에 저장하세요. 이 화면을 닫으면 키는 다시 볼 수 없으니 반드시 저장!
AI에게 설치 시키기
아래 프롬프트대로 AI에게 시키면 명령어를 알려줍니다
AI가 안내해주겠지만, 보통 인증서는 /etc/ssl/certs/에, 키는 /etc/ssl/private/에 저장합니다. Apache SSL 설정 파일은 /etc/apache2/sites-available/ 안에 있습니다. 이 단계가 안 되면 사이트 접속 자체가 안 되니, AI가 알려주는 대로 하나씩 따라하세요.
⚠️ 워드프레스 HTTPS 설정
SSL 적용 후 워드프레스에서 주소가 안 맞으면 오류가 날 수 있습니다. wp-config.php를 수정해야 합니다.
FileZilla에서 서버 측 /var/www/html/wp-config.php를 찾아서 우클릭 → "보기/편집"하면 메모장(또는 기본 에디터)으로 열립니다. 수정 후 저장하면 자동으로 서버에 업로드됩니다.
SSL 관련 오류(무한 리다이렉트, 하얀 화면 등)는 거의 다 wp-config.php 설정으로 해결됩니다. AI에게 에러 상황을 설명하면 바로 답을 줍니다.
서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.
서버에 Node.js 설치
서버에도 Node.js를 깔아둡니다. 코드는 나중에 만들고 올립니다.
⚙️ 서버에 Node.js 설치
Node.js는 크롤링 코드와 이미지 처리 코드를 실행하는 프로그램입니다. 워드프레스(PHP)와는 별개로, 데이터 수집 쪽을 담당합니다. Xshell로 서버에 접속한 상태에서 진행합니다.
지금은 Node.js 설치만 해두면 됩니다. 실제 코드는 기획이 끝난 뒤 AI에게 만들어달라고 시킬 겁니다. 코드를 서버에 올리고 실행하는 방법은 이후 챕터에서 다룹니다.
AI와 대화하며 자동화 기획
가장 중요한 단계. 뭘 자동화할지 설계합니다.
🎯 자동화에 잘 맞는 블로그 유형
핵심은 "반복되는 형식 + 객관적 데이터"가 있는 주제입니다. 형식이 정해져 있으니 템플릿화가 되고, 데이터가 객관적이니 AI가 거짓말을 덜 합니다.
🏨 숙소/호텔 추천
Agoda, Booking 크롤링 + 제휴
🗺 여행 액티비티
Klook 크롤링 + 제휴
📚 도서 추천
도서 사이트 크롤링 + 링크프라이스 제휴
🏢 내 업체 홍보
자기 사업 유입용
🤔 데이터를 어디서 가져올 것인가
Case A: 크롤링으로 수집 (대부분 이쪽)
다른 사이트에서 데이터를 자동으로 긁어오는 방식. 이 가이드의 핵심 기술입니다. 아직 크롤링이 뭔지 몰라도 괜찮습니다 — 뒤에서 자세히 다룹니다. 참고할 사이트가 있다면 (예: Agoda에서 호텔 정보) 이 방식입니다.
Case B: 데이터가 이미 있다
엑셀, CSV 등에 내가 직접 정리한 데이터가 있으면 DB에 넣기만 하면 됩니다. 어딘가에서 가져와야 한다면 Case A입니다.
공공데이터(data.go.kr), 한국관광공사 TourAPI, 구글 Places API 등 "데이터 주세요" 하면 보내주는 공식 통로도 있습니다. 크롤링보다 안정적이고 저작권 걱정 없음. 관심 있으면 AI에게 "OO API 사용법 알려줘"라고 물어보세요.
💬 Claude에게 기획 시작하기
CH08~CH17까지의 기획 과정을 Claude와 하나의 대화(채팅방) 안에서 쭉 이어가세요. 대화를 이어갈수록 Claude가 여러분의 블로그 주제, 구조, 데이터를 점점 더 잘 이해하게 됩니다. 중간에 새 대화를 열면 Claude가 앞에서 정한 내용을 모르기 때문에 처음부터 다시 설명해야 합니다. 한 대화 안에서 Claude를 학습시킨다고 생각하세요.
📋 기획할 때 정해야 할 것
① 데이터 소스
크롤링 / 이미 있음
② 글 하나의 범위
"서울 맛집 10곳" 같이 글 단위 결정
③ 수익 모델
애드센스 / 제휴 링크 / 직접 판매
④ 하루 몇 건 발행
2~3건 추천. 너무 많으면 구글이 스팸으로 의심합니다
글 구조 & 템플릿 설계
데이터가 들어갈 자리와, AI가 채울 자리를 구분합니다.
🧱 글 = 두 가지 재료
📊 데이터 부분 (반복됨)
DB에서 꺼내서 자동으로 끼워넣기. 매 글마다 형식이 똑같고 아이템만 바뀜. 예: 이름, 가격, 평점, 이미지, 링크
✍️ AI가 쓰는 부분 (주관적)
Gemini API가 작성. 서론, 각 아이템 한줄 평가, FAQ 등 자연어
📄 글 하나의 구조 예시
목차 데이터
아이템 이름으로 링크 자동 생성
서론 AI
"OO에서 추천하는 N곳을 소개합니다"
아이템 카드 × N개 반복 데이터+AI
이미지 + 정보(DB) + 평가(AI) + 링크(DB)
FAQ AI
자주 묻는 질문 5개
SEO 메타 데이터
제목, 설명, OG태그 자동 생성
자기 블로그 주제에 맞게 바꾸세요. 구조를 잘 모르겠으면 두 번째 예시처럼 AI에게 제안을 맡기는 게 편합니다. Claude가 주제에 맞는 구조를 여러 개 추천해줍니다.
템플릿을 2~3개 만들어서 랜덤으로 발행하면 글마다 다른 느낌이 납니다. 서론 유형, 카드 레이아웃, FAQ 스타일 등을 다양하게 만들어두고 autopost.php에서 랜덤 선택하게 하면 됩니다. 기획할 때 Claude에게 "템플릿을 2~3가지 버전으로 만들고, 발행할 때 랜덤으로 하나 골라 쓰게 하고 싶어"라고 말해두세요. 나중에 .md 기획서에 이 내용이 들어갑니다.
서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.
AI와 같이 DB 설계
데이터를 담을 그릇을 만듭니다.
🗄 DB = 큰 엑셀
테이블 = 시트(탭), 컬럼 = 열, 행 = 데이터 1줄. 템플릿에서 정한 항목이 곧 DB 열이 됩니다.
📐 왜 테이블이 2개 필요한가
쉽게 말해서 "재료 창고"와 "작업 지시서"를 분리하는 겁니다.
① 원천데이터 테이블 (재료 창고)
수집한 데이터 전부 저장. 맛집 이름, 가격, 평점, 이미지 등. 엑셀 시트 1번
② posts 테이블 (작업 지시서)
"이 주제로 글 써" 라는 작업 지시서. 택배 송장처럼 상태(대기중/처리중/완료/에러)를 추적합니다. 엑셀 시트 2번
왜 나누냐면, 재료(데이터)는 여러 글에서 재사용될 수 있고, 발행 상태 관리를 데이터와 섞으면 복잡해지기 때문입니다. AI에게 시키면 알아서 이 구조로 만들어줍니다.
💬 AI와 DB 구조 정하기
DB 구조는 블로그 주제마다 전부 다릅니다. Claude에게 "나는 이런 글을 쓸 건데 DB를 어떻게 만들면 좋을까?"라고 물어보면서 구조를 같이 정하세요.
Chapter 04에서 만든 DB 이름을 넣으면 됩니다. 예: wordpress. 다른 이름으로 만들었으면 그 이름을 넣으세요. 모르겠으면 phpMyAdmin 왼쪽 목록에서 확인하거나 AI에게 물어보세요.
📊 DB는 언제 만드나요?
지금은 "어떤 항목을 저장할지" 구조만 정하는 단계입니다. 실제 테이블을 만드는 건 나중에 .md 기획서를 완성하고 코드를 만들 때 같이 합니다.
phpMyAdmin 접속 (http://도메인/phpmyadmin) → 상단 "SQL" 탭 → AI가 준 SQL문을 복사 붙여넣기 → "실행". 끝!
⭐ posts 테이블 = 모든 작업의 시작점
이 시스템에서 posts 테이블이 모든 것의 중심입니다. 크롤링도, 발행도, 전부 이 테이블의 지시를 보고 움직입니다.
posts에 작업 등록
"이 주제로 글 만들어" 지시서가 등록됨 (status='pending')
크롤러가 posts를 봄
pending 작업의 keyword를 보고 해당 데이터를 크롤링 → 원천데이터에 저장
autopost.php가 posts를 봄
데이터가 준비된 작업을 꺼내서 → 원천데이터로 글 생성 → 워드프레스에 발행
상태 업데이트
성공하면 'published', 실패하면 'error'로 변경
이 로직을 이해하는 게 핵심입니다. 구체적인 구현(keyword 기준, 제목 생성 방식, 데이터 묶는 단위 등)은 블로그마다 다르니 AI에게 자기 상황을 설명하며 설계하세요.
📋 posts에 작업을 넣는 방법
자동: 스크립트가 알아서 등록
데이터가 충분히 모이면 "이 주제로 글 써"라는 작업이 posts에 자동으로 등록되게 할 수 있습니다. 처음에 AI에게 스크립트를 시킬 때 이 로직을 같이 넣으면 됩니다.
수동: AI에게 쿼리 받아서 phpMyAdmin에 복붙
직접 "이 주제로 글 써"를 등록합니다.
서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.
파일 구조 & config 보안
시스템 파일 구성과 비밀번호 보호.
📁 파일 구성
파일은 크게 2곳에 나뉩니다. /var/www/html/은 워드프레스가 설치된 폴더(=WP 폴더)이고, ~/crawler/는 크롤링 스크립트가 있는 폴더입니다. 폴더명은 예시이니 자기 프로젝트에 맞게 바꿔도 됩니다.
| 파일 | 역할 | 위치 |
|---|---|---|
autopost.php | 전체 과정 통제 (메인) | WP 폴더 (/var/www/html/) |
gemini.php | Gemini API 호출 (AI 글 생성) | WP 폴더 |
data.js | 데이터 크롤링 | 크롤러 폴더 (~/crawler/) |
image.js | 이미지 크롤링 & 최적화 | 크롤러 폴더 |
config.js | 설정 (DB비번, API키 등) | 크롤러 폴더 |
slack.php | 슬랙 알림 | WP 폴더 |
package.json | Node.js 패키지 목록 | 크롤러 폴더 |
📝 config.js는 이런 식입니다
config.js 안에는 DB 접속 정보, API 키 등이 들어갑니다. AI가 코드를 만들어줄 때 config.js도 같이 만들어주는데, 대략 이런 구조입니다:
'여기에_DB_비밀번호' 같은 부분을 실제 값으로 교체하면 됩니다. AI가 만들어준 config.js를 열고, 해당하는 곳만 바꾸면 끝.
🔒 config 보안
config 파일을 GitHub에 올리거나 /var/www/html/에 두지 마세요. 비밀번호, API 키 노출 = 과금 폭탄.
autopost.php 같은 PHP 파일은 워드프레스의 wp-config.php를 통해 DB에 접근합니다. wp-config.php에 이미 DB 비밀번호가 들어있으니 별도 config.php를 만들 필요 없습니다. Gemini API 키 등 추가 설정이 필요하면 AI가 코드를 만들 때 config.php를 별도로 만들어줄 수도 있습니다 — 그 경우에도 /var/www/html/ 바깥에 두고 권한을 잠그세요.
Gemini API 키 발급
AI가 글을 쓸 수 있게 API 키를 받습니다.
📋 발급 방법
aistudio.google.com 접속
구글 계정 로그인
"Get API key" → "Create API key"
API 키는 "출입증" 같은 겁니다. 이 키가 있어야 우리 코드가 Gemini에게 글을 시킬 수 있습니다
키 복사 → config 파일에 저장
절대 공개하지 말 것! GitHub에 올리지 말 것!
Gemini 무료 티어로 자동 포스팅 수준은 충분합니다. 모델은 Gemini 2.5 이상을 추천합니다. 키 발급 시 모델 선택이 가능한데, AI에게 "Gemini API에서 2.5 이상 모델 쓰는 코드 알려줘"라고 하면 됩니다.
Puppeteer 소개 & 요소 찾기
브라우저를 자동 조종합니다. 그리고 "어디를 긁을지" AI에게 알려주는 법.
🕷 쉽게 말하면
사람이 브라우저에서 하는 모든 행동(접속, 스크롤, 클릭, 복사)을 코드가 자동으로 수행합니다. 여러분이 매일 사이트에 들어가서 데이터를 하나하나 복사하는 대신, 코드가 대신 해줍니다. 눈에 안 보이는 크롬을 서버에서 돌리는 겁니다. 이걸 가능하게 해주는 도구가 Puppeteer(퍼페티어)이고, Chapter 07에서 설치한 Node.js 위에서 돌아갑니다. 앞으로 프롬프트에서 "Puppeteer로 크롤링"이라고 쓰는 건 이 도구를 말하는 겁니다.
이 챕터와 다음 챕터를 건너뛰고 Chapter 15(이미지)로 가세요.
🛡 사람처럼 행동하기
Stealth 플러그인
"나는 로봇 아님" 위장
랜덤 딜레이
2~5초 쉬어서 사람처럼
User-Agent 교체
매번 다른 브라우저인 척
⭐ 크롤링의 핵심: "어디를 긁을지" AI에게 알려주기
크롤링은 AI가 코드를 만들어주지만, "이 사이트에서 어떤 부분을 가져와야 하는지"는 여러분이 알려줘야 합니다. 2가지 방법이 있습니다.
방법 1: F12 개발자 도구로 요소 복사 (추천)
크롬(Chrome) 브라우저에서 진행합니다. 다른 브라우저(Edge, Safari 등)에서도 비슷하지만, 이 가이드는 크롬 기준으로 설명합니다. 가져올 데이터 항목(이름, 가격, 평점, 이미지 등)을 하나씩 찾아서 각각 복사합니다.
📋 준비: 가져올 항목 먼저 정하기
메모장을 열고 가져올 항목을 적어두세요. 예:
① 호텔 이름 ② 가격 ③ 평점 ④ 이미지 URL ⑤ 상세 링크
이제 이 항목을 하나씩 아래 과정으로 찾습니다.
🔍 요소 찾기 & 복사 (항목마다 반복)
호텔 이름: #list > div > h3 > a다음 항목(가격)도 같은 방법으로: 커서 아이콘 클릭 → 가격 부분 클릭 → 오른쪽에서 우클릭 → Copy element → 메모장에 붙여넣기.
이걸 가져올 항목 수만큼 반복하면 메모장에 이런 식으로 모입니다:
이걸 그대로 AI에게 보여주면 됩니다.
AI에게 "크롬 F12 개발자 도구에서 요소 선택하고 Copy element(요소 복사) 하는 방법을 단계별로 자세하게 알려줘"라고 물어보세요. 또는 방법 2(페이지 소스 통째로 복사)를 쓰면 이 과정이 필요 없습니다.
방법 2: 페이지 소스 전체 복사
핵심은 "이 사이트에서 이 부분을 가져와야 해"를 AI에게 정확히 보여주는 겁니다. 복사해서 보여주기만 하면 AI가 알아서 코드를 만들어줍니다.
이 챕터는 "어디를 긁을지 찾는 법"이고, 다음 챕터는 "찾은 걸 AI에게 어떻게 전달하는지"입니다. 여기서 메모장에 정리해둔 내용을 다음 챕터에서 그대로 씁니다.
데이터 확보
글의 재료를 준비합니다.
크롤링으로 데이터 확보
가장 추천하는 방법입니다. 이미 정보가 잘 정리된 사이트를 크롤링하면 데이터와 이미지를 한 번에 자동으로 확보할 수 있습니다. 크롤링 방식은 2가지가 있습니다.
방식 1: 요소 지정 크롤링
앞 챕터에서 F12로 찾아둔 셀렉터로 항목별로 쪼개서 가져옵니다. 정확하고 깔끔합니다.
방식 2: 통째로 가져와서 AI 정리
페이지를 통째로 긁어온 뒤 Gemini에게 정리시키는 방식입니다. 셀렉터를 안 찾아도 돼서 초보자에게 더 쉽습니다.
장점: 셀렉터 안 찾아도 됨, 사이트 구조가 바뀌어도 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) 컬럼도 있어야 합니다.
📦 코드는 나중에 — 지금은 조건만 정합니다
실제 크롤링 코드 생성과 서버 배포는 .md 기획서를 완성한 뒤에 합니다. 코드를 받으면 이렇게 배포합니다 — 참고만 해두세요:
1. AI에게 코드 받아서 내 PC에 저장 → 2. FileZilla로 서버에 올림 → 3. Xshell에서 cd ~/crawler && npm install (패키지 설치) → 4. node data.js 실행 → 에러 나면 AI에게 물어보기 → 수정 → 다시 올리기 → 다시 실행. 이 반복이 바이브코딩의 기본 루프입니다. 5~10번 반복하면 돌아갑니다.
서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.
이미지 확보 & 최적화
이미지도 자동으로 가져오고, 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 읽어서 파일명을 자동 생성
📸 이미지 확보 방법
데이터 크롤링할 때 이미지도 같이
데이터를 긁어올 때 이미지 URL도 같이 수집 → 다운로드 → Sharp로 WebP 변환 → DB 업데이트. 하나의 스크립트에서 전부 자동으로 합니다.
무료 이미지 API로 자동 매칭
크롤링 사이트에 이미지가 없거나 쓸 수 없을 때, 무료 이미지 API(Unsplash, Pexels 등)로 자동으로 가져옵니다. 라이선스 걱정 없음. 이런 사이트들은 API(자동 요청 통로)를 제공해서 스크립트가 자동으로 검색 → 다운로드할 수 있습니다.
DB에 "롯데호텔 서울"이라고 있으면 그대로 검색하면 엉뚱한 사진이 나올 수 있습니다. 그래서 Gemini에게 먼저 검색어를 추천받습니다. "롯데호텔 서울" → Gemini가 "luxury hotel seoul lobby" 같은 영문 검색어를 만들어줌 → 그걸로 이미지 API 검색. 이러면 한국어 → 영문 변환도 자동이고, 이미지에 맞는 검색어가 나옵니다.
DB에서 image_file이 비어있는 아이템 가져오기
아직 이미지가 없는 데이터만 대상
Gemini에게 영문 검색어 추천받기
"롯데호텔 서울" → "luxury hotel seoul exterior"
이미지 API로 검색 & 다운로드
Unsplash, Pexels 등에서 첫 번째 결과 가져오기
WebP 변환 + DB 업데이트
Sharp로 리사이즈 → SEO 파일명 → 서버 저장 → DB 기록
어떤 방법이든 스크립트가 하는 일은 같습니다:
이미지 가져오기 → WebP 변환 → SEO 파일명으로 저장 → DB 업데이트
이 4단계가 한 스크립트 안에서 자동으로 돌아가니까 싱크가 깨질 일이 없습니다.
직접 찍은 사진이나 이미 가지고 있는 이미지를 사용하는 것도 가능합니다. 다만 반자동입니다 — 이미지 수집은 직접 해야 하고, WebP 변환과 DB 업데이트만 자동화됩니다. 엑셀에 이미지 파일명을 적어두고 폴더에 넣어두면 스크립트가 변환·저장·DB 업데이트를 처리합니다. 자세한 방법은 Claude에게 "이미 가지고 있는 이미지를 자동 발행 시스템에 연결하고 싶어"라고 물어보세요.
서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.
AI 콘텐츠 생성
데이터를 사람이 읽는 글로 바꿉니다.
🧠 핵심: "상상해서 써" ❌ → "이 데이터 기반으로 써" ✅
실제 데이터(가격, 평점 등)를 프롬프트에 넣으면 AI가 거짓말(할루시네이션)을 훨씬 덜 합니다.
"데이터에 없는 내용은 절대 만들지 마" — 이 한 줄을 프롬프트에 꼭 넣으세요.
📝 프롬프트 예시
💡 프롬프트 팁
AI에게 글을 시킬 때 가장 중요한 건 "JSON으로 출력해줘"입니다. AI가 자유롭게 글을 쓰면 형식이 매번 달라서 코드가 처리하기 어렵습니다. JSON 형태로 받으면 코드가 정확히 파싱할 수 있습니다. 이건 기획서에 AI 프롬프트를 넣을 때 같이 정해두면 됩니다.
Gemini API에 보내는 프롬프트는 영어로 작성해야 품질이 훨씬 좋습니다. 한국어로 써도 작동하지만, 영어 프롬프트가 더 정확하고 할루시네이션도 줄어듭니다. Claude에게 "이 프롬프트를 영어로 번역해서 다듬어줘"라고 하면 됩니다. 출력 결과만 한국어로 받으면 됩니다.
🔍 AI 탐지 우회
Smodin(smodin.io) 같은 도구로 테스트하며 "사람이 쓴 것"으로 판정 나올 때까지 프롬프트를 다듬으세요. 데이터 기반 + 객관적 톤이면 대부분 통과합니다.
워드프레스 자동 발행
글이 자동으로 올라가게. 중복 방지 + 에러 복구까지.
🚀 자동 발행이 하는 일 (쉽게 말하면)
"작업 지시서(posts 테이블)에서 할 일 하나 꺼냄 → 데이터 꺼냄 → AI가 글 씀 → 워드프레스에 올림 → 완료 표시" — 이걸 코드가 자동으로 합니다.
💬 자동 발행 규칙 정하기
autopost.php가 할 일을 Claude와 대화하며 정합니다. 아래 항목들이 .md 기획서에 들어갈 자동 발행 규칙입니다.
🔄 중복 포스팅 방지
같은 글을 두 번 올리면 검색엔진이 중복 콘텐츠로 판단합니다. 위 프롬프트에 이미 포함되어 있지만, 핵심은 2가지입니다:
slug 중복 체크
같은 URL 주소의 글이 있으면 삭제 후 새로 올림
last_posted_at 기록
사용된 데이터에 시간 기록 → 다음에 같은 데이터 안 쓰임
🛡 에러 자동 복구 (recovery.php)
에러난 작업을 자동으로 다시 시도하는 별도 스크립트입니다.
📱 슬랙 모니터링
위에서 정한 자동 발행, 에러 복구 규칙에 모두 "슬랙으로 알림"이 들어가 있습니다. 이 알림을 실제로 받으려면 슬랙을 연결해야 합니다.
slack.com 가입 → 워크스페이스 생성 (무료)
이메일로 가입
앱 → "Incoming Webhooks" 추가
슬랙 앱 디렉토리에서 검색 → 설치 → 채널 선택
Webhook URL 복사 → config에 저장
이 URL로 메시지 보내면 슬랙에 알림
AI에게 slack.php 만들어달라 하기
아래 프롬프트 사용
아래에서 .md 기획서를 만들 때 슬랙 알림 규칙도 같이 넣으면, 코드 생성 시 slack.php가 자동으로 만들어집니다. 이미 코드에 포함되어 있다면 Webhook URL만 config에 넣으면 됩니다.
📄 기획서(.md) 만들기 & 코드 생성
여기까지 챕터를 따라오면서 정한 내용들 — 블로그 주제, 글 구조, DB 설계, 파일 구조, Gemini API, 크롤링 대상, 이미지 규칙, AI 프롬프트 — 이것들이 전부 기획입니다.
이제 이 기획을 하나의 .md 파일로 정리하고, AI에게 코드를 만들어달라고 시킵니다.
1단계: Claude에게 기획서 정리 시키기
2단계: .md 기획서로 코드 생성
.md 파일이 완성되면, 그걸 들고 AI에게 코드를 시킵니다. Claude(claude.ai)에서 바로 할 수 있고, Claude Code(터미널 도구)를 써도 됩니다. 파일이 많지 않아서 claude.ai에서도 충분합니다.
코드의 품질은 기획서의 품질에 달려있습니다. 기획서에 빠진 내용이 있으면 코드에도 빠집니다. 앞 챕터에서 다룬 내용(크롤링 조건, 이미지 싱크, 중복 방지, 에러 처리 등)이 전부 .md에 들어가 있는지 꼭 확인하세요.
여기까지가 기획 단계입니다. AI가 만들어준 코드를 받았으면, 다음 챕터부터는 코드를 서버에 올리고, 설정하고, 테스트하고, 자동화하는 단계입니다.
서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.
서버 배포 & 설정
코드를 서버에 올리고, DB와 설정 파일을 세팅합니다.
🎯 이 챕터에서 할 일
AI가 만들어준 코드를 받았으면, 이제 실제로 서버에 올리고 돌아가게 세팅합니다.
DB 테이블 생성
phpMyAdmin에서 SQL 실행
config 파일 세팅
DB 비번, API 키 입력
파일 업로드
FileZilla로 서버에 올리기
패키지 설치
npm install
첫 실행 & 에러 수정
처음엔 100% 에러 납니다. 에러 메시지를 AI에게 보여주고 고치는 반복 — 이게 바이브코딩입니다
1단계: DB 테이블 생성
기획서(.md)에 포함된 SQL문을 phpMyAdmin에서 실행합니다.
테이블을 만든 뒤, 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 파일에는 DB 비밀번호와 API 키 같은 민감한 정보가 들어있습니다. 일기장을 서랍에 넣고 잠그는 것처럼, 서버에 올린 뒤 반드시 권한을 잠가야 합니다.
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단계: 패키지 설치
5단계: 첫 실행 & 에러 수정
여기서부터가 바이브코딩의 핵심 루프입니다. 한 번에 돌아가는 경우는 거의 없습니다. 5~10번 반복하면 됩니다.
반드시 이 순서대로 테스트하세요: ① data.js (데이터 수집) → phpMyAdmin에서 데이터 들어갔는지 확인 → ② image.js (이미지 처리) → 서버에 이미지 생겼는지 확인 → ③ autopost.php (발행). 앞 단계가 성공해야 다음 단계가 돌아갑니다. 데이터가 없으면 발행할 수 없고, 이미지가 없으면 글에 이미지가 빠집니다.
실행 → 에러 → AI에게 물어보기 → 코드 수정 → FileZilla로 다시 올리기 → 다시 실행. 이 루프를 반복하면 됩니다. 처음엔 답답해도 점점 에러가 줄어듭니다.
서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.
테스트 & 디버깅
자동화 전에 직접 돌려봅니다. 1건은 너무 적습니다.
📋 테스트 순서
여기까지 오셨다면 거의 다 왔습니다! 1건만 테스트하면 운 좋게 성공할 수 있습니다. 10건씩 돌려봐야 에러가 나옵니다. 데이터가 부족하거나, 이미지가 없거나, API 한도에 걸리는 등 실전에서 나올 문제를 미리 발견해야 합니다.
데이터 수집 10건 테스트
node data.js → phpMyAdmin에서 10건 들어갔는지 확인
이미지 처리 10건 테스트
node image.js → 서버에 webp 파일 10개 생겼는지 확인 + DB에 파일명 맞는지
발행 1건 테스트
php autopost.php → WP에서 글 확인. 이미지 나오는지, 링크 맞는지, SEO 들어갔는지
슬랙 알림 확인
핸드폰으로 알림 오는지
포스팅 테스트 시 "데이터가 부족해서 글 생성 실패"가 나올 수 있습니다. 이건 정상입니다. 데이터 10건을 먼저 넣고 나서 발행 테스트하세요. 그래도 안 되면 AI에게 에러를 보여주세요.
🧪 테스트할 때 AI에게
🚨 자주 만나는 에러
| 에러 | 쉽게 말하면 | 해결 |
|---|---|---|
| Permission denied | 파일 권한 부족 | sudo chown / chmod |
| ECONNREFUSED | DB 연결 실패 | config 비번/호스트 확인 |
| Puppeteer crash | 메모리 부족 | 서버 메모리 확인, 크롬 의존성 설치 |
| 429 Too Many | API 한도 초과 | 딜레이 추가 |
| wp_insert_post 실패 | WP 경로/권한 문제 | wp-load.php 경로 확인 |
| 데이터 부족 | 아이템이 너무 적음 | 데이터 더 수집 후 재시도 |
에러 메시지를 그대로 복사 → AI에게 보여주기 → "이 에러 어떻게 해?" — 10번 중 9번 해결됩니다. 안 되면 로그 전체를 보여주세요.
서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.
SEO 최적화
먼저 RankMath 설정, 그 다음 코드 추가.
1단계: RankMath 플러그인 설치 & 설정 마법사
SEO의 기본은 RankMath 플러그인이 해줍니다. 먼저 이걸 깔고 설정 마법사를 완료하세요.
RankMath를 설치하고 설정 마법사만 완료하면 기본적인 SEO(메타태그, 사이트맵, 구조화 데이터)는 자동 적용됩니다. 아래는 "추가로" 더 하면 좋은 것들입니다.
RankMath의 세부 설정이나 워드프레스 자체의 SEO 설정(퍼머링크, 카테고리 구조 등)은 이 가이드 범위를 넘어갑니다. 워드프레스 SEO는 별도로 학습하시는 것을 추천드립니다. AI에게 "RankMath 블로그 최적화 설정 알려줘"라고 물어보면 자세히 안내받을 수 있습니다.
2단계: 자동 발행 시 SEO 데이터 자동 주입
autopost.php에서 글을 올릴 때, RankMath 메타 필드에 데이터를 같이 넣는 겁니다.
3단계: OG태그 & 스키마 (functions.php)
SNS에 공유 시 제목/이미지가 예쁘게 나오려면 OG태그가 필요합니다. 이건 워드프레스 테마 파일에 코드를 추가합니다.
RankMath = 플러그인 설치 + 설정만 (기본 SEO)
autopost.php = 자동 발행 시 SEO 데이터 자동 주입 (코드 추가)
functions.php = OG태그, 스키마 등 추가 최적화 (코드 추가)
서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.
크론탭 자동화
시간표 자동 실행 + 권한 설정.
⏰ 크론탭 = 알람 시계
"매일 몇 시에 이 파일 실행해" 설정하면 서버가 알아서 합니다.
📋 크론탭 설정
아래는 예시입니다. 시간, 파일명, 경로 등은 자기 프로젝트에 맞게 바꾸세요.
위 시간, 파일명, 경로는 전부 예시입니다. AI에게 자기 상황을 설명하면서 크론탭을 설정하세요.
chown/chmod를 주기적으로 안 돌리면 WP 업데이트, 자동 발행 등으로 파일 권한이 꼬여서 크롤링이나 포스팅이 갑자기 안 됩니다. 이거 때문에 삽질 많이 합니다.
📂 .sh 파일이란?
크론탭에서 실행할 명령이 길어지면 .sh 파일(쉘 스크립트)로 따로 만들어서 실행합니다. .sh 파일은 명령어를 순서대로 적어둔 메모장 같은 겁니다.
chmod +x ~/scripts/crawl.sh0 14 * * * ~/scripts/crawl.sh크론탭에 긴 명령어를 직접 쓰면 보기도 어렵고 수정도 불편합니다. .sh 파일로 빼두면 FileZilla에서 편하게 수정할 수 있고, 크론탭은 깔끔하게 유지됩니다.
서버 환경, 설정, 데이터에 따라 결과가 다를 수 있습니다. 에러가 나거나 예상과 다르면 AI에게 상황을 설명하고 함께 해결해 나가세요. 그 과정 자체가 실력이 됩니다.
글 꾸미기 (CSS)
발행된 글을 예쁘게.
🎨 AI에게 CSS 받아서 적용
CSS를 받았으면:
유지보수 & 비용 정리
안정적으로 유지하고, 비용을 파악합니다.
🔧 정기 유지보수
서버 업데이트
월 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/월 |
월 $10~20으로 매일 자동 발행. 애드센스/제휴 수익이 이걸 넘기면 순수익.
🎉 여기까지 읽으셨다면
전체 시스템의 그림이 보이실 겁니다.
코드는 AI에게 시키세요.
여러분이 알아야 할 건 "무엇을, 왜, 어떤 순서로"입니다.
그게 바이브코딩입니다.
🛠 너무 어려우시면 저에게 맡겨주세요
이 가이드를 구매하신 분들께는 30% 할인해서
맞춤형 자동화 시스템 구축을 도와드리겠습니다.
블로그 주제 선정부터 서버 세팅, 크롤링, 자동 발행까지 — 1:1로 세팅해드립니다.
🎓 영상 강의 제작 신청
20명 이상 신청해주시면 이 가이드의 전 과정을
영상 강의로 제작해서 제공해드리겠습니다.
이 가이드를 구매하신 분들께는 50% 할인해서 제공합니다.