unclecode/crawl4ai

Open-source web crawler and scraper for LLMs and AI agents: any website into clean, LLM-ready Markdown. Run it yourself, or use Crawl4AI Cloud with one key.

Crawl4AI – LLM 및 AI 에이전트를 위해 구축된 오픈소스 웹 크롤러 & 스크레이퍼

개요 – 웹 페이지를 가져오고, 필요할 때 실제 브라우저를 실행하며, LLM 친화적인 깔끔한 Markdown 문서를 반환하는 Python 라이브러리입니다(Docker 서버 및 호스팅 클라우드 서비스로도 이용 가능). CSS/XPath 규칙이나 지정한 LLM을 사용하여 구조화된 데이터(JSON)를 추출할 수 있으며, 딥 크롤링, 적응형 크롤링, 배치 처리를 지원합니다.

중요성 – 대규모 언어 모델은 간결하고 구조화된 텍스트를 가장 잘 처리합니다. Crawl4AI는 메뉴, 푸터 및 기타 보일러플레이트를 제거하고, 인용 링크를 추가하며, 정의한 스키마에 맞는 JSON을 생성할 수 있습니다. 이는 RAG(검색 증강 생성) 파이프라인, 자율 에이전트 또는 모든 데이터 수집 워크플로우를 위한 편리한 프런트엔드가 됩니다.

사용 방법

  • 라이브러리 – pip install -U crawl4ai를 실행하고 crawl4ai-setup으로 Playwright 브라우저를 설치합니다. 그 후 AsyncWebCrawler(또는 동기 버전)를 사용하여 result.markdown 또는 result.extracted_content를 가져옵니다.
  • CLI – crwl <url> -o markdown 또는 crwl … --deep‑crawl bfs --max-pages 10.
  • Docker 서버 – 토큰을 지정하여 unclecode/crawl4ai를 실행하고, 모든 언어에서 REST 엔드포인트(/md, /html, /crawl, /screenshot 등)를 호출합니다.
  • Crawl4AI Cloud – 몇 초 만에 무료 API 키를 발급받아, 브라우저를 직접 관리할 필요 없이 https://api.crawl4ai.com/scrape(또는 /search, /answer, /extract)를 호출합니다.

주요 기능(README 기준)

  • Markdown 생성 – 깔끔한 제목, 표, 코드 블록, 인용 목록; 구성 가능한 필터(PruningContentFilterLXML, BM25ContentFilter, LLMContentFilter).
  • 구조화된 추출 – LLM 없이 빠른 추출을 위한 CSS/XPath/Regex 스키마; 모든 LLM 공급자를 위한 LLMExtractionStrategy; 자동 스키마 생성; 청킹 및 코사인 유사도 검색.
  • 브라우저 제어 – 영구 프로필, CDP 원격 브라우저, 세션 처리, 프록시 지원, 스텔스/미탐지 모드, Chromium/Firefox/WebKit.
  • 크롤링 – BFS/DFS/최적 우선 전략, 재개 상태, 충분한 정보 수집 후 중단되는 적응형 크롤링, 사이트맵 또는 Common Crawl을 통한 URL 발견, 무한 스크롤 사이트의 전체 페이지 스크롤, 스크린샷/PDF, 미디어 추출, 캐싱, 배치 실행(arun_many).
  • 셀프 호스팅 – 안전한 토큰 보호 REST API, Claude Code/기타 에이전트를 위한 MCP 통합, 모니터링 대시보드/플레이그라운드, AMD64 및 ARM64 Docker 이미지.
  • 클라우드 전용 애드온 – 브라우저 없는 웹 검색(/search), 직접 답변(/answer), 자체 LLM 키 없이 추출, JS 기반 사이트 및 봇 차단 자동 처리, 한 줄 MCP 등록.

설치 퀵스타트

pip install -U crawl4ai
crawl4ai-setup          # Playwright 브라우저 설치
# 선택적 상태 확인
crawl4ai-doctor

Docker 사용 시:

export CRAWL4AI_API_TOKEN=$(openssl rand -hex 32)
docker run -d -p 11235:11235 \
  -e CRAWL4AI_API_TOKEN=$CRAWL4AI_API_TOKEN \
  unclecode/crawl4ai:latest

일반적인 코드 스니펫

import asyncio
from crawl4ai import AsyncWebCrawler

async def main():
    async with AsyncWebCrawler() as crawler:
        res = await crawler.arun(url="https://news.ycombinator.com")
        print(res.markdown)   # LLM 친화적인 깔끔한 markdown

asyncio.run(main())

라이선스 – Apache 2.0(배지나 텍스트를 통한 저작자 표시는 선택 사항).

커뮤니티 – Discord, GitHub issues, 기여 가이드, 그리고 지속적인 개발을 지원하기 위한 무료 크레딧 클라우드 티어.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트