Skip to content

Term pages at /term/<ID>/, composed meta descriptions, IndexNow - #537

Merged
Robbie1977 merged 4 commits into
masterfrom
seo/term-slugs-descriptions-indexnow
Nov 4, 2026
Merged

Robbie1977 merged 4 commits into
masterfrom
seo/term-slugs-descriptions-indexnow

Conversation

@Robbie1977

Copy link
Copy Markdown

Fixes what Bing Webmaster Tools reports as identical titles, identical/short meta descriptions and missing IndexNow. Needs VirtualFlyBrain/vfb-k8s#83 merged first. Merging this triggers the builder's full corpus regeneration.

URLs. Term pages are now /term/<ID>/ (exact case) via url: front matter. Label slugs made URLs unpredictable (a rename moved the page) and the script's slug disagreed with the one Hugo derived from the title for any label with a backslash (all FBal), / or . (many FBtp, "embryonic/larval" FBbt), a Greek letter or other stripped punctuation — ~12% of the 450k sitemap URLs 404'd, and those pages carried a canonical that 404'd. Verified with a Hugo 0.122 build of the vfb-nova theme.

Sitemaps. One entry per term, /term/<ID>/ only. /reports/<ID> dropped: it 302s to the viewer, whose title/description/canonical are set client-side, so a crawler that does not run that JS sees the site-wide title on all 225k of them.

Descriptions. Terms with no curated definition get one composed from name, accession, type, dataset/technique and tags, instead of the bare Types text (gene, sequence_feature, …) shared by tens of thousands of pages. A lone . counts as empty.

Titles. JSON-quoted, so backslashes and quotes in labels survive — live FBal titles currently render as Scer&amp;bsol;GAL4[…].

IndexNow. Changed term URLs are appended to sitemaps/indexnow-pending.txt for the builder to submit once the build is live.

og:url now matches rel=canonical.

Term pages: write `slug:` to the front matter so Hugo's URL equals the
canonicalUrl and sitemap entry. Hugo derived the slug from the title, which
diverges from get_term_url whenever the label holds a backslash (all FBal),
a `/` or `.` (many FBtp, "embryonic/larval" FBbt), a Greek letter or other
stripped punctuation: ~12% of the 450k term URLs in the sitemaps 404 and
those pages declare a canonical that 404s. `--repair-slugs <root>` fixes
pages already on disk in place without a version bump.

Meta descriptions: when a term has no curated definition, compose one
from the name, accession, type, dataset/technique and tags instead of
echoing the bare Types text ("gene", "sequence_feature", ...) that tens of
thousands of pages shared. A lone "." counts as no description.

IndexNow: write the key file next to the sitemaps and POST the term URLs
written this run (VFB_INDEXNOW_KEY; skipped when unset).

Theme: og:url now matches rel=canonical on term pages.
Term pages now live at /term/<ID>/ (exact case), set with `url:` in the
front matter so Hugo writes them there verbatim and .Permalink is the
canonical. Label slugs made URLs unpredictable -- a label rename moved
the page -- on top of the slug mismatch the previous commit worked
around. `--repair-slugs` becomes `--repair-urls <root>`: it derives the
URL from the filename, so it also needs no canonicalUrl to parse.

Sitemaps list one URL per term, /term/<ID>/ only. /reports/<ID> is
dropped: it 302s to the viewer, whose title/description/canonical are
filled in client-side, so a crawler that does not run that JS sees the
site-wide title on every one of them (Bing's "identical titles").

Titles are JSON-quoted so backslashes and quotes in labels survive; the
old `&bsol;` substitution reached the <title> as "&amp;bsol;".
@Robbie1977
Robbie1977 merged commit b5bb0c6 into master Nov 4, 2026
3 checks passed
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.

1 participant