Blog

Build Log

정적 블로그로 zozindev.com 운영하기

zozindev.com은 처음엔 프로젝트 링크 모음에 가까웠다. 근데 AdSense 심사랑 장기 운영을 생각하면 그 정도로는 빈약하다. 검색 엔진이 읽을 자체 콘텐츠가 있어야 하고, 방문자도 여기가 뭐 하는 곳인지 바로 알아야 한다.

그래서 지금은 새 프레임워크 없이 정적 HTML로 시작한다. 파일 수 적고, 배포 단순하고, 루트 도메인을 블로그 겸 포트폴리오 허브로 키우는 데 필요한 것만 직접 잡을 수 있음.

처음부터 큰 블로그 시스템을 만들 생각은 없었다. 중요한 건 일단 내 도메인에 내가 만든 것들을 설명하는 페이지가 있는지였다. 프로젝트를 만들고도 링크만 흩어져 있으면 나중에 정리하기 어렵다. GitHub 저장소, 배포 주소, 제작 기록이 따로 놀면 포트폴리오로도 약하다.

그래서 zozindev.com은 단순한 랜딩 페이지가 아니라, 프로젝트와 글이 같이 쌓이는 루트 허브로 잡았다. 앱은 서브도메인에서 돌리고, 루트에는 설명과 기록을 남기는 구조다.

처음 정한 구조

이 방식은 손으로 관리해야 한다. 귀찮긴 한데 초기 규모에서는 장점도 있다. title, description, canonical, sitemap을 직접 보게 되니까 구조가 대충 넘어가지 않는다.

초기에는 직접 HTML 파일을 만들었다. index.html, blog/index.html, 개별 글 HTML, sitemap까지 손으로 관리했다. 작은 사이트라면 이 방식이 제일 빠르다. 의존성도 없고, 빌드 설정도 없고, 파일을 열어보면 바로 구조가 보인다.

하지만 글이 5개 정도만 되어도 반복 작업이 보였다. 글을 하나 추가할 때마다 목록 페이지, 루트 최근 글, sitemap, canonical, OG meta를 같이 신경 써야 했다. 한 번 누락되면 검색 엔진이나 공유 화면에서 이상하게 보일 수 있다. 이때부터는 정적 사이트 생성기가 필요해진다.

운영 기준

루트는 최신 글과 주요 프로젝트를 보여주는 허브로 둔다. 블로그 글은 제작 과정, 삽질, 운영 기록 위주로 쓴다. 프로젝트 페이지는 외부 앱으로 냅다 보내기 전에 이게 뭔지 설명하는 중간 지점이다.

블로그 글은 완성된 결과만 올리는 공간으로 쓰지 않을 생각이다. 만들다가 막힌 것, 구조를 바꾼 이유, 배포하면서 확인한 것들을 적어둔다. 나중에 같은 문제를 다시 만났을 때 내가 찾아볼 수 있어야 한다.

프로젝트 페이지는 앱 소개에 가깝다. WTHeat이나 TEXT_TO_IMG 같은 도구가 무엇을 하는지, 왜 만들었는지, 실제 배포 주소가 어디인지 한 곳에서 보여준다. 외부 앱으로 바로 보내기 전에 최소한의 맥락을 주는 페이지다.

AdSense를 생각한 이유

AdSense는 광고 코드를 넣는다고 끝나는 게 아니다. 루트 페이지가 외부 링크만 있는 상태면 사이트 목적이 약해 보인다. 그래서 블로그 글과 프로젝트 상세 페이지를 같이 만들었다. 검색 엔진과 방문자가 읽을 수 있는 자체 콘텐츠가 있어야 한다.

개인 사이트라도 기본 파일은 필요하다. robots.txt, sitemap.xml, ads.txt, Privacy Policy가 있어야 하고, 각 페이지의 title과 description도 중복되지 않게 잡아야 한다. 이런 것들은 나중에 몰아서 하려고 하면 더 귀찮다.

현재 방향

지금은 Astro와 Markdown 기반으로 바꿨다. 글 원본은 Markdown으로 쓰고, 빌드할 때 정적 HTML이 생성된다. 처음에는 HTML 직접 관리로 시작했지만, 계속 운영할 생각이면 이 구조가 더 낫다.

앞으로 새 프로젝트를 만들면 프로젝트 상세 페이지 하나, 제작 기록 글 하나를 같이 남길 계획이다. 그렇게 쌓이면 루트 도메인이 단순 링크 모음이 아니라 실제 개인 개발 기록으로 작동한다.