catchtable-sniper

Original🇺🇸 English
Translated

Monitor Catchtable for open reservation slots and attempt booking using a logged-in Chrome session.

3installs
Added on

NPX Install

npx skill4agent add nomadamas/k-skill catchtable-sniper

catchtable-sniper

📋 기본 정보

  • 스킬명: catchtable-sniper
  • 라이선스: MIT
  • 단계: v1
  • 카테고리: lifestyle / food
  • 로케일: ko-KR
  • 요구사항: Chrome MCP, 캐치테이블 로그인된 Chrome 세션

🎯 주요 기능

캐치테이블에서 원하는 식당의 빈자리(취소 슬롯)를 30초 간격으로 감시하다가 발견하는 즉시 자동 예약합니다.
멀티 타겟 동시 감시, 예약 오픈런 모드, 인원 유연 매칭, Dry-run 알림 전용 모드를 지원합니다.

✅ 적합한 사용 사례

  • "온지음 5월 토요일 저녁 2인 빈자리 나오면 예약해줘"
  • "온지음, 밍글스, 라연 중 5월 주말 2인 아무데나 먼저 뜨는 거 잡아줘"
    ← 멀티 타겟
  • "라연 5월 예약 오픈이 4월 30일 오전 10시야, 그때 맞춰서 잡아줘"
    ← 오픈런 모드
  • "스시야마 이번달 안에 2인 — 못 잡으면 4인 있으면 알려줘"
    ← 인원 유연
  • "밍글스 빈자리 뜨면 예약은 내가 할게 알림만 줘"
    ← Dry-run 모드
  • "https://app.catchtable.co.kr/ct/shop/mingles 토요일 4명 자동예약"

❌ 부적합한 사용 사례

  • 로그인 자동화 (카카오/네이버 로그인은 직접 해야 함)
  • 선결제 식당의 결제 정보 자동 입력 (결제 단계는 사람이 직접)
  • 캐치테이블 외 플랫폼 예약 (네이버 예약, 식신 등)
  • 30초 미만 폴링 간격 (서버 부하 방지)

🔧 기술 요구사항

  • Chrome MCP 연결 필수
  • 캐치테이블(
    app.catchtable.co.kr
    )에 로그인된 Chrome 세션 필요
  • 별도 API 키, 패키지 설치 불필요

🔐 인증 처리

이 스킬은 이미 Chrome에 로그인된 세션을 그대로 사용합니다.
로그인 정보를 스킬에 전달하지 않습니다.
로그인 안 된 경우:
"캐치테이블에 로그인되어 있지 않습니다.
 Chrome에서 캐치테이블에 카카오/네이버 로그인 후 다시 실행해주세요."
→ 스킬 중단. 로그인 자동화 없음.

🗂️ 입력 파싱

사용자 입력에서 다음을 추출한다:
항목예시필수 여부
식당명 또는 URL
"온지음"
/
app.catchtable.co.kr/ct/shop/onjium
필수 (복수 가능)
날짜
"5월 3일"
,
"이번 주 토요일"
,
"5월 주말 전체"
필수
인원
"2명"
,
"4인"
필수
시간대
"저녁"
,
"19시 이후"
선택 (없으면 전체)
모드
"알림만"
,
"dry-run"
선택 (없으면 자동예약)
인원 유연
"2인 없으면 4인도 괜찮아"
선택
오픈 시간
"4월 30일 오전 10시 오픈"
선택 (오픈런 모드)
폴링 간격
"30초마다"
선택 (기본: 30초)
멀티 타겟 감지: 식당명이 쉼표/슬래시로 구분되거나 "중 아무데나", "먼저 뜨는 거" 표현이 있으면 멀티 타겟 모드로 전환.

📊 실행 플로우

STEP 1 — 브라우저 준비 및 로그인 확인

Chrome MCP로 캐치테이블 접속:
navigate: https://app.catchtable.co.kr
MY 탭에서 로그인 상태 확인. 미로그인 시 중단.

STEP 2 — 모드 분기

입력 파싱 완료
 ├─ 오픈 시간 명시됨 → STEP 2-A (오픈런 모드)
 └─ 오픈 시간 없음  → STEP 2-B (취소 스나이핑 모드)

STEP 2-A: 오픈런 모드

예약 오픈 시간까지 대기:
[10:00:00 오픈 예정] 현재 09:58:42 — 77초 후 오픈
[10:00:00] ✅ 오픈 시각 도달 — 즉시 예약 시도
오픈 시각 정각에 날짜 선택 → 슬롯 클릭 → 예약 폼 진입.
슬롯이 이미 마감이면 → 취소 스나이핑 모드(STEP 2-B)로 자동 전환.

STEP 2-B: 취소 스나이핑 모드 (폴링 루프)

while 빈자리 없음:
    {폴링 간격}초 대기
    페이지 새로고침 또는 날짜 재클릭
    슬롯 파싱
    빈자리 발견 → STEP 3

STEP 3 — 멀티 타겟 처리

단일 타겟: 해당 식당 슬롯 확인.
멀티 타겟: 지정된 식당들을 순차 순회하며 슬롯 확인.
[14:23:15] 온지음 5/3 확인 중... 없음
[14:23:17] 밍글스 5/3 확인 중... 없음
[14:23:19] 라연 5/3 확인 중... 없음 (30초 후 재시도)
[14:23:49] ✅ 밍글스 5/3 19:30 빈자리 발견! — 예약 시작
한 곳에서 슬롯 발견 시 나머지 감시 즉시 중단 → 발견된 식당 예약 진행.

STEP 4 — 인원 유연 매칭

지정 인원(예: 2인) 슬롯이 없을 경우:
if 인원_유연 == True:
    대안_인원(예: 4인) 슬롯 확인
    발견 시:
        "2인 슬롯은 없지만 4인 슬롯(19:00)이 있습니다.
         4인으로 예약할까요? (예/아니오)"
    → 사용자 확인 후 진행

STEP 5 — 예약 진행 (모드 분기)

Dry-run 모드 (
"알림만"
/
"dry-run"
입력 시):
✅ 빈자리 발견! 예약은 진행하지 않습니다.
식당: 밍글스
날짜: 5월 3일(토)
시간: 19:30
인원: 2명
→ 지금 바로 예약하시겠습니까? (예/아니오)
→ 예약 여부는 사람이 결정.
자동예약 모드 (기본):
빈 슬롯 버튼 즉시 클릭 → 예약 폼 진입.
폼 자동 입력:
  • 인원수: 지정한 인원 선택
  • 방문 목적: "식사" (기본값)
  • 주의사항 동의: 전체 동의 체크
  • 예약자 정보: 앱 저장 정보 자동 사용
선결제 식당인 경우:
"빈자리를 발견했습니다! 결제가 필요합니다.
 결제 금액: {금액}원
 지금 결제를 진행할까요? (예/아니오)"
→ 결제 정보 자동 입력 없음. 사용자 확인 후 결제 진행.
무료 예약: "예약하기" 최종 확인 버튼 클릭.

STEP 6 — 완료 확인

🎉 예약 완료!

식당: {식당명}
날짜: {날짜}
시간: {시간}
인원: {인원}명
모드: {자동예약 / Dry-run}
예약번호: {예약번호}

캐치테이블 앱 > MY > 예약내역에서 확인 가능합니다.

💡 중간 상태 출력 형식

[14:23:15] 밍글스 5/3 저녁 슬롯 확인 중... 빈자리 없음 (30초 후 재시도)
[14:23:45] 온지음 5/3 저녁 슬롯 확인 중... 빈자리 없음
[14:24:15] ✅ 밍글스 5/3 19:30 (2인) 빈자리 발견! — 예약 시작

⚙️ 설정값

항목기본값범위
폴링 간격30초30초 이상
최대 감시 시간2시간
멀티 타겟 최대 수5개
2시간 초과 시:
"2시간 동안 빈자리가 없었습니다. 계속 시도할까요? (예/아니오)"

🚨 에러 핸들링

상황대응
식당 페이지 404"식당을 찾을 수 없습니다. 이름을 다시 확인해주세요."
예약 오픈 전오픈 일정 안내 후 오픈런 모드로 전환 제안
슬롯 클릭 후 이미 마감즉시 재폴링 재개
네트워크 오류10초 후 재시도, 3회 연속 실패 시 사용자 알림
멀티 타겟 중 일부 404해당 식당 제외, 나머지 계속 감시
2시간 초과"계속 시도할까요?" 확인 후 연장 또는 종료

✨ 완료 기준

다음 중 하나:
  • 예약 완료 화면 확인 + 예약번호 수집
  • Dry-run 모드에서 빈자리 발견 및 사용자 알림 완료
  • 사용자가 명시적으로 중단 요청

사용 예시

"온지음 5월 10일 저녁 2인 빈자리 나오면 예약해줘"
"온지음, 밍글스, 라연 5월 토요일 저녁 2인 중 아무데나 먼저 뜨는 거 잡아줘"
"라연 5월 예약이 4월 30일 오전 10시 오픈이야, 그때 맞춰 2인 잡아줘"
"스시야마 이번달 2인 — 없으면 4인도 괜찮아, dry-run으로"
"https://app.catchtable.co.kr/ct/shop/mingles 토요일 4명 자동예약"

⚠️ 주의사항

  • Chrome에 캐치테이블 로그인 세션이 있어야 동작합니다.
  • 선결제 식당의 결제 정보는 직접 입력해야 합니다.
  • 폴링 간격은 최소 30초를 유지합니다 (서버 부하 방지).
  • 캐치테이블 이용약관을 준수하는 범위에서 사용하세요.