Skip to content

docs: page descriptions, titles, structured data and crawler files for search and answer engines - #116

Merged
imran-siddique merged 2 commits into
mainfrom
docs/seo-aeo
Sep 14, 2026
Merged

imran-siddique merged 2 commits into
mainfrom
docs/seo-aeo

Conversation

@imran-siddique

Copy link
Copy Markdown
Member

A crawl of every tests.agentrust-io.com sitemap URL on 2026-09-14 found 21 of 22 pages sharing one meta description, "Conformance test suite for TRACE: Trust Runtime Attestation and Compliance Evidence", because Material falls back to the site description.

  • JSON-LD had no Organization @id, and every page carried two Organization and two WebSite nodes (44 of each), one of them inline as the SoftwareApplication author. Nothing tied the suite to the AgenTrust organization on agentrust-io.com, and no inner page had a BreadcrumbList.
  • The SoftwareApplication node had no codeRepository, license or operatingSystem.
  • The home description was 161 characters.
  • robots.txt was never deployed: the host serves only Cloudflare's content-signals comment block, with no directives and no sitemap line.
  • llms.txt sections were Getting started, Test modules and Reference, without LIMITATIONS or the self-verification report.
  • The template comment said the homepage title was overridden. No such block existed.

The same fixes are going into every AgenTrust docs site from one shared kit.

Changes

  • hooks/seo.py, registered under hooks: in mkdocs.yml, sets each page's description from its first paragraph of prose, capped at 155 characters. Front matter still wins. hooks/ is excluded from the docs.
  • overrides/main.html now has the title block the old comment described: the home page uses its front-matter title alone, and a title that already names the site gets no suffix. og:title matches, og:site_name is AgenTrust. The JSON-LD graph has one Organization under https://agentrust-io.com/#organization, the WebSite, a WebPage or TechArticle per page with its own title, description and URL, and a BreadcrumbList on inner pages. The home page SoftwareApplication names the agentrust-trace-tests package with its PyPI URL, codeRepository, the Apache-2.0 license, operatingSystem, and the organization by @id.
  • robots.txt is added with the ten crawlers agentrust-io.com names and the sitemap line, and docs.yml copies it into the build and triggers on it and on hooks/.
  • llms.txt sections follow the tabs: Get started, Specification (levels, the eight modules, error codes), Guides (tutorials and the self-verification report) and Project (limitations, changelog, contributing). The description adds one sentence placing the suite in AgenTrust.
  • The home description is 150 characters.

Checked, on a build that replicates docs.yml (allowlist copy including robots.txt, docs_dir rewrite, mkdocs build --strict with mkdocs 1.6.1, mkdocs-material 9.7.7, mkdocs-llmstxt 0.5.0)

  • Strict build exits 0.
  • 22 pages: 0 use the site description, 0 over 160 characters, 0 duplicate titles, every og:title equals the title. Each page's JSON-LD parses with exactly one Organization under the hub @id, a page node whose URL is the canonical and whose description matches the meta tag, and a BreadcrumbList on all 21 inner pages.
  • robots.txt is at the built site root with 11 user-agent groups and the sitemap line. llms.txt has the four sections and 19 links, all resolving in the build.
  • pytest tests/test_docs_match_the_modules.py tests/test_obligation_accounting.py: 82 passed.

Generated with Claude Code

https://claude.ai/code/session_013aK3gVWzNdcM3hZ2o2awK2

imran-siddique and others added 2 commits September 14, 2026 16:51
…r search and answer engines

A crawl of tests.agentrust-io.com on 2026-09-14 found 21 of 22 pages
sharing the site description, JSON-LD with no Organization @id and an
inline Organization on every page, no robots.txt directives or sitemap
line, and llms.txt sections that predate the five tabs.

hooks/seo.py gives each page its own description; overrides/main.html adds
the title rule, per-page JSON-LD and breadcrumbs under the hub organization;
robots.txt is added and copied by the docs workflow; llms.txt follows the
tabs and now lists the limitations and self-verification pages.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013aK3gVWzNdcM3hZ2o2awK2
Indented continuation lines of a skipped list item are no longer read as
prose, so CHANGELOG's description is no longer the wrapped second line of
its first bullet, and double quotes in a derived description become
apostrophes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013aK3gVWzNdcM3hZ2o2awK2
@imran-siddique
imran-siddique requested a review from a team as a code owner September 14, 2026 23:51
@imran-siddique
imran-siddique merged commit 78fe118 into main Sep 14, 2026
8 checks passed
@imran-siddique
imran-siddique deleted the docs/seo-aeo branch September 14, 2026 23:53
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