seo: add FAQ sections to Language Essentials series to earn FAQPage schema - #21064
seo: add FAQ sections to Language Essentials series to earn FAQPage schema#21064workprentice[bot] wants to merge 1 commit into
Conversation
…chema Adds a 'Frequently asked questions' section (3 Q&A pairs each) to the 6 leaf pages under content/docs/iac/guides/basics/language-essentials/: variables, conditionals, loops, functions, classes, packages-and-dependencies. These pages already auto-qualify for supplemental FAQPage schema (type: docs, no frontmatter flag needed) but none of their existing headings were question-phrased, so the collector never found anything to emit. Rather than rephrasing the existing declarative H2s (out of scope per STYLE-GUIDE.md, which restricts trailing '?' headings to a named 'Frequently asked questions' exception), each page gets a dedicated FAQ section with clean, answer-first Q&A prose placed immediately before Next steps, mirroring the established pattern already used across content/docs/iac/comparisons/*.md. Verified with an isolated Hugo harness (schema/graph-builder.html + dependencies + real content copied verbatim, per the pulumi_docs_hugo_schema_harness playbook): all 6 rendered pages emit a FAQPage entity with 3 Question/acceptedAnswer pairs each, and no leaked markdown (no stray '#', code fences, pipes, or list markers) in any answer text. _index.md is intentionally untouched: it's a Hugo section bundle (.IsPage is false), which never qualifies for FAQPage schema regardless of content. HowTo schema is also out of scope here; it's gated to .Type == 'blog' in graph-builder.html and structurally cannot apply to a docs page.
Pre-merge Review — Last updated 2026-08-22T00:25:48ZTip Summary: This PR adds a three-question "Frequently asked questions" section to each of the six pages in the Language Essentials series ( Review confidence:
Investigation log
🔍 Verification trail32 claims extracted · 28 verified · 2 unverifiable · 0 contradicted
🚨 Outstanding in this PRNo outstanding findings in this PR.
|
What
Adds a "Frequently asked questions" section (3 Q&A pairs each) to the 6 leaf pages under
content/docs/iac/guides/basics/language-essentials/: variables, conditionals, loops, functions, classes, and packages-and-dependencies.Why
Every page in this series is
type: docsand.IsPage, so each already auto-qualifies for supplemental FAQPage schema inlayouts/partials/schema/graph-builder.htmlwith zero frontmatter flag needed. But the collector (schema/collectors/faq-entity.html) only picks up##/###headings ending in?, and none of these pages had one — every existing heading ("Where you have seen this before", "The syntax", "What to watch out for", etc.) is declarative. Live-page audit confirmed the gap: noFAQPageentity was rendering on any of the 6 pages.FAQPage is one of the two highest-leverage schema types for LLM/answer-engine citation, and this series sits squarely in Tier 3 educational/GEO content, so it's a good target for this.
Why a dedicated section instead of rephrasing existing headings
STYLE-GUIDE.mdrestricts trailing-?headings to a named exception: a "Frequently asked questions" section. Rephrasing "What to watch out for" into a question would violate that, and several of those existing sections contain{{< chooser >}}/{{% choosable %}}shortcodes and code fences that would leak intoacceptedAnswer.textif pulled into an answer span anyway. Instead, each page gets a new## Frequently asked questionsH2 (matching the style guide's exact wording) placed immediately before## Next steps, with###question headings and clean, answer-first prose, following the same pattern already established acrosscontent/docs/iac/comparisons/*.md(e.g.crossplane.md).Out of scope (and why)
_index.mdfor this section is untouched. It's a Hugo section bundle, so.IsPageisfalse, and it can never carry FAQPage schema regardless of content..Type == "blog"ingraph-builder.html, so acontent/docs/page can never carry it.Verification
Ran the changes through an isolated Hugo harness (
schema/graph-builder.htmlplus its full dependency chain and the real content copied verbatim into a minimal standalone site, per the team's schema-harness playbook), sincehugo buildon the full checkout fails on uncommitted CI-built CSS/icon assets unrelated to this change.Result: all 6 rendered pages emit a
FAQPageentity in the@graphwith 3Question/acceptedAnswerpairs each (18 total), and a parse of everyacceptedAnswer.textconfirms no leaked markdown — no stray#-prefixed headings, code fences, table pipes, or list markers in any answer.Also ran locally and confirmed clean:
node ./scripts/lint/lint-markdown.js— 0 errors across 1846 files../scripts/prettier.sh --checkon the 6 changed files — all match Prettier style.🧠 This PR was created by workprentice.