Deploy AIHOT 2026.11 AI Hot Topics Site with Daily Reports
Self-hosted AI news site: LLM-scored picks, trending events, daily reports
Gateway
Just deployed
Backend
Just deployed
Just deployed
Just deployed
Backups
Bucket
Just deployed
Deploy and Host AIHOT with Railway
AIHOT is an open-source news site that runs itself. It collects items from your sources, lets a language model screen and score each one twice, writes a headline and summary, groups reports of the same story into one event, ranks events by how many sources discuss them, and publishes a daily report.
About Hosting AIHOT
This community template runs AIHOT's snapshot 2026.11 (upstream has no releases, so it builds a pinned commit, checksum-verified) the way upstream's Docker setup does: a site process, an API and a background worker on PostgreSQL 17, with a Caddy front for compression and security headers, and daily backups to a Railway Bucket.
Read this before deploying: the interface and everything the site writes are in Simplified Chinese (upstream design). The 18 demo sources are English AI news feeds. You need an API key for an OpenAI-compatible model service; DeepSeek is the default. The admin password is generated for you.
Common Use Cases
- A self-updating AI news site with a daily report, weekly and monthly roundups, and a trending list
- Your own field's news site: fork AIHOT, change the sources, scoring prompts and thresholds, and point this template at your fork
- A curated feed for AI agents and readers: RSS, a public JSON API, an MCP server and
llms.txt - Spotting what many sources talk about at once (heat per event, rising and new markers)
- A Chinese-language AI digest for readers and teams who read Chinese
Dependencies for AIHOT Hosting
- An API key for any OpenAI-compatible chat model (DeepSeek, OpenAI, OpenRouter, Qwen, GLM and others). Model calls are billed by that provider.
- Included: PostgreSQL 17, a volume for images and uploads, and a Railway Bucket for backups
- Optional: an embeddings API for better event grouping, SocialData (X accounts), Jina Reader (hard-to-fetch pages)
Deployment Dependencies
- AIHOT on GitHub (MIT), pinned commit 0ce2d00fd80b
- English README and upstream docs (Chinese): deploy, make it your field, sources
- DeepSeek API docs for the default model service
Implementation Details
| Service | What it does | Public |
|---|---|---|
| Gateway | Caddy: compression, security headers, real visitor IPs, /gateway-health | yes |
| Web | Server-rendered site; forwards API paths (/api/*, RSS, sitemap, images, MCP) to Backend | no |
| Backend | API and worker in one container (they share the /data volume): collection, model steps, grouping, heat, reports, backups. Runs migrations and adds the demo sources before each deploy | no |
| Postgres | PostgreSQL 17, the version upstream tests | no |
| Backups | Railway Bucket for the daily pg_dump and uploaded files | no |
First steps
- Paste your model key into
LLM_API_KEYat deploy. For another provider also changeLLM_BASE_URLandLLM_MODEL, and clearLLM_EXTRA_JSONif the provider rejects unknown fields (OpenAI does). Reasoning models also needLLM_REASONING_TOKENS, for example4000. - Wait for the three builds (about 5 to 10 minutes). Open
https://{your-domain}. Items appear within minutes; the first import of about 150 items takes roughly half an hour to score and write up. - The admin is at
https://{your-domain}/admin. The password isADMIN_PASSWORDin the Backend variables. Sources, content diagnostics, model usage per step, paid-service budgets and run history are there. - The first daily report is written at the first 08:00 China Standard Time (00:00 UTC) after your deploy (the next one if you deploy shortly before), from the items scored since the first import. Items from a source's first import are archived by their publish date and stay out of reports, so until then the admin's Runs page shows "nothing judged in its window" for
reports.compose. That is expected. Weekly reports follow on Monday 10:00 and monthly reports on the 1st at 10:30 (China time).
Good to know
- Upstream does not let you change language, site name (MyHOT), report times or prompts through variables; they live in
site/andindustry/of the code. Make a public repo with upstream's "Use this template" button, edit it (upstream's guide works well with a coding agent), then setAIHOT_SOURCE_REPO(owner/name) andAIHOT_SOURCE_COMMIT(full SHA) on Backend and redeploy Backend and Web. AddAIHOT_SOURCE_SHA256from the build log to make later builds verified. The upstream author asks that sites use their own name and logo, not AIHOT's. - Add or pause sources in the admin. Each deploy re-adds missing demo sources (as upstream's setup step does), so pause them rather than delete them, or set
TEMPLATE_SEED_SOURCES=false. COLLECT_ENABLEDandMODEL_CALLS_ENABLEDare upstream's safety valves; set either tofalseto stop collection or model spending at once.- A custom domain: add it to Gateway, then set
SITE_URLon Web tohttps://{your-domain}(links, RSS and the MCP host check use it). - Agents connect at
https://{your-domain}/api/mcp; the/agentpage shows MCP, RSS and API details. - Optional pushes to Feishu or DingTalk and Feishu sign-in work with upstream's variables (see
.env.exampleupstream).
Backups: the worker dumps the database and the uploaded files every day at 04:10 China time into the Backups bucket (daily/, weekly/ on Sundays, monthly/ on the 1st). The template sets no expiry rule, so delete old backups now and then. To test it, set TEMPLATE_BACKUP_ON_BOOT=true on Backend, redeploy, look for backup-now: uploaded in the logs, then set it back.
Scaling: Backend stays at one replica (it owns the volume). Give it more memory if image processing is busy. Web and Gateway are stateless and can run more replicas. Costs grow with the number of new items per day, mostly at your model provider.
Cost (estimate, not measured): about $7 a month idle and $15 to $20 with daily traffic on Railway (Hobby plan), plus model calls. Upstream measured about 930 model calls for its first 152 items; the admin's Models page shows calls and tokens per step.
Versions: AIHOT 0ce2d00fd80b (2026-11-07) from the codeload tarball, SHA-256 verified; Node 24.22.2, Caddy 2.11.9 and postgres-ssl:17, all pinned. To upgrade, back up first, then build a newer commit with the AIHOT_SOURCE_* variables (or redeploy after this template's repo moves its pin). Backend's pre-deploy step runs the new migrations. Check upstream's update notes in docs/deploy.md first.
Why Deploy AIHOT on Railway?
AIHOT needs a database, a long-running worker, a public site and somewhere safe to keep backups. Railway runs all of them from one template, with private networking, HTTPS, logs and metrics, and you pay only for what the services use.
This is a community template. It is not made, endorsed or supported by the AIHOT author. AIHOT's name and logo belong to its author; the deployed site uses its own default name, MyHOT.
Template Content
Gateway
baranberkay96/aihot-railwayBackend
baranberkay96/aihot-railwayLLM_API_KEY
Required for selection and write-ups: API key of any OpenAI-compatible model service (DeepSeek by default). The site boots without it, but items wait unscored until it is set. Billed by that provider.
Backups
Bucket

