Editorial standards

These are the rules every article on this site has to satisfy before it is published. They are kept in the site’s repository and this page is generated from that file, so what you read here is what the publishing pipeline actually enforces.

Avoltium Editorial Standards

The rules every article on avoltium.in must satisfy before it goes live.

Each rule exists because the failure it prevents actually reached production.

Where a rule is machine-checkable it is enforced by qc_check.py, which runs

as a gate inside generate_article.py and as a weekly site-wide audit. An

article that trips a BLOCKER is saved as a draft instead of published.


1. Images — depict the subject, not the words

**The rule: an image must show what the article is _about_. Never illustrate

the headline literally, word by word.**

This is the single most damaging failure mode this site has had. Real examples

that were live:

ArticleWrong imageWhy it happened
"BriHyNergy Ships 15MW PEM System"a cruise ship"ships" is a verb — it means delivers
"India's First Hydrogen-Powered Train"an LNG carrier vesselkeyword picked from the wrong noun
"Green Hydrogen Certification Portal"a blue jay birdno relationship at all
"BOP Testing for Well Control"a green office campusBOP is ambiguous (see §2)
"Ultrapure water — outsized risk"a passenger traintopic ignored entirely
"Gujarat Data Centre Policy"a politician beside a trainheadline keyword mismatch

How to choose an image

1. Read the article body — not the headline — and name the physical system

it actually discusses (an RO skid, a fuel cell stack, a compressor head).

2. Write the prompt describing that system.

3. Ask: "if a hydrogen engineer saw this picture next to this headline, would

it look researched or automated?" If automated, redo it.

Ambiguous words — never feed these straight into an image prompt

qc_check.py raises a warning when a headline contains any of these:

WordIn an energy headline it usually means
ships / shippingdelivers a product, not a marine vessel
BOPBalance of Plant or Blowout Preventer — disambiguate first
plantan industrial facility, not vegetation
trainrail transport (verify it is not "train a model")
cellan electrochemical cell
stackan electrolyzer stack
currentelectrical current

Image technical requirements

  • Minimum 900 px wide; target 1200 × 675 (16:9)
  • Aspect ratio must not exceed 2.4:1 — ultrawide banners crop badly in cards
  • Alt text is mandatory and must describe the image, not repeat the headline
  • Always pass a random seed to the image API — without it, identical prompts

return the identical cached picture for every article on that topic

Image credits

  • A third-party image (Wikimedia, CC-BY) keeps its credit block verbatim.

Attribution is a licence condition, not a courtesy.

  • When an image is replaced, the old credit must be removed in the same

edit. A credit describing an image that is no longer on the page is a false

statement about provenance.

  • AI-generated images carry the standard notice:

> Featured Image: Illustration generated by Avoltium using AI, created to

> depict the systems discussed in this article.


2. Title and content must agree

The title states what the body delivers. If a rewrite changes the subject,

the title changes with it.

Live failure: post 168 was titled *"BOP Testing and Maintenance: Best Practices

for Well Control"* — blowout preventers, oil & gas. A hydrogen-focused

rewrite prompt made the model read "BOP" as Balance of Plant, so the body

became a green-hydrogen article under an oil-well headline. Neither the title

nor the body was wrong on its own; together they misled the reader.

**Before rewriting anything, resolve every acronym in the title against the

existing body.** Retitle rather than let the mismatch stand.


3. Originality — the AdSense-critical rule

Never republish syndicated newswire copy. Duplicate content is the most

common reason AdSense applications are rejected.

When covering a news event:

1. The event is the hook — one opening paragraph, no more.

2. The rest is original engineering analysis: the constraints that decide

whether the thing works, balance-of-plant and water-treatment implications,

real efficiency and cost figures.

3. Never paraphrase a source sentence by sentence. Replace it with your own

technical argument.

Also prohibited:

  • Inventing quotes attributed to real, named people
  • Claiming Avoltium involvement in third-party projects
  • Publishing a post with an empty or stub body (thin content); minimum

2,500 characters, target 900+ words


4. House style for technical writing

Voice. Arun, Chief Engineer at Avoltium. Technical, specific, confident.

Written for practising engineers, not a general audience.

Substance. Include real numbers — efficiencies, current densities,

pressures, costs — wherever they support the argument. Specificity is what

separates this site from content farms.

Required structure.

1. Engineering Insight box — one-sentence takeaway, opens every article

2. <h2> / <h3> subheadings

3. At least one styled <blockquote>

4. Natural mentions of "electrolyzer" and "water treatment" where relevant

5. One internal link each to the electrolyzer and water-consumption

calculators — the site's most valuable original assets


5. Scientific notation — Unicode and HTML only

LaTeX must never reach the page. No backslash commands, no $…$ math.

It renders as literal \Delta T and \frac{...} garbage in the browser.

WriteNot
H<sub>2</sub>O, CO<sub>2</sub>H_2O, \text{CO}_2
A/cm<sup>2</sup>, Nm<sup>3</sup>A/cm^2
η, Δ, Ω, μ, °C, ±\eta, \Delta, \Omega
V<sub>cell</sub> = E<sub>rev</sub> + η<sub>anode</sub> + i·R<sub>ohmic</sub>$V_{cell} = ...$

Write equations as readable inline HTML. Division goes on one line with ÷ or

