Strengthen person entity signals and fix canonical URL redirects - #55
Merged
Merged
Conversation
Search Console showed that every sitemap entry, canonical tag and internal link used slash-less URLs while the host serves directory indexes and 301-redirects /labs to /labs/. Google had indexed the slash form of three pages and never crawled six of the nine content pages. - Make the trailing-slash form canonical site-wide: site.trailingSlash, canonical normalisation in app.vue, path helpers, nav and back links, breadcrumbs, detail-page canonicals, error pages, llms.txt and rss.xml. - Extend the schema.org Person identity with name parts, handle, city, nationality, employer URL, topics, third-party profile pages and the speaker spotlight article, and show the city in the hero. - Return 410 for the whole legacy Hugo URL space (/p/, /page/, /categories/, /archives/, /search/, /about/) and stop the host's one-year cache on HTML, XML and TXT files. - Declare the portrait explicitly in the sitemap instead of the double-escaped ipx thumbnail that image discovery produced. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The absolute site URL skipped the /pr-<n>/ base path on preview builds, so the declared image pointed at a missing file there. A relative loc lets the sitemap module resolve it per environment; production output is unchanged. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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.
Why
Search Console (domain property) shows the site is barely indexed, and the cause is on our side:
/labs), but the host serves directory indexes and 301-redirects them to/labs/. Google indexed the slash form of three pages, each declaring a canonical that redirects back, and had never crawled six of the nine content pages.What changed
Canonical URLs use the trailing-slash form everywhere.
site.trailingSlashis on,app.vuenormalises the canonical, and the path helpers, nav links, homepage buttons, detail-page back links, 404/410 pages, breadcrumbs, detail-page canonicals, llms.txt, llms-full.txt and rss.xml all agree. Nothing the site advertises points at a redirect any more. RSS item GUIDs change with the URLs, so feed readers may show existing items once as new.Person schema carries disambiguation signals. The shared
#identitynode now hasgivenName/familyName,alternateName(GitHub handle),homeLocationBremen with postal address,nationality,worksFor.url,knowsAbout(four topics linked to Wikipedia entities),sameAsextended with the Rheinwerk speaker entry, the Rheinwerk course page and the agentic.hamburg speaker spotlight, plussubjectOffor that article andemail. The hero shows "Bremen, Germany" under the role line, driven by a new optionalhero.locationcontent field.htaccess. 410 for the whole legacy Hugo URL space (
/p/,/page/,/categories/,/archives/,/search/,/about/, plus the existing/tags/,/en/,/legal), verified against the old Hugo config in git history. HTML, XML and TXT files getCache-Control: no-cacheso visitors and feed readers revalidate instead of holding the host's one-year cached copy; hashed assets keep the long cache.Sitemap image. Image discovery is off and the portrait is declared explicitly for
/with the same URL the Person schema uses.Verification
pnpm lint,pnpm typecheckpass;pnpm generatecompletes with the link checker at 0 errors / 0 warnings.og:url, sitemap entries (per-page lastmod preserved, error routes excluded), breadcrumbs, ItemList and Event URLs, llms.txt and rss.xml all use the slash form; no slash-less internal href remains in any page.aria-currentare right on each route, canonicals update on navigation.After deploy
no-cache./,/labs/and/speaking/, and resubmit the sitemap.🤖 Generated with Claude Code