Repository navigation
fix(seo): community JSON-LD times + Event/ProfilePage schema, canonical URLs, redirect cleanup - #1274
Open
LiamRandall wants to merge 4 commits into
Open
LiamRandall wants to merge 4 commits into
LiamRandall wants to merge 4 commits into
Conversation
…canonical URLs, redirects - Anchor community meeting Event/VideoObject/BlogPosting/Article dates at 1:00 PM America/New_York (DST-aware) instead of midnight UTC; Event gains image, offers, inline organizer per Google's online-event guidance - People pages: wrap Person in ProfilePage; past talks emitted as CreativeWork (no address/time to satisfy Event) - Normalize JSON-LD url/@id/breadcrumb items to trailing-slash canonicals - Collapse 180 redirect chains / dead ends in netlify.toml to single hops; /quickstart and /cloud now point at v2 docs; add 301s for legacy URLs - Remove orphaned 2025-01-02 agenda stub (301 to /community/) - Fix internal links that hit redirects; v2 callouts on v1 wadm, lattice, and NATS pages; components page H1 names the Wasm Component Model Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Liam Randall <liam@cosmonic.com>
❌ Deploy Preview for dreamy-golick-5f201e failed.
|
Contributor
🔎 Structured data validation
✅ All checks pass and no authoring warnings to backfill. ⚙️ Generated by |
…ation Rich Results Test flagged 59 VideoObjects on /people/ pages with 'Either contentUrl or embedUrl should be specified'. Derive both from the YouTube thumbnail and pass the meeting's duration through the people-pages plugin. Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Liam Randall <liam@cosmonic.com>
LiamRandall
marked this pull request as ready for review
September 24, 2026 00:19
jfleitz
approved these changes
Sep 24, 2026
LiamRandall
enabled auto-merge (rebase)
September 24, 2026 17:36
Signed-off-by: Liam Randall <liam.randall@gmail.com>
auto-merge was automatically disabled
September 24, 2026 17:39
Rebase failed
Signed-off-by: Liam Randall <liam.randall@gmail.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.
SEO and structured-data fixes from the Sept 2026 Ahrefs site audit (93 pages with rich-result validation errors, 30 pages linking to redirects, redirect chains, an orphan page, and broken inbound URLs).
1. Community meeting times (every community page)
Meeting frontmatter only has a date, which Docusaurus turns into midnight UTC — 8 PM Eastern the previous evening. That value fed
Event.startDate,VideoObject.uploadDate, theBlogPosting/ArticledatePublished, the/community/list JSON-LD, and person-page meeting videos.src/theme/wasmcloud/community/meeting-time.ts: start = 1:00 PM America/New_York, DST-aware (hand-computed US rule, so SSR and hydration always agree), emitted with an explicit offset, e.g.2026-09-23T13:00:00-04:00/2026-03-04T13:00:00-05:00. Optionalstart_time: 'HH:MM'frontmatter override for off-schedule calls.Event.endDate= start +duration.2. Event schema — online-event shape per schema.org/Event and Google's Event docs
VirtualLocation+OnlineEventAttendanceMode, plus the recommendedimage,offers(free,InStock,validFrom), an inlineorganizer(name + url, not just an@idref), andperformer.3. People pages
Personis now wrapped inProfilePage(mainEntity,dateModified) — Google's profile-page type.Event+Placewith only a venue name and a Jan-1 year date → guaranteed validation errors. They're nowCreativeWork(genre "Conference talk").VideoObjects gaincontentUrl/embedUrl(from the YouTube thumbnail) andduration.4. Canonical URLs in JSON-LD
The site builds with
trailingSlash: true, but JSON-LDurl/@id/mainEntityOfPage/ breadcrumbitemwere built from Docusaurus permalinks without the slash — pointing at 301s and not matching<link rel=canonical>. NewwithTrailingSlash()helper applied to blog, community, docs, course, collection-page, person-page, site-navigation, blog/community list pages, FAQ, glossary, and a thin wrapper of the docsBreadcrumbList. SearchurlTemplate→/search/?q=.5. Redirects (
netlify.toml)docs/cli/wash#…was a relative path →/docs/v1/cli/wash/#…)./quickstart→/docs/quickstart/(was the v1 tour, 3 hops),/cloud→/docs/kubernetes-operator/(was v1, 4 hops),/edge→ the edge blog post (was a dead v1 NGS page),/install→/docs/installation/./Examples/Typescript,/ecosystem,/docs/wash/language-support,/Platform%20Overview/Lattice.community/2025-01-02-community-meeting.mdx(never authored, served at a date-based URL) → 301 to/community/. Note: it referenced recordingZqNy4337XLA, which has no other page.6. Internal links
Every built
<a href>that hit a redirect now links to the final URL (49 links / 36 files: v1 examples →add-features/, missing trailing slashes,/docs/roadmap/, old/docs/fundamentals/...). One broken 0.82 link fixed.7. Docs
/docs/overview/workloads/components/H1 → "Components and the Wasm Component Model" (the page ranks Try #5 for "wasm component model"; title already carried the phrase).Verification
npm run buildpasses (onBrokenLinks/onBrokenAnchors: 'throw')npm run validate:structured-data: 892 HTML files, OKx-robots-tag: noindex, so the URL mode reports "URL is not available to Google"):aggregateRatingon SoftwareApplication entities/people/bailey-hayes/): 76 valid items incl. Profile page, 0 errors; the 59contentUrl/embedUrlwarnings it reported are fixed in eb706bbEvent: Google's test detects no items for online-only events — confirmed with schema.org's own online-event example as a control, which also returns "No items detected". Virtual events aren't a Google rich-result type; the markup matches the schema.org example shape.aggregateRating(no ratings to cite), TechArticledatePublishedon undated docs,imageon pre-2024 community pages / external writings./quickstart,/cloud,/edge,/install, legacy URLs, the deleted stub, and sampled legacy docs paths all resolve in 1 hop