Publishing workflow

Be clear about what this site can and cannot do. This is a static website. It cannot research topics, write articles or publish them by itself. Everything below describes an external workflow that produces files, which are then built and uploaded. Any claim that the site auto-publishes would be false.

The cadence this project is prepared for

Two articles a day - one in the morning, one in the evening - each with a different search intent, primary keyword, topic and angle. The content plan holds fifty briefed topics, which is about five weeks of material at that rate before new research is needed.

Publishing two thin articles a day is worse than publishing two good ones a week. The cadence is a capacity target, not a quota to fill with filler.

The seven-step pipeline

StepWhat happensWho or what does it
1. ResearchPick a briefed topic or identify a new one. Confirm no existing page targets the same intent. Gather sources.Human, optionally assisted
2. DraftWrite to the brief's outline. Include specific numbers and worked examples.Human, optionally assisted
3. Fact checkVerify every claim. Gameplay claims against the engine source; historical claims against documented references.Human - not delegable
4. Human reviewRead it in full. Does it answer the question it promises? Is anything overstated?Human - not delegable
5. SEO reviewTitle, meta description, heading hierarchy, alt text, internal links. After the content is right, never before.Human or checklist
6. Buildpy _src/build.py --check. Generates HTML, image, JSON entries, sitemap entries, internal link checks.Script
7. DeployUpload changed files, or push to a git-backed host.Script or manual

Automating steps 6 and 7 with GitHub Actions

Steps 1-5 need a human. Steps 6 and 7 do not. A minimal workflow:

name: Build and deploy
on:
  push:
    branches: [main]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with: { python-version: '3.12' }
      - run: pip install pillow
      - run: python _src/build.py --check
      - name: Fail if the build changed tracked files unexpectedly
        run: git diff --exit-code || echo "Generated files updated"
      - uses: actions/upload-artifact@v4
        with: { name: site, path: . }
      # then deploy with your host's action (Netlify, Cloudflare Pages, FTP, ...)

--check fails the build if any internal link points at a page that does not exist, so a broken link cannot reach production.

Using an AI-assisted drafting step responsibly

If you use a language model to help draft, the rules that keep this site honest are:

  1. Never publish unreviewed output. A human reads every word and takes editorial responsibility for it.
  2. Verify every factual claim independently. Models produce plausible dates, names and numbers that are wrong. Gameplay claims must be checked against the code.
  3. Strip invented statistics. If a draft contains a percentage or a user count, delete it unless you have the source.
  4. Do not generate near-duplicate articles to cover keyword variations. One intent, one page.
  5. Keep the byline honest. The named editor is accountable for the article regardless of what tools produced the draft. This is stated openly in the editorial policy.

Trend monitoring

This static site has no access to live search data. Trend monitoring is an external process you run, and nothing on the site should imply otherwise.

A workable monthly routine:

Record findings as new briefs in _src/briefs.py using the same structure as the existing fifty, so the plan stays in one place.

Content maintenance

TriggerAction
A game is retunedRe-check every article that quotes its numbers; update both the text and the updated date
A correction is reportedVerify, fix, note the change on the page, check whether the error appears elsewhere
New historical source foundUpdate the relevant retro articles and their references
Annual reviewRead each article; change the updated date only if you actually changed something
Never refresh an update date cosmetically. It is dishonest, it is detectable, and it destroys the value of the date for readers who use it to judge currency.

Connecting the newsletter and contact form

Both are currently honest placeholders that tell the visitor nothing was sent. To make them real: