Conversation
✅ Deploy Preview for flowfuse-website ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Contributor
Author
|
Preview affected pages:
Every page under |
dimitrieh
force-pushed
the
docs/seo-og-and-article-schema
branch
from
September 10, 2026 13:56
fe3fc6d to
d52bcee
Compare
Docs pages carried a title and a description and nothing else: no og:image, no og:url, no article-level structured data. Links to them unfurled bare, while the handbook already had all of it. useSeoMeta now covers the og and twitter tags, keeping the brand suffix that title, so it stays unset). defineOgImage renders the shared Default card with "Docs" as its section, and useSchemaOrg emits a TechArticle, the schema.org subtype for product documentation, with dateModified read from the git commit stamp docs-sync writes into the synced frontmatter. The derivation moved into nuxt/lib/docs-seo.mjs so node --test can cover it. That also drops an empty tag: pages with no description emitted <meta name="description" content=""> before.
dimitrieh
force-pushed
the
docs/seo-og-and-article-schema
branch
from
September 10, 2026 14:13
d52bcee to
f8f260f
Compare
Contributor
Author
|
FYI: the failing build here isn't caused by this PR. Tracked in https://github.com/FlowFuse/engineering/issues/460. It's resolved now, re-running the checks. |
No page under /docs has had a description. The docs collection declared its frontmatter `meta:` block as a schema field, but @nuxt/content reserves `meta` and overwrites it with the parser's leftovers, so every description was dropped and the new og:description and TechArticle description came out empty too. The docs collection now takes the same shim the blog and webinars use: the content:file:beforeParse hook renames `meta:` to `structuredData:` before parsing, and the schema declares that. docsSeo reads the written description first and falls back to the paragraph @nuxt/content takes from under the H1. The guides overlaid from nuxt/content-guides/ are in the same collection and get the same fix.
dimitrieh
force-pushed
the
docs/seo-og-and-article-schema
branch
from
September 25, 2026 20:13
dc95f7e to
348b735
Compare
This branch was successfully deployed
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.

Description
Docs pages had a title in their head and nothing else. This adds what the handbook already has, plus the description docs pages never had:
useSeoMetafor the description,og:description,og:url,og:typeand the twitter card tags.defineOgImage('Default', { section: 'Docs' }), so docs links unfurl with the branded card.useSchemaOrgwith aTechArticle, dated from the git stampdocs-syncwrites into the frontmatter.The description was missing because
@nuxt/contentreservesmeta, so themeta:block in docs frontmatter was dropped at parse time. The docs collection now gets the same shim the blog and webinars use: thecontent:file:beforeParsehook renamesmeta:tostructuredData:, and the schema declares that. A page with no written description falls back to the paragraph under its H1.This covers every page under
/docs, the guides fromnuxt/content-guides/included, since both land in the onedocscollection.The derivation sits in
nuxt/lib/docs-seo.mjswithnode --testcoverage. It callsdocsPageTitlefor the heading, so the title, the og:title and the card can not drift apart.Titles are unchanged.
Related Issue(s)
None.
Checklist