고객이 FAQ를 수동으로 추가하기 싫어해서, 웹사이트를 크롤링해 지식 베이스를 자동으로 생성하는 시스템을 만들었습니다
My client didn't want to add FAQs manually, so I built a system that crawls their website and generates the knowledge base automatically
핵심 요약
호텔 웹사이트를 크롤링하여 FAQ 지식 베이스를 자동으로 생성하는 AI 시스템 구축 사례입니다.
- 자동 크롤링 시스템 — 사이트맵 기반으로 페이지를 탐색하고 불필요한 경로를 필터링함
- 콘텐츠 추출 최적화 — BeautifulSoup으로 불필요한 요소를 제거하고 핵심 텍스트만 추출함
- AI FAQ 생성 — 정제된 데이터를 AI 에이전트가 읽어 구조화된 Q&A 쌍으로 변환함
- 데이터 업데이트 — URL 재크롤링 시 기존 데이터를 삭제하고 최신 정보로 교체함
최근에 호텔 이메일 AI 시스템을 하나 배포했는데(호텔 500곳, 하루 이메일 약 1만 5천 건 처리), 여기서 클라이언트가 요구한 기능 하나가 개발 과정에서 제일 재밌었음.
클라이언트가 호텔 새로 추가할 때마다 일일이 FAQ를 데이터베이스에 넣기 싫다고 하더라고. 호텔이 500개가 넘고 계속 늘어나는 상황이라, 이걸 수동으로 다 입력하고 있으면 그것만으로도 풀타임 업무가 될 판이었거든.
그래서 딱 두 가지를 요구함. 호텔 웹사이트 URL이나 PDF 파일을 던져주면, 시스템이 알아서 관련 정보를 싹 긁어와서 FAQ 지식 베이스를 자동으로 만들게 해달라는 거였음.
웹사이트 크롤러는 이렇게 돌아감:
일단 호텔 URL에서 시작해서 사이트맵부터 털어서 페이지를 찾음. 방문한 URL은 따로 기록해서 똑같은 페이지 두 번 크롤링 안 하게 막아놨고. 페이지는 50개까지만 제한함. 어차피 알짜 정보는 앞부분에 다 있거든. 사이트 전체 다 긁어봤자 시간만 잡아먹고 쓸모 있는 정보는 거의 없음.
쓰레기 정보 걸러내는 게 핵심임. 크롤러가 booking, reserve, login, careers, legal, checkout, cart, admin 같은 경로는 아예 거름. 이런 페이지엔 FAQ에 쓸만한 정보가 없으니까. 딱 봐도 도움 될 만한 링크(amenities, FAQs, policies 등)만 골라서 따라감.
콘텐츠 추출할 때는 BeautifulSoup을 쓰는데, 텍스트 긁어오기 전에 script, style, nav, footer, header 요소는 싹 다 날려버림. 푸터랑 내비게이션은 지식 베이스 오염시키는 잡음 덩어리니까.
첫 페이지에서 관련 내부 링크를 타고 들어가니까 /amenities나 /faq 같은 하위 페이지 정보까지 싹 다 긁어올 수 있음. 랜딩 페이지만 보는 게 아님.
이 시스템이 진짜 쓸만한 이유는 이거임:
크롤링해서 내용 깔끔하게 정리했다고 바로 벡터 데이터베이스에 때려 박는 게 아님. 별도의 AI 에이전트가 정제된 내용을 읽고 거기서 구조화된 FAQ를 뽑아냄. 질문이랑 답변 쌍으로 만드는 거지. 그다음에 이걸 임베딩해서 저장함.
흐름을 정리하면: 웹사이트 URL → 관련 페이지 크롤링 → 콘텐츠 정제 → AI가 콘텐츠로 FAQ 생성 → 임베딩 및 저장. 클라이언트는 그냥 URL만 붙여넣으면 지식 베이스가 알아서 뚝딱 만들어짐.
같은 URL을 다시 크롤링하면 기존 데이터는 싹 지우고 최신 데이터로 갈아끼우니까, 중복 없이 지식 베이스가 자동으로 업데이트됨.
FAQ 생성 에이전트용 시스템 프롬프트가 제일 중요했음. 규칙이랑 안전장치, 그리고 예시 11개를 아주 빡세게 넣어줬지. 쓰레기를 넣으면 쓰레기가 나오는 법이니까. 만약 AI가 FAQ 만들면서 헛소리해서 가격이나 정책을 잘못 알려주면 클라이언트 입장에선 돈 날리고 신뢰도 깎이는 거임. 프롬프트 대충 짜서 AI가 고객한테 엉뚱한 가격 알려줬다는 사례를 하도 많이 봐서 말이야.

here
크롤링이나 FAQ 생성 방식에 대해 궁금한 거 있으면 물어봐. 아는 대로 다 답해줌.

