은퇴 후 블로그를 시작하며 마주친 난제

작년 이맘때쯤, 나는 대학에서의 30년 교직을 마치고 개인 블로그를 시작했습니다. 학문적 성과를 정리하고 제자들과 지속적으로 소통하고 싶다는 생각에서였죠. Jekyll을 선택한 것도 깔끔한 인터페이스와 GitHub Pages의 무료 호스팅이 마음에 들었기 때문입니다.

그런데 몇 달이 지나니 문제가 생겼습니다. 학위 논문을 요약한 글들을 포스팅할 때마다, 독자들로부터 “이 글을 PDF로 다운로드할 수 있나요?”라는 요청을 받기 시작한 것입니다. 더욱이, 학술 세미나 일정을 공유하는 포스트는 iCal 형식으로도 제공해야 한다는 요청도 들어왔습니다. 즉, 하나의 포스트에서 HTML뿐만 아니라 PDF, iCal 같은 다양한 형식을 동시에 생성해야 하는 상황이 된 것이죠.

처음엔 각 형식마다 별도의 파일을 수동으로 만들었습니다. 하지만 이 방식은 수정할 때마다 모든 형식의 파일을 업데이트해야 했고, 실수할 여지가 많았습니다. 인생의 경험이 많다고 생각했던 나도 이 문제 앞에서는 답답함을 느낄 수밖에 없었습니다.

Jekyll의 레이아웃으로 여러 형식 동시 생성하기

지금 떠올려보니, 이 문제는 GitHub의 Jekyll 공식 저장소에도 제기되었던 이슈였습니다. 개발자들 역시 같은 고민을 하고 있었던 것이죠. 해결책은 생각보다 우아했습니다. Jekyll의 레이아웃(Layout) 기능을 활용하면, 단 하나의 마크다운 파일로부터 여러 형식의 출력물을 동시에 생성할 수 있다는 것입니다.

예를 들어, 세미나 일정을 공유하는 포스트의 경우를 생각해봅시다. Front Matter에 이렇게 지정할 수 있습니다:

1
2
3
4
5
6
7
---
title: "2026년 하반기 학술 세미나 일정"
layout: seminar
output:
  - html
  - ical
---

그러면 Jekyll의 빌드 과정에서 같은 내용으로부터 index.htmlseminar.ics 파일을 동시에 생성하게 됩니다. 레이아웃 템플릿에서 Liquid 문법을 사용하면, 각 형식에 맞게 내용을 다르게 표현할 수 있습니다. iCal 형식의 경우 특정한 구조를 따라야 하는데, Liquid의 조건문과 반복문으로 이를 완벽하게 처리할 수 있다는 뜻입니다.

이 방식의 아름다운 점은 DRY 원칙(Don’t Repeat Yourself)을 완벽하게 따른다는 것입니다. 포스트 내용을 수정할 때 마크다운 파일 하나만 수정하면, HTML과 iCal 형식 모두 자동으로 업데이트됩니다.

실제 구현: 논문 목록을 PDF와 HTML로 동시 제공하기

이 방식을 실제로 적용해본 사례를 공유하겠습니다. 나는 내 연구 논문들을 정리한 페이지를 만들고 싶었습니다. 독자들은 웹에서 목록을 보길 원했고, 동시에 인쇄 가능한 PDF도 제공받고 싶어 했습니다.

_layouts 디렉토리에 publication.html 레이아웃을 만들었습니다. Front Matter에서 output: [html, pdf]를 지정하고, 레이아웃 파일에서는 Liquid의 page.output 변수를 활용해 현재 생성 중인 형식을 확인합니다. HTML 형식일 때는 클릭 가능한 하이퍼링크를 포함시키고, PDF 생성 시에는 더 깔끔한 활자 형식으로 변환하도록 했습니다.

특별히 유용했던 팁은 CSS 미디어 쿼리를 활용하는 것이었습니다. @media print 규칙을 사용하면 같은 HTML 파일이 브라우저에서는 한 가지로, 인쇄 또는 PDF 변환 시에는 다르게 표현됩니다. 추가로 wkhtmltopdfPuppeteer 같은 도구를 활용하면, Jekyll 빌드 시 자동으로 PDF를 생성할 수 있습니다.

기술적 선택의 지혜

은퇴 후 새로운 기술을 배우며 느낀 점은, 문제의 해결책이 항상 복잡한 곳에만 있지는 않다는 것입니다. 때로는 도구가 이미 제공하는 기능을 제대로 활용하는 것만으로도 충분합니다. Jekyll의 레이아웃 시스템은 이미 여러 형식을 지원할 수 있도록 설계되어 있었습니다. 우리는 단지 그 가능성을 제대로 인식하지 못하고 있었을 뿐입니다.

여러 형식을 동시에 생성하면서 가장 놀라웠던 점은 유지보수의 편의성이었습니다. 이전에는 한 글을 수정할 때마다 세 개의 파일을 모두 손질해야 했으니까요. 지금은 마크다운 파일 하나만 수정하면 모든 형식이 자동으로 동기화됩니다. 이것이 바로 자동화의 진정한 가치라고 생각합니다.

당신의 블로그도 혹시 같은 문제로 고민하고 계신가요? Jekyll의 다양한 형식 지원 기능을 활용하면, 독자들에게 더욱 풍부한 경험을 제공할 수 있습니다. 댓글로 자신의 경험담을 나누어주시면 정말 감사하겠습니다.