reader

Web Scraping & CrawlingCLITypeScript

★ 11,977주당 +44조회 5

무엇인가

Reader는 URL을 LLM이 읽을 수 있는 텍스트로 바꾸는 변환 계층이다. RAG 파이프라인과 에이전트가 검색 결과를 컨텍스트에 넣기 전에 거치는 fetch·렌더링·본문 추출 단계를 대신 맡는다. 같은 코드베이스가 두 엔드포인트로 노출된다. r.jina.ai는 URL 하나를 변환하고, s.jina.ai는 검색어를 받아 웹 검색까지 수행한다.

어떻게 동작하나

웹 페이지는 headless Chrome으로 렌더링하거나 curl-impersonate로 가볍게 가져오며, 두 방식 중 하나를 자동으로 고른다. PDF는 PDF.js로 파싱하고, Word·Excel·PowerPoint는 LibreOffice로 변환한 뒤 HTML이나 PDF로 처리한다. 이미지는 비전-언어 모델이 캡션을 붙여 텍스트 전용 LLM에 힌트를 넘긴다. 출력 형식은 x-respond-with 헤더로 정하며 markdown, html, text, screenshot, pageshot, frontmatter, markdown+frontmatter를 지원한다. 페이지 캐시 수명은 3600초다.

무엇과 다른가

에이전트 프레임워크의 웹 검색 함수 호출은 보통 검색 엔진이 준 제목·URL·설명만 돌려준다. 본문이 필요하면 에이전트가 그 URL을 다시 가져와야 한다. s.jina.ai는 검색 후 상위 5개 결과 URL을 직접 방문해 r.jina.ai와 같은 스택으로 본문을 변환해 함께 반환한다. 브라우저 렌더링, 차단, JavaScript·CSS 처리를 호출자 쪽에서 구현하지 않아도 된다.

어떻게 쓰나

사용법은 URL 앞에 https://r.jina.ai/ 를 붙이는 것이다. 검색은 https://s.jina.ai/ 뒤에 URL 인코딩한 질의를 넣고, site 쿼리 파라미터로 사이트 내 검색을 지정한다. 동작은 요청 헤더로 제어한다. x-engine은 browser, curl, auto 중 하나를 강제하고, x-target-selector는 CSS 선택자에 맞는 요소만 반환하며, x-wait-for-selector는 해당 요소가 렌더링될 때까지 기다린다. x-proxy-url, x-cache-tolerance, x-no-cache도 있다. 전체 옵션의 기준은 src/dto/crawler-options.ts다.

전제와 한계

이 저장소는 r.jina.ai와 s.jina.ai 뒤 코드베이스의 오픈소스 브랜치다. MongoDB 기반 SaaS 저장소 계층은 포함되지 않는다. 기본은 무상태 모드로 동작하고, MinIO나 S3 호환 버킷 캐싱은 docker compose로 선택적으로 붙인다. PDF와 오피스 문서는 file 바디 필드로 직접 POST할 수 있다. 호스팅 API에는 요청 한도가 적용된다.

유사 도구