한 줄 요약
리테일 MD인 제가 — 매일 매장 매출을 5개 사이트에 따로 접속해서 보던 반복 작업을 — Claude Code(쩨홉)와 Playwright로 자동화해서 — 슬랙 DM에 한 줄 보내면 5곳 매출과 총 매출이 한 번에 나오는 운영 시스템까지 만들었어요.
이런 분들께 도움돼요
매일 여러 시스템에서 같은 데이터를 모아야 하는 운영/MD 담당자
"공식 API가 없어요"라는 말 듣고 자동화를 포기한 적 있는 분
코드를 직접 못 짜지만 Claude Code 같은 에이전트 도구는 적극 쓰고 싶은 분
일회성 스크립트가 자꾸 휘발돼서 "왜 같은 일을 또 처음부터?" 라고 느낀 분
시작점: 왜 이걸 만들었나
저는 팝업 매장과 상설 매장을 함께 운영하는 MD예요. 매일 마감 후 매출을 확인하려면:
POS 사이트 들어가서 매출 상세 탭 열고 → 매장 4개 ID 하나씩 선택 → 검색 → 합산
가챠업체1 자판기 관리 사이트 들어가서 메인 페이지 매출 위젯 확인
가챠업체2 사이트 들어가서 검색 절차 거쳐서 매출 확인
AI포토부스 사이트 들어가서 (Nexacro 기반 RIA 앱 — 진입부터 까다로움) 매출 메뉴탭 더블클릭
네컷포토부스 사이트 들어가서 매출 조회
토스POS — 앱 전용이라 자동 수집은 불가, 매일 수기로 확인
매장 1곳을 보려는 게 아니라 팝업 매장 합산 매출이 필요한 거였어요. 5개 사이트를 다 돌고 나서 직접 합계를 계산해야 하루 매출이 잡혔죠. 매일 하루에 3회 이상 같은 일을 하면서 "이거 자동화 안 되나" 만 외쳤어요.
만든 것 / 결과물
sales-collection.md— Claude Code 스킬 1개로 자동 수집 가능한 5개 사이트 수집 절차를 모두 통합 (토스POS는 앱 전용이라 대시보드에서 수기 입력으로 보완 — 총 6곳 합산)슬랙 DM 트리거 —
토이하우스 매출조회해줘한 줄이면 자동 실행매일 21:10 자동 크론 — 트리거 없이도 정해진 시각에 매출 출력
vercel.app대시보드 — 수집된 매출이 시각화되어 누적됨
보여주는 화면: 슬랙 DM 채널 — 한 줄 트리거 → 1~2분 후 5곳 매출 + 총 매출이 한 메시지로 출력
사용한 도구
Claude Code (쩨홉): 비개발자도 자연어로 자동화 흐름을 설계할 수 있는 에이전트. 사이트별 진입 절차와 수집 로직을 본인이 직접 코딩하지 않고 자연어로 의뢰
Playwright: 5개 사이트의 브라우저 자동화. 로그인, 클릭, 데이터 추출 담당
Claude API: 수집된 매출 데이터를 슬랙 메시지 형식으로 정리
Supabase: 매출 누적 저장 (대시보드용)
Next.js + Vercel:
vercel.app대시보드 배포Slack: DM 트리거 + 결과 출력 채널
크론 스케줄러: 매일 21:10 자동 실행
진행 과정
1. 사이트별 패턴 1대1로 잡기
처음엔 5개 사이트를 동시에 자동화하려고 했어요. 결과는 처참했어요. 어디서 막혔는지 보이지도 않고, 한 사이트 디버깅하느라 다른 사이트도 같이 깨지고.
방향을 바꿔서 한 사이트씩 끝내고 다음 사이트로 넘어가기 원칙으로 갔어요.
POS: 매출 상세 탭에서 매장 ID 4개를 자동 선택해서 검색하는 패턴 → 확정
가챠업체2: 단순 URL 접속 + 검색 절차 → 확정
가챠업체1: 메인 페이지의 매출 위젯 DOM을 직접 추출 (`innerText` 파싱) → 확정
AI포토부스: 일반 자동화 진입이 매번 타임아웃 → Nexacro 내부 datasource를 직접 호출하는 방식으로 우회 → 확정
네컷포토부스 사이트 들어가서 매출 조회
토스POS — 앱 전용이라 자동 수집은 불가, 수기로 입력 후 자동 합산
2. 첫 실전 트리거에서 막힘
5곳 패턴이 다 잡혔으니 슬랙에서 한 줄 트리거를 보내봤어요. 4곳은 성공, AI포토부스만 결과가 안 나옴. 원인을 추적해보니 — 자동화 테스트하던 도메인과 실제 매장 운영 도메인이 다른 사이트였어요. 어제까지의 검증이 무용지물이었던 거예요.
3. 1대1 재조회 + AI포토부스 트릭
URL 혼선을 정리한 뒤 사이트별로 1대1 재조회. 이번엔 AI포토부스 자동화가 또 alert dialog에서 막혔어요. 해결은 window.alert를 빈 함수로 override 해서 alert를 무시하는 트릭. 진입이 비로소 끝까지 도달했어요.
4. 스킬로 묶기
여기서 진짜 중요한 분기점이 있었어요. 사이트별 패턴이 다 잡혔지만, 흩어진 스크립트로 두면 다음에 또 처음부터예요.
sales-collection.md 스킬 파일 하나에 5개 사이트의 진입 절차 + 충돌 방지 + 탭 관리 + 실패 케이스 가이드까지 전부 통합. Claude Code가 슬랙 트리거를 받으면 이 스킬 한 파일만 호출해서 전체 흐름을 실행하도록 운영 구조를 바꿨어요.
지아코모님께서 지난번 모각에서 스킬을 만들어보라고 말씀주셨었는데, 이번 작업을 통해 저도 스킬을 만드는 것에 도전해보면서 어떤 의미인지, 왜 필요한지에 대해서 체감하고 배울 수 있었어요 *스크립트는 한 번 동작하면 휘발*되고 다음에 똑같은 일을 시키려면 사람이 다시 설명해야 해요. 반면 *스킬은 에이전트가 매번 같은 절차를 같은 방식으로 다시 끄집어내는 외부 메모리*예요. 코드 자체를 짜는 일이 아니라, 에이전트가 *내일도, 다음 주에도 같은 결과를 낼 수 있는 형태로 절차를 보관*하는 일이었어요.5. 운영 시스템 완성
스킬 첫 실전 테스트에서 일부 사이트가 진입 단계에서 실패. 실패 케이스를 같은 스킬 파일 안에 가이드로 누적하는 방식으로 보정. 이렇게 한 번씩 막힐 때마다 스킬이 더 두꺼워지고 더 똑똑해졌어요.
매일 21:10 자동 크론까지 연결하면서 슬랙 DM 트리거 / 정해진 시각 자동 실행 두 가지가 같은 스킬로 동일하게 동작하는 시스템이 완성됐어요.
실제 사용 예시
슬랙 DM에 한 줄:
OO점 매출조회해줘1~2분 뒤 같은 채널에 한 메시지로 출력 (예시 — 매장명/숫자는 매일 다름):
🐿️ 팝업 매장 매출 (오늘)
POS: 1,234,000원 ✅
토스POS : ㅡ수기 입력
가챠업체2: 567,000원 ✅
가챠업체1: 000건 / 789,000원 ✅
AI포토부스: 123,000✅
네컷포토부스: 00건 / 456,000원 ✅
─────────────
TOTAL: [합산액]한국 모바일 애플리케이션의 스크린샷
Before vs After
Before
매일 5개 사이트 수동 접속·로그인·검색·복사·합산
사이트당 평균 2~3분 × 5곳 = 총 15분 이상+메세지 작성까지
매장 ID를 매번 계정정보 기록으로 수기로 계산해서 합계 적용
After
슬랙 DM 한 줄, 또는 21:10 크론 (개입 0초)
5곳 결과 + 총 매출이 한 메시지로 슬랙에 누적
매장 ID·집계 범위는 스킬 파일 안에 박혀 있어서 내가 기억할 필요 없음
사이트가 추가되면 같은 스킬에 절차만 덧붙이면 끝남
결과와 배운 점
결과: 매일 15분+의 수동 매출 조회가 슬랙 한 줄로 줄었음. 자동 크론으로 가면 그것마저도 0초가 됨. 같은 스킬을 본인이 직접 호출하든, 크론이 호출하든 동일하게 동작
결과(추가):대시보드 안에 매출보고 메시지 영역을 따로 만들어서, 자동 수집된 5곳 + 토스POS(앱 전용이라 수기 입력)까지 6곳 합산이 정해진 보고 양식 그대로 자동 작성되도록 했어요. 옆에 복사 버튼 하나만 누르면 임원/팀 채널에 그대로 붙여넣기 끝 — 매출 조회와 보고 작성이 한 화면에서 끝나는 구조예요
배운 점 1 — 한 곳씩 끝내라: 5곳을 동시에 풀려고 한 처음 몇시간은 거의 진전이 없었어요. 5곳을 한 번에 풀려고 하지 말고, 한 곳씩 끝내고 통합해라 — 이게 이번 작업의 가장 큰 교훈이에요. 패턴이 잡힌 한 사이트가 다음 사이트의 힌트가 되어 주기도 했고요
배운 점 2 — 스킬화가 자산이 된다: 일회성 스크립트는 잠시 동작하고 휘발돼요. 재호출 가능한 스킬로 묶는 순간, 매일 반복되던 일이 한 줄 트리거가 돼요. 실패 케이스도 스킬 안에 가이드로 누적시키니까 스킬이 알아서 똑똑해지는 구조가 되더라고요
배운 점 3 — 보고 형식이 시간을 아낀다: 작업 중 막힘을 보고할 때 ① 완료된 부분 ② 막힌 지점과 이유 ③ 내 판단이 필요한 선택지 — 이 세 줄로 정리하면 의사결정이 빨라져요. 이번 자동화 중 만든 운영 규칙으로 정착됐어요
배운 점 4 — 코드보다 "에이전트의 작업 환경"을 설계해라: 이번 작업에서 제가 직접 만진 건 거의 다 텍스트 파일이에요.
sales-collection.md스킬,SOUL.md의 보고 형식 룰,MEMORY.md의 운영 규칙, 익명화 매핑 같은 휴리스틱들. 코드는 Claude Code(쩨홉)가 짰지만, 에이전트가 어떤 룰 위에서 일할지를 정한 건 저예요. 비개발자도 에이전트의 하네스(작업 환경)를 설계할 수 있다는 게 이번 사례의 가장 큰 발견이었어요.배운 점 5 — 사람 호출과 자동 호출의 진입점을 통일: 슬랙 DM 트리거와 21:10 크론이 같은 스킬을 호출하게 만든 것도 의도된 설계예요. 평소엔 슬랙으로 부르고, 잊은 날엔 크론이 대신 호출. 진입점이 통일되어 있어야 한쪽이 망가져도 다른 쪽이 백업이 됨. 단일 진입점 + 다중 트리거 — 에이전트 운영의 작은 패턴이지만 안정성에 영향이 컸어요.
한계/주의점: 공식 API가 없는 사이트는 결국 DOM 변화에 약함. 사이트가 리뉴얼되면 스킬 보정이 필요해요. 다만 5곳을 일일이 수동 조회하던 이전보다 유지보수 코스트가 훨씬 낮음
다음에 해볼 것
사이트별 직접 이동 링크 추가 — 매출 메시지 안의 업체명에 링크를 걸어 클릭하면 해당 매출 사이트가 바로 열리도록. 예외 케이스가 생겼을 때 수동 확인까지 한 동선에서 끝남
Solapi API 연동 — 매출 데이터가 업데이트될 때마다 내부 담당자들에게 자동 문자 발송. 슬랙을 매일 확인하지 않는 매장·관리자에게도 마감 매출이 즉시 도달
실패 자동 재시도 + 휴먼-인-더-루프 동선 — 사이트 한 곳이 timeout/실패했을 때 에이전트가 자동으로 N회 재시도하되, 끝까지 실패하면 나에게 슬랙으로 ① 완료된 곳 ② 막힌 곳 ③ 수동 확인 링크 형식으로 보고하도록 — 보고 형식 룰 자체를 스킬 안에 박아넣어 에이전트가 일관되게 따르도록 강화할 계획
작성: 비개발자 MD 나츠 + Claude Code 에이전트 쩨홉. 사례글 안의 업체명/매장명은 일부 가명 처리.