네이버 쇼핑 최저가 추적봇은 생각보다 금방 나옵니다. 오늘은 상품명 하나 넣으면 최저가를 보고, 내가 정한 가격 아래로 내려가면 텔레그램으로 바로 찌르는 버전까지 갑니다. 완성되면 폰으로 지금이 가격 내려간 순간만 받게 되구요. 지난번 뉴스 키워드 알림봇이 글감용이었다면, 오늘 건 바로 지갑 방어용입니다.
Claude 쓰는 분은 프로젝트 폴더에서 claude 열고 그대로 붙여넣으면 되고, Codex 쓰는 분은 codex --model gpt-5.4나 codex exec에 같은 프롬프트를 넣으면 됩니다. Claude Code 문서 기준으로 이 도구는 폴더를 읽고 파일을 고치고 명령도 바로 돌릴 수 있구요. Codex 문서 기준으론 이어서 고칠 때 resume 흐름이 깔끔해서 수정 단계가 편합니다.
준비물은 딱 셋
Claude Code 또는 Codex 하나, 네이버 개발자 센터에서 받은 쇼핑 검색 API 키, 텔레그램 봇 토큰이면 끝입니다. 네이버 쇼핑 검색 API는 JSON 응답에서 lprice로 최저가를 주고, 텔레그램 Bot API는 sendMessage로 바로 문자 알림을 보낼 수 있습니다. 이건 외우지 말고 그냥 이렇게 쓴다 정도만 잡고 가면 됩니다.
바닥부터 깔자
1
가격만 먼저 찍히게 만들기
AI에게 보낸 프롬프트
파이썬으로 네이버 쇼핑 최저가 추적봇 첫 버전을 만들어줘. 파일은 app.py 하나와 .env.example 하나만 먼저 만들어. 기능은 3개만: 상품명을 입력하면 Naver 쇼핑 검색 API를 호출하기, 응답 JSON에서 상품명과 lprice와 link를 뽑기, 터미널에 가장 싼 결과 1개를 보기 좋게 출력하기. 아직 텔레그램 알림은 붙이지 마. 초보가 바로 실행할 수 있게 pip install 목록과 python app.py 실행 방법도 README 한 단락으로 같이 적어줘.
왜 이렇게 시켰나: 처음부터 알림까지 넣으면 뭐가 안 된 건지 헷갈립니다. 네이버 쇼핑 최저가 추적봇은 일단 가격 한 줄만 찍혀도 반은 끝입니다.
이렇게 나오면 OK: 터미널에 상품명, 현재 최저가, 상품 링크가 한 번에 보입니다.
⚠여기서 이렇게 하면 안 돼요: 첫 프롬프트에 텔레그램, 스케줄, 저장까지 한꺼번에 넣지 마세요. AI가 길어지면 제일 쉬운 부분도 흐립니다.
2
텔레그램 알림 붙이기
AI에게 보낸 프롬프트
지금 만든 코드에 텔레그램 알림을 붙여줘. 사용자가 기준가를 숫자로 넣으면 현재 lprice가 그 값 이하일 때만 텔레그램으로 메시지를 보내. Telegram Bot API의 sendMessage 방식으로 만들고, chat_id와 bot token은 .env에서 읽어. 메시지는 상품명, 현재 최저가, 기준가, 링크 네 줄만 보내고 과장 문구는 넣지 마. 실행 명령은 python app.py --query 에어팟프로2 --target 290000 형태로 맞춰줘.
왜 이렇게 시켰나: 텔레그램은 문자 길이가 길수록 안 읽히는 경우가 많습니다. 네 줄로 고정해야 눈에 바로 들어와요.
이렇게 나오면 OK: 텔레그램 대화창에 가격이 내려갔다는 메시지가 오고, 링크 누르면 상품 페이지가 열립니다. 이거 진짜 3초 만에 와서 좀 허무할 수도 있음.
⚠여기서 이렇게 하면 안 돼요: 메시지 꾸미기부터 넣지 마세요. Bot API는 텍스트를 길게도 보내지만, 첫 버전은 심플한 게 덜 깨집니다.
3
같은 알림 계속 오는 거 막기
AI에게 보낸 프롬프트
같은 가격으로 10분마다 계속 울리면 못 쓰니까 state.json을 추가해줘. 마지막으로 보낸 최저가와 시간을 저장하고, 더 싸졌을 때만 다시 보내. 같은 가격이면 조용히 지나가. 그리고 프로젝트 루트에 CLAUDE.md 예시도 하나 만들어서 가격은 원 단위 숫자만, 알림 문구는 담백하게, 같은 가격 재알림 금지 이 세 줄을 넣어줘.
왜 이렇게 시켰나: 이 한 줄 규칙이 없으면 AI가 다음 수정에서 말투를 바꾸거나 중복 알림을 다시 살립니다. Claude Code는 세션 시작 때 CLAUDE.md를 읽으니까 이런 고정 규칙이 잘 먹습니다. Codex 쓰는 분은 여기서 새로 치지 말고 codex exec resume --last 같은 가격 재알림 금지와 state.json 추가처럼 이어가면 앞에서 만든 맥락이 그대로 남아요.
이렇게 나오면 OK: 네이버 쇼핑 최저가 추적봇을 다시 돌려도 같은 가격이면 조용하고, 더 싸진 순간에만 다시 울립니다.
⚠여기서 이렇게 하면 안 돼요: state 파일에 상품명을 너무 길게 통째로 키로 넣지 마세요. 공백 하나 달라도 새 상품처럼 볼 수 있습니다.
4
강제로 한 번 울려보고 끝내기
AI에게 보낸 프롬프트
테스트 모드를 넣어줘. --fake-price 옵션을 주면 실제 API 대신 내가 넣은 가격으로 비교하게 해. 예를 들어 python app.py --query 에어팟프로2 --target 290000 --fake-price 279000 을 실행하면 텔레그램 알림이 오도록 만들어줘. 마지막에 작업 스케줄러나 cron으로 30분마다 돌릴 수 있게 예시 명령 1개만 적어줘.
왜 이렇게 시켰나: 실제 가격이 안 내려가면 알림 테스트를 못 합니다. 가짜 가격 한 번 넣어보면 오늘 만든 게 진짜 살아있는지 바로 확인됩니다.
이렇게 나오면 OK: 가짜 가격으로 바로 텔레그램 알림이 오고, 그 다음엔 실제 가격 조회로 바꿔도 흐름이 그대로 유지됩니다.
여기서 이렇게 하면 안 돼요: 첫날부터 여러 상품을 한 프로세스에 다 넣으려 하지 마세요. 한 상품으로 끝까지 통과시키는 게 훨씬 빠릅니다.
여기서 막히면
1. 터미널엔 가격이 보이는데 텔레그램이 안 옵니다. 원인은 chat_id를 아직 못 찾았거나 봇 대화를 한 번도 안 연 경우가 많습니다. 봇한테 아무 말이나 한 번 보내고 chat_id를 다시 넣어보세요.
2. 가격이 이상하게 0으로 찍힙니다. 원인은 네이버 쇼핑 검색 API 결과에서 가격 비교 데이터가 없는 상품을 잡았기 때문일 때가 많습니다. 검색어를 더 구체적으로 바꾸고, 상위 5개 중 lprice가 0이 아닌 항목만 고르게 시키면 풀립니다.
3. 같은 알림이 계속 옵니다. 원인은 state.json 저장 기준이 상품명보다 실행 시각 쪽으로 잘못 잡혔을 가능성이 큽니다. 마지막 알림 시각과 마지막 최저가를 둘 다 저장하게 고치고, 같은 가격이면 무시를 프롬프트에 다시 박아주세요.
다음에 붙일 건 하나면 충분
한 걸음 더
다음엔 네이버 쇼핑 최저가 추적봇에 상품 3개 묶음 감시랑 주간 가격 그래프만 붙이면 갑자기 쓸 맛이 확 납니다.