hotnew is a lightweight Go-based hot news aggregation pipeline designed for compliant source ingestion, normalized processing, storage, summarization, and downstream distribution.
- Go backend with small dependency surface
- Compliant source-oriented pipeline:
Source -> Ingest -> Normalize -> Summarize -> Store -> Distribute - Configurable storage backend:
memory,file(JSONL),sqlite - Blog/webhook distribution support
- Delivery tracking and retry queue
- Exponential retry backoff with archive support
- Built-in read-only dashboard at
/
hotnew/
├─ AGENTS.md
├─ README.md
├─ cmd/hotnew/
├─ internal/
│ ├─ app/
│ ├─ config/
│ ├─ distribute/
│ ├─ domain/
│ ├─ ingest/
│ ├─ normalize/
│ ├─ source/
│ ├─ store/
│ └─ summarize/
├─ docs/
└─ go.mod
go build ./...go run ./cmd/hotnewDefault server address:
:8080
Open:
- Dashboard:
http://localhost:8080/ - Health:
http://localhost:8080/healthz
HOTNEW_HTTP_ADDR
HOTNEW_STORE_BACKEND=sqlite|file|memoryHOTNEW_SQLITE_DSNHOTNEW_FILE_ARTICLES_PATHHOTNEW_FILE_DELIVERIES_PATHHOTNEW_FILE_RETRIES_PATHHOTNEW_FILE_RETRIES_ARCHIVE_PATH
HOTNEW_RETRY_ENABLEDHOTNEW_RETRY_INTERVALHOTNEW_RETRY_BATCH_SIZEHOTNEW_RETRY_TIMEOUTHOTNEW_RETRY_MAX_ATTEMPTSHOTNEW_RETRY_BACKOFFHOTNEW_RETRY_MAX_BACKOFFHOTNEW_RETRY_ARCHIVE_AFTERHOTNEW_RETRY_ARCHIVE_BATCH
HOTNEW_BLOG_ENABLEDHOTNEW_BLOG_ENDPOINTHOTNEW_BLOG_TIMEOUTHOTNEW_BLOG_AUTH_TOKENHOTNEW_BLOG_SITE_NAMEHOTNEW_BLOG_AUTHORHOTNEW_BLOG_MODE
POST /v1/run?limit=10
GET /v1/articles?limit=20
GET /v1/deliveries?limit=20
GET /v1/retries?status=failed&channel=blog&article_id=<article_id>&limit=50
POST /v1/retries/run-one?id=<retry_job_id>
POST /v1/retries/reset?id=<retry_job_id>
POST /v1/retries/archive?older_than=72h&limit=200
The built-in dashboard is intentionally simple and read-mostly. It provides:
- article list
- delivery list
- retry queue list with filters
- manual retry run/reset actions
- runner status view
No frontend build step is required.
sqliteis the recommended backend for persistent single-node deployment.fileis useful for low-complexity local deployments and debugging.memoryis only suitable for local testing.- Retry behavior uses exponential backoff capped by
HOTNEW_RETRY_MAX_BACKOFF.
A standard environment template is provided at:
configs/hotnew.env.example
Use this file as baseline environment settings, including WeCom robot variables:
HOTNEW_WECOM_ENABLEDHOTNEW_WECOM_WEBHOOKHOTNEW_WECOM_TIMEOUT
- PowerShell (Windows):
scripts/build.ps1 - Bash (Linux/macOS):
scripts/build.sh
Examples:
powershell -ExecutionPolicy Bypass -File scripts/build.ps1bash scripts/build.sh