craftrun

만들기

워드프레스 없이 워드프레스 만들기

호스팅비도 서버도 없이 블로그를 세웠습니다. 워드프레스가 주던 기능 중 실제로 필요한 것만 골라 직접 만든 과정과, 만들지 않기로 한 것들.

블로그를 하나 세웠습니다. 워드프레스를 쓰지 않았고, 서버도 없고, 매달 나가는 돈도 없습니다. 지금 읽고 있는 이 사이트가 그것입니다.

워드프레스가 나쁘다는 이야기가 아닙니다. 다만 제가 워드프레스에서 실제로 원했던 것은 "글 하나 쓰면 나머지가 알아서 되는 것"이었지, 서버가 아니었습니다. 그 부분만 가져오고 나머지는 버리면 어떻게 되는지 해봤습니다.

워드프레스가 딸려 오는 것들

워드프레스를 쓰면 글쓰기 말고도 따라오는 것이 있습니다.

이것들은 글을 쓰는 데 필요한 게 아니라 워드프레스를 굴리는 데 필요한 것입니다. 글이 열 편이든 천 편이든 이 부담은 똑같이 집니다.

정적 사이트는 이 목록이 통째로 사라집니다. 결과물이 그냥 HTML 파일이라 서버가 없고, 서버가 없으니 털릴 것도, 느려질 것도, 매달 낼 것도 없습니다.

그럼 무엇을 잃는가

여기가 중요합니다. 워드프레스를 버리면 워드프레스가 기본으로 주던 것들도 같이 사라집니다. 목차, 카테고리, 태그, 검색, RSS, 사이트맵, 관련 글, 페이지네이션. 이걸 하나도 못 만들면 "정적 사이트"가 아니라 그냥 "기능 없는 사이트"가 됩니다.

그래서 목록을 만들었습니다. 워드프레스가 주던 것 중 콘텐츠 사이트에 실제로 필요한 것만 골랐습니다.

만든 것
목차긴 글은 목차 없이 안 읽힌다
카테고리·태그 아카이브한 주제를 몰아 읽는 길
페이지네이션글이 쌓이면 첫 화면이 무너진다
사이트 내 검색찾아온 사람이 두 번째 글로 가는 길
RSS검색엔진에 의존하지 않는 유일한 유입 경로
사이트맵·robots색인의 출발점
이전/다음 글·관련 글한 편 읽고 나가지 않게
구조화 데이터검색결과에 날짜와 종류가 붙게

반대로 만들지 않기로 한 것도 정했습니다. 댓글, 회원가입, 방문자 통계 위젯, 인기글 랭킹. 전부 있으면 좋아 보이지만 서버나 DB를 다시 불러오는 것들이고, 글 열 편짜리 사이트에는 없어도 아무 일도 일어나지 않습니다. 필요해지면 그때 붙이면 됩니다.

글 한 편을 올리는 법

지금 이 사이트에 글을 올리는 절차는 이게 전부입니다. 파일 하나를 만듭니다.

---
title: 제목
description: 검색결과에 뜨는 설명
date: 2026-08-12
category: 만들기
tags: 워드프레스, 정적사이트
---

본문을 마크다운으로 씁니다. 표도 되고 목록도 됩니다.

그리고 빌드를 한 번 돌립니다. 그러면 목차가 생기고, 카테고리 페이지가 갱신되고, 검색 색인에 들어가고, RSS와 사이트맵에 추가되고, 이전 글과 서로 링크가 걸립니다. 손으로 할 일이 없습니다.

워드프레스에서 원했던 게 정확히 이것이었습니다.

만들면서 내린 결정들

기능을 구현하는 방법은 여러 가지인데, 정적 사이트라서 갈린 지점들이 있었습니다.

목차는 빌드할 때 만듭니다. 자바스크립트로 만들 수도 있지만 그러면 검색엔진이 목차를 못 보고, 스크립트가 막힌 환경에서는 아예 사라집니다. 빌드 시점에 소제목을 훑어 HTML로 박아두면 그런 일이 없습니다.

검색은 브라우저에서 합니다. 서버가 없으니까요. 글 목록을 작은 JSON으로 만들어 두고 브라우저가 걸러냅니다. 글이 수백 편이 되기 전까지는 이걸로 충분하고, 검색 하나 때문에 백엔드를 들이면 "서버 없는 사이트"라는 이점을 통째로 버리게 됩니다. 한글 입력은 조합 중에 낱자로 튀기 때문에, 조합이 끝난 뒤에만 검색하도록 따로 처리했습니다.

주소는 디렉터리 방식으로 냈습니다. 글제목.html 대신 글제목/index.html로 냅니다. 확장자를 생략해 주는 건 호스트마다 다른데, 이렇게 하면 어디에 올려도 같은 주소로 동작하고 로컬에서 확인할 때도 실제와 같습니다.

광고 태그는 조건부로 나갑니다. 설정에 광고 ID가 비어 있으면 관련 태그가 아예 출력되지 않습니다. 승인도 받기 전에 광고 코드를 심어두면 빈 자리만 남기 때문입니다.

얇은 글을 막는 장치

기능보다 중요할지도 모르는 게 하나 있습니다. 발행 전에 원고를 검사합니다.

마지막 것이 핵심입니다. 다른 사이트를 운영하면서 값만 다르고 구조가 똑같은 페이지를 수십 장 만든 적이 있는데, 본문 길이가 전부 동일했고 결과적으로 색인 밖에 있었습니다. 검색엔진은 그런 페이지를 대표 몇 장만 남기고 나머지를 버립니다.

그 경험 때문에 하한선을 처음부터 넣었습니다. 실제로 이 글을 준비하면서 시험용으로 짧은 글을 몇 개 만들었더니 바로 막혔습니다. 의도한 동작입니다.

얼마나 드는가

이 이야기의 핵심입니다. 지금 이 사이트의 운영비는 0원이고, 도메인을 사더라도 연 1만원대에서 끝납니다.

워드프레스이 사이트
호스팅매달 나감0원 (Cloudflare Pages 무료)
저장소0원 (GitHub 비공개)
SSL 인증서보통 포함/별도0원 (자동 발급)
도메인연 1~2만원연 1~2만원 (같음)
플러그인유료가 섞임0원 (필요한 것만 직접)
1년 합계호스팅비 × 12 + 도메인도메인 값이 전부

차이는 매달 나가느냐 아니냐입니다. 워드프레스는 글이 한 편이든 천 편이든 서버가 돌아가는 동안 계속 나갑니다. 정적 사이트는 방문자가 늘어도 요금이 늘지 않습니다. 파일을 내려주는 것뿐이니까요.

주의할 점도 있습니다. 싼 도메인은 함정이 있습니다. 첫해 1,400원짜리 확장자가 갱신할 때 몇만 원이 되는 경우가 흔합니다. 등록가와 갱신가가 같은 곳에서 .com을 사는 편이 결국 쌉니다.

그리고 도메인을 살 계획이라면 일찍 옮기는 편이 낫습니다. 검색 색인이 쌓인 뒤에 주소를 바꾸면 그동안 쌓은 것을 상당 부분 다시 시작해야 합니다. 저는 글이 열 편쯤 쌓이는 시점을 기준으로 잡았습니다. 그 전까지는 pages.dev가 주는 무료 주소로 갑니다 — 검색엔진이 이런 주소를 독립된 사이트로 취급하기 때문에 불이익도 없습니다.

워드프레스를 쓰는 게 나은 경우

정직하게 적자면, 이 방식이 항상 낫지는 않습니다.

반대로 혼자 쓰고, 글이 곧 자산이고, 매달 나가는 돈을 없애고 싶다면 정적 쪽이 유리합니다. 저는 후자였습니다.

다음에 쓸 것

이 사이트는 만든 이야기보다 굴린 이야기를 쓰려고 만들었습니다. 만드는 방법은 이미 많은데, 만들고 나서 무슨 일이 벌어지는지 적은 글은 잘 없더군요.

당장 쓸 것들이 밀려 있습니다. 사이트맵·내부링크·빌드 검사가 전부 통과했는데 라이브에서만 404가 났던 일, 검색엔진에 수백 장을 올렸는데 색인은 열몇 장에 그친 이유를 추적한 기록, 네이버에서 특정 검색어는 개인 사이트가 1페이지에 아예 못 들어가는 구조.

전부 직접 겪은 것이고, 숫자가 남아 있습니다.

워드프레스정적사이트Cloudflare Pages발행기