{"repo":"lee-lou2/distill","free":true,"listed":false,"github":"https://github.com/lee-lou2/distill","clone":"git clone https://github.com/lee-lou2/distill.git","description":"고성능 Rust 기반 웹 스크래퍼 & LLM 분석 API 서버","language":"Rust","stars":34,"topics":["chrome","llm","playwright","rust","scraper"],"license":null,"category":"scrapers-browser-automation","readme_excerpt":"Distill 고성능 Rust 기반 웹 스크래퍼 & LLM 분석 API 서버 개요 Distill은 웹 페이지를 스크래핑하고, 선택적으로 LLM(Gemini)을 통해 콘텐츠를 분석하는 REST API 서버입니다. 주요 기능 - 웹 스크래핑 : Headless Chrome으로 JavaScript 렌더링된 페이지 지원 - 포맷 변환 : HTML 또는 Markdown으로 출력 - 메타데이터 추출 : 페이지 제목, Open Graph 태그 자동 추출 - LLM 분석 : Gemini API를 통한 구조화된 콘텐츠 분석 - 고성능 : 최대 50개 동시 요청, 스마트 탭 재사용 - API 인증 : API 키 기반 접근 제어 --- 아키텍처 --- 요청 흐름 --- 프로젝트 구조 --- 환경 변수 변수 필수 기본값 설명 ------ :----: -------- ------ API KEY ✅ changeme API 인증 키 GEMINI API KEY - Gemini API 키 (LLM 분석 사용 시 필수) PORT 3000 서버 포트 MAX CONCURRENT TABS 50 (Docker: 10 ) 최대 동시 브라우저 탭 수 ALLOWED ORIGINS CORS 허용 origin (쉼표 구분) CHROME PATH - Chrome/Chromium 경로 (Docker에서 자동 설정) CHROME NO SANDBOX - 설정 시 Chrome 샌드박스 비활성화 (Docker 필수) --- 빠른 시작 로컬 실행 Docker 실행 서버가 http://localhost:3000 에서 시작됩니다. API 호출 예시 스크래핑만: LLM 분석 포함: 헬스 체크: --- API 명세 POST /scrape Headers 헤더 필수 설명 ------ :----: ------ x-api-key ✅ API 인증 키 Request Body 필드 타입 필수 설명 ------ ------ :----: ------ url string ✅ 스크래핑할 URL output format string \"markdown\" (기본) 또는 \"html\" analysis request object LLM 분석 요청 analysis request: 필드 타입 필수 설명 ------ ------ :----: ------ model string 모델명 (기본: gemini-3-flash-preview ) prompt string ✅ 분석 프롬프트 response schema object ✅ Gemini Structured Output 스키마 Response 참고 : LLM 분석이 실패해도 스크래핑 결과는 반환됩니다. 이 경우 analysis result 는 null 이고 analysis error 에 에러 메시지가 포함됩니다. --- 성능 특성 항목 값 설명 ------ ----- ------ 최대 동시 요청 50 Semaphore로 제어 탭 유휴 시간 1초 이후 자동 정리 페이지 타임아웃 10초 초과 시 에러 반환 브라우저 유휴 10분 이후 자동 종료 (재요청 시 재시작) --- 부하 테스트 --- 에러 ","default_branch":null,"files":null,"tree":[],"storefront":"/r/lee-lou2","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/lee-lou2/distill/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}