Skip to content

feat(site): analytics, SEO and agent metadata; this repo becomes the source of truth - #1

Merged
mrveiss merged 3 commits into
mainfrom
site-source-of-truth
Sep 9, 2026
Merged

mrveiss merged 3 commits into
mainfrom
site-source-of-truth

Conversation

@mrveiss

@mrveiss mrveiss commented Sep 9, 2026

Copy link
Copy Markdown
Owner

Summary

The root page moves to being authored where it deploys. Source and deploy become one repository, which removes the copy step — and with it the entire class of failure where the reviewed bytes and the served bytes drift apart with nothing noticing.

Content comes from mrveiss/AutoBot-AI#16145, which was written and review-ready in the wrong repository. Wrong place, not wrong content: verified as a strict superset of the currently deployed page — 171 lines added, 0 removed.

What lands

File Change
index.html +171 lines: GA + Consent Mode v2, Open Graph, Twitter card, canonical, JSON-LD
robots.txt new — crawler policy with named AI agents, sitemap pointer
llms.txt new — llmstxt.org summary for agents
README.md rewritten (see below)
_config.yml one stale comment corrected; no behavioural change

Analytics

Google Analytics G-ZV9XT0XSWR — the same property as the /AutoBot-AI/ page, so the root and the project site report into one stream rather than splitting traffic across two.

Consent Mode v2, everything denied by default. Two things here are load-bearing rather than stylistic:

  • The consent defaults are set before gtag.js loads. Reordering them silently defeats the mechanism.
  • The answer is stored under ab-consent — the exact key the /AutoBot-AI/ page already reads, verified against the deployed page rather than taken from the PR that claimed it. Both are the same origin, so a visitor who answers on either is not asked again. Renaming that key asks one person twice for one decision.

SEO and metadata

og:image is absolute and verified 200 (image/png, 113 KB) — the one line in the head that cannot be checked by reading it, since a broken og:image renders nothing on every platform and none of them warn you.

JSON-LD deliberately carries no aggregateRating, downloadCount or interactionStatistic, and llms.txt claims no adoption figures: nothing here measures them, and a number that gets indexed and then stops being true is worse than an absent one.

README rewrite

The old README said "index.html here is a deployed copy, authored elsewhere". That stops being true with this commit, and it is a public repository's front page. It now documents the single-repo shape and carries the three deploy rules that cost real time to learn:

  • Pages deploys are exclusive — push once, then leave it 20+ minutes. Never POST /pages/builds to hurry one along: that cancels the deploy already in flight. Two of three deploys on this repository's first day died to exactly that nudge.
  • The API reports a cancellation as "Page build failed." with a null detail — indistinguishable from a real content failure, and it sent two sessions hunting a defect that did not exist. gh run list is the only view that shows whether a runner actually holds the job.
  • /pages/builds/latest is a positional alias, not a handle. A newer build re-points it, so a watcher keyed to it can follow two different builds and never see the first one's failure — and it fails in the direction that reads as still working. Key to the run id.

Verification

  • index.html still begins <!DOCTYPE html> with no YAML front matter — with front matter the Jekyll theme starts wrapping the page, which is the one change that would silently alter it. Documented in _config.yml where someone would trip over it.
  • Script tags balance: 6 open, 6 close. The diff looks alarming — the consent block appears to open with a stray </script> — because the original's trailing close now closes the newly added block. It is correct; it just does not read as correct in a diff.
  • _config.yml was byte-identical between the two repositories before this change; the only edit is a comment that referenced a "deploy contract" which no longer exists.

Follow-ups this unblocks

  • mrveiss/AutoBot-AI#16145 — closed as relocated, not abandoned; this PR is where its content lands.
  • mrveiss/AutoBot-AI#16140 (nothing detects drift between the reviewed page and the served bytes) — dissolved. There is no copy step left to drift.
  • site/mrveiss.github.io/ is removed from AutoBot-AI in a separate PR there, only after this one merges.

…ource

The root page moves to being authored where it deploys. Source and deploy become
one repository, which removes the copy step and with it the whole class of failure
where the reviewed bytes and the served bytes drift apart unnoticed.

