[Aside] 제 여행계획 + 항공권 정보 등을 쥐여주고 여행 어플 웹사이트에 정리하도록 했습니다.

소개

저는 올가을 일본 간사이 행사 참석 여행을 준비 중입니다. 항공편/호텔은 이미 예약했고, 그 정보는 이전 작업에서 체크리스트 문서(Google Docs)에 정리해 두었습니다.

예전에 열심히 쓰던 여행 계획 어플 앱이 있었으나 모바일로만 계획을 짤수 있어 아쉬웠습니다. 그러다 웹 +모바일 양쪽에서 계획을 만들 수 있는 여행 계획 웹 서비스 Wander***를 알게 됐고, 웹 화면이라면 어사이드가 브라우저로 제어할 수 있을 것 같아서 선택했습니다. 이번에는 체크리스트 문서의 정보를 Wander***에 옮기는 일을 어사이드에게 맡겼습니다.

일반 브라우저에서 사람이 하면 여행 계획 사이트에 항공편 검색, 날짜 선택, 여행지 등록 등을 하나씩 해야 합니다. 이번 글은 어사이드가 이 입력을 어떻게 했고, 어디서 멈췄고, 무엇이 잘못됐는지를 정리한 기록입니다.

어사이드가 체크리스트를 보고 여행 계획 웹 서비스에 장소를 옮기고, 옆에서 지도를 돋보기로 확인하는 모습을 표현한 일러스트입니다.

진행 방법

1. 입력 전에 사이트 규칙을 먼저 확인했습니다

처음 요청했을 때 어사이드는 입력을 시작하지 않고 Wander***의 규칙부터 읽었습니다. 확인한 문서는 네 가지입니다.

  • robots.txt: 여행 편집 경로(/plan/, /plans/)를 자동 접근 금지로 해두고 있었습니다.

  • 이용약관: 로봇이나 그 밖의 자동 수단으로 서비스에 접근하는 것을 목적과 상관없이 금지하는 조항이 있었습니다.

  • 개인정보 처리방침: 접속 로그에 IP와 클릭 수가 기록될 수 있다고 적혀 있었고, 자동화 정책은 없었습니다.

  • 도움말 센터 메인: 자동화 정책 문서는 보이지 않았고, 이메일 전달 같은 공식 입력 방법이 안내돼 있었습니다. 별도 개발자·API 약관은 찾지 못했습니다.

저는 구글 검색 센터의 robots.txt 설명(크롤러 트래픽 관리용이고, 크롤러가 따를지는 크롤러의 판단이라는 내용)을 참고해서, robots.txt는 대량 요청을 막는 신호로 읽었습니다. 그래서 클릭 속도를 낮추고, 한 번에 몇 건만 입력하는 조건으로 진행을 해보았습니다.

2. 소규모 입력

어사이드는 타이핑 지연과 클릭 사이 대기를 두고, 한 번에 몇 건만 입력했습니다.

  • 항공편: 항공사와 편명, 날짜만 넣으면 공항과 시간이 자동으로 채워져서, 체크리스트 문서의 시간과 대조했습니다. 확인 번호와 메모는 문서에서 읽어 넣었습니다.

3. 일정과 방문할 장소

  • 버스 투어의 모임 장소와 시간은 제가 재료로 준 상품 상세 이미지에서 읽어 둘째 날 일정에 넣었습니다.

  • 행사장, 투어 코스, 가고 싶은 곳을 "방문할 장소" 목록에 넣었습니다.

  • 한글 검색은 장소로 안 잡혀서 영문명이나 일본어 이름으로 검색했습니다.

4. 구글 지도로 보완

Wander***에서 안 되는 경로 확인은 어사이드가 구글 지도에서 조회하여 지점 간 대중교통 경로를 찾아 비교했습니다(조회 시점 기준).

사용한 프롬프트 (이번 작업의 요청 원문)

나 지금 Wander*** 가입해놨는데, 이거 웹 제어 가능해보이네. 혹시 우리 정해진거 [예약 정보]같은거 먼저 너가 등록해볼래?
약관 읽어봐. 어느정도 제한하는지 보자.
흠 이거 robots는 근데 크롤링 매크로 이쪽에 대한거같아서. 일단 너무 클릭을 빠르게 많이 하는게 아닌 수준에서 해줄수있을까?
Wander***에 일단 위치랑, 가능하면 시간 적어줘.
위에는 주소가 확실하지 않은게 있으니까 걔네는 빼고, 확실한 애들 먼저 넣어볼까?
*** 매장은 우리 숙소에서 가까운거면 좋음.
아 그리고, 투어날 가기로 한 데도 일단 다 저장해줘.
혹시 저장한 장소들 중에 투어날 가는 것들은 [N일차] 스케줄에 차례로 넣어줄래?
근데 저가 준 지도 링크가 좌표로만 뜨고, 그 가게 지도 링크로는 연결이 안되는데? 조지루시

