// Engineering Log

Continuation of the story: how an abandoned portal came back to life, but now without an editorial team.

Published on 2026-09-22

// Fast route

This article belongs to the topic Servers and infrastructure.

After the move to Hugo the site turned from a heavy, constantly crashing thing into a light and fast static archive — and it became clear this wouldn’t be the end of it. If the site is now fast and doesn’t need a database or a server under load, why not give it a second life under current conditions?

Two problems appeared right away. The first is technically trivial but not instantaneous: how to add content to a static site without a CMS, since Drupal with its admin interface is now in the past. The second is much more substantial: where to get texts if a full editorial staff for the city hasn’t existed for a long time and won’t return, because economically it doesn’t make sense.

Publishing without a CMS solved itself almost immediately

With Hugo the first problem turned out to be even easier than I thought. After each new article appears the project is simply rebuilt — one build command that regenerates the static site from markdown files. In terms of cost this is negligible, many times cheaper than rendering a couple of pages on the old Drupal + MySQL stack. So the site is fully static, but not frozen: publishing new material takes seconds and requires neither a database nor heavy PHP hooks.

We took a more interesting approach to content

Building an editorial team from scratch for a city that no longer generates advertising revenue as a media market is a pointless waste of resources. But since there are LLMs, you can build a pipeline that does roughly what a live editorial staff would do, only without salaries, meetings, and sick leave.

The working pipeline was put together in literally half a day. It all starts with a parser that crawls a news aggregator and looks for materials potentially related to the region by keywords. The found text goes through a processing chain that repeats a material’s path in a normal newsroom. First, facts and quotes are extracted from the text — separately, in structured form, not as continuous prose. Then this set of facts in JSON format is checked against the editorial policy: not every topic is of interest, and it’s important that the material is genuinely tied to the region and not a nationwide overview where the city is mentioned in a single sentence. If the check passes, the facts and quotes go to the LLM for writing: the model assembles a coherent, neutral text from them, adding nothing beyond the original facts. After that the finished article is cross-checked against the source for factual accuracy — whether numbers, names, or events have been mixed up. Only in the final step are small enhancements added — for example, automatic detection of mentions of people in the text and links to search for them in the site archive. For a news portal with a fifteen-year history this is a nice bonus.

Deduplication deserves a separate mention. Before a text is allowed to the writing stage, the system checks whether something similar in meaning has been published in recent days. This cuts out the case when the same event from different sources turns into three identical news items in a row.

Result — an archive that updates itself

All of this runs on a schedule without my involvement: the parser searches, the pipeline filters and writes, the finished article in markdown goes into a commit and is published on the site after the rebuild. The abandoned fifteen-year-old archive became a living regional digest that updates itself, without a single person on staff.

In monetary terms it’s very cheap: excluding development time, publishing one news item costs about 0.2 cents. Previously this volume of material required living people, salaries, and an editorial process that was no longer economically justified. The LLM in this case didn’t replace journalism as a profession — it made economically possible what would otherwise have been closed and forgotten.

// Similar task

If you are dealing with something similar

This article belongs to one of the main working topics. You can keep reading on the topic, go to the homepage to understand what I do, or open the service pages directly.

Article topic

Servers and infrastructure

VPS, Linux, web stack, migrations, hosting, databases, and core operations.

Typical tasks behind this topic

  • Move a site or service to a new server
  • Set up Linux, Nginx, databases, and backups
  • Figure out why the system behaves unstably

// Next step

If you need help with this topic, not just another article, it is better to go straight to the service page. The homepage and topic collection stay available as secondary routes.

Open services

// Contact

Need help?

Get in touch with me and I'll help solve the problem

I reply within one business day (03:00-13:00 GMT)

Или оставьте заявку здесь:

Confirm that you are not a bot.

Write and get a quick reply