Skip to content

carloscae/reader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

reader

Build License: MIT Go 1.23+ Docker

Paste a URL. Get a clean, readable article. No ads, no paywalls, no JavaScript — and it returns in under a second.

Why not just use Ladder or a similar proxy?

Most paywall-bypass tools work by rewriting every asset URL on the page so that images, scripts, and stylesheets all route back through the proxy server. The result is hundreds of sub-requests per page load.

It works, but it's slow enough to kill the habit.

This tool does one thing: fetch the article HTML, extract the content, return a self-contained page. Images load directly from the source CDN. The server makes one network request and does one parse. A typical article returns in under a second, including the round-trip to the origin site.

How it works

  • Fetches as Googlebot (user-agent + X-Forwarded-For), which bypasses soft paywalls on many news sites
  • Extracts article content with go-readability (Go port of Mozilla's Readability.js)
  • Pulls the title from og:title before falling back to <title> — more reliable than DOM extraction on complex pages
  • Promotes lazy-loaded images (data-srcsrc) so readability keeps them
  • Injects the og:image as a lead image when readability finds no images in the body

The output is clean HTML with a dark-mode-aware stylesheet and no JavaScript.

Usage

Paste a URL directly into the path:

http://your-server:8080/https://example.com/article

Or use the home page form at http://your-server:8080/.

The ?url= query parameter also works:

http://your-server:8080/?url=https://example.com/article

Self-hosting

One-liner:

docker run -p 8080:8080 ghcr.io/carloscae/reader

Docker Compose (copy docker-compose.yml from this repo, or use this):

services:
  reader:
    image: ghcr.io/carloscae/reader:latest
    container_name: reader
    restart: unless-stopped
    ports:
      - "8080:8080"

Build from source:

git clone https://github.com/carloscae/reader
cd reader
docker build -t reader .
docker run -p 8080:8080 reader

Go 1.23+ required if building without Docker.

Remote access

The server has no authentication. Run it on a private network (LAN or VPN) rather than exposing it publicly.

Tailscale is the easiest way to reach it from anywhere — install on your server and your phone, and http://your-tailscale-ip:8080/ works from any network with no port forwarding or firewall changes needed.

iOS Shortcut

Set this up once and you can share any article from Safari directly to reader.

  1. Create a new Shortcut
  2. Add Get URLs from Input (Share Sheet input)
  3. Add Open URLs, set the URL to:
    http://your-server:8080/[URL]
    
    where [URL] is the output of the previous action
  4. Set the Share Sheet to accept Safari web pages

Share any article from Safari and it opens in reader instantly.

Configuration

Variable Default Description
PORT 8080 Port to listen on

Stack

License

MIT

About

Self-hosted article reader: fetch any URL, get clean readable HTML in under a second

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors