overist
hack insight
overist
전체 방문자
오늘
어제
  • 전체보기 (32)
    • Tech (2)
      • 알고리즘 (5)
      • ETC (4)
      • 블로그 생성 일지 (4)
    • Insight (14)
      • 인생 로그 (1)
      • 인생 쉽게 사는 법 (7)
      • 지나가는 생각 (4)
      • 미분류 (1)
    • 취미 (1)
      • 클라이밍 (1)

블로그 메뉴

  • 홈

공지사항

  • 블로그 이전 완료

인기 글

태그

  • network
  • 허무주의
  • SSL
  • 트러블슈팅
  • cloudflare
  • 정보보안 공부
  • 컴퓨터 공학 공부
  • 실존주의
  • 공부법
  • 니체
  • 초인
  • 컴퓨터 공부

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
overist
Tech/블로그 생성 일지

노션 블로그 생성 일지(2) - 노션 블로그를 위한 3가지 오픈소스 비교

노션 블로그 생성 일지(2) - 노션 블로그를 위한 3가지 오픈소스 비교
Tech/블로그 생성 일지

노션 블로그 생성 일지(2) - 노션 블로그를 위한 3가지 오픈소스 비교

2022. 12. 21. 11:07

▶️ 이 포스팅에서 다루는 것

오픈소스에서 노션을 블로그로 활용하려는 시도는 여럿 있었고, 우피라는 상용화된 서비스도 있다.

이번 챕터는 노션을 CMS로 다루는 다른 오픈소스 프로젝트별 기능들을 정리해보려 한다.

📌 HTML에 CSS, JS를 rewrite 하는 방식 (Fruitionsite)

📌 노션DB를 Headless CMS로 활용하는 프론트 앱을 따로 만들어 배포하는 방식 (Nobelium)

📌 노션 레이아웃에 완전 호환되는 프론트 앱을 따로 만들어 배포하는 방식 (nextjs-notion-starter-kit)

깃허브 속 오픈소스들은 크게 이 세가지 방식으로 노션 블로그를 만들었다.

⚡ 블로그 활용성 비교

▶️ 노션 페이지 공유 (디폴트)

😉 Advenced Features

배포를 위한 별다른 노력이 필요 없다. 내가 만든 노션 레이아웃과 템플릿을 그대로 활용 가능하다.

🤔 Challenges

지난 포스트에서 다룬 내용으로, 장점이 곧 단점이 된다.

1️⃣ 로딩 속도 느림 (FCP 1.6초)

2️⃣ 카테고리 트리 표현 어려움

3️⃣ 사이드바에 ToC 표현 어려움

4️⃣ 페이지 상단에 Page Progressbar와 같은 커스텀 CSS, JS 추가 어려움

5️⃣ 한글 URL, meta tag작성, sitemap.xml과 같은 SEO가 어려움

6️⃣ 검색기능이 안정적이지 않음 (너무 느림)

우측 상단에 Notion 사용해보기 버튼 삭제조차 안된다.

▶️ fruitionsite.com

 

  • Demo & guide : https://fruitionsite.com/
  • Trouble shooting Docs : notion.over.ist 생성 및 트러블슈팅 일지

😉 Advenced Features

클라이언트와 Notion 서버 사이에 응답 내용을 수정해주는 서버가 하나 있음

  • 기본 기능에서 Notion 사용해보기 버튼 없애준다.
  • URL Pretty (한글지원)
  • 모든 DOM 태그 작성가능(style, script 등)
    • 덕분에 웬만한 건 다 개발할 수 있다!
  • Cloudflare Pages와 연동하여 리액트와 같은 JS 라이브러리를 쓸 수 있다.
  • How to Deploy a React App With Cloudflare Workers | CodeForGeek
 

How to Deploy a React App With Cloudflare Workers | CodeForGeek

The release of Workers Sites made it super-easy to deploy static applications to Cloudflare Workers. And with the rise of JAMStack-like architectures, static

codeforgeek.com

Cloudflare Workers 서버리스 앱이란

  • JS 기반으로 작성된 코드에 따라 서버리스 API를 제공해주는 기능
    • Wrangler를 활용하여 git 연동 및 CI/CD 가능
    • Cloudflare Pages, Key Value DB 사용 가능
    • URL에 따른 라우팅 처리기 작성
    • Browser V8 Engine 기반 스크립트 작성하여 응답

fruitionsite 작동 원리

  1. Cloudflare workers 서버리스 앱에서 notion page를 fetch 한다.
  2. fetch된 notion pages에서 base url을 교체하고, prettyurl이 있으면 노션 page-id와 교체한다.
  3. Cloudflare workers 서버리스 앱에 작성된 style, script등 하드코딩된 태그를 붙여 응답한다.

🤔 Challenges

완제품이 되기엔 너무 심플한 라이브러리

  • KV DB도 쓰지 않는데, 굳이 요청 수 10만 회인 workers를 쓸 필요가 없다. 빌드 500회 제한인 대신 트래픽이 무제한인 pages를 활용하는 게 더 바람직하다.
    • 단 이때 workers 내장 모듈인 HTMLRewriter를 직접 구현해야 한다. (어렵지 않을 듯)
  • 로딩 속도 해결 안됨
    • 노션 공유문서를 재작성해서 가져오는 방식이라, web vital이 더 느리다.
    • Cloudflare CDN 캐싱을 쓸 경우 조금 더 빠르긴 하지만, Cloudflare Free 플랜은 한국 리전을 주지 않아 딱히 성능개선이 안됨.
  • 설치시 트러블슈팅 필요
    • Issue들이 다소 제보되었지만, 해결법이 나왔음에도 PR Merge를 안함ㅠ
    • notion.over.ist 생성 및 트러블슈팅 일지
  • 이미지, 북마크 등 리소스 가져올 때 경로 에러남
  • 서버리스 앱을 배우고 활용하는 수고 필요한데, 아래 과제들을 해결할 수 있다면 도전해볼만 하다.
    • 사이트맵 생성 자동화 및 포스트 별 meta태그 적용 등 SEO 최적화 직접 해결해야 함.
    • 한글 URL 지원 직접 해야 함
    • SSG 빌드 및 CI/CD 직접 해야 함
    • TOC 직접 개발해야 함
    • 카테고리 네비게이션 생성 직접 해야 함
    • 노션 검색기능 개선

📝 총평

Notion 기본 템플릿만으로 표현 가능한 홈페이지라면 유용하다. Workers를 쓰지 말고 Next.js로 리빌딩하여 확장 기능들이 달린 SSG Pages로 제작해볼 만 하지만 만들어야 할 게 너무 많다. 차라리 맘편히 돈내고 우피를 쓰는게 낫다.

▶️ Nobelium

  • Demo : https://nobelium.vercel.app/
  • Github : https://github.com/craigary/nobelium

😉 Advenced Features

노션 DB를 Headless CMS로 활용하여 Next.js를 통해 정적페이지 빌드

👍 모든 블록을 React 컴포넌트로 표현 가능 (캘린더 제외) : react-notion-x 사용

🚀 매우 준수한 바이탈 : react-notion-x로 해석한 블록을 next.js로 정적 빌드

🖇️ SEO 최적화 해결 : 포스트별 URL Slug, Description을 직접 설정 가능, RSS feed제공 (sitemap.xml은 없음)

🏷️ 태그 지원 : 태그 입력 지원, 태그별 검색 가능

🔎 빠른 검색기능 지원 : React state를 활용해서 타이핑시 동적 리렌더링 (티스토리에서 구현 불가능한 아주 편리한 기능)

🏁 글 발행 상태 설정 가능 : 발행/비공개 설정

🧑‍💻 활발한 오픈소스 : 버그 제보 수정 등 오픈소스 활동 매우 활발함 (버려두지 않은 서비스)

완성된 퀄리티가 있는 노션 블로그 서비스

기술스택

  • Generation: Next.js로 정적 페이지로 빌드
  • Page render: react-notion-x
  • Style: Tailwind CSS
  • Comments: Gitalk, Cusdis 외 댓글 기능 확장 가능

노션 DB를 CMS로 사용

거의 모든 노션 블록, 레이아웃을 표현 가능

🤔 Challenges

  • sitemap.xml 없음 : SEO 최적화시 feed 뿐만 아니라 sitemap.xml도 함께 제출되어야 좋음 (구글SEO가이드)
  • ToC, 사이드바는 기본기능으로 구현되어 있지 않음
  • react-notion-x는 노션과 100%호환되지 않음, 버그 조금 있음
    • ex) 컬렉션 뷰에서 필터링 기능 반영 X

📝 총평

