SEO & AISEO improvement: Tiers 1–3 (metadata, structured data, content depth) - #349
Open
HarmlessHarm wants to merge 9 commits into
Open
SEO & AISEO improvement: Tiers 1–3 (metadata, structured data, content depth)#349HarmlessHarm wants to merge 9 commits into
HarmlessHarm wants to merge 9 commits into
Conversation
Records the four-tier SEO/AISEO plan and the §1 audit findings (robots.txt, sitemap, meta plumbing, JSON-LD, heading structure) gathered from the codebase before implementation.
Tier 1 - end keyword cannibalization and fix internal linking: - Pivot homepage title/description to brand + suite; give combat-tracker the 'dnd combat tracker / initiative tracker' head term. Rewrite encounter-builder, monster-creator, spell-creator, character-sync titles and descriptions (unique, target term first, include 'free'). - Brand fallback title in App.vue so untitled routes (e.g. /sign-in) no longer inherit the combat-tracker title. - noindex,follow on deep app/auth routes (build-*, create-*, /demo/run-encounter, /sign-in, /sign-up, /forgot-password) and all requiresAuth routes; keep canonicals self-referential. - Point homepage feature chips and section links at /tools/* marketing pages instead of deep app routes; keyword-bearing anchor text; reword the competing 'Combat Tracker for D&D' homepage H2 to 'Our Combat Tracker'. - ToolsPage: optional 'heading' prop for keyword-exact H1s. Tier 2 - crawler access and JSON-LD: - robots.txt: explicit AI-crawler Allow rules + Sitemap directive. - sitemap.xml: drop app/auth routes (sign-in, sign-up, build-encounter, create-monster, create-spell), add character-sync. - Organization + suite SoftwareApplication JSON-LD on the homepage; BreadcrumbList + per-tool SoftwareApplication JSON-LD via ToolsPage. - Monster/Spell/Character-sync tool pages get keyword H1s and app schema.
Append answer-first, self-contained content below the existing copy on the two priority tool pages (existing content untouched): combat-tracker: - 'How the Shieldmaiden combat tracker works' walkthrough. - 15-condition SRD reference table linking to the conditions compendium. - 'Combat rules Shieldmaiden handles for you' with rule citations (concentration DC, resistances, temporary HP, multi-target saves). - 10-question FAQ (direct answer first, ~40-60 words) with FAQPage JSON-LD. - Honest comparison vs Improved Initiative, D&D Beyond, Kobold+ Fight Club, D&D Battle Tracker. encounter-builder: - How-it-works, per-level XP threshold reference table, encounter tips. - 5-question FAQ with FAQPage JSON-LD. - Honest comparison vs Kobold+ Fight Club, D&D Beyond, Donjon. FAQPage markup is included for AI-assistant extraction; Google retired FAQ rich results in May 2026, so no SERP accordion is expected from it.
… from combat-tracker Removes the How-it-works walkthrough, the 15-condition reference table, the FAQ section (with its FAQPage JSON-LD), and the competitor comparison from the combat tracker page, along with their supporting data arrays and styles. Keeps the SoftwareApplication schema and the 'Combat rules Shieldmaiden handles for you' section.
Adds an llms.txt site summary (served at /llms.txt) plus an identical /llms.md copy, describing Shieldmaiden's tools and reference pages for AI assistants. Served statically from public/ like robots.txt and sitemap.xml.
…uilder copy Staging review corrections: - Homepage title reverted to lead with 'Combat Tracker' (Combat Tracker for D&D 5e - Free DM Companion App); the §3.2 pivot to 'D&D DM Tools' was withdrawn because Search Console shows most traffic arrives via combat tracker queries. Improved meta description kept; H1 untouched. Also revert the site-wide fallback title in App.vue for the same reason. - Remove the self-comparison section and the FAQ block from /tools/encounter-builder (both rejected for tool pages), plus the now-unused faq data, FAQPage JSON-LD and .faq-item style. How-it-works, the XP threshold table and the tips list stay. - Add a visible SRD 5.1 / OGL 1.0a source citation beneath the XP threshold table (footer attribution alone is insufficient for a reproduced table).
The `Content-Signal` (Cloudflare Content Signals Policy) and `Content-Usage` (IETF AI Preferences / aipref) directives explicitly communicate preferences for how AI agents should use the site's content for search, input, and training. This provides granular control for AI crawlers and enhances the overall AISEO strategy.
…1m6' into claude/seo-aiseo-improvement-23j1m6
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Summary
Implements Tiers 1–3 of the SEO & AISEO improvement plan (
.planning/seo-aiseo-improvement.md). Resolves keyword cannibalization, adds structured data for AI crawlers, and deepens page content to become a source AI assistants cite.Key Changes
Tier 1: Metadata & Internal Linking
"Combat Tracker for D&D"to"D&D DM Tools - Combat Tracker, Encounter Builder & More"to own brand + suite, not the head term/tools/combat-trackernow"D&D Combat Tracker - Free Online Initiative Tracker for 5e"(includes "free");/tools/encounter-buildernow"D&D Encounter Builder - Free 5e Encounter & CR Difficulty Calculator"/tools/*page now has a keyword-bearing H1 via newheadingprop onToolsPagecomponent (e.g.,"D&D Combat Tracker","D&D Encounter Builder")/tools/combat-tracker,/tools/encounter-builder) instead of deep app routes; anchor text contains target termsnoindex,followmeta tags to/tools/*/build-*,/tools/*/create-*,/demo/run-encounter,/sign-in,/sign-up(viaApp.vuefallback title change)/sign-up,/sign-in,/tools/*/build-*,/tools/*/create-*) frompublic/sitemap.xml; added missing/tools/character-syncand/tools/homebrew-creationTier 2: Structured Data & Crawler Access
Allowrules for AI crawlers (GPTBot,OAI-SearchBot,ChatGPT-User,ClaudeBot,PerplexityBot,Google-Extended) andSitemap:directive (codifies existing allow-all policy)src/views/Home.vue) with name, logo, founding date, contact, and social links/tools/*page (tool-scoped) withfeatureListand freeOfferToolsPagecomponent for all tool pages/tools/combat-trackerand/tools/encounter-builder(for AI extraction, not Google rich results)Tier 3: Content Depth (AISEO)
Combat Tracker (
src/views/Tools/CombatTracker.vue):Encounter Builder (
src/views/Tools/EncounterBuilder.vue):https://claude.ai/code/session_0114GSEB9PKkqdpgNmYx5SmM