Content taken from mrveiss/AutoBot-AI#16145, verified as a strict superset of the
deployed page (171 lines added, 0 removed):

- Google Analytics G-ZV9XT0XSWR, the same property as the /AutoBot-AI/ page, with
  Consent Mode v2 denied by default. The defaults are set before gtag.js loads and
  the answer is stored under `ab-consent` -- the same key and the same origin as
  the project site, so a visitor who answers on either is not asked twice.
- Open Graph and Twitter card with an absolute og:image (verified 200), canonical,
  robots meta, and JSON-LD for the site, the person and the three repositories.
- robots.txt naming GPTBot, ClaudeBot, PerplexityBot and Google-Extended
  explicitly rather than relying on the wildcard, plus the sitemap pointer.
- llms.txt to the llmstxt.org convention, stating what the sites contain and
  claiming no metric that could silently stop being true.

README is rewritten: it described itself as a deployed copy authored elsewhere,
which stops being true with this commit, and it is a public repository's front
page. It now carries the deploy rules that cost real time to learn -- push once
and wait, never POST /pages/builds, and /pages/builds/latest is a positional
alias rather than a handle.

Refs mrveiss/AutoBot-AI#16135
The footer read "Source for this page lives in AutoBot-AI" and linked
Dev_new_gui/site/mrveiss.github.io -- a path that 404s the moment that tree is
removed, which is the next PR. It now points at this repository, which is where
the source actually is.

A visible dead link on the first page a visitor sees, created by the move itself
rather than inherited, so it is fixed here rather than filed.
The /AutoBot-AI/ page persists an explicit light/dark override under `ab-theme`.
This page never read it, so a visitor who chose light there -- on a system set to
dark -- got a dark root page: two pages of one property visibly disagreeing about
a decision that person had already made.

Exactly the argument the `ab-consent` key makes, applied to theme. Same origin,
same key, and the stored values ('light' / 'dark') are already the ones this
page's selectors expect, so honouring it needs no new state.

Only an explicit choice is read: the project page writes `ab-theme` on toggle and
not on load, so an absent key means the visitor never chose and the unstamped
default still falls through to prefers-color-scheme. Inline in <head> because
stamping after first paint is a visible flash of the wrong theme.

Found while re-reading #16135's fifth criterion ("palette, type and theme
handling match docs/index.html") against the new single-repo shape rather than
ticking it. The palette and type matched; the theme handling did not.

Refs mrveiss/AutoBot-AI#16135
@mrveiss
mrveiss merged commit 34c0d81 into main Sep 9, 2026
@mrveiss
mrveiss deleted the site-source-of-truth branch September 9, 2026 14:12
mrveiss added a commit to mrveiss/AutoBot-AI that referenced this pull request Sep 9, 2026
…#16145) (#16149)

Everything site-related moves out of this repository and into
mrveiss/mrveiss.github.io, where the page is now both authored and deployed.
Source and deploy being one repository removes the copy step, and with it the
whole class of failure where the reviewed bytes and the served bytes drift apart
with nothing noticing -- which was the entirety of #16140.

This tree is what is left of the old two-repository design. Keeping it would leave
a second copy of a page authored elsewhere, silently stale from the moment the real
source moves ahead of it, and inviting an edit that can never reach the site. That
is precisely the divergence the move exists to remove.

The content is not deleted, it is landed elsewhere and verified there before this
removal was written:

  mrveiss/mrveiss.github.io@34c0d81  index.html 457 lines, robots.txt, llms.txt,
  _config.yml, README.md -- GA G-ZV9XT0XSWR present, no YAML front matter, and it
  carries 171 lines this copy never had.

Two files, 299 deletions, nothing else. Verified as the only references: a repo-wide
grep for `site/mrveiss.github.io` returns exactly one hit, the footer self-link
inside the removed index.html, already repointed at the new source in
mrveiss/mrveiss.github.io#1. No workflow, script or doc reads the path.

Closes #16145
Closes #16140
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant