Skip to content

fix: Monthly SEO fixes 2026-10-13 - #165

Merged
agent-ptolemy merged 1 commit into
mainfrom
seo-fix/2026-10-13
Oct 17, 2026
Merged

agent-ptolemy merged 1 commit into
mainfrom
seo-fix/2026-10-13

Conversation

@agent-ptolemy

@agent-ptolemy agent-ptolemy commented Oct 13, 2026 •

Copy link
Copy Markdown
Member

Automated fixes from the monthly SEO audit (13 October 2026).

Fixes applied

  • Missing robots directive on 59 pages. overrides/main.html only emits a <meta name="robots"> tag when meta.robots is explicitly set in frontmatter — it has no implicit default. 59 of 61 canonical content pages had no robots field at all, so they rendered with no robots meta tag whatsoever. Added robots: "index, follow" to all of them, matching the convention already used correctly on 404.md (noindex, nofollow). LICENSE.md and NOTICE.md are untouched — they carry no frontmatter by design.

Validated with the full deploy pipeline after the fix: unit tests, validate_headings.py, zensical build --strict, breadcrumb enrichment, sitemap + updates.json generation, validate_seo.py, and validate_agent_readiness.py all pass clean.

Full audit results (8 checks)

  1. Technical SEO — robots.txt at repo root is correct: allows all crawlers, lists all 12 required AI crawlers, references the sitemap. Sitemap has all 61 canonical pages; the 21 URLs without <lastmod> are exactly the legal pages (LICENSE/NOTICE, no frontmatter) plus the 19 pages marked review-status: "pending" — this is the template's intended behaviour (freshness signals withheld until substantive human review), not a bug.
  2. Broken links — Internal: 0 broken links found across all markdown files in docs/. External: could not be checked this cycle — the execution environment's egress policy blocks outbound HTTPS to essentially all external domains (confirmed against several .gov.au hosts and even wikipedia.org, both via curl and WebFetch; only a short allowlist like github.com resolves). This is an environment limitation, not a site finding — same recurring issue as the last several audits. 534 unique external URLs are referenced across the site (197 of them .gov.au/.gov), unchecked this cycle.
  3. Internal linking — the site's real navigation comes from zensical.toml (per CLAUDE.md), not in-body cross-links, so most pages show "zero incoming body links" by design; this isn't a discoverability problem (the sidebar nav links every page from every page). In-body contextual cross-linking is sparse, which is a content opportunity, not a defect — flagging for awareness only, no action taken.
  4. On-page SEO — validate_seo.py passes with 0 errors (title ≤60 chars, description ≤165 chars, uniqueness, etc. all satisfied). author, og_title, og_description, og_url, og_image, twitter_card are correctly left to the template's defaults per CLAUDE.md ("The template supplies the site author, canonical URL, default social image and Twitter card type"). Many page titles/descriptions sit outside the audit checklist's 50-60/150-160 "ideal" character range, but this is a consistent, deliberate site-wide style, and rewriting them needs keyword research — reporting only, not auto-fixed.
  5. Schema markup — homepage (WebSite+Organization), about page (Organization) and glossary (DefinedTermSet) all correct. All business-resources and safety-standards pages correctly render Article+BreadcrumbList via the template, and the two tagged with FAQ frontmatter render FAQPage. Gap (not auto-fixed, needs content expertise): governance-templates/ai-readiness-checklist.md and ai-vendor-evaluation-checklist.md are missing howto frontmatter (both already have faq). policy-template-library.md lacks both howto/faq too, but on inspection it's a landing/index page linking out to the other templates, not a step-by-step procedure — HowTo/FAQ schema isn't actually appropriate there, so it isn't counted as a gap.
  6. Content freshness — 0 pages are overdue against their review-cycle threshold. 19 pages are flagged review-status: "pending" (substantive human review pending) — same list as before, no change this cycle.
  7. Agent-readable resources — validate_agent_readiness.py passes clean. llms.txt/llms-full.txt content inventory still matches the current 11 governance templates + library index. llms.txt's Last updated: 2026-08-23 (~51 days) hasn't moved recently but no structural drift was found against it.

Issues requiring human action

  • Recurring, now 3rd consecutive cycle unaddressed: the custom 404 page's nav/asset/favicon links (href="../assets/...", href="../favicon.ico", etc.) are still relative paths built for one directory level deep, while deploy.yml's "Prepare GitHub Pages 404" step serves the file from site-root /404.html without rewriting them — so they resolve one level too high for most real 404 hits. First flagged 11 Oct, still present in today's build. This is a deploy-pipeline/template change, not page content, so it's out of this PR's auto-fix scope — recommend either rewriting site/404.html's links to root-relative paths as a post-processing step in deploy.yml, or adding <base href="/"> to the 404 page's <head> in overrides/main.html.
  • Write howto frontmatter for ai-readiness-checklist.md and ai-vendor-evaluation-checklist.md.
  • NOTICE.md remains an orphan page (0 inbound links from nav, footer or body content) — unchanged across several consecutive audits.
  • External link verification couldn't run this cycle (environment egress policy) — worth a manual pass, especially the 197 .gov.au links, given how often those restructure.
  • Optional: tighten title/description lengths to the 50-60 / 150-160 char "ideal" range where it doesn't hurt clarity (not urgent — nothing here fails validation).

Source: agent-engine/maintenance/seo-report-2026-10-13.md

Monthly SEO audit found that 59 of 61 canonical content pages had no
robots frontmatter field, so overrides/main.html rendered no <meta
name="robots"> tag at all for them (the template only emits the tag
when meta.robots is explicitly set). Added robots: "index, follow" to
every content page that lacked it, matching the one page that already
declared it (404.md, correctly set to "noindex, nofollow"). LICENSE.md
and NOTICE.md are untouched as they carry no frontmatter by design.

Validated with the full deploy pipeline: unit tests, heading
validation, zensical build --strict, breadcrumb enrichment, sitemap
and updates.json generation, validate_seo.py and
validate_agent_readiness.py all pass clean.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FFbrxgo7WPYxm3C9UVVspa
@agent-ptolemy
agent-ptolemy merged commit 4a4a616 into main Oct 17, 2026
1 check passed
@agent-ptolemy
agent-ptolemy deleted the seo-fix/2026-10-13 branch October 17, 2026 00:35
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.

2 participants