자주 틀리는 문제 오답 노트를 만들어서 반복 출제 해주는 퀴즈 자동화

매시간 텔레그램으로 공인중개사 퀴즈가 온다 — PDF 300페이지를 통째로 먹인 AI 문제은행 만들기

📝 한줄 요약

와이프가 공인중개사 2차 시험 준비 중이다.
그래서 AI로 문제은행을 만들었다.
교재 PDF를 통째로 AI에 먹이고, 매시간 텔레그램으로 퀴즈를 보내주고, 틀리면 자동으로 빈도출제하며, 일요일엔 오답노트까지 정리해준다. 하루 5분, 퇴근길에 버튼 하나씩 누르는 걸로 복습이 된다.

바쁘시면 이것만 읽어도 돼요:

  • 처음엔 NotebookLM을 썼다가, 응답 불안정·세션 만료 문제로 로컬 PDF 검색 엔진으로 전면 교체

  • realtor1 → realtor2로 버전업하며 텔레그램 버튼 콜백·빈도 가중치·오답 DB까지 완전히 새로 설계

  • PDF 300페이지를 OCR로 다 읽는 대신, 체크포인트로 필요한 페이지만 5~10초 만에 검색

  • 텔레그램 버튼 5지선다 → 클릭 즉시 정답·해설 → 틀린 건 기록됐다가 더 자주 출제

  • 일요일 아침엔 한 주간 틀린 문제를 모아 오답노트로 받아본다

🎯 이런 분들께 도움돼요

  • 자격증 준비 중인데 문제 풀 시간이 부족한 직장인·자영업자

  • 틀린 문제만 반복해서 풀고 싶은데 손으로 정리하기 귀찮은 수험생

  • 텔레그램으로 알림 오면 짬짬이 풀고 싶은 사람

😫 문제 상황 (Before)

공인중개사 1차 시험을 준비하기 시작했다. 부동산학개론과 민법 두 과목. 기본서만 각각 300페이지가 넘는다.

큰 문제는 비효율이었다. 문제집을 앞에서부터 차례로 풀면, 내가 이미 아는 내용도 계속 풀게 되고 진짜 취약한 부분은 소수에 불과하다. 그리고 틀린 문제를 따로 노트에 정리해서 다시 보는 건... 결국 내 몫이었다.

"매일 조금씩 풀 수 있고, 틀린 건 저절로 복습되는 구조가 없을까?" 이 질문에서 시작했다.

🛠️ 사용한 도구

  • AI 에이전트: Hermes Agent + DeepSeek — PDF 검색, 퀴즈 생성, 텔레그램 발송

  • 메신저: 텔레그램 봇 + 버튼 콜백 — 5지선다 클릭 한 번으로 정답 확인

  • 자료 소스: 공인중개사 기본서 PDF (부동산학개론·민법)

  • 버전: NotebookLM → realtor1 (로컬 PDF) → realtor2 (버튼 콜백 + 빈도 가중치)

🔧 작업 과정

1. 첫 시도: NotebookLM에 PDF 통째로 먹이기 — 그리고 포기

처음에는 구글 NotebookLM을 썼다. PDF를 올려놓고 "이 과목에서 문제 하나 뽑아줘"라고 하면 그럭저럭 답이 나왔다.

하지만 곧 문제가 생겼다. NotebookLM은 Google 계정 세션이 2~3개월마다 만료된다. cron이 돌고 있는데 어느 순간부터 응답이 0자로 오기 시작한 것이다. 확인해보니 인증이 만료돼서 Google 로그인 페이지 HTML만 덩그러니 반환되고 있었다.

게다가 응답 자체도 불안정했다. 같은 PDF를 넣어도 어떤 날은 문제가 제대로 나오고, 어떤 날은 전혀 엉뚱한 내용이 나왔다. 매일 아침 로그인 세션이 살아있는지 체크하는 cron까지 따로 만들어야 했다.

결국 "이건 지속 가능한 구조가 아니다"라고 판단하고 로컬 PDF 검색 기반으로 전면 교체했다.

2. realtor1 — 로컬 PDF 검색 엔진으로 독립

NotebookLM 의존을 끊고, PDF를 로컬에서 직접 검색하는 구조로 바꿨다. 기본서 PDF 두 권을 한 폴더에 모아두고, Python 기반 PDF 검색 스크립트를 만들었다.

여기서 핵심은 체크포인트다. PDF 300페이지를 매번 처음부터 OCR로 읽으면 시간이 너무 오래 걸린다. 그래서 각 과목의 목차를 기준으로 페이지 구간을 미리 나눠두고, "부동산학개론 3장 감정평가" 같은 키워드가 들어오면 해당 구간만 빠르게 검색한다.

체크포인트 구조
부동산학개론.pdf
├── 1장 총론           (p.1-35)
├── 2장 부동산 시장     (p.36-72)
├── 3장 감정평가        (p.73-118)
├── 4장 부동산 정책     (p.119-165)
└── ...

민법.pdf
├── 1장 민법 총칙       (p.1-48)
├── 2장 물권법          (p.49-130)
└── ...

이렇게 하니 PDF 300페이지를 통째로 읽는 대신, 해당 구간 5~15페이지만 5~10초 안에 검색할 수 있었다. OCR은 필요할 때만, 필요한 부분만 돌렸다.

매시간 cron이 돌면서 Hermes가 PDF에서 문제 하나를 뽑아 텔레그램으로 보내준다. 평일 09~20시, 매 시간마다 한 문제씩. 월~토요일 기준으로 하루 최대 12문제다.

3. realtor2 — 텔레그램 버튼 콜백 + 빈도 가중치 + 오답 DB

realtor1은 기본적인 "문제 보내기"는 됐지만 부족한 점이 많았다. 문제를 받아도 답을 입력하려면 텍스트로 타이핑해야 했고, 틀린 문제가 누적되긴 하지만 그냥 저장만 될 뿐 다시 출제되지 않았다. 그리고 과목별로 따로 cron을 걸어야 해서 두 과목을 한 파이프라인으로 합치고 싶었다.

realtor2에서 바뀐 점:

3-1. 텔레그램 버튼 콜백 — 클릭 한 번으로 답변

가장 큰 변화는 텔레그램 버튼이었다. 문제 아래에 ①~⑤ 버튼이 달려 있고, 클릭하면 즉시 정답과 해설이 온다. 더 이상 타이핑할 필요가 없다.

📚 부동산학개론 모의문제

Q. 부동산의 자연적 특성에 해당하지 않는 것은?

① 부동성 (지리적 위치의 고정성)
② 부증성 (양의 한정성)
③ 영속성 (물리적 비소모성)
④ 개별성 (이질성)
⑤ 용도의 다양성

[①] [②] [③] [④] [⑤]  ← 버튼!

여기서 텔레그램 콜백 처리에서 꽤 헤맸다. 버튼을 누르면 텔레그램 서버가 내 봇에게 callback_query를 보내는데, 이걸 받아서 처리하는 구조가 처음엔 제대로 안 잡혔다. 버튼을 눌렀을 때 "로딩 중" 표시만 뜨고 응답이 안 오거나, 같은 버튼을 다시 눌렀을 때 중복 처리가 되는 문제가 있었다.

해결책은 콜백 ID 기반 멱등 처리. 같은 callback_id는 한 번만 처리하고, 이미 응답한 문제는 버튼을 비활성화해서 다시 누를 수 없게 했다. 그리고 Hermes가 콜백을 받으면 3초 이내에 "답변 처리 중" 응답을 먼저 보내고, 실제 해설은 비동기로 생성해서 보내게 했다.

3-2. 빈도 가중치 — 틀린 문제가 더 자주 나온다

이게 진짜 핵심이다. 틀린 문제는 오답 DB에 저장되고, 다음 출제 때 가중치가 올라간다.

처음에는 단순하게 "틀렸던 문제는 무조건 3회 더 출제"로 했는데, 그러다 보니 너무 자주 나와서 같은 문제만 반복되는 현상이 생겼다. 그래서 지수 감쇠 가중치로 조정했다.

빈도 가중치 계산
- 처음 틀렸을 때: 가중치 3.0 (기본 대비 3배)
- 맞추면: 가중치 × 0.5 (절반으로 감소)
- 또 틀리면: 가중치 × 1.5 (더 올라감)
- 가중치가 1.0 이하가 되면 일반 문제 풀로 복귀

이 조정을 하면서 꽤 많은 시행착오가 있었다. 처음에는 가중치를 너무 높게 줘서 하루 종일 같은 문제만 나오는 일이 있었고, 너무 낮추면 틀린 문제가 다시는 안 나왔다. 결국 위 공식으로 수렴시켜서, 보통 틀린 문제는 맞출 때까지 3~5회 정도 추가 출제되는 선에서 안정화됐다.

3-3. 두 과목 통합 파이프라인

