이 블로그를 만들고 글을 쓰다 보니,
나름 자리잡혀 있다고 생각했던 과정에서 불편함이 하나둘 쌓이기 시작했어요.
세 가지 불편함
코드와 글이 같은 폴더에 섞여 있었습니다.
모든 포스트가 app/blog/posts/*.mdx에 들어 있었는데, app 폴더는 라우트와 컴포넌트가 사는 곳(Next.js App Router)이거든요.
거기에 글 파일까지 섞이니 경계가 흐릿해지더라고요.
Obsidian에서 글만 볼 수도 없었어요.
평소 메인 노트 도구로 쓰고 있어서 프로젝트 폴더를 통째로 열어봤는데, 컴포넌트, 라우트, 설정 파일이 함께 보여서 “글만 보는 뷰”를 만들기가 어려웠습니다.
초안은 프로젝트 밖에서 따로 놀고 있었고요.
아이디어와 초안은 Obsidian에 적어두고, 발행할 만하면 MDX 파일을 새로 만들어 옮기고, frontmatter를 수동으로 채우는 식.
정리하면 이런 상태였습니다.
- 코드와 콘텐츠가
app아래에 섞여 있고 - 초안은 프로젝트 밖에서 따로 돌고
- Obsidian에서는 글만 골라볼 방법이 없었습니다
글은 글끼리 모으면 되지 않을까
생각해 보면 단순한 이야기였어요.
app 폴더는 라우트와 컴포넌트가 사는 곳이고, 글은 결국 데이터에 가깝거든요.
그러면 글만 따로 모아두면 되지 않을까 라고 생각했습니다.
그래서 기존 app/blog/posts/*.mdx를 프로젝트 루트의 content/posts/*.mdx로 옮겨봤습니다.
변경 전: app/blog/posts/*.mdx
변경 후: content/posts/*.mdx
getBlogPosts() 함수가 fs와 path로 MDX를 읽고 있었기 때문에, 경로 상수 하나만 바꾸면 기존 구조를 깨지 않고 이동할 수 있었어요.
옮기고 나니 자연스럽게 다음 생각이 이어지더라고요.
초안도 여기에 두면 되겠다 싶었습니다.
frontmatter에 status: draft 같은 필드를 넣어서 관리하는 방법도 떠올랐지만, 폴더만 보고 “이건 초안, 이건 발행 글”이라고 바로 알 수 있는 게 더 편할 것 같았어요.
content/
├── posts/ ← 발행 글
├── drafts/ ← 초안
└── docs/guide/ ← 글쓰기 가이드
그리고 이 content/ 폴더를 Obsidian vault로 열었습니다.
달라진 워크플로우
이 구조가 잡히고 나니 글쓰기 흐름이 자연스럽게 바뀌었습니다.
초안은 Obsidian에서 content/drafts/에 .md 파일을 만들고 자유롭게 써요.
같은 vault 안에 기존 발행 글과 글쓰기 가이드가 있으니, 이전 글의 톤이나 frontmatter 구조를 바로 참고할 수 있는 게 좋더라고요.
초안이 준비되면 drafts/에서 posts/로 파일을 옮기고, 확장자를 .mdx로 바꾸고, frontmatter를 채웁니다.
publish: false로 먼저 올려서 실제 블로그에서 렌더링을 확인한 뒤, publish: true로 공개하는 식이에요.
그리고 하나 더.
vault 안에 글쓰기 가이드(docs/guide/)와 기존 글이 함께 있으니, AI에게 “가이드 기준으로 이 초안을 리뷰해 줘”라고 요청하면 맥락이 바로 잡힙니다.
Info
AI를 활용한 글 리뷰 워크플로우는 다음 글에서 더 자세히 다룹니다.
정리하며
돌이켜보면 가장 큰 변화는 기술적인 것이 아니었습니다.
“글을 어디에 둘까” 라는 고민이 사라졌고, Obsidian을 글 전용 뷰로 쓸 수 있게 되었어요.
그리고 AI를 워크플로우에 자연스럽게 붙일 수 있는 토대가 되었습니다.