feat(seo): set the brand Organization entity via Mintlify's native seo.organization - #2285
feat(seo): set the brand Organization entity via Mintlify's native seo.organization#2285GigaHierz wants to merge 3 commits into
Conversation
|
Mintlify has a native The schema lives at
I checked this against the schema and the settings page rather than a deploy, so I cannot tell you whether it is plan-gated. Static head injection being unavailable is a separate feature. Worth fixing whichever way you go:
Smaller: the Discord invite is revocable rather than a profile URL, The branch is also behind main. #2279 and #2280 both rewrote |
…g docs to the Celo entity Closes #2283 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Google's structured-data logo guideline requires a raster format; SVG is ignored for the logo feature. Point at the Celo brand PNG. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… JSON-LD Replaces seo-schema.js with the `seo.organization` block in docs.json. The injected script added a second Organization node at a different `@id` (`https://celo.org/#organization`) than the one Mintlify already emits and references from every page's `publisher` (`https://docs.celo.org/#organization`). Google merges by `@id`, so the injected node sat beside the real graph instead of joining it. The native block edits the existing node in place, is rendered server-side, and so also reaches crawlers that do not execute JavaScript — the limitation the deleted file documented in its own header comment. Verified against https://mintlify.com/docs.json, which docs.json already declares as its `$schema`: `seo.organization` accepts `id`, `name`, `legalName`, `url`, `logo` and `sameAs`. Other changes this forces or fixes: - The `WebSite` node is gone. Mintlify already emits one named "Celo Docs" for this URL; a second named "Celo Documentation" gave Google two competing site names. - `logo` now points at logo/celo_light.png (4034x913) rather than the docs logo CeloDocs_LogoLight.svg (343x50), which is below Google's 112x112 floor. - The duplicated description is dropped; the schema has no description field, and the claim already appears in docs.json and home/celo.mdx frontmatter. - `forum.celo.org/` now matches the trailing slash used in footer.links. - `sameAs` is limited to official Celo profiles that were verified to return 200. The CoinGecko and DefiLlama listings are dropped: both are third-party listings rather than official profiles, and both return 403 to any non-browser client, so the links cannot be checked. - `id` is left at its default so it keeps matching the id the rest of the graph already points at. celo.org emits no JSON-LD at all today, so pointing it at `https://celo.org/#organization` would not merge with anything. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
d04fc7a to
75e7699
Compare
|
Switched to You were right on every point, and I confirmed the two claims I was relying on rather than assuming them. The schema field exists. The graph problem is real, and worse than "sits beside". The live page emits: plus a separate Mintlify One thing worth recording: celo.org emits no JSON-LD at all — Everything else you flagged:
On |
The hole, and the fix
Verified live today: Mintlify auto-injects an
Organizationschema named "Celo Docs" with nosameAs, plus aWebSitenode crediting Mintlify as creator — the docs are disconnected from the Celo brand entity that search and AI engines resolve.Adds
seo-schema.js(Mintlify loads any content-directory.json every page, no wiring needed) injecting one JSON-LD@graph: anOrganizationCelo (https://celo.org/#organization) with asameAsarray (GitHub org, X, YouTube, Discord, Forum, CoinGecko, DefiLlama, L2BEAT), and aWebSitenode for docs.celo.org whosepublisherpoints at that Organization — the docs→brand linkage the entity graph was missing.What this does NOT do / residual risk
@ids (celo.org/#organization,docs.celo.org/#celo-docs) differ from Mintlify's (docs.celo.org/#organization,docs.celo.org#website).Judgement calls
sameAslist = the docs.json footer socials + the three data aggregators the entity graph needs (CoinGecko, DefiLlama, L2BEAT). Adding/removing an entry is a one-line change.Issues
Refs #2283 — closes the script box; the "verified on the preview deployment" box stays open until the Mintlify preview for this PR is up (checkbox below).
Stacking / conflicts
Branched off
main, independent — new file only.Verification evidence
Every
sameAsURL verified: five return 200 to curl; CoinGecko and DefiLlama return 403 to curl (Cloudflare bot-blocking) but their APIs confirm the slugs (api.coingecko.com/api/v3/coins/celo→ idcelo;api.llama.fi/v2/chainslists Celo); L2BEAT project page returns 200.Remaining ops steps
JSON.parse(document.querySelectorAll('script[type="application/ld+json"]')[last].text)in the console (or Google's Rich Results test) and tick this boxChecklist
main