Publishing in English requires changing the prompts and interface
Install AIHOT for an English newsroom and the first editorial job is translation. The default interface and generated articles are Chinese, while an English README explains how to change them. This repository supplies a news-site engine that collects material, selects stories, and groups coverage into events. Its attraction is that the selection rules are editable files. You can inspect what makes an item qualify instead of accepting an unexplained feed ranking.
Our checkout contained 651 files, roughly 59,101 source lines, and occupied 13.1 MB. That scope includes a website and administration tools alongside the processing pipeline. The English README explicitly says the deeper documentation remains Chinese. An English-speaking team should budget for reading those guides and reviewing translated interface text, especially before assuming that changing a site title produces a finished publication in another language.
What happened when we ran it
Our sandbox installed AIHOT at commit e57da5a in 10 seconds, adding 322 packages and reaching 282 MB on disk. The unprivileged Debian container had 3 CPUs and 8 GB of RAM, without secrets. The supplied lab record labels the image lab-node:22, while the failing test log identifies Node.js v24.19.0. Those are the recorded environment details, rather than grounds to assume a particular runtime mismatch caused the failure.
The build step was skipped because the harness found no build script or target. Tests then failed with exit code 7 after 1 second. The log says invariant tests write rows and require DATABASE_URL to point at a throwaway database named with a _test or _ci suffix. It received "unset." That is a clear setup refusal before a passing suite, and the log doesn't demonstrate a news-processing defect.
Npm audit reported 0 known vulnerabilities across the listed severity levels. Our scan also found 1 CI workflow file, a Dockerfile, a compose file, a tests directory, and workspaces. Those findings make the repository easier to investigate, but they don't certify the running application. The successful dependency install and the stopped test command are separate results. Neither establishes the quality of generated summaries or the correctness of event grouping.
PostgreSQL and a model provider are part of the product
The English quick start calls for Docker, Node.js, and an API key for an OpenAI-compatible model service. An initialization script generates configuration, with DeepSeek as its default provider. Other providers need endpoint and model settings adjusted. Reasoning models have an additional output-budget setting. You're operating a service with external model calls, so a healthy web page alone won't establish that collection and selection are working.
The compose file uses PostgreSQL and separates API, worker, and web processes, with an initial migration-and-seeding step. The 282 MB installed footprint we measured covers dependencies, not a deployed database or a populated archive. Keep a disposable database for verification and protect the application's real data separately. Our secret-free container run didn't exercise paid providers, and the audit result says nothing about the editorial reliability of their output.
Editable scoring rules are the reason to choose this framework
The README describes screening incoming material, scoring promising items independently twice, and applying thresholds according to source tiers. Prompts live under industry/prompts/, while source definitions and selection settings have their own files. That arrangement suits a subject editor who can explain why a regulatory notice matters more than a promotional announcement. It won't supply that subject knowledge for you. The author explicitly leaves each industry's source choices and standards to its operator.
The 13.1 MB checkout excludes AIHOT's live source list and operating data. The demonstration sources let you explore the machinery, but adopting the engine means assembling your own reporting inputs. The README recommends calibrating selection against examples you label yourself. I'd make that exercise the adoption decision: if the rubric consistently misses the announcements your readers need, an attractive homepage won't rescue the publication.
Event popularity depends on your sources and grouping decisions
AIHOT's clustering description combines headline-and-summary similarity with model decisions about whether reports describe the same event or a follow-up. Without embeddings, it falls back to text overlap. Heat then counts independent sources rather than repeated articles from the same outlet. This is a useful attempt to prevent one publisher's repeated coverage from dominating the list. It still measures attention among the sources you've selected, which may omit important specialist reporting.
The failed 1-second test step leaves that behavior unverified in our sandbox. The README also exposes manual scoring corrections and says manual event assignments are preserved, useful controls when automation gets a story wrong. RSS, public APIs, and MCP let other readers and agents consume the result. Those extra distribution routes increase the importance of checking a bad summary before it spreads beyond the homepage.
October fixes show activity without a release guarantee
GitHub records an October 14, 2026 push, 7,698 stars, and 2 open issues and PRs combined. Recent merged work addresses inconsistent selection-evaluation labels. Open pull request 203 describes unusable translation results being treated as skipped and preventing automatic recovery. That's a report about the current translation pipeline, not a failure from our run. There is no published latest release, and the author says updates exported from the live site are not guaranteed to include every change.
Choose FreshRSS when collecting and reading feeds is enough, or NewsNow for a trending-news reading interface. AIHOT earns the extra operational work when you want to own the editorial selection machinery and publish its output. Before launching, make it select a small set of stories your editor understands. Rejecting the wrong story automatically is still an editorial mistake, however neatly the site presents it.

