moonming opened a new pull request, #2058:
URL: https://github.com/apache/apisix-website/pull/2058
## Summary
Adds **Article + FAQPage + BreadcrumbList** structured data to Learning
Center articles. Previously these articles carried only the site-wide
`Organization` + `WebSite` JSON-LD — no per-article schema at all — so they
were ineligible for article / FAQ / breadcrumb rich results and weaker as
AI-overview citation sources, even though several already contain FAQ sections
in their content.
This is item **P0-2** from the SEO roadmap (the highest-ROI structured-data
work): one wrapper uplifts all 13 existing articles at once.
## What changed
### `website/src/theme/BlogPostPage/index.tsx` (new — thin wrapper)
Wraps `@theme-original/BlogPostPage` and, **scoped to `/learning-center/`**,
injects:
- **Article** + **BreadcrumbList** for every article (derived from post
metadata — title, description, date, permalink).
- **FAQPage** when the article declares an `faq` array in its front matter.
Other blog instances (events, articles) are rendered untouched.
Publisher/logo mirror the site-wide schema (`Apache APISIX` + `logo2.svg`) and
the existing `blog/` workspace `BlogPosting` pattern. URLs are absolute and use
the canonical trailing-slash form.
### `faq:` front matter (2 articles)
Added to the two articles that already have FAQ sections —
`what-is-an-api-gateway` (5 Q&As) and `open-source-api-gateway-comparison` (4
Q&As). Schema answer text matches the visible on-page answers (Google's FAQ
requirement).
## Verification — production (SSR) build
Built the site (`yarn workspace website build`, green in ~93s) and grepped
the generated HTML — this is exactly what crawlers receive:
| Article | Article | BreadcrumbList | FAQPage |
|---|---|---|---|
| what-is-an-api-gateway | ✅ | ✅ | ✅ 5 Q&A |
| open-source-api-gateway-comparison | ✅ | ✅ | ✅ 4 Q&A |
| apisix-vs-kong | ✅ | ✅ | — (no `faq`) |
| api-gateway-security | ✅ | ✅ | — (no `faq`) |
Article carries headline/description/datePublished/dateModified,
Organization author + publisher (with logo), and `mainEntityOfPage`.
BreadcrumbList is Home → Learning Center → article with absolute URLs.
Confirmed Docusaurus passes the custom `faq` front matter through
(`validateFrontMatter` uses `allowUnknown: true`), so the build accepts it and
the component receives it.
## SEO / GEO rationale
- **FAQ rich results + AI citations** — the FAQ content existed but was
invisible to crawlers and AI engines; marking it up makes APISIX the citable
source for these high-intent questions.
- **Article rich results** — author/date/publisher signals on every Learning
Center page.
- **BreadcrumbList** — breadcrumb SERP display + clearer site structure for
crawlers.
## Test plan
- [x] Production build green; SSR output verified per the table above
- [x] Custom `faq` front matter parses as `{q, a}` arrays (gray-matter) and
passes Docusaurus validation
- [x] Non-FAQ articles correctly emit Article + Breadcrumb only
- [ ] CI deploy build green
- [ ] Post-merge: validate a sample URL in Google Rich Results Test
## Notes / follow-ups
- Only 2 articles have FAQ sections today; adding `faq` front matter to more
articles (and authoring FAQ sections) is a content follow-up — the wrapper
already handles them automatically.
- The wrapper is additive and scoped; it does not change rendered article
markup.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]