Codex Telegram으로 당근 매물 알림봇 만들기

Codex Telegram으로 당근 매물 알림봇 만들기

Codex Telegram으로 당근 매물 알림봇 만들기

새로고침을 줄이고 바로 받는 쪽이 낫습니다

오늘 만들 것
새로고침을 줄이고 바로 받는 쪽이 낫습니다

당근에서 닌텐도 스위치 2나 아이패드 미니 같은 물건을 기다릴 때 제일 귀찮은 건 결국 새로고침입니다. 밥 먹는 사이에 괜찮은 매물이 지나가면 다시 찾는 데 시간이 더 들어가죠. 그래서 이번 글은 당근 키워드 알림봇을 만드는 흐름으로 갑니다. 새 글 제목, 가격, 링크만 Telegram으로 바로 보내고, 같은 글은 다시 보내지 않게 잡는 방식입니다. 대시보드부터 크게 벌이지 않고 오늘 바로 손댈 수 있는 첫 버전에만 집중하겠습니다.

준비물은 Codex와 규칙 메모 한 장이면 충분합니다

이번 작업에서 중심은 AGENTS.md, codex exec, --output-schema 세 가지입니다. AGENTS.md에는 파일 범위와 알림 문구 규칙을 먼저 적어두고, codex exec로 필요한 파일을 만든 뒤, --output-schema로 조건 JSON 모양을 흔들리지 않게 고정하는 식입니다. 여기에 Telegram 봇 토큰과 chat id만 준비하면 첫 흐름은 끝까지 이어집니다. BotFather에서 봇을 만든 뒤 토큰을 받아두고, 메시지를 받을 대화방의 chat id를 챙기면 출발선은 맞춰집니다.

5분 안에 첫 구조를 잡는 순서

1
규칙 메모부터 깔기
AI에게 보낸 프롬프트
이 폴더에서 당근 키워드 알림봇을 만들 거야. 먼저 AGENTS.md만 작성해줘. 규칙은 1) 알림 문구는 짧게 2) 제목, 가격, 링크만 보이게 3) 같은 글 두 번 보내지 않기 4) 초보가 수정할 파일은 watchlist.json 하나로 제한 5) 아직 파이썬 코드는 만들지 마.

이 프롬프트를 먼저 쓰는 이유는 뒤에서 파일 수가 갑자기 늘어나는 걸 막기 위해서입니다. 알림 문구도 처음에 짧게 못 박아두면 나중에 메시지가 길어지지 않습니다. 터미널에서는 codex exec "위 프롬프트"처럼 시작하면 됩니다. 한 번 기준이 정리되면 이후 수정 포인트가 훨씬 단순해집니다.

2
조건 파일을 JSON으로 고정하기
AI에게 보낸 프롬프트
watchlist.schema.json과 watchlist.json을 만들어줘. 항목은 name, search_url, keyword, max_price, chat_name 다섯 개만 쓰고, 예시는 닌텐도 스위치 2와 아이패드 미니 두 개로 넣어줘. 초보가 바로 값만 바꾸면 되게 한국어 주석용 README.txt도 같이 짧게 만들어줘.

검색 URL과 가격 조건은 글자 하나만 달라도 엉뚱한 알림으로 이어질 수 있습니다. 그래서 watchlist를 먼저 고정해두는 편이 낫습니다. codex exec --output-schema watchlist.schema.json "위 프롬프트" > watchlist.json처럼 두면 JSON 모양이 흔들리지 않습니다. 초보 입장에서는 파일을 열어 값만 바꾸면 되니 진입 장벽도 낮습니다.

3
가짜 매물로 먼저 돌려보기
AI에게 보낸 프롬프트
bot.py 하나를 만들어줘. 기능은 1) watchlist.json 읽기 2) --demo 실행 시 가짜 매물 3개로 필터 결과 출력 3) 새 글 id는 seen.json으로 기억. Python 하나로 끝내고, 아직 텔레그램 전송은 넣지 마.

토큰을 붙이기 전에 콘솔 흐름이 먼저 보여야 손볼 곳이 분명해집니다. python bot.py --demo로 가짜 매물 3개 중 조건에 맞는 항목만 걸러보는 단계가 있으면, 검색 조건 읽기와 중복 방지와 필터링이 어디서 엇나가는지 바로 보입니다. 여기까지 오면 이 알림 봇의 뼈대는 거의 다 나온 셈입니다.

