Claude Code로 Musinsa 재입고 텔레그램 알림봇 5분 만에 만들기

Claude Code로 Musinsa 재입고 텔레그램 알림봇 5분 만에 만들기

Claude Code로 Musinsa 재입고 텔레그램 알림봇 5분 만에 만들기

사이즈 풀리는 순간만 받자

오늘 만들 것
사이즈 풀리는 순간만 받자

무신사에서 신발이나 후드 하나 찜해두고 새로고침만 하다 놓친 적 있죠. 이번 글은 Claude Code로 Musinsa 재입고 알림봇을 만드는 흐름만 딱 잡는 데 집중합니다. 필요한 건 상품 URL 하나, 내가 노리는 사이즈 이름 하나, 텔레그램 봇 정보 정도예요. 첫 5분 목표도 단순합니다. 알림까지 한 번에 끝내려 하지 말고, 터미널에 재고 있음 또는 품절 한 줄이 찍히는 장면부터 보는 겁니다.

이렇게 쪼개서 만드는 이유는 명확합니다. 감지 로직이 먼저 살아 있어야 텔레그램 문제인지, 상태 저장 문제인지 바로 분리해서 볼 수 있어요. Claude Code를 쓰는 분은 그대로 따라가면 되고, Codex를 쓰는 분도 같은 프롬프트 순서로 거의 비슷하게 붙일 수 있습니다. 처음부터 완성형을 노리기보다 작은 성공 장면을 먼저 확보하는 편이 훨씬 덜 꼬입니다.

처음에 챙길 것

새 폴더를 하나 열고 /init으로 CLAUDE.md를 만든 뒤 목표를 짧게 적어두면 세션이 덜 흔들립니다. 예를 들면 과장 문구 금지, 파일은 작게 시작, 목표는 Musinsa 재입고 알림봇 한 개처럼 적어두면 충분해요. 그리고 상품 URL, 원하는 사이즈 표기, telegramBotToken, telegramChatId를 준비하면 바로 시작할 수 있습니다.

여기서 사이즈 표기를 대충 쓰면 첫 단계부터 헷갈립니다. 270이라고 생각하고 넣었는데 실제 버튼에는 270mm, M(270), 옵션명 포함 문구처럼 적혀 있는 경우가 많거든요. 그래서 상품 페이지에서 보이는 실제 텍스트를 기준으로 적는 편이 낫습니다. 이 한 줄이 맞아야 Playwright가 읽은 상태값도 흔들리지 않습니다.

5분 안에 처음 볼 장면

1
재입고 감지만 먼저 보기
AI에게 보낸 프롬프트
새 Node.js 폴더에서 Musinsa 상품 페이지 1개를 5분마다 확인하는 아주 작은 스크립트를 만들어줘. 파일은 package.json, config.json, watch.js 세 개만 써. Playwright로 페이지를 열고, config.json에 적은 targetSize가 품절이 아니면 terminal에 재고 있음, 아니면 품절이라고 찍어줘. 아직 Telegram 전송은 넣지 마. 실행 명령도 같이 적어줘.

첫 프롬프트에서 알림 전송, 스케줄링, 상태 저장까지 다 넣으면 스크립트가 갑자기 커지기 쉽습니다. 일단 무신사 상품 페이지를 읽고 targetSize 상태만 판단하는 눈부터 만든다고 생각하면 훨씬 단순해져요. watch.js가 뜨고, 해당 버튼을 읽고, 재고 있음 또는 품절을 찍어주기만 해도 Step 1은 끝입니다.

이 단계에서 볼 건 세 가지면 충분합니다. 사이즈 이름을 제대로 잡는지, 품절 상태를 반대로 읽지 않는지, Playwright가 페이지를 열고 옵션 영역이 보일 때까지 기다리는지예요. 터미널에 한 줄이 안정적으로 찍히기 시작하면 다음 단계로 넘어갈 준비가 된 겁니다.

2
텔레그램만 붙이기
AI에게 보낸 프롬프트
방금 만든 watch.js에 Telegram 전송만 추가해줘. 재고 있음일 때만 메시지를 보내고, 메시지에는 상품명, 사이즈, 상품 URL을 넣어줘. config.json에는 telegramBotToken과 telegramChatId를 추가해줘. 다른 구조 변경은 최소화해줘.

여기서는 감지와 전송을 일부러 분리해서 보는 게 중요합니다. 직전 단계까지 터미널 출력이 맞았다면 이번에 확인할 건 메시지가 도착하느냐 하나예요. 상품명, 사이즈, URL 세 줄만 또렷하게 오면 실제로 써먹을 모양이 보입니다. 문장을 예쁘게 다듬는 건 뒤로 미뤄도 됩니다.

메시지를 짧게 두는 이유도 단순합니다. 알림이 왔을 때 바로 눌러볼 수 있어야 하니까요. 상품명과 사이즈만 선명하면 누가 봐도 무슨 상황인지 바로 이해됩니다. 여기서부터는 기능을 더하는 작업이 아니라 조건을 정리하는 작업에 가까워집니다.

3
같은 알림 폭탄 막기
AI에게 보낸 프롬프트
같은 재입고를 10번 보내지 않게 state.json 하나를 추가해줘. 마지막 상태가 soldout이었다가 instock으로 바뀐 순간에만 Telegram을 보내고, 계속 instock이면 조용히 있게 해줘. 코드 주석은 짧게만 넣어줘.

이 단계부터 Musinsa 재입고 알림봇이 실사용 형태에 가까워집니다. 중요한 건 많이 울리는 게 아니라 필요한 순간에만 울리는 겁니다. 품절에서 재고 있음으로 바뀐 순간만 보내고, 이미 재고 있음 상태인 동안에는 조용히 두는 규칙이 들어가야 알림창이 버텨집니다.

state.json을 따로 두는 이유도 분명합니다. 프로그램을 다시 켰을 때 마지막 상태를 기억해야 같은 상품을 또 처음 본 것처럼 다루지 않기 때문이에요. 이 감각을 한 번 잡아두면 다른 쇼핑몰 감지 스크립트로 넓힐 때도 그대로 옮겨갈 수 있습니다.

4
페이지 구조 확인 한번 더
AI에게 보낸 프롬프트
지금 코드 기준으로 Musinsa 상품 페이지에서 사이즈 버튼 상태를 잘못 읽을 수 있는 지점 3개만 찾아줘. 필요하면 웹에서 페이지 구조도 읽고, 수정은 최소 diff로 해줘.

실제로 자주 틀리는 구간은 여기입니다. 버튼 텍스트 안에 품절 문구가 따로 섞여 있거나, disabled 속성은 없는데 클래스 이름으로만 막아두는 경우가 있어요. 옵션 영역이 늦게 뜨면 아직 안 열린 상태를 품절로 오해할 수도 있습니다. 그래서 Step 4는 큰 리팩터링이 아니라 오판 지점을 짚고 작은 수정으로 정리하는 단계로 보면 됩니다.

이 과정을 거치고 나면 상품 페이지가 조금 바뀌어도 어디를 먼저 의심해야 할지 감이 생깁니다. 재고 없는 상품 하나, 재고 있는 상품 하나를 각각 넣어 비교해보면 기준도 더 또렷해져요. 나중에 선택자 하나가 흔들려도 어디를 고쳐야 하는지 바로 잡힙니다.

5
반복 실행까지 걸기
AI에게 보낸 프롬프트
이 폴더에서 재부팅 후에도 다시 켤 수 있게 실행 순서를 README에 5줄 안으로 정리해줘. 그리고 Claude Code에서 /review로 읽었을 때 위험할 만한 부분이 있으면 먼저 손봐줘. 마지막으로 /loop에 넣을 한 줄 프롬프트 예시도 적어줘.

마지막 단계는 다시 켤 때 안 헷갈리게 흔적을 남기는 작업입니다. 실행 순서가 짧게 적혀 있어야 며칠 뒤 다시 봐도 바로 이어갈 수 있고, /review는 지금 스크립트에서 불안한 부분을 한 번 더 걷어내는 용도로 쓰기 좋습니다. /loop 한 줄 프롬프트까지 남겨두면 반복 점검도 훨씬 가벼워집니다.

여기까지 오면 오늘 목표였던 5분짜리 시작점은 충분합니다. 감지하고, 보내고, 조용히 유지하는 순서로 나누면 중간에 어디서 어긋났는지 추적하기가 쉬워집니다. 이 순서가 잡히면 나중에 조건을 하나 더 붙여도 흐름이 잘 무너지지 않습니다.

막히는 지점은 보통 세 군데

터미널에는 아무 말도 안 뜨는데 브라우저만 열리는 경우가 있습니다. 이때는 targetSize 문구가 실제 페이지 표기와 다를 가능성이 큽니다. 270이라고 적었는데 버튼에는 270mm나 M(270)처럼 써 있을 수 있어요. 상품 페이지에서 보이는 텍스트를 그대로 config.json에 넣고 다시 확인하면 바로 풀리는 경우가 많습니다.

텔레그램 메시지가 오지 않으면 토큰이나 chat id부터 보는 편이 빠릅니다. watch.js에서 Telegram 전송만 따로 호출하는 짧은 테스트를 두면 문제 위치를 가르기 좋습니다. 테스트 메시지는 도착하는데 재입고 상황에서만 안 오면 전송 문제가 아니라 조건문이나 상태 전환 로직을 다시 봐야 합니다.

알림이 너무 자주 오면 state.json이 제대로 저장되지 않았거나 상태를 구분하는 키가 불안정한 경우가 많습니다. 상품명만 키로 쓰면 페이지 문구가 조금 달라질 때 새 항목처럼 보일 수 있어요. URL과 사이즈 조합으로 바꾸면 같은 상품을 다루는 기준이 더 안정됩니다.

다음 단계는 할인 조건 붙이기

한 걸음 더

여기서 한 발만 더 가면 재입고와 할인 조건을 같이 보는 버전으로 넓힐 수 있습니다. 재고가 풀렸을 때만 보는 게 아니라 특정 가격 아래로 내려갔을 때만 메시지를 보내게 만드는 식이죠. 다만 처음부터 둘 다 넣기보다 오늘 만든 흐름을 먼저 안정시키는 편이 낫습니다. 감지 기준이 하나일 때 통과한 뒤 두 번째 조건을 붙이면 바뀐 지점을 찾는 시간도 짧아집니다.

관련 검색어

  • 🔍 Claude Code 사용법
  • 🔍 Claude Code 비교
  • 🔍 Musinsa 재입고 알림봇 사용법
  • 🔍 Musinsa 재입고 알림봇 비교
  • 🔍 텔레그램 봇 사용법
  • 🔍 텔레그램 봇 비교

댓글 쓰기

다음 이전