feat: improve AEO/GEO — structured data, answer-readiness, and heading hygiene - #831
Open
yjkellyjoo wants to merge 12 commits into
Open
feat: improve AEO/GEO — structured data, answer-readiness, and heading hygiene#831yjkellyjoo wants to merge 12 commits into
yjkellyjoo wants to merge 12 commits into
Conversation
- add site-wide Organization + WebSite JSON-LD via headTags - emit per-doc TechArticle JSON-LD from a DocItem/Layout wrapper swizzle - add a 512x512 Organization logo asset referenced by the schema - add an llms.txt discovery <link> to the document head Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Yejin Kelly Joo <yejinkellyjoo@gmail.com>
- add Sitemap directive pointing at /sitemap.xml - add an informational comment linking to /llms.txt Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Yejin Kelly Joo <yejinkellyjoo@gmail.com>
- replace stale githubusercontent branch URLs for og:image and twitter:image - replace the netlify test og:url with https://docs.ethswarm.org/ Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Yejin Kelly Joo <yejinkellyjoo@gmail.com>
- add 'Writing for answer engines' section to CODING.md - cover answer-first ledes, single H1, question-shaped headings with pinned slugs, self-contained sentences, factual descriptions, and extraction aids Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Yejin Kelly Joo <yejinkellyjoo@gmail.com>
- front-load a direct, factual, self-contained opening sentence on what-is-swarm, monitoring, getting-started, staking, contribute/introduction, gateway, and desktop/introduction - keep existing on-brand voice after the factual sentence - remove the duplicate body H1 on what-is-swarm (frontmatter title is the H1) - gateway and desktop/introduction also get refreshed descriptions Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Yejin Kelly Joo <yejinkellyjoo@gmail.com>
- rephrase headings as user questions on node-types, erasure-coding, redistribution-game, and pinning; pin original slugs via {#slug} to preserve anchors
- add question-shaped section headings to segment the price-oracle prose
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Yejin Kelly Joo <yejinkellyjoo@gmail.com>
- replace generic 'Guide for…/Overview of…' descriptions with concise self-contained facts across the 8 remaining desktop pages plus develop/introduction, tools-and-features/introduction, files, references/faq, and community - these descriptions feed the per-page TechArticle JSON-LD and the llms.txt slices Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Yejin Kelly Joo <yejinkellyjoo@gmail.com>
- description said 'Group Send Over Content'; the body defines GSOC as 'Graffiti Several Owner Chunk' - align the description (and its TechArticle JSON-LD) with the correct expansion Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Yejin Kelly Joo <yejinkellyjoo@gmail.com>
- drop body '# H1' headings that duplicated the frontmatter title (Docusaurus renders the title as the page H1), leaving a single H1 per page - retitle the two generic 'Introduction' pages to 'Contribute to Bee Development' and 'Tools & Features', each with sidebar_label 'Overview' - fix a 'would would' duplicated word on the contribute page Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Yejin Kelly Joo <yejinkellyjoo@gmail.com>
- promote first in-body headings from H3/H4 to H2 and cascade nested levels, so no page skips a heading level under its title H1 - fix mid-page H2->H4 skips by promoting orphaned H4s to H3 - drop the redundant per-tab 'API'/'Swarm CLI' headings in buy-a-stamp-batch (the Tabs component already labels them) - rename build-from-source's redundant section to '## Build steps' - scope node-types' repeated 'Recommended Specifications'/'Configuration' headings per node type and update the staking link to the new anchor - normalize two '## bee.yaml' code comments to '#' in set-target-neighborhood and staking Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Yejin Kelly Joo <yejinkellyjoo@gmail.com>
- normalize the seven '## bee.yaml' YAML comments in configuration.md code blocks to '# bee.yaml' Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Yejin Kelly Joo <yejinkellyjoo@gmail.com>
- add the trailing slash to the concepts/DISC link so it matches the canonical page URL (clears the validator's stale-link warning) - expand GSOC to 'Graffiti Several Owner Chunk' to match the page - reword the DISC description to 'Distributed Immutable Storage for Chunks' Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Yejin Kelly Joo <yejinkellyjoo@gmail.com>
✅ Deploy Preview for test-twitter-preview-testing-3 ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
crtahlin
approved these changes
Jul 27, 2026
crtahlin
left a comment
Collaborator
There was a problem hiding this comment.
Approving — clean, well-structured AEO/GEO pass. Site-wide + per-doc JSON-LD, llms.txt/sitemap discovery, answer-first ledes, heading hygiene, and a CODING.md convention to keep it consistent. The config JSON-LD, DocItem/Layout swizzle, and OG fixes are correct and thoughtfully documented; build + Netlify deploy are green. One small consistency nit worth fixing (non-blocking).
Should fix (nit)
static/llms.txt— DISC expansion doesn't match the page. This changes it to "Distributed Immutable Storage for Chunks", butdocs/concepts/DISC/DISC.mdx(title, description, and body) says "Distributed Immutable Storage of Chunks". Since these strings feed answer engines, they should match — suggest "Storage of Chunks."- Separately (broader editorial call, not for this PR): both now diverge from the Book-of-Swarm canonical "Distributed Immutable Store for Chunks (DiSC)", where "Store" was chosen deliberately for the acronym.
Nice work
- GSOC fixed to the correct expansion — "Graffiti Several Owner Chunk", now consistent across the page frontmatter, body, and
llms.txt(verified against docs.ethswarm.org + bee-js). - OG/Twitter URL fixes — stale
raw.githubusercontent.com/.../set-meta-tags/...andtest-twitter-preview-testing-3.netlify.apprepointed todocs.ethswarm.org; both target images confirmed present. - Swizzle done right — wraps rather than ejects, deliberately avoids re-emitting
BreadcrumbList(the theme already does), documents the shared#organization/#website@idcontract and the "swizzles don't auto-upgrade" caveat. - JSON-LD
SearchActiontarget correctly matches Docusaurus + Algolia's/search?q=page.
Checklist
- Correctness (GSOC verified correct; DISC for/of nit above)
- Security — none (static docs/meta)
- Breaking changes — none (anchors preserved via
{#slug}; additive JSON-LD) - Tests — N/A for docs;
build+deploy/netlifygreen in CI
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.
What does this PR resolve? 🚀
Improves the docs site's AEO/GEO (Answer / Generative Engine Optimization) — how well search and AI answer engines can discover, parse, and extract correct answers from the documentation.
Sitemap:directive andllms.txtpointers inrobots.txt, anllms.txthead<link>, and fixes stale homepage OG/Twitter URLs.llms.txtslices).CODING.mdso new content stays consistent.Details 📝
Three layers, applied in sequence and committed separately:
1. Structured data & discovery
docusaurus.config.mjs: site-wideOrganization+WebSiteJSON-LD (with aSearchAction) viaheadTags, plus anllms.txt<link>.src/theme/DocItem/Layout/index.js: a wrapper swizzle emitting per-docTechArticleJSON-LD from existing frontmatter. It deliberately does not emitBreadcrumbList— the Docusaurus theme already does. The#organization/#website@ids are a shared contract with the config block.static/img/logo-512.png: new 512×512 Organization logo.static/robots.txt:Sitemap:+llms.txtcomment (crawler policy left open).static/llms.txt: corrected theconcepts/DISC/slug (clears the validator's stale-link warning) and aligned the GSOC / DISC entry descriptions.src/pages/index.js: homepage OG/Twitter URLs repointed from stale GitHub-branch / netlify-test URLs todocs.ethswarm.org.themeConfig.imageintentionally deferred until a purpose-built 1200×630 card exists.2. Content answer-readiness
what-is-swarm— definition promoted above the citation paragraph; duplicate H1 removed), preserving on-brand voice after the factual sentence.{#slug}so no anchors break.descriptionrewrites (all 9desktop/pages + generic develop/reference ones).gsoc.mddescription said "Group Send Over Content"; the page defines GSOC as "Graffiti Several Owner Chunk".3. Heading hierarchy hygiene
Contribute to Bee Development,Tools & Features) withsidebar_label: Overview.node-types.md's repeatedRecommended Specifications/Configurationheadings per node type (staking's deep-link updated to the new anchor).## bee.yamlYAML comments to#in code examples.Follow-ups (not in this PR): a Tier-3 "extraction aids" pass (key-facts callouts, comparative-prose → tables, de-deictic prose) is planned but deferred pending content-expert review; plus
FAQPageJSON-LD,agent-card.jsonorg realignment, and a real 1200×630 OG image.Checklist ✅
masterand resolved conflictsnpm run buildsucceedsnpm run check:links) where relevantstatic/llms.txtupdated if pages were added / renamed / deletedSwarmvsswarm, ..)git commit -s)