Skip to content

SEO Sweep Phase 3 — Cosmos Universe Audit + Starter Prompt

Hand-off date: Mon 11 May 2026, ~12:00 NZST Purpose: Sweep SEO meta across ALL cosmos planets and moons — Earth (aguidetocloud-revamp) was completed in Phase 1+2, but the other 7 planets share the parent brand and need parity. Status: Audit complete. ~100–170 pages need rewrite across 7 surfaces.

TL;DR for next session

Paste this into a fresh Copilot CLI session:

Please continue the cosmos-wide SEO sweep. Read learning-docs/docs/reference/seo-sweep-phase3-prompt.md first — it has the per-planet audit, the live homepage audit, the SLA touch-points, and the recommended commit order. Apply the same parallel-safe rules + SLA protocols. Each planet gets its own commit. Update the session journal at the end.


Phase 1 + 2 already completed on Earth

  • 818 page rewrites across 7 commits (Phase 2A–2G)
  • 845 failing → 50 failing (94% reduction)
  • 8 sibling scripts in aguidetocloud-revamp/scripts/

Other planets share Earth's brand parent (aguidetocloud.com domain). They need their own sweep so the universe presents consistently in SERPs.


Live homepage audit (Mon 11 May 2026)

Quick check via Invoke-WebRequest confirms even homepages are failing:

Planet Live URL Title len Desc len Notes
🌍 Earth aguidetocloud.com/ 72 ❌ 0 ❌ Homepage _index.md not in Phase 2 scope. Worth touching.
🌑 Guided aguidetocloud.com/guided/ 88 ❌ 178 ❌ Both over limit
Brain Bar cmd.aguidetocloud.com/ 69 ❌ 0 ❌ No meta description in HTML
Shift shift.aguidetocloud.com/ 30 ⚠️ 185 ❌ Title too short, desc too long
Plain AI plainai.aguidetocloud.com/ 8 ❌ 54 ❌ Title is literally "Plain AI"
Cosmos Atlas cosmos.aguidetocloud.com/ 31 ⚠️ 123 ✓ Best of the bunch

Agentic + Claw planets — domain not yet checked. Assume similar issues.


Per-planet detail (from explore agent audit)

