This is an early release preview. You may encounter bugs.
PullMD logo
Unclaimed

Tool data-wrangling research

PullMD

Self-hosted URL- and file-to-Markdown service for humans and AI agents - web pages, documents, images, audio, YouTube. PWA + REST + MCP + Cl

A 80/100 GitHub score ? This grade is derived from GitHub signals, not user votes. Open for the full breakdown.
Discussion

01 / Summary

About PullMD.

PullMD is a self-hosted service that turns a web URL into clean Markdown for people and AI agents: no navigation, ads, or boilerplate. It detects Reddit and Hacker News threads and extracts them with their full comment trees, uses Cloudflare's native Markdown when a site offers it, runs Mozilla Readability and Trafilatura on static HTML, and falls back to rendering JavaScript-heavy pages in headless Chromium through a Playwright sidecar before extracting. A quality score decides which extractor's output wins and when a browser render is worth triggering.

Since v3 it also converts documents (PDF, Word, PowerPoint, Excel, EPUB, CSV, JSON, XML), images, audio, and YouTube videos. Everything beyond plain web extraction is opt-in and degrades to the plain path when left unconfigured. Document conversion goes through an optional MarkItDown sidecar, YouTube URLs return title, description, and a transcript with clickable timecodes without an API key, and image captioning, audio transcription, and table-grade PDF OCR call any OpenAI-compatible or local model, with Mistral OCR as the reference OCR provider and Docling as a self-run option.

The default output is a lean body (title plus content) with the source URL, fetch date, extraction source, quality, and any model and token or page usage moved into YAML frontmatter, with a configurable field allowlist. Every conversion gets a share id that acts as a stable live endpoint: it serves the cached Markdown and re-fetches when the copy is older than an hour, and keeps serving the last good snapshot if the source disappears.

It ships as a PWA, a REST API, a stateless Streamable-HTTP MCP server with three tools (read_url, get_share, list_recent), and a downloadable Claude Code skill. MCP clients include Claude Code, Cursor, Claude Desktop, and claude.ai, with bearer-key or OAuth 2.1 authentication. Outbound fetches reject private, loopback, link-local, CGNAT, and cloud-metadata targets on every path and redirect hop.

  • Web extraction chain: Cloudflare native Markdown, then Readability plus Trafilatura, then a Playwright browser render for JavaScript-heavy or low-quality pages, picked by a quality score
  • Reddit and Hacker News: purpose-built converters for posts, listings, and comment permalinks with full comment trees and post metadata in frontmatter
  • Document conversion: PDF, DOCX, PPTX, XLSX, EPUB, ZIP, CSV, JSON, and XML by direct URL or upload (up to 25 MB), through an optional MarkItDown sidecar
  • PDF OCR tier: opt-in, vendor-neutral OCR for table-grade PDF output, with automatic fallback to the free conversion path
  • Images and audio: opt-in captioning and transcription through any OpenAI-compatible or local model, with per-user hourly budgets shared across the paid tiers
  • YouTube transcripts: title, description, and transcript with configurable timecode format, chunking, and language preference, no API key required
  • Query-scoped extraction: a question passed with the URL returns only the relevant sections, ranked by BM25 over heading-based sections with a token budget and no LLM call
  • Share links as live endpoints: a 32-hex share id returns cached Markdown, refreshes after an hour, and serves the last good snapshot when the source is unreachable
  • Frontmatter and clean body: source, quality, model, and token or page usage live in YAML frontmatter under a configurable field allowlist
  • Agent access: a REST API, a stateless MCP server (read_url, get_share, list_recent) with bearer or OAuth 2.1 auth, a universal prompt for chat agents, and a Claude Code skill
  • Site recipes: declarative JSON entries per host that force a render, strip noise, name the article body, or promote JSON-LD and CSS-selected data into frontmatter
  • Operations: SSRF protection on every fetch and redirect, a sidecar health endpoint, extraction telemetry, cache retention settings, and multi-user accounts with per-user history

02 / Discussion CREDIBILITY-GATED

Discussion

Reading is open to everyone. Posting and voting need a verified identity or a GitHub grade of B or higher.

  • No discussions yet.

04 / Build

Build with PullMD.

Browse the catalog for frameworks, tools, and harnesses, each scored on real GitHub credibility.

Get PullMD →

Browse the catalog