2P by GN⁺ 7시간전 | ★ favorite | 댓글 1개
  • Jekyll, Ghost, WordPress 없이 직접 블로그 제작한 사례임
  • 기본 요구 조건은 소유한 도메인 사용, 정적 사이트 생성, SEO 준수, 간편한 게시글 추가 등임
  • 핵심 구성은 template.htmlrender.py 스크립트, 마크다운 기반 글 작성만으로 모든 페이지를 자동 렌더링
  • markdown2 파이썬 라이브러리를 활용해 마크다운 → HTML 변환 및 페이지 생성을 자동화함
  • SEO현대 웹 표준을 준수하면서도 간단하게 콘텐츠를 추가할 수 있는 구조를 강조함

블로그 요구 조건

  • 기존 소유 도메인을 사용할 것
  • 현대적 웹 표준 및 SEO 친화성 유지
  • 글 추가가 매우 쉬울 것
  • 모든 페이지는 정적으로 생성될 것

구현 절차 요약

  • template.html 파일 작성 → 기본 HTML 레이아웃 구성
  • pip install markdown2 명령어로 마크다운 렌더링 도구 설치
  • O1에게 렌더링용 Python 스크립트(render.py) 요청
  • posts/ 폴더 안에 eng.md 형태로 포스트 작성
  • render.py 실행하여 HTML 변환 및 출력 폴더 생성

핵심 HTML 템플릿 (template.html)

  • HTML 구조는 심플하고 미니멀하며, {{ content }} 자리에 마크다운 렌더링 결과 삽입
  • CSS는 system-ui 기반 글꼴과 적응형 패딩, color-scheme 설정 등으로 가독성 확보

핵심 Python 렌더링 스크립트 (render.py)

  • markdown2를 활용하여 각 마크다운 포스트를 HTML로 변환
  • 변환 시 <img> 경로를 /posts/{post_code}/로 자동 대체
  • HTML 제목은 마크다운의 # 헤더에서 추출
  • index.htmlgreetings.md + 각 포스트의 제목 목록으로 구성
  • 결과물은 ./blog/ 폴더에 .html로 저장됨
Hacker News 의견
  • 블로그를 시작할 때 SSG를 사용했지만, 결국 Wordpress로 전환하여 더 자유로워졌음

    • 글을 쓰는 데 방해가 되는 도구는 피하는 것이 중요함
    • 글쓰기에 집중하기 위해 미루는 것을 피해야 함
  • 블로그로서의 자격을 갖추기 위해 필요한 두 가지 요소

    • 게시물을 날짜 순으로 정렬하고 날짜를 표시해야 함
    • RSS 피드가 필요함
  • 독립적인 웹사이트에 대한 애정

    • 25년 전 ASP로 시작한 웹사이트가 지금은 Common Lisp로 운영됨
    • 최소 기능의 웹사이트로 시작하여 점차 기능을 추가함
    • 새로운 아이디어는 항상 유혹적이지만, 프로젝트가 통제 불능 상태로 커지지 않도록 주의함
  • 브라우저에서 텍스트/마크다운과 텍스트/제미니에 대한 네이티브 지원을 원함

    • 다른 형식 지원은 출판 장벽을 낮추고 사용자에게 제어권을 돌려줌
  • "Minimum viable blog" 문자열이 포스트 제목으로 대체되는 버그에 대한 지적

  • 단순한 HTML 페이지로 블로그를 운영했지만, 이제는 Astro를 사용하여 더 발전된 사이트를 운영함

    • Astro는 콘텐츠 중심 사이트에 최적화된 플랫폼임
  • Bun JS와 HTML을 JS 문자열로 사용하는 실험

    • IntelliJ IDE가 HTML을 감지하고 포맷팅 및 하이라이팅을 지원함
  • 15년간 최소한의 블로그를 실험하며 배운 몇 가지 트릭

    • JSX가 서버 사이드 문자열 빌더로 유용함
    • GH Pages가 Jekyll보다 쉽게 사용할 수 있음
    • highlight.js가 코드 하이라이팅에 여전히 유용함
  • Hugo/Zola와 Cloudflare Pages를 사용한 표준 정적 블로깅 프레임워크의 용이함

    • Hugo Blog Awesome 테마 사용
    • 페이지 크기를 512kb 이하로 유지함
  • 오래된 블로그를 부활시키는 과정에서 Hexo의 불편함을 경험함

    • 테마가 제대로 작동하지 않아 자체 테마를 개발할까 고민 중임
    • 복잡성이 증가할 수 있지만, 문제를 해결하려고 노력 중임