코드: GitHub

학습한 내용을 복습할 때 가장 효과적인 방법 중 하나는 스스로를 테스트하는 것이다. 하지만 정리된 노트를 다시 읽기만 해서는 인출 연습(Active Recall)이 어렵다. 그래서 평소 작성하는 노트를 바탕으로 암기용 테스트 노트를 자동 생성해주는 기능을 구현했다.

1. 제작 동기

학습 노트를 작성하는 과정과 이를 외우는 과정은 분리되어야 한다. 원본 노트를 직접 수정하며 외우는 것은 데이터 손실의 위험이 있고 번거롭다. 따라서 원본은 그대로 유지한 채, 클릭 한 번으로 나만의 맞춤형 시험지를 생성하고, 막힐 때는 즉시 원본의 맥락을 확인할 수 있는 도구가 필요했다.

2. 핵심 로직

이 플러그인은 원본 노트의 제목과 본문을 조합하여 (원본 제목)_mem (번호) 형식의 새 파일을 동일한 폴더에 생성한다.

  • 파일 버저닝 및 경로 설정: 원본 파일의 제목 뒤에 _mem (번호)를 붙여 새 파일을 만든다. 폴더 내의 기존 파일을 스캔해 숫자를 자동으로 올리는 로직이 있어 파일이 겹치지 않게 관리한다.

  • 데이터 추출 및 전처리: 옵시디언의 MetadataCache를 통해 원본의 헤딩 구조를 파악하고, Vault API로 본문 텍스트를 읽어온다.

  • 정답: 간단하게 확인할 수 있도록 구현한다.

    • 빈칸 각주화: { }와 같이 지정된 기호 사이의 텍스트를 감지한다. 본문에서는 해당 내용을 공백( )으로 대체하고, 실제 내용은 문서 하단에 각주([^n]: 정답) 형식으로 모아서 추가한다. 이 과정을 통해 정답이 본문에서 보이지 않으면서도 필요할 때 각주로 확인할 수 있도록 한다.
    • heading 링크화: 원본 노도의 해당 위치로 연결되는 위키([[파일명#헤딩|🔗]])를 생성한다. 테스트 도중 막히는 부분이 생기면 아이콘을 hover해 클릭해 즉시 원본의 내용을 확인할 수 있다.

3. 주요 설정 및 옵션

사용자의 학습 목적에 따라 헤딩과 본문의 구성 방식을 조합할 수 있도록 세분화된 설정을 제공한다.

  • Heading Options (헤딩 설정)

    • Basic: 원본의 헤딩을 그대로 복사해온다.
    • Link: 헤딩 옆에 원본의 해당 섹션으로 연결되는 링크 아이콘을 추가한다.
  • Contents Options (본문 설정)

    • Empty: 본문을 모두 비우고 목차만 남긴다. 제목만 보고 전체 내용을 인출하는 연습에 적합하다.
    • Blank: 본문 내용 중 사용자가 마킹한 부분만 빈칸으로 만들고 각주 처리한다. 세부 키워드 암기에 최적화된 모드다.
    • Copy: 원본 본문을 그대로 복사한다. 단순히 특정 옵션이 적용된 복제본을 만들 때 사용한다.
  • 마크 기호 지정: 빈칸을 지정할 때 사용할 시작 마크와 끝 마크를 사용자가 직접 설정할 수 있다. 기본값은 {}로 설정되어 있다.

4. 마치며

코드를 직접 짜면서 옵시디언의 MetadataCacheVault API를 활용해 파일 시스템을 제어하는 경험을 할 수 있었다. 특히 정답을 각주로 변환하는 아이디어는 옵시디언의 기본 마크다운 문법을 해치지 않으면서도 암기 효과를 극대화할 수 있는 효율적인 선택이었다고 생각한다.

내가 만든 노트를 버튼 하나로 문제집으로 변환해, 언제든 가볍게 테스트할 수 있는 환경을 만든 것이 좋았다.