🪐 Brain Bar

  • Path: C:\ssClawy\aguidetocloud-revamp\brainbar\
  • Stack: Hugo (sub-project inside Earth's repo)
  • Pages: ~7 markdown files (content/*.md)
  • Meta source: frontmatter title: / description:baseof.html:6-8 with .Site.Params.description fallback
  • No existing SEO audit script

Sampled 5 pages: | File | T len | D len | Score est | |---|---:|---:|---:| | content/about.md | 10 | 60 | ~60 | | content/all.md | 11 | 92 | ~55 | | content/watch.md | 14 | 147 | ~68 | | content/changelog.md | 12 | 89 | ~58 | | content/wishlist.md | 74 | 97 | ~62 |

Dominant pattern: Titles too short (10-14 chars) — generic page names. Descriptions decent but missing hooks/numbers.

Fix approach: - Hand-craft each of 5 page metas (small surface, hand-crafting > scripting) - Add Site Params default that scores ≥70 for any future page - Estimated rewrites: 3-5 - Risk: low — separate Hugo project, separate deploy, no SLA touch


🌑 Moon — Guided

  • Path: C:\ssClawy\guided\
  • Stack: Astro
  • Pages: ~14 .astro + dynamic routes ([vendor], [slug], [cert]/practice, [...slug])
  • Data: ~126 cert TOMLs + ~614 question JSON files
  • Meta source: BaseLayout.astro props (title, description)
  • No existing SEO audit script (test-guided-qa.cjs is SLA gate, not SEO)

Phase 1 already touched: - [slug]/index.astro — short title + capped 155-char desc (commit 32d61f4) - [cert]/practice.astro — same (commit 32d61f4) - displayCode helper to strip vendor prefix (commit f226246)

Still failing: - index.astro (homepage) — title 88 chars, desc 178 chars - help/, about/, other static pages — generic, low score - [vendor]/index.astro — needs brand+hook consistency

Fix approach: - Hand-craft homepage + 8-12 static pages - Audit [vendor]/ template, ensure all 14+ vendors get compliant titles - Estimated rewrites: 20-40 pages - Risk: HIGH — SLA-protected: PracticeQuiz.tsx, [cert]/practice.astro, [slug]/index.astro, src/data/questions/*.json. Use full SLA protocol from ~/.copilot/copilot-instructions.md § Practice Exam SLA.


🪐 Shift

  • Path: C:\ssClawy\shift\
  • Stack: Astro
  • Pages: ~12 .astro pages + dynamic routes (role/[slug], compare/[pair], og/[slug])
  • Data: src/data/roles.json (~35 roles)
  • Meta source: page props into BaseLayout.astro:13-18 with default fallback at :32
  • No SEO audit script. Has check-paid-firewall.mjs, validate-roles.mjs

Sampled 5 pages: | File | T len | D len | Score est | |---|---:|---:|---:| | index.astro | 5 | ~129 | ~45 | | about.astro | ~10 | ~110 | ~35 | | all.astro | ~5 | ~100 | ~40 | | compare/index.astro | ~10 | ~110 | ~40 | | role/[slug].astro | role-specific | ~90-120 | ~35 |

Dominant pattern: WEAKEST PLANET. Titles 5-10 chars (way short), no brand/hook/CTA in most. 35 role pages all share the same template — could be uniform fix.

Fix approach: - Hand-craft homepage + 5-8 static pages - Build a role-page meta helper (the 35 roles can be templated by job title + category) - Estimated rewrites: 12-35 pages (depending on whether 35 roles all need touching) - Risk: medium — no SLA touch, but roles.json is a build-time data input. Don't change schema.


🪐 Plain AI

  • Path: C:\ssClawy\plainai\
  • Stack: Custom JSON pipeline (NOT Hugo or Astro)
  • Pages: ~163 JSON content items (78 topic cards + 60 changes + 18 learn + 3 standalone)
  • Meta source: build-shared.mjs pageHead({ title, description, ... }) function
  • Build entry points: build.mjs, build-changes.mjs, build-learn.mjs
  • Has accessibility audits: scripts/qa.mjs, scripts/audit-detail.mjs, audit.mjs — NOT SEO-specific
  • 🌱 BRAND CONSTRAINT: Plain AI's voice rules in ~/.copilot/plain-ai-voice-guardrail.md MUST be respected. Forbidden words include "comprehensive", "frontier", "agentic", "robust", etc. Stick to plain English.

Sampled 5 pages: | File | T len | D len | Score est | |---|---:|---:|---:| | content/pages/about.json | ~14 | 58 | ~55 | | content/pages/why.json | ~23 | 127 | ~60 | | content/pages/licence.json | ~22 | 142 | ~58 | | content/topics/ai-news-summaries.json | 20-30 | 100-130 | ~65 | | content/changes/openai-gpt-5.json | 20-35 | 140-160 | ~75 |

Dominant pattern: Decent baseline. Weakest spots: generic topic titles, missing CTA/hook consistency.

Fix approach: - Write a Plain AI-specific SEO normalizer that respects voice guardrail - Three content types: pages, topics, changes, learn — each gets its own template - Title template proposal: "{name} — Plain AI" with hook for new content - Description: take intro or first sentence + ensure ≥120 chars; trim ≤155 - Estimated rewrites: 25-50 pages - Risk: low — JSON only, build is rebuild-from-source


🌌 Cosmos Atlas

  • Path: C:\ssClawy\cosmos-atlas\
  • Stack: Astro
  • Pages: ~2 .astro pages (mostly the interactive atlas itself + 404)
  • Meta source: Base.astro props with hardcoded defaults
  • 🔬 HAS A PLAYWRIGHT QA SUITE: scripts/qa-audit.mjs — universal "growing-guardrail" rule applies. Don't delete checks.

Sampled 5 pages: | File | T len | D len | Score est | |---|---:|---:|---:| | src/pages/index.astro | ~29 | ~128 | ~78 | | src/pages/404.astro | ~31 | ~87 | ~55 |

Dominant pattern: Best of the bunch. Already mostly SEO-shaped.

Fix approach: - Touch only 404 + maybe homepage description tweak - Estimated rewrites: 0-2 pages - Risk: low — but run node scripts/qa-audit.mjs before AND after per universal Cosmos QA rule


🪐 Agentic Planet

  • Path: C:\ssClawy\agentic-planet\
  • Stack: Astro
  • Pages: ~36 .astro + dynamic routes (mcp/[slug], vendors/[slug], learn/[slug], recipes/[slug], compare/[category], desk/[slug], faq/[slug])
  • Data: Collection-driven (MCPs, vendors, recipes, learn entries)
  • Meta source: BaseLayout.astro props with default fallback at :45
  • No SEO audit script (uses Astro check + pagefind)

Sampled 5 pages: | File | T len | D len | Score est | |---|---:|---:|---:| | src/pages/index.astro | ~20 | ~100 | ~60 | | mcp/[slug].astro | "X — MCP review" | summary-based | ~70 | | vendors/[slug].astro | similar pattern | summary-based | ~70 | | recipes/[slug].astro | similar pattern | description-based | ~68 | | faq/[slug].astro | "Q: ..." | summary-based | ~62 |

Dominant pattern: Generally solid. Inconsistency between collection summaries is the main gap.

Fix approach: - Audit each collection entry's description field — make sure all hit 120-155 chars + have brand+hook+CTA - Hand-craft homepage + about + faq landing - Estimated rewrites: 10-20 pages - Risk: medium — touches MCP review data; check if any MCP-specific SLA / data feed contracts exist


🪐 Claw Planet

  • Path: C:\ssClawy\claw-planet\
  • Stack: Astro
  • Pages: ~23 .astro + dynamic routes (connections/[slug], compare/[slug], plugins/[slug], security/[slug], setup/[slug], use-cases/[slug], overview/[slug])
  • Data: Collection-driven
  • Meta source: BaseLayout.astro:30-35,82-101, usually entry.data.description
  • Strong editorial safety rails: voice-lint, audit:claims, audit:verification, smoke, check:links. NO SEO audit script.

Sampled 5 pages: | File | T len | D len | Score est | |---|---:|---:|---:| | src/pages/index.astro | 13 | ~170 | ~60 | | setup/[slug].astro | "§ N Title" | entry desc | ~68 | | plugins/[slug].astro | entry title | entry desc | ~68 | | security/[slug].astro | entry title | entry desc | ~68 | | compare/index.astro | ~15 | ~110 | ~58 |

Dominant pattern: Descriptive but not aggressively hooky. Many pages miss the hook word.

Fix approach: - Audit collection entry descriptions for hook word - Hand-craft homepage + compare landing + few static pages - Estimated rewrites: 10-18 pages - Risk: medium — voice-lint may reject certain wording. Run voice-lint before commit.


Lowest risk first, SLA-touching last:

Phase Planet Risk Est. rewrites Status
3A Cosmos Atlas low 0-2 ✅ DONE (Mon 11 May 2026) — 57a40cc
3B Brain Bar low 3-5 ✅ DONE (Mon 11 May 2026) — 15ba8695
3C Plain AI low 25-50 ✅ DONE (Mon 11 May 2026) — 63c5d50 + 31a9fd4 (homepage followup)
3D Agentic Planet medium 10-20 ✅ DONE (Mon 11 May 2026) — 74c11caed6c18c (rebased)
3E Claw Planet medium 10-18 ✅ DONE (Mon 11 May 2026) — 21cf1cd
3F Shift medium 12-35 ✅ DONE (Mon 11 May 2026) — 03c98c5 (100% L2 on 637 indexed pages)
3G Guided (Moon) HIGH 20-40 ✅ DONE (Mon 11 May 2026, ~13:30–14:00 NZST) — 5 commits 00113cd7550396. 95.7% L2 compliance on 23 indexed pages, 0 critical, 0 SLA failures. Pattern: BaseLayout trimToWord helper + cosmos-style · Guided suffix → homepage rewrite → vendor template (fixed 13 pages) → 4 statics → polish. SLA gate green BEFORE and AFTER every commit (40/40 each run). No PracticeQuiz / question-data / checkout / build-pipeline touched.
3H Earth homepage low 1 page ✅ DONE (Mon 11 May 2026) — eff277b8 (folded into aguidetocloud-revamp push with 3B)

Per-planet tooling needed

Each planet uses a different SEO meta plumbing. Reusing the 8 Earth scripts isn't straightforward. Approach:

Planet Tool needed
Brain Bar Adapt rewrite-tool-index-metas.ps1 for brainbar/content/*.md (just change content dir)
Cosmos Atlas Hand-edit Base.astro defaults + 404.astro props
Plain AI NEW: scripts/normalize-seo.mjs — Node script that walks content/*/*.json, checks SEO quality, writes back. Must respect voice guardrail.
Agentic Planet NEW: Astro collection front-matter normalizer (likely Node)
Claw Planet NEW: Same approach as Agentic, with voice-lint gate
Shift NEW: Role-page meta helper in BaseLayout.astro + audit-and-rewrite for static pages
Guided Hand-craft + audit script extension. No script writes to SLA files.

Cross-planet shared work (do once)

Build a shared L2 quality scorer

Currently each planet would need its own scorer. A SHARED quality scorer would be valuable:

Option A: PowerShell at root of each repo (per-repo copies) Option B: Node-based scorer that reads package.json to learn the planet's meta source, then audits → applicable across Astro planets and Plain AI Option C: Just adapt the existing Hugo scorer to each planet's content shape (5 scripts total)

Recommendation: Option C — copy aguidetocloud-revamp/scripts/check-seo-quality.ps1 to each planet, adapt for its content layout. Same L2 standards apply universe-wide.

Brand/hook/CTA word lists

The wordlists from Earth's Phase 2 are universal. Each planet should share: - BrandWords (Microsoft, Azure, AI, Copilot, etc.) - HookWords (Free, New, Complete, etc.) - CtaWords (Free, Practice, Guide, etc.) - HypeWords (banned: ultimate, comprehensive, etc.)

Maintain in a single place; copy-paste into each planet's scorer.


SLA + safety rules (cross-planet)

Planet Don't touch Pre-push check Post-deploy smoke
Guided PracticeQuiz.tsx, [cert]/practice.astro, [slug]/index.astro, src/data/questions/*.json, package.json scripts, Astro config node test-guided-qa.cjs 3-URL smoke (data/checkout/practice)
Cosmos Atlas (interactive nav files) node scripts/qa-audit.mjs (dev) node scripts/qa-audit.mjs https://cosmos.aguidetocloud.com/ (live)
Shift check-paid-firewall.mjs boundaries validate-roles.mjs Manual visit role pages
Claw Planet (voice/claims-protected content) voice-lint, audit:claims, audit:verification check:links
Plain AI (none — JSON only) scripts/qa.mjs (accessibility) Check live tab favicon = lotus
Agentic Planet (none) Astro check Manual visit collection pages
Brain Bar (Brain Bar QA suite if exists) Hugo build clean Manual visit

Parallel-safe git rules

Same as Phase 1+2. Each planet has its own repo (except Brain Bar which lives in aguidetocloud-revamp). The other Tools session may also be touching: - aguidetocloud-revamp/data/toolkit_nav.toml - aguidetocloud-revamp/static/css/<tool>.css - aguidetocloud-revamp/layouts/<tool>/list.html

Brain Bar work is in aguidetocloud-revamp/brainbar/ — that's likely safe but check git status -s before staging.

Other planet repos (guided, shift, plainai, cosmos-atlas, agentic-planet, claw-planet) are separate. Each has its own remote.


Done criteria for Phase 3

  • Per-planet audit script run (or equivalent): <10% pages failing
  • 0 critical (<50 score)
  • Each planet's smoke/QA suite green
  • Per-planet commit + push (one logical change per planet)
  • Session journal updated
  • This file updated marking each planet as ✅ DONE

What this Phase 3 prompt DOESN'T cover

  • Image SEO (OG images per page) — Phase 4
  • Structured data / JSON-LD per planet — Phase 4
  • Sitemap generation — already exists per planet
  • Internal linking improvements — Phase 4
  • Search Console submission — manual

These are bigger projects. Phase 3 is scoped to title + meta description hygiene only.


Document established: Mon 11 May 2026, ~12:00 NZST. Audit findings produced by Copilot CLI explore agent (cosmos-seo-audit, gpt-5.4-mini, 109s). Phase 1+2 commits live; Phase 3 ready to start in a fresh session.