Snitchmd: Cloudflare로 보호된 URL을 LLM용 깔끔한 Markdown으로 변환

웹 페이지에서 깔끔하고 관련성 있는 텍스트를 추출하는 것은 다양한 애플리케이션에서 흔히 요구되는 작업이며, 특히 요약, 분석, 컨텍스트 제공을 위해 Large Language Models (LLMs)에 정보를 입력할 때 중요합니다. 하지만 이 작업은 Cloudflare와 같은 최신 웹 보호에 의해 복잡해지는데, 이들은 자동화된 curl 요청을 HTTP 403 오류로 자주 차단합니다. 게다가 요청이 성공하더라도 원시 HTML에는 탐색 메뉴, 광고, 템플릿 등 방대한 잡음이 포함되어 있어 LLM의 소중한 컨텍스트 윈도우를 소모하고 처리 비용을 증가시킵니다.

이러한 문제들을 해결하기 위해 Snitchmd가 오픈소스 솔루션으로 등장했습니다. syabro가 만든 이 Docker 기반 도구는 모든 URL을 깔끔한 Markdown으로 변환하는 신뢰할 수 있는 방법을 제공하며, 안티봇 방어를 우회하고 LLM이 활용하기에 간결하고 관련성 높은 콘텐츠를 제공하도록 설계되었습니다. 비용이 많이 드는 SaaS 대안을 사용할 필요가 없습니다.

LLM을 위한 웹 콘텐츠 추출의 과제

Developers and researchers frequently encounter several hurdles when attempting to programmatically access and process web content:

  • Anti-Bot Protections: Cloudflare와 같은 서비스를 사용하는 사이트는 자동화된 요청을 적극적으로 탐지하고 차단하여, 표준 HTTP 클라이언트를 이용한 콘텐츠 스크래핑을 어렵게 만듭니다.
  • HTML Noise: 콘텐츠를 성공적으로 가져오더라도 원시 HTML은 직접 LLM에 입력하기에 거의 적합하지 않습니다. 헤더, 푸터, 사이드바, 스크립트, 광고 등 비콘텐츠 요소가 가득해 실제 정보를 희석하고 LLM 컨텍스트 윈도우를 빠르게 소모합니다.
  • Cost and Privacy: 유료 스크래핑 서비스는 비용이 많이 들 수 있으며, 민감한 URL이나 콘텐츠를 제3자 API에 전송하면 특히 내부 또는 독점 데이터의 경우 프라이버시 문제가 발생합니다.

Snitchmd 소개: 로컬 오픈소스 솔루션

Snitchmd는 Docker 컨테이너 안에 기존 오픈소스 도구 두 개인 CloakBrowserrs-trafilatura를 결합함으로써 이러한 문제들을 해결합니다. 저자는 이를 “새로운 스크래퍼가 아니라, 단지 접착제”라고 표현하며, 실용적인 접근 방식을 강조합니다.

  • CloakBrowser: 이 구성 요소는 스텔스 Chromium 브라우저 환경을 제공하여 웹 페이지를 탐색하고 렌더링할 수 있으며, 표준 curl 요청을 차단하는 Cloudflare 및 기타 안티봇 메커니즘을 효과적으로 우회합니다.
  • rs-trafilatura: 페이지 콘텐츠가 렌더링되고 접근 가능해지면 rs-trafilatura가 작동하여 HTML에서 주요 콘텐츠를 지능적으로 추출하고 깔끔하고 읽기 쉬운 Markdown으로 변환합니다. 이 과정은 불필요한 탐색 및 UI 요소를 제거하고 핵심 기사나 문서에만 집중합니다.

Snitchmd의 주요 장점은 로컬 실행 모델입니다. 사용자의 머신에서 Docker로 실행되므로 “내 URL이 내 컴퓨터에 머무른다”는 점을 보장하며, 클라우드 기반 스크래핑 서비스와 관련된 프라이버시 문제를 해결합니다.

LLM 컨텍스트를 위한 토큰 대폭 감소

Snitchmd의 가장 매력적인 기능 중 하나는 웹 콘텐츠의 토큰 수를 크게 줄여 LLM 처리 효율을 크게 향상시키는 것입니다. 저자는 tiktoken cl100k_base를 사용한 구체적인 예시를 제시했습니다:

  • cloudflare.com/learning/bots: curl은 HTTP 403을 반환했으며, snitchmd는 0.8k 토큰을 산출했습니다.
  • docs.docker.com/engine/install: 원시 HTML은 187k 토큰이었고, snitchmd는 이를 0.9k 토큰으로 줄였습니다.
  • en.wikipedia.org/wiki/LLM: 원시 HTML은 222.7k 토큰이었으며, snitchmd는 29.7k 토큰을 생성했습니다.

이러한 토큰 감소는 LLM에 매우 중요합니다. 더 많은 관련 정보를 컨텍스트 윈도우에 맞출 수 있게 하고, 처리 속도를 향상시키며, API 비용을 낮춥니다.

안티봇 방어와 제한 사항 대응

Snitchmd는 Cloudflare의 초기 검사를 통과하도록 설계되어 많은 보호된 사이트에 접근할 수 있게 합니다. 그러나 현재 제한 사항을 언급할 필요가 있습니다: reCAPTCHA v2나 hCaptcha와 같은 '클릭 교통 신호등' 캡차를 해결할 수 없습니다. 이러한 인터랙티브 챌린지는 인간의 개입이 필요하며 완전 자동 스크래핑에 대한 장벽으로 남아 있습니다.

Snitchmd vs. 기타 도구 (예: Playwright)

웹 자동화 도구에 대한 흔한 질문은 Playwright와 같은 기존 라이브러리와 어떻게 비교되는가 입니다. Playwright는 개발자가 헤드리스 브라우저를 제어할 수 있는 강력하고 범용적인 브라우저 자동화 라이브러리이지만, Snitchmd는 특정 문제에 대한 보다 전문화되고 즉시 사용할 수 있는 솔루션을 제공합니다.

Snitchmd는 기본적인 브라우저 자동화 기능(아마도 CloakBrowser를 통해 Playwright나 Puppeteer와 유사한 기능)을 활용하면서, 지능적인 콘텐츠 추출 및 Markdown 변환을 결합합니다. Snitchmd의 가치는 스텔스 브라우징과 콘텐츠 정리를 미리 패키징한 조합에 있으며, 깨끗한 웹 콘텐츠를 LLM에 제공하는 특정 사용 사례에 대한 높은 수준의 추상화를 제공합니다. 개발자는 이론적으로 Playwright와 별도의 HTML‑to‑Markdown 라이브러리를 사용해 유사한 파이프라인을 구축할 수 있지만, Snitchmd는 이러한 기능을 즉시 제공하여 과정을 간소화합니다.

결론

Snitchmd는 LLM 생태계에서 지속되는 문제인 Cloudflare로 보호된 사이트를 포함한 웹에서 깔끔하고 관련성 높은 텍스트를 얻는 실용적인 오픈소스 솔루션을 제공합니다. 스텔스 브라우징과 지능적인 콘텐츠 추출을 결합하고 로컬에서 실행함으로써, 수동 스크래핑이나 비용이 많이 드는 SaaS에 대한 프라이버시 보호, 효율성, 비용 절감 대안을 제시합니다. LLM을 다루는 개발자와 연구자에게 Snitchmd는 컨텍스트 품질을 향상하고 토큰 사용량을 줄이는 데 유용한 도구이며, MIT 라이선스로 제공됩니다.

Sources