4
Telegram 전송 붙이기
AI에게 보낸 프롬프트
bot.py에 텔레그램 전송을 붙여줘. .env.example도 만들어줘. TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID 두 개만 쓰고, 각 search_url에서 제목, 가격, 링크를 뽑아 새 글만 보내게 해줘. HTML 구조가 바뀌면 어디 selector를 먼저 볼지 주석 한 줄도 남겨줘.

초보가 가장 많이 헷갈리는 지점은 토큰과 selector입니다. 그래서 환경 변수 이름을 두 개로 줄이고, HTML 구조가 달라졌을 때 어디를 먼저 봐야 하는지 주석 한 줄로 남겨두는 편이 좋습니다. 메시지도 길게 설명하지 말고 제목, 가격, 링크만 보이게 두는 쪽이 낫습니다. 폰에서 알림을 열었을 때 바로 판단할 수 있어야 하기 때문입니다.

5
실제 검색 URL만 바꿔 쓰게 다듬기
AI에게 보낸 프롬프트
지금 만든 봇을 초보 기준으로 한 번 더 다듬어줘. watchlist.json에서 검색 URL과 가격만 바꾸면 되게 유지하고, 실행 순서를 README.txt 한 장으로 다시 써줘. 마지막으로 중복 알림, 가격 파싱 실패, 빈 결과 페이지 세 경우에 어떤 문구가 뜨는지 예시도 넣어줘.

마지막 단계는 기능을 더 붙이는 시간이 아니라 나중에 다시 열었을 때 덜 헤매게 만드는 시간입니다. 초보가 건드릴 파일은 watchlist.json 하나로 남기고, 실행 순서는 README.txt 한 장으로 끝내면 관리 포인트가 확 줄어듭니다. 봇을 오래 안 열어봤다가 다시 만져도 금방 감이 돌아오는 구조가 여기서 만들어집니다.

대개 여기서 걸립니다

검색 URL은 맞는데 결과가 비어 보이는 경우가 있습니다. 이런 때는 페이지가 JavaScript로 늦게 그려지거나, 선택자가 카드 바깥을 보고 있을 가능성이 큽니다. 브라우저에서 같은 URL을 열고 카드 제목이 실제로 어떤 class를 쓰는지 먼저 확인한 뒤, 필요하면 Codex에게 requests 버전 대신 Playwright 한 파일 버전으로 바꿔달라고 시키면 됩니다.

Telegram 메시지가 안 오는데 원인이 바로 안 보이는 경우도 많습니다. 이때는 토큰 오타나 chat id가 다른 대화방으로 잡힌 상황을 먼저 의심하면 됩니다. 봇에게 아무 말이나 보낸 뒤 getUpdates로 현재 chat id를 확인하는 짧은 함수를 추가해달라고 요청하면 흐름이 꽤 빨리 정리됩니다.

같은 매물이 계속 다시 오는 문제는 보통 seen.json에 제목만 저장해서 생깁니다. 제목은 같아도 가격이 바뀌거나 문구가 조금 달라지면 새 글처럼 보일 수 있습니다. 그래서 링크의 고유 id나 글 URL 전체를 기준으로 저장하는 쪽이 더 안전합니다.

20개 평균가 한 줄이 붙으면 판단이 빨라집니다

여기서 한 단계만 더 가면 단순 알림이 아니라 바로 판단하는 도구가 됩니다. 같은 키워드로 최근 20개 가격 평균을 같이 보내게 만들면, 알림을 받는 순간 지금 올라온 가격이 높은지 낮은지 읽을 수 있습니다. 다만 처음 만드는 당근 키워드 알림봇이라면 이 기능까지 한 번에 넣기보다, 알림이 오고 중복이 막히는 기본 구조를 먼저 고정하는 편이 훨씬 덜 헷갈립니다.

관련 검색어

  • 🔍 Codex 사용법
  • 🔍 Codex 비교
  • 🔍 당근 키워드 알림봇 사용법
  • 🔍 당근 키워드 알림봇 비교
  • 🔍 Telegram 사용법
  • 🔍 Telegram 비교

댓글 쓰기

다음 이전