방치했던 Next.js 블로그 다시 정리하기
오래된 블로그를 Next.js 16으로 올리고 글 올리는 흐름을 정리한 기록
2026-05-21

예전에 만들어둔 블로그를 오랜만에 다시 열어봤다. 처음 만들 때는 글도 몇 개 올리고, 구글 검색 등록도 해보고, 나름 잘 굴러가는 줄 알았는데 시간이 지나고 보니까 생각보다 손볼 게 많았다.
일단 Next.js 버전이 너무 예전 버전이었다. 그리고 글을 하나 올리려면 markdown 파일만 쓰면 되는 게 아니라 posts.json도 같이 수정해야 했다. 제목, 설명, slug, 이미지 경로를 따로 맞춰야 해서 글 하나 쓰는 일보다 준비 작업이 더 귀찮은 느낌이었다.
블로그는 결국 글을 계속 올려야 의미가 있는데, 올릴 때마다 이런 식이면 금방 안 쓰게 될 것 같았다. 그래서 이번에는 디자인을 크게 바꾸기보다, 글 올리는 흐름부터 정리해봤다.
패키지 매니저 정리
먼저 npm으로 통일했다. 저장소에 package-lock.json, yarn.lock, .yarn 캐시가 같이 있어서 기준이 애매했다.
로컬에서는 어떻게든 돌아갈 수 있지만, 나중에 Vercel이나 GitHub Actions에서 설치할 때 어떤 걸 기준으로 봐야 하는지 헷갈릴 수 있다. 그래서 Yarn 관련 파일은 제거하고 npm 기준으로 맞췄다.
특히 .yarn/cache가 저장소에 올라가 있었는데, 블로그 저장소가 패키지 zip 파일까지 들고 있을 필요는 없다고 봤다. 설치는 lock 파일 기준으로 다시 받으면 된다.
Next.js 버전 올리기
Next.js는 16.2.6으로 올렸고 React도 19로 같이 올렸다. 버전만 바꾸면 끝날 줄 알았는데 역시나 그렇지는 않았다.
예전에 넣어둔 webpack 설정이 지금 구조랑 잘 안 맞았다. SVG 처리하려고 넣었던 설정인데 실제로는 거의 쓰고 있지 않아서 제거했다. 설정 파일도 next.config.mjs로 바꿨다.
App Router 쪽도 손봤다. 동적 라우트의 params 타입이 바뀌어서 맞춰줬고, 게시글 metadata도 다시 정리했다. 빌드할 때 나오던 metadataBase 경고도 같이 없앴다.
글 정보는 markdown 안으로
가장 바꾸고 싶었던 건 글 데이터 구조였다.
기존에는 글 목록 정보는 data/posts.json에 있고, 실제 글 내용은 data/posts/*.md에 있었다. 이러면 글 하나를 수정할 때 파일 두 개를 같이 봐야 한다.
지금은 markdown 파일 위에 frontmatter를 넣는 방식으로 바꿨다.
--- title: "글 제목" description: "글 설명" date: "2026-05-21" category: "nextjs" path: "post-slug" featured: true image: "/images/ogImage.png" ---
이제 글 하나는 markdown 파일 하나로 관리된다. 목록, 상세 페이지, sitemap도 여기 있는 값을 읽어서 만든다. 예전보다 훨씬 단순해졌다.
글 만들기랑 검증
새 글 만들 때 매번 파일 이름이나 기본 frontmatter를 손으로 치는 것도 귀찮아서 스크립트를 하나 추가했다.
npm run new-post
제목, 설명, 카테고리 정도를 입력하면 기본 markdown 파일을 만들어준다. 커버 이미지는 일단 기본 OG 이미지를 쓰게 했다. 모든 글마다 이미지를 억지로 찾는 것보다, 필요할 때만 직접 바꾸는 게 나한테는 더 맞는 방식이었다.
그리고 배포 전에 글이 이상한지 확인하는 스크립트도 넣었다.
npm run validate-posts
frontmatter에 필요한 값이 빠졌는지, 날짜 형식이 맞는지, 이미지 경로가 실제로 있는지 확인한다.
전체 확인은 아래 명령어 하나로 돌린다.
npm run check
글 검증, lint, build를 순서대로 실행한다. 글 하나 수정하고 바로 push했다가 배포에서 깨지는 상황은 최대한 줄이고 싶었다.
배포랑 SEO도 같이 정리
Vercel 배포 설정도 npm 기준으로 고정했다. npm ci, npm run build를 명시해두니까 예전 Yarn 설정에 끌려갈 일이 줄었다.
SEO 쪽도 다시 봤다. canonical, Open Graph, Twitter card, sitemap, robots, 게시글 JSON-LD까지 추가했다. 예전에 구글 검색 등록 글을 썼는데, 정작 지금 블로그 설정은 오래된 상태라 이번에 같이 맞췄다.
게시글은 article 타입으로 잡히게 하고, 제목/설명/이미지/작성일이 metadata에 들어가게 했다. 검색 결과가 바로 좋아진다고 장담할 수는 없지만, 최소한 검색엔진이 글을 이해할 수 있는 기본 정보는 넣어둔 셈이다.
정리하고 나서
이번에 고친 건 화려한 기능이라기보다 다시 글을 쓰기 위한 준비에 가깝다. 블로그를 만들어놓고 안 쓰면 의미가 없어서, 글 올리는 과정이 덜 귀찮아지는 쪽으로 정리했다.
아직 디자인이나 오래된 글 내용은 더 손볼 수 있다. 그래도 이제는 글 하나 쓰려고 여러 파일을 맞추는 구조는 아니다. 글 쓰고, 검증하고, push하면 배포되는 흐름까지는 다시 잡아놨다.