AeternaLabsHQ/pullmd
Self-hosted URL- and file-to-Markdown service for humans and AI agents - web pages, documents, images, audio, YouTube. PWA + REST + MCP + Claude Code skill, Reddit-aware, refreshable share links.
PullMD – 셀프 호스팅 URL-to-Markdown 서비스
기능 설명
PullMD는 공개 URL(또는 업로드된 파일)을 깔끔한 Markdown으로 변환하는 셀프 호스팅 웹 서비스입니다. 다음 소스를 지원합니다:
- 일반 웹 페이지(Cloudflare Markdown, Mozilla Readability, Trafilatura 또는 헤드리스 Chromium 폴백 사용)
- 전체 댓글 트리가 포함된 Reddit 및 Hacker News 스레드
- PDF, Word, PowerPoint, Excel, EPUB과 같은 문서
- 이미지 및 오디오(OpenAI 호환 비전 또는 음성 모델을 통한 캡션/전사)
- YouTube 동영상(제목, 설명, 전사) 결과는 메타데이터(소스 URL, 가져온 날짜, 작성자 등)를 포함하는 YAML 프론트매터가 포함된 Markdown으로 반환됩니다. 32자 공유 ID를 사용하여 1시간 후 자동으로 새로 고쳐지는 캐시된 버전을 검색할 수 있습니다.
대상 사용자
- 토큰 효율적인 일반 텍스트 표현이 필요한 AI 에이전트
- 온프레미스에서 콘텐츠를 가져와 정규화하려는 RAG 파이프라인을 구축하는 개발자
- 광고와 보일러플레이트를 제거하는 개인 '나중에 읽기' 서비스를 원하는 파워 유저
- 공개 요약 서비스에 대한 프라이빗하고 제어 가능한 대안이 필요한 팀
시작하기
- Docker Compose를 설치합니다.
- README에 제공된 원라이너를 실행합니다:
mkdir pullmd && cd pullmd curl -O https://raw.githubusercontent.com/AeternaLabsHQ/pullmd/main/docker-compose.yml docker compose up -d - 브라우저에서
http://localhost:3000을 엽니다..env파일은 필요하지 않으며 기본적으로 포트 3000에서 수신 대기합니다. - (선택 사항) 인증, OCR 키 또는 프록시 설정을 사용자 지정하려면
.env를 추가합니다.
주요 기술 세부 사항
- 아키텍처 – 기본 PullMD 컨테이너는 세 가지 선택적 사이드카 서비스를 조정합니다:
trafilatura– 정적 HTML에서 기본 기사 본문을 추출합니다.playwright– JavaScript가 많은 페이지용 헤드리스 Chromium/Firefox/WebKit 렌더러.markitdown– 업로드된 문서, 이미지, 오디오 및 YouTube 동영상을 Markdown으로 변환합니다. 이러한 사이드카는 기본적으로 시작되지만 일반 웹 페이지 추출만 필요한 경우 생략할 수 있습니다.
- 출력 형식(v3) – 기본적으로 Markdown 본문에는 제목과 콘텐츠만 포함됩니다. 기타 모든 정보(URL, 가져온 날짜, Reddit 통계, OCR/모델 사용 등)는 YAML 프론트매터에 저장되어 다운스트림 LLM 호출의 토큰 수를 줄입니다. 레거시 인라인 헤더는
PULLMD_SOURCE_HEADER=true로 다시 활성화할 수 있습니다. - 보안 – 내장 SSRF 보호 기능이 사설 네트워크 대상을 차단합니다. 속도 제한, 인증 모드(
disabled,single-admin,multi-user) 및 선택적 가입 제어는 환경 변수로 구성할 수 있습니다. - 확장성 – 사용자는 사용자 지정 사이트 레시피(JSON-LD를 프론트매터로, 사용자 지정 선택기)를 추가하고
PULLMD_FRONTMATTER_FIELDS로 출력되는 프론트매터 필드를 제어할 수 있습니다. - 성능 – 캐시는 SQLite 파일(
/data/cache.db)에 결과를 저장합니다. 캐시 보존 기간, 크기 제한 및 너무 짧은 추출을 감지하는 '커버리지 가드'는 모두 조정할 수 있습니다.
대안을 고려해야 할 경우
- 빠른 일회성 변환만 필요한 경우 Mercury 또는 브라우저 확장 프로그램과 같은 공개 서비스가 더 빠를 수 있습니다.
- 대규모 고처리량 크롤링에는 전용 스크래퍼 프레임워크(예: Scrapy)를 별도의 Markdown 렌더러와 결합하는 것이 더 적합할 수 있습니다.
- 원시 Markdown보다 심층적인 의미 요약이 필요한 경우 PullMD 출력 위에 LLM이 필요합니다.
위 정보는 모두 리포지토리의 README에서 직접 가져온 것이며 외부 가정은 추가되지 않았습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트