Expertise · Automated content
A flow that looks for the day’s topics on its own, writes the article, translates it into nineteen languages and publishes it — but only after passing a verification gate which, when it cannot verify, publishes nothing.
The motor is written, complete, and sits in the repository of this site itself: eight stages, 1,706 lines, a system timer that starts daily at 00:30 UTC. The part that matters is not generation, but the gate: five local checks, ten forbidden expressions and an extra check that looks for client names without consent, invented figures and awards we do not have. If the gate cannot run, it is not published.
Already built“delivered”, because the work exists as files you can open, not as a description: `scripts/content-engine/` in the megapromoting.com repository, 17 files, 1,706 lines of TypeScript, systemd unit with timer, eight linked stages and run logs. With a reservation we state ourselves, not one you discover: **the only complete run in the logs did not publish any article.** The gate stopped all three — two because the check could not run at all, the third because of a missing field in the header. `publish` remained empty, IndexNow received zero addresses. The run was local, on the workstation, and lasted two and a half hours, meaning over the 60-minute limit set in the systemd unit — so on the server it would have been stopped. We cannot confirm from the outside that the engine runs today on the server, and we do not claim it.
The automation that writes and publishes on its own is where it is easiest to promise what cannot be done. A model writes a thousand convincing words about anything, including things that did not happen, and it writes them just as fluently. If nothing stands between the model and the publish button, you have built a machine for putting mistakes on the internet, in twenty languages, every night. The whole work is in what stands between.
Our flow has eight stages. It gathers topics from open sources, gives them a score from 0 to 100 for how suitable they are, discards everything below 50, selects the first N with a diversity rule so that ten articles about the same thing do not come out, writes the article in Romanian, translates it into nineteen languages, sends it through the gate, and only then publishes. Each stage writes its cost and result in a log, so a run can be reconstructed afterwards.
The gate has two layers. The first is local and costs nothing: the header must exist and have a title, description and keywords; the text must pass 1,200 words; it must have at least three subheadings, at least three internal links and a questions section with at least three pairs; and it must not contain any of the ten marketing expressions we put on the blacklist. The second layer is a model that looks for something else: a client name without proof of consent, invented statistics, false statements about what we can do, and awards we do not have — the list of the real ones is written in the verification, and anything else is flagged.
There is human approval in the chain, and we say it as an argument, not as an excuse. Articles that fail the hard checks are discarded, not published. Those that pass the hard checks but receive flags from the second check are kept marked, for a person to look at. And if the check cannot run — because the model service does not respond, for example — the article is treated as failed. Fail-closed, not fail-open. That is what happened in the only complete run in the logs, and that is why nothing was published.