a bracketed numerator/denominator — never \frac.


6. HTML hygiene

  • Inline styles only. Never emit a <style> block into a post body; it

renders as visible CSS text in this theme.

  • CSS property names must be fully hyphenated. Generated copy has a

persistent habit of stripping hyphens — backgroundcolor, fontsize,

marginbottom — which silently kills the styling. sanitize_content()

repairs ~30 known cases and qc_check.py blocks any that survive.

  • No markdown fences ( ` ) in HTML output.
  • Hyphenated compounds stay hyphenated: hydrogen-powered, next-generation,

large-scale, state-of-the-art, zero-incident.

  • Internal links keep their hyphens: /electrolyzer-calculator/, not

/electrolyzercalculator/ — the unhyphenated form 404s.


7. Publishing controls

  • Cadence: Mon/Wed/Fri at 05:23 UTC. Daily posting at a round hour reads as

automated to search engines.

  • No duplicate topics. The publisher checks existing titles and only picks

uncovered subjects; when the pool is exhausted it uses dated review titles.

  • Categories are assigned per topic, never dumped into one bucket.
  • Comments and pingbacks are closed site-wide and by default. The site has

no moderation capacity and the only comments ever received were malware

links.

  • Every post needs an excerpt — without one, Google invents its own search

snippet from arbitrary body text.

  • Every third-party call retries with backoff. Pollinations and the Gemini

API both fail transiently, and a single unretried failure costs a whole

publishing slot. Two consecutive slots were lost this way: a Pollinations

HTTP 500 on 5 Aug parked a finished article as a draft, and on 7 Aug the

Gemini fallback chain burned through all three models in 0.6 s of 429/503

and produced nothing. Retry logic lives in resilient.py; the model chain

must retry within each model before falling through, so the chain outlasts

a short quota window.

  • Article text is generated before the image is uploaded. Text generation

is the step most likely to fail outright and the only one with nothing to

undo. Uploading first meant a dead Gemini chain stranded an orphaned image

in the media library (media 1117, 7 Aug).

  • A held draft is retried, not forgotten. recover_drafts.py runs daily,

regenerates missing images, re-runs the full QC suite, and publishes only

when every blocker clears. Drafts blocked for editorial reasons — thin

content, LaTeX, title mismatch — are reported and left for a human.

Advertising

  • At most one manual in-article unit per post. Auto Ads is enabled

site-wide; manual units stacked on top of it push a page over the ad-density

line. The unit is opt-in via the ADSENSE_SLOT_ID secret — unset, posts

carry no manual unit at all.

  • The unit anchors to an <h2> past the article midpoint, never mid-paragraph,

and is injected after the QC gate so its inline script text is not

counted toward the thin-content threshold.


8. Provenance — say where it came from, and never invent it

**The rule: an article states who stands behind it, when it was last updated,

and that AI assisted the drafting. A link is only ever presented as evidence

for a sentence if the article was written from it.**

Every published post carries a provenance block (editorial_provenance.py),

holding a named byline, the last-updated date, the AI-assistance disclosure,

and Further reading.

Further reading is not a citation list

The distinction is the whole rule. Further reading is authoritative

background on the subject. A source is the document a specific claim was

taken from, and it can only be recorded at the moment the claim is written.

When the first 49 posts were audited, none carried a source URL and not one

linked outside the site — they had been generated from topic prompts, not from

documents. A "Sources" list bolted on afterwards could only contain links

chosen because they looked like they might support the text. That is a

fabricated citation: an engineer who follows one, finds it does not say what

the sentence says, and stops trusting the site. It is the same failure as an

image file named "IISc hydrogen plant" that turns out to be a street with a

scooter on it — a label that promises evidence and does not carry it.

So: never add a citation retroactively. Fix it at generation time instead.

Checking a link before it ships

  • Fetch it. Only a 200 on the final URL may be published.
  • Read where it redirected to. Two energy.gov links returned 200 after

redirecting to unrelated offices, and the DOE "Hydrogen Shot" page 404s.

All three would have looked perfectly plausible pasted in unchecked.

  • A 403 is not permission to guess — IEA, IRENA and ISO block automated

fetches, so their pages cannot be verified this way and are not published

as verified.

The disclosure has to be true

The wording says *drafted with AI assistance and checked against these

standards* because that is exactly what the pipeline does: it drafts with a

model and gates on qc_check.py. It does not claim a human line-edited

the piece, because for most posts none has. Overstating review is worse than

disclosing none — it is the specific claim a reader can catch you in.

If a human does review an article, strengthen the wording for that article.


9. Enforcement

# Audit every published post; exit code 1 if any blocker is found
WP_USERNAME=... WP_APP_PASSWORD=... python qc_check.py
WhereWhenEffect
generate_article.pyevery publishblocker → saved as draft, workflow goes red
qc_audit.ymlweekly + manualsite-wide report, red run on any blocker

Severities. BLOCKER — never reaches readers (thin content, broken CSS,

LaTeX, <style> blocks, missing image or alt text, duplicate title, broken

internal links). WARN — publishes but needs a human eye (ambiguous headline

term, small or ultrawide image, missing Engineering Insight box).

A warning on an ambiguous headline does not mean the image is wrong. It

means a human must confirm the picture reflects the article's meaning rather

than a literal reading of its words.