vielhuber / extrablatt
A simple news aggregator in php.
1.8.3
2026-06-09 13:08 UTC
Requires
- php: >=8.3
- ext-gd: *
- ext-pdo_sqlite: *
- vielhuber/aihelper: ^3.5.8
- dev-main
- 1.8.3
- 1.8.2
- 1.8.1
- 1.8.0
- 1.7.9
- 1.7.8
- 1.7.7
- 1.7.6
- 1.7.5
- 1.7.4
- 1.7.3
- 1.7.2
- 1.7.1
- 1.7.0
- 1.6.9
- 1.6.8
- 1.6.7
- 1.6.6
- 1.6.5
- 1.6.4
- 1.6.3
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.9
- 1.5.8
- 1.5.7
- 1.5.6
- 1.5.5
- 1.5.4
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5.0
- 1.4.9
- 1.4.8
- 1.4.7
- 1.4.6
- 1.4.5
- 1.4.4
- 1.4.3
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.9
- 1.3.8
- 1.3.7
- 1.3.6
- 1.3.5
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.9
- 1.2.8
- 1.2.7
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.9
- 1.1.8
- 1.1.7
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.9
- 1.0.8
This package is auto-updated.
Last update: 2026-06-09 13:09:02 UTC
README
📰 extrablatt 📰
a simple news aggregator. pulls articles from configurable rss feeds (plus reddit, hacker news and x via cookie-authenticated scrape), stores them in sqlite, detects paywalls, fetches thumbnails, categorises through an llm, and opens single articles through an archive.ph proxy with mobile-friendly css rewrites. installable as a progressive web app.
installation
mkdir extrablatt
cd extrablatt
composer require vielhuber/extrablatt
./vendor/bin/extrablatt-init
after install, edit:
.data/config.json: papers (see schema below).data/.env:AI_API_KEY/AUTH_PASSWORD/AI_PROVIDER/AI_MODEL.data/cookies/: drop cookie exports per host into.data/database.sqlite: restore database (optional)
config.json schema
{
"papers": {
"<paper-key>": {
"url": "https://example.com",
"label": "Display Name",
"rss": "https://example.com/feed.xml",
"default_image": "https://example.com/fallback.png",
"stub_markers": ["Subscribe to read", "Premium content"]
}
}
}
default_image(optional): fallback thumbnail when the RSS item carries no image.stub_markers(optional): substrings present in the archive.ph snapshot of a PLUS article when it's only a teaser, so the snapshot is dropped instead of surfaced as if it were the full text.- Special
rssschemes:reddit://homeandx://homeactivate the cookie-authenticated JSON scrapers in place of XML parsing.
categories, AI defaults (temperature, timeout, max_tries), and the archive fulltext minimum (8000 chars) are hardcoded in the package.
usage
php -S 127.0.0.1:8080 -t .
cron
0 6,18 * * * curl -s 'https://your-host/?scrape=1&key=<AUTH_PASSWORD>' >/dev/null
backup
zip -r backup.zip .data