이 글에서는 제가 어떻게 이 브라우저 확장을 Github Jekyll 블로그에 활용하고 있는지 간단히 소개하겠습니다.
Jekyll 정적 블로그는 Ruby 기반으로 구축되었으며 플러그인을 지원합니다. 그래서 저는 Liquid 템플릿 언어를 처리하기 위해 몇 가지 플러그인을 직접 작성했습니다(Jekyll 블로그의 플러그인은 _plugins 디렉토리에 위치하며, ruby 파일을 작성한 후 해당 디렉토리에 넣고 서비스를 재시작하면 됩니다). 내용은 Notion Flow로 변환된 Notion 콘텐츠에서 가져옵니다. 예를 들어 북마크를 처리하는 플러그인 내용은 다음과 같습니다:
# 上传的 video moduleJekyll classRenderVideoBlock < Liquid::Block definitialize(tag_name, attr, tokens) super attrs = attr.scan(/caption\=\"(.*)\"\simg\=\"(.*)\"\ssuffix\=\"(.*)\"/) @caption = attrs[0][0] @img = attrs[0][1] @suffix = attrs[0][2] end defrender(context) text = super "<p caption='#{@caption}'><video controls muted><source src='#{@img}' type='video/#{@suffix}' /></video></p>" end end end
이 코드의 로직은 Notion의 북마크 모듈 링크가 Youtube나 Bilibili인 경우 임베드 비디오 HTML(iframe)로 변환하고, 그렇지 않으면 Notion 북마크와 유사한 HTML로 변환하는 것입니다(CSS와 함께 구현 필요).
따라서 저는 Notion Flow를 사용해 Notion 내용을 Markdown 형식으로 변환하는 동시에 북마크 등 모듈의 변환 규칙을 커스터마이징하여 블로그에서 Youtube, Bilibili 및 Notion과 같은 북마크 스타일 콘텐츠를 표시할 수 있도록 했습니다. 예시는 다음과 같습니다:
저는 인생의 중요한 선택의 기로에 섰을 때, 누군가 최선의 방법을 알려주어 소중한 시간을 헛되이 보내지 않기를 바라곤 합니다. 그런 마음으로 저는 자주 블로그를 쓰며, 광활한 인터넷의 이 작은 구석에 제게는 단 한 번뿐인 인생 경험을 기록하여 도움이 필요한 분들에게 도움이 되기를 바랍니다.