AI가 크롤링에 집착하다
토큰을 다 써버린 날
단순한 질문에서 시작
이 이야기는 아주 단순한 질문에서 시작됐다.
"반려동물 동반 가능한 업소 리스트 가져와줘."
들어보면 쉬울 것 같다. 데이터가 어딘가에 있을 테고, AI가 그걸 가져오면 되지 않나. 실제로 데이터는 있었다. 식품안전나라 공식 포털에 정부가 인증한 반려동물 동반가능 업소 목록이 공개되어 있었다. 문제는 AI들이 그 데이터를 가져오는 방법을 두고 꽤 오랫동안, 꽤 많은 토큰을 소비하며 고집을 부렸다는 점이다.
AI들이 포털에 도착했다
처음 지시를 받은 AI 도구들은 성실하게 움직였다. 식품안전나라 포털에 접근했고, 반려동물 동반가능 업소 관련 페이지를 찾아냈다. 여기까지는 완벽했다. 문제는 그 다음이었다.
포털에는 엑셀 다운로드 버튼이 있었다. 그런데 그 버튼은 fn_downloadExcel()을 호출하는 JavaScript 동적 버튼이었다. 단순한 href 링크가 아니라는 뜻이다. AI 입장에서 이건 '해결해야 할 기술 과제'였고, 그들은 여러 방법을 차례로 시도했다.
일부 서버 환경에서 포털 접속 자체가 ECONNRESET으로 차단됨. HTML 스크래핑으로 전환, cheerio로 페이지를 파싱해서 엑셀 링크 추출 시도.
다운로드 버튼이 JS onclick으로만 연결돼 정적 파싱으로 링크를 잡을 수 없었다. onclick 속성을 파싱해서 URL을 역산하는 로직을 새로 작성.
엑셀에서 눈을 돌려서 페이지 하단부의 있는 데이터 자체를 크롤링 시도. python으로 코드를 작성했으나 실패
스크래핑 자체는 됐지만 필터링 조건이 맞지 않았는지 데이터 0건으로 처리. 이후 기간 내 토큰이 모두 소진되어버렸다.
이 과정이 여러 세션과 PR을 거쳐반복되었다. 각 시도마다 새로운 코드가 작성됐고, 새로운 에러가 나왔으며, 그 에러를 분석하는 데 또 토큰이 소비됐다. AI들은 포기하지 않고 계속 다음 방법을 시도했다. 그게 오히려 문제였다.
결국 어떻게 됐는가
결말은 허무하게도 간단했다.
사람이 직접 식품안전나라 포털에 들어가서, 엑셀 파일을 내려받고, 그 파일을 프로젝트에 올려놓았다. 그리고 AI에게 "이 파일을 읽어서 필요한 데이터를 파싱해줘"라고 말했다.
그 이후 흐름은 훨씬 빨랐다. 나중에는 엑셀 파일의 직접 다운로드 엔드포인트 URL을 찾아내서 코드에 고정값으로 넣는 방식으로 자동화까지 완성됐다
이 한 줄에 도달하기까지 수십 개의 코드 블록이 쓰이고 지워졌다.
AI가 나쁜 게 아니었다
이 경험을 정리하면서 AI를 탓하고 싶은 마음이 생기기도 했다. 하지만 생각해보면 AI가 틀린 게 아니었다. 그들은 주어진 문제를 성실하게 풀었다. "데이터를 자동으로 수집하는 파이프라인을 만들어라"는 맥락에서 보면, 크롤링과 API 연동은 완전히 합리적인 접근이었다.
문제는 질문이었다. 막연하게 "가져와줘"라고 했을 때, AI는 자신이 할 수 있는 방법 중 가장 그럴싸한 것을 선택한다. 그게 크롤링이었고, 그 방향으로 계속 나아갔다.
사람이 10초면 할 수 있는 일을 AI에게 시키면, AI는 그 일을 코드로 해결하는 방법을 연구하는 데 몇 시간을 쓴다.
바이브 코딩에서 사람의 역할
이 사건을 겪고 나서 생각이 바뀌었다. 바이브 코딩에서 사람의 역할은 단순히 "요구사항을 말하는 것"이 아니다. AI가 잘 하는 일과 사람이 잘 하는 일을 구분하고, 적절한 시점에 개입하는 것이 핵심이다.
좋은 바이브 코딩은 AI를 믿고 맡기는 게 아니라, AI의 진행 방향을 계속 읽으면서 필요할 때 사람이 개입하는 것이다. 그 개입이 늦어질수록 소비되는 토큰이 늘어난다.
이 문제에서 배운 것
AI에게 임무를 줄 때는 접근 방법까지 명시하는 게 효율적이다. "데이터 가져와줘"가 아니라 "이 URL에서 파일 받아서 파싱해줘."
AI가 비슷한 패턴의 코드를 계속 다시 쓰고, 같은 종류의 에러가 반복된다면 — 그때가 사람이 개입할 타이밍이다.
바이브 코딩에서 사람의 개입은 프로젝트를 방해하는 게 아니라, 오히려 앞으로 나아가게 하는 핵심 동력이다.