블로그 업로드 및 Todoist 자동화
블로그 업로드 자동화
기존에 GIthub에 정리
취업 준비를 하면서, 블로그 형태로 따로 기록을 정리해 두지 않은 점이 아쉽게 느껴졌다. 다만 공부한 내용 자체가 전혀 남아 있지 않았던 것은 아니었다. 평소 학습 내용과 간단한 메모는 꾸준히 Obsidian에 정리해 두고 있었기 때문이다.
Quartz와 GitHub Pages를 사용하여 블로그 업로드
이에 Obsidian 저장소를 GitHub와 연동해 동기화하고, GitHub Pages를 통해 이를 공개 웹사이트 형태로 배포할 수 있도록 구성하였다. 또한 GitHub Actions를 활용해 저장소에 변경 사항이 반영될 때마다 자동으로 사이트가 다시 빌드되고 배포되도록 자동화하였다.
사이트 생성에는 Quartz를 사용하였다. Quartz는 저장소 안의 마크다운 파일을 읽어 정적 웹사이트 형태로 변환해 주는 도구이다. 이 과정에서 파일 구조와 규칙에 맞게 웹페이지를 생성하고, 최종적으로 GitHub Pages에 업로드할 결과물을 만든다. Quartz의 설정 파일에서는 baseUrl, 정렬 방식, 플러그인 동작 등을 정의할 수 있고, layout 설정을 통해 실제 블로그 화면의 UI 구조를 조정할 수 있다.
GitHub Action을 사용하여 배포 자동화
배포 자동화는 .github/workflows/deploy.yml 파일에서 정의하였다. 이 파일은 GitHub Actions가 어떤 순서로 작업을 수행할지 정하는 워크플로우이다. 우선 checkout 단계에서 현재 저장소 코드를 러너 환경으로 내려받고, 이후 GitHub Pages 배포에 필요한 환경을 설정한다. 그 다음 Node.js를 설치하고 의존성을 내려받은 뒤, Quartz 빌드 전에 실제 게시할 콘텐츠 구조를 가공하는 과정을 거친다.
제가 사용한 Obsidian 노트는 태그 중심으로 정리되어 있었는데, 이 구조를 그대로 Quartz에 반영하면 화면상 분류가 지나치게 복잡하고 산만해지는 문제가 있었다. 따라서 단순히 원본 디렉토리 구조를 따르지 않고, 각 마크다운 파일의 frontmatter 값을 읽어 사이트용 콘텐츠 구조를 다시 생성하도록 구성하였다.
구체적으로는 각 문서의 주제 값을 읽어 디렉토리를 생성하고, 해당 문서를 그 디렉토리 아래에 배치하도록 하였다. 또한 series 값을 함께 읽어 파일명 앞에 번호를 붙이는 방식으로, 같은 주제 안에서도 원하는 순서대로 문서가 정렬되도록 처리하였다. series 값이 없거나 숫자가 아닌 경우에는 기본값을 부여하여 예외 상황도 함께 처리하였다. 이 과정을 통해 Obsidian 내부의 자유로운 기록 방식은 유지하면서도, 공개 블로그에서는 보다 일관된 분류와 정렬 기준을 제공할 수 있었다.
추가로, 첨부 이미지와 리소스 파일도 함께 복사되도록 하여 문서 내부의 이미지 참조가 배포 환경에서도 정상적으로 동작하도록 구성하였다. 마지막으로 Quartz가 변환한 정적 결과물은 public 디렉토리에 생성되며, 이를 GitHub Pages 아티팩트로 업로드한 뒤 실제 배포 단계에서 웹사이트로 게시되도록 설정하였다.

Todoist 자동화
기존에는 Obsidian의 Tasks 기능을 이용해 할 일을 관리하고 있었다. 그러나 실제 사용성 측면에서는 한계가 있었다. 할 일을 확인하거나 추가하기 위해 매번 Obsidian에 들어가야 했고, 모바일 환경에서는 접근성이 좋지 않았다. 특히 Obsidian 사용 시 배터리 소모가 큰 편이어서, 플러그인을 대폭 줄인 이후에는 더욱 자주 활용하지 않게 되었다.
이 문제를 해결하기 위해 외부 Todo 앱인 Todoist를 연동하였다. Todoist를 사용하면 아이폰과 맥북에서 훨씬 빠르게 할 일을 확인하고 입력할 수 있고, 동시에 Obsidian 내부에서도 Todo 목록을 함께 볼 수 있도록 구성할 수 있다. 즉, 할 일 관리는 Todoist의 높은 접근성을 활용하고, 학습 기록과 문서 정리는 Obsidian에서 이어가는 방식으로 역할을 분리한 것이다.
연동에는 Todoist Obsidian Sync 플러그인을 사용하였다. 이 플러그인에서는 Todoist API 키를 입력해 계정을 연결할 수 있으며, 이후 Obsidian 내부에서 Todoist의 작업 목록을 불러와 표시할 수 있다.

예를 들어 아래와 같이 설정하면 오늘 일정과 미처 끝내지 못한 작업을 함께 표시할 수 있다.
```todoist
name: "Today & Overdue"
filter: "today | overdue"
view:
noTasksMessage: "Nothing due today! Take a break."
sorting:
- date
- priority
```이 설정에서는 filter를 통해 오늘 마감인 작업과 기한이 지난 작업만 불러오고, view에서는 작업이 없을 경우 표시할 문구를 지정하며, sorting을 통해 날짜와 우선순위 기준으로 정렬하도록 하였다. 이처럼 필요한 작업만 간단히 추려서 보여줄 수 있기 때문에, Obsidian 내부에서도 복잡하지 않게 Todo 목록을 관리할 수 있었다.
다만 한계도 있었다. 기본적으로는 완료된 작업 목록을 확인하는 기능이 제공되지 않았고, 이를 보완하는 별도의 플러그인이 존재하긴 했지만 추가적인 플러그인 사용은 곧 리소스 소모 증가로 이어질 수 있었다. 당시에는 배터리와 성능 부담을 줄이는 것이 더 중요했기 때문에, 완료 목록 조회 기능은 별도로 확장하지 않고 현재 필요한 작업 확인과 간단한 등록, 완료 처리 중심으로만 구성하였다.
Todoist에서 사용하는 간단한 키워드
10:30 for 30m!30mb p1 미용실가기와 같이 작성하게되면 10시반부터 30분동안, 30분전에 알림, 우선순위 1순위 로 미용실 가기 라는 Todo가 등록된다
