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한테 일을 줄 때는 접근 방법까지 같이 말해주는 게 훨씬 낫더라고요. "데이터 가져와줘"가 아니라 "이 URL에서 파일 받아서 파싱해줘" 정도로.
AI가 비슷한 패턴의 코드를 계속 다시 쓰고, 같은 종류의 에러가 반복된다면 — 그때가 사람이 끼어들 타이밍인가 봅니다.
바이브 코딩에서 사람의 개입은 프로젝트를 방해하는 게 아니라, 오히려 앞으로 나아가게 하는 힘이었던 듯...