노션의 기본 기능은 조금 빠지지만, 블로그 서비스로 쓰기 아주 강력한 오픈소스.

▶️ nextjs-notion-starter-kit

  • Demo : https://transitivebullsh.it/
  • github : https://github.com/transitive-bullshit/nextjs-notion-starter-kit
  • 직접 적용 : https://next.over.ist
  • 적용할 때 발생했던 Cloudflare DNS 오류 트러블 슈팅 : https://overist.tistory.com/14

😉 Advenced Features

react-notion-X 개발자가 만들고 next.js로 빌드한 블로그 서비스

🦋 디자인 : 노션 레이아웃을 준수하면서 각색한 화려한 디자인

👍 모든 블록을 React 컴포넌트로 표현 가능 (캘린더 제외) : react-notion-x 사용

👏 사이드 ToC 지원 : CSS 버그 직접 고쳐야함

🏷️ 태그 지원 : 태그별 보기 지원

🚀 매우 준수한 바이탈 : react-notion-x로 해석한 블록을 next.js로 정적 빌드

🖇️ SEO 최적화 해결 : 포스트별 URL Slug, Description을 직접 설정 가능, RSS feed, sitemap.xml 제공

🔎 검색기능 지원 : 노션 기본 검색기능과 동일, 다소 느리다.

🧑‍💻 활발한 오픈소스 : 버그 제보 수정 등 오픈소스 활동 매우 활발함

🤔 Challenges

  • CSS 버그나 하자 조금씩 있음.
    • 참고링크 : https://github.com/overist/next.over.ist/issues/4(일부만 작성)
 

디자인 수정 (TOC, Breadcrumbs, Darkmode, CSS) · Issue #4 · overist/over.ist

문제 인식 깃허브 오리지널 레포 하드코딩을 포크된 내 레포 주소로 변경 ToC 텍스트가 화면 우측으로 오버플로우됨, 의존성 모듈 CSS를 사용하고 있으므로 별도 글로벌 CSS 만들어 덮어 씌워야 함

github.com

  • react-notion-x는 노션과 100%호환되지 않음, 버그 조금 있음. 제보는 자주 들어오는데, 직접 고치진 않는다.

  • 한글 URL을 지원하지 않는다. 직접 수정해야 함.
    • 참고링크 : Next.js + Notion 포트폴리오 사이트
 

Next.js + Notion 포트폴리오 사이트

개인용 NAS위에 Next.js와 Notion을 이용하여 CMS를 구축하는 프로젝트입니다.

firejune.io

📝 총평

괜찮은 디자인, 상당히 괜찮은 노션 호환성, 완성된 블로그 기능 그러나 잔버그가 다소 있음.

 

 

시리즈를 마치며

노션을 활용한 블로그를 만들고 싶다는 생각에, 훌륭한 자동차 바퀴를 놔두고 기원전 바퀴부터 만드려하니 공수는 공수대로 들고 썩 마음에 드는 성과는 나오지 않았다. 위의 오픈소스를 커스텀하기엔 너무 손이 많이간다. 블로깅이라는 본질에서 벗어난다.

삽질하면서 고생할수록 완성된 무료 블로그 호스팅 서비스인 티스토리를 쓰는게 훨씬 낫겠다는 생각만 들었다.

노션 블로그는 만들지 않기로 했다.

저작자표시 (새창열림)
  • 😉 Advenced Features
  • 🤔 Challenges
  • 😉 Advenced Features
  • Cloudflare Workers 서버리스 앱이란
  • fruitionsite 작동 원리
  • 🤔 Challenges
  • 📝 총평
  • 😉 Advenced Features
  • 기술스택
  • 노션 DB를 CMS로 사용
  • 거의 모든 노션 블록, 레이아웃을 표현 가능
  • 🤔 Challenges
  • 📝 총평
  • 😉 Advenced Features
  • 🤔 Challenges
  • 📝 총평
  • 시리즈를 마치며
'Tech/블로그 생성 일지' 카테고리의 다른 글
  • 노션 블로그 생성 일지(1) - 티스토리 vs 노션 블로그 비교
  • [트러블슈팅] Fruitionsite with Cloudflare Workers Error 1034
  • [트러블슈팅] - Vercel deploy via Cloudflare, DNS 오류 (DNS_PROBE_FINISHED_NXDOMAIN)
overist
overist
갓생살이를 위한 블로그

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.