(이 세션의 사용자 메시지에서 옮겼고, 대괄호와 "Wander***" 표기는 개인 정보와 서비스 이름 일부를 가린 것입니다.)

결과와 배운 점

확인된 결과

  • Wander***에 항공편 2건이 들어갔고 화면에 "저장됨"이 표시됐습니다.

  • 둘째 날 일정에 투어 모임 장소와 시간, 투어 코스 6곳이 순서대로 들어갔습니다.

  • "방문할 장소"는 20곳이 추가되었습니다.

어사이드가 틀린 것

  • "메리켄 파크"를 검색했더니 같은 이름의 호텔이 들어갔고, 어사이드가 이를 발견해 삭제하고 공원으로 다시 넣었습니다.

  • 식당 링크를 좌표만 담은 형태로 만들어 제공하여, 가게 정보를 구글지도에서 볼 수 없었습니다. 제가 지적한 뒤, 가게 ID 형식으로 고치고 링크를 열어 가게 이름이 뜨는지 확인하는 규칙을 계정 스킬로 만들었습니다.

배운 점

  • 자동화 가능 여부는 로그인과 기술적 가능성이 아니라 사이트 규칙과 사용자의 허락으로 정해집니다. 이번에는 규칙의 불확실성을 알리고 제가 판단했습니다.

  • 한 줄 요청이어도 입력 위치(일정인지 목록인지)는 확인해야 합니다.

반복 규칙으로 남긴 스킬 두 개

같은 실수를 반복하지 않도록, 이번 작업에서 정한 규칙을 계정 스킬 두 개로 남겼습니다. 핵심만 옮깁니다.

여행 계획 서비스 일정 입력 스킬

  • 본인 계정에 확정된 정보를 소규모로 입력하는 작업만 요청마다 다시 묻지 않고 진행합니다. 결제와 유료 구독, 공유와 삭제, 제가 직접 넣겠다고 한 항목은 따로 확인합니다.

  • 사람 속도로 입력합니다. 타이핑에 지연을 두고, 클릭 사이에 대기를 넣고, 한 번에 몇 건만 처리합니다.

  • 경고, 캡차, 로그인 풀림이 보이면 즉시 멈추고 보고합니다.

  • 입력 뒤에는 "저장됨" 표시와 카드에 보이는 값을 읽어 원본과 대조합니다. 예약번호 같은 개인 정보는 스킬 파일에 적지 않습니다.

구글 지도 장소 링크 스킬

  • 해외 식당과 장소는 구글 지도를 먼저 씁니다.

  • 가게 링크는 가게 ID(place_id) 형식으로 만들고, 좌표만 담은 링크는 쓰지 않습니다.

  • 링크를 보내기 전에 한 번 열어서 탭 제목에 가게 이름이 뜨는지 확인합니다. ID를 못 구하면 "링크 못 만듦"이라고 알립니다.

  • 길찾기 결과에는 "지금 출발" 기준이라는 점과, 도착지가 비슷한 다른 장소로 해석될 수 있다는 점을 같이 적습니다.

가게 링크는 이런 형태로 만들었습니다. (값은 예시입니다)

좌표만 보이는 링크: https://www.google.com/maps/search/?api=1&query=<위도>,<경도>
원하는 링크:    https://www.google.com/maps/place/?q=place_id:<가게 ID>
경로 링크:    https://www.google.com/maps/dir/?api=1&origin=<출발지>&destination=<도착지>&travelmode=transit

좌표만 넣은 링크는 그 위치만 보여 줄 뿐 가게 페이지로 연결되지 않았고, 가게 ID 형식으로 바꾸자 가게 이름이 뜨는 것을 확인했습니다.

도움 받은 글 (옵션)

  • Google 검색 센터, "robots.txt 소개" (https://developers.google.com/search/docs/crawling-indexing/robots/intro?hl=ko): robots.txt가 크롤러 트래픽을 관리하기 위한 파일이고, 크롤러가 지침을 따를지는 크롤러의 판단이라는 설명을 참고해 이번 서비스의 robots.txt를 해석했습니다.

3
3개의 답글
지피터스 뉴스레터

이번 주 AI, 딱 쓸 것만

매주 월요일 오후,
읽고 바로 써먹을 AI 소식만