realtor1에서는 부동산학개론용 cron과 민법용 cron이 따로 돌았다. realtor2에서는 하나의 스크립트가 두 과목을 모두 처리하게 통합했다. 30분 간격으로 번갈아가며 출제하고, 오후 8시에는 하루 마무리 문제를 보낸다.

realtor2 cron 구조
*/30 9-19 * * 1-6  → 30분마다 (월~토, 09:00~19:30)
  0 20 * * 1-6    → 저녁 8시 (월~토, 하루 마무리)

4. 일요일 오답노트 — 한 주간 틀린 문제 총정리

매주 일요일 아침이면, 한 주 동안 틀렸던 모든 문제가 오답노트로 정리되어 텔레그램과 옵시디언 vault에 동시에 저장된다.

📋 이번 주 오답노트 (6/9~6/15)

✅ 맞은 문제: 42개
❌ 틀린 문제: 8개
📊 정답률: 84%

🔴 자주 틀린 유형 TOP 3
1. 감정평가 방식 비교 (3회 오답)
   → 원가법·거래사례비교법·수익환원법 구분이 핵심
2. 중개계약 해지 사유 (2회 오답)
3. 민법 총칙 - 의사표시 (2회 오답)

📝 틀린 문제 상세
[문제 1] Q. 감정평가에 관한 설명으로 옳은 것은?
내 답: ② → 오답
정답: ④
해설: ...

이 오답노트를 받아보면, 일주일 동안 내가 어디서 약한지가 한눈에 보인다. 따로 오답노트 만들 필요 없이 그대로 복습 자료로 쓸 수 있다.

✅ 결과 (After)

하루 5~10분이면 된다. 텔레그램 알림이 오면 버튼 하나 누르는 걸로 한 문제 끝. 출근길 지하철에서, 점심 먹고 커피 마시면서, 자기 전에 침대에서. 따로 시간 내서 앉아 있을 필요가 없다.

무엇보다 내가 약한 부분이 저절로 보강된다. 틀린 문제가 더 자주 나오니까, 의식하지 않아도 복습이 된다. 예전에는 "아 이 파트 약한데..." 하면서 따로 찾아서 공부해야 했는데, 이제는 AI가 알아서 내 약점을 찔러준다.

NotebookLM으로 시작해서 시행착오를 겪고, 로컬 PDF로 이전하고, 버전업하면서 텔레그램 버튼·콜백·빈도 가중치까지 붙였다. 결과적으로 완전히 손에서 떠난 자동 복습 시스템이 완성됐다.

💬 이 과정에서 배운 AI 활용 팁

효과적이었던 것

  1. PDF 검색은 "체크포인트"가 생명: 전체 OCR은 너무 느리다. 목차 기준으로 구간을 나누고 필요한 페이지만 읽으면 5~10초면 된다

  2. 텔레그램 버튼으로 진입장벽 낮추기: 타이핑 대신 클릭만으로 문제 풀 수 있게 한 게 지속성의 핵심

  3. 빈도 가중치는 "지수 감쇠"로: 단순 반복은 지루하게 만들고, 너무 약하면 의미가 없다. 맞추면 가중치를 점진적으로 낮추는 게 가장 자연스럽다

  4. 콜백은 멱등 처리 필수: 같은 버튼 중복 클릭 방지 + 응답 지연 시 "처리 중" 표시 먼저 보내기

이렇게 하면 안 돼요

  1. NotebookLM 같은 외부 서비스 의존은 피할 것: 세션 만료·API 변경에 취약하고, 디버깅이 거의 불가능하다

  2. 처음부터 욕심내서 다 만들지 말 것: realtor1으로 돌려보고 부족한 점을 찾아 realtor2로 업그레이드. 한 번에 완벽하게 만들려고 하면 시작도 못 한다

  3. 빈도 가중치는 너무 높게 잡지 말 것: 같은 문제만 반복되면 오히려 학습 효과가 떨어진다

🚀 앞으로의 계획

지금은 부동산학개론·민법 두 과목만 돌고 있는데, 공인중개사 2차 과목(중개실무·공법·공시법·세법)까지 확장할 계획이다. 2차는 암기보다 실무 적용이 중요해서, 문제 유형을 사례형으로 바꾸는 작업이 필요할 것 같다.

또 하나 구상 중인 건 난이도 태깅. 시험이 가까워지면 쉬운 문제는 빼고 어려운 문제만 집중적으로 나오게 하는 "시험 직전 모드"를 만들 생각이다.

1
1개의 답글

뉴스레터 무료 구독