Skip to content

docs: SEO & AEO optimization across 23 core pages#1074

Merged
yingjunwu merged 2 commits intomainfrom
seo-aeo-optimization
Mar 20, 2026
Merged

docs: SEO & AEO optimization across 23 core pages#1074
yingjunwu merged 2 commits intomainfrom
seo-aeo-optimization

Conversation

@yingjunwu
Copy link
Contributor

Summary

  • FAQ pages rewritten with H2 question headings (replacing Accordion-only format) and FAQPage JSON-LD structured data injected for Google Rich Snippets
  • Title & meta description optimized across 20+ high-traffic pages with target keywords (streaming database, PostgreSQL-compatible, real-time, CDC, etc.)
  • Opening paragraphs rewritten as self-contained answers for AEO (Answer Engine Optimization), enabling AI search engines (Perplexity, ChatGPT, Google AI Overview) to cite directly
  • Image alt attributes added for accessibility and image SEO
  • Internal cross-linking improved with descriptive anchor text

Pages modified (23)

Category Files
FAQ faq-overview, faq-using-risingwave, faq-when-to-use-risingwave
Get Started intro, quickstart, architecture, source-table-mv-sink, use-cases
Ingestion overview, cdc-with-risingwave, kafka, pg-cdc, mysql-cdc
Processing overview
Serve / Delivery serve/overview, delivery/overview
SQL sql-create-mv, sql/overview
Reference key-concepts, risingwave-flink-comparison
Other store/overview, iceberg/overview, deploy/deployment-modes-overview

Expected SEO/AEO impact

  • Google Rich Snippets: FAQ pages now eligible for FAQ rich results via FAQPage JSON-LD
  • Higher CTR: Keyword-optimized titles and descriptions improve click-through from SERPs
  • AI citation rate: Self-contained first paragraphs increase likelihood of being cited by AI search engines
  • Image SEO: Descriptive alt text improves image search visibility and accessibility

Test plan

  • Verify Mintlify build succeeds with no rendering errors
  • Spot-check FAQ pages render correctly (H2 headings + content visible without Accordion)
  • Validate JSON-LD structured data with Google Rich Results Test
  • Verify meta tags render correctly in browser dev tools on deployed preview

🤖 Generated with Claude Code

- Rewrite FAQ pages with H2 question headings (replacing Accordion-only format)
  and inject FAQPage JSON-LD structured data for Google Rich Snippets
- Optimize title and meta description frontmatter across 20+ high-traffic pages
  with target keywords (streaming database, PostgreSQL-compatible, real-time, etc.)
- Add descriptive alt attributes to images for accessibility and image SEO
- Rewrite opening paragraphs to be self-contained answers for AEO
  (Answer Engine Optimization) — enabling AI search engines to cite directly
- Improve internal cross-linking with descriptive anchor text
- Convert nested Accordion content to structured Markdown with tables and headers

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates core RisingWave docs pages to improve SEO/AEO by rewriting titles/meta descriptions and opening paragraphs, adding missing image alt text, and restructuring FAQ pages with H2 question headings plus FAQPage JSON‑LD.

Changes:

  • Rewrites/optimizes frontmatter (title, description, sidebarTitle) across 20+ pages for search intent and richer snippets.
  • Refactors FAQ pages from Accordion-only layouts to H2-based Q&A and injects FAQPage JSON-LD.
  • Adds/expands first-paragraph “direct answer” content and improves accessibility via image alt text.

Reviewed changes

Copilot reviewed 23 out of 23 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
store/overview.mdx Updates title/description and reframes storage intro around Hummock + Iceberg.
sql/overview.mdx Updates SEO-focused title/description and frontmatter layout key.
sql/commands/sql-create-mv.mdx Updates title/description and adds sidebarTitle for the CREATE MV reference page.
serve/overview.mdx Updates “Access” page title/description for query/serving keywords.
reference/risingwave-flink-comparison.mdx Updates comparison page title/description for search-friendly phrasing.
reference/key-concepts.mdx Renames “Glossary” page and adds a clarifying intro paragraph.
processing/overview.mdx Rewrites overview and strengthens positioning around SQL-based streaming + ad-hoc queries.
ingestion/sources/postgresql/pg-cdc.mdx Updates title/description to emphasize native Postgres CDC replication.
ingestion/sources/mysql/mysql-cdc.mdx Updates title/description to emphasize native MySQL CDC replication.
ingestion/sources/kafka.mdx Updates title/description to better match Kafka connector search terms.
ingestion/overview.mdx Updates title/description around ingestion patterns (stream/batch/CDC).
ingestion/cdc-with-risingwave.mdx Updates title/description and rewrites intro for CDC landing page.
iceberg/overview.mdx Updates title/description for Iceberg integration positioning.
get-started/use-cases.mdx Rewrites page intro to be a self-contained “answer-first” overview.
get-started/source-table-mv-sink.mdx Updates title/description for core object concepts and keywords.
get-started/quickstart.mdx Updates title/description to be more task/outcome oriented.
get-started/intro.mdx Updates title/description, adds an answer-first intro paragraph, and adds image alt text.
get-started/architecture.mdx Updates title/description, rewrites intro paragraph, and adds image alt text.
faq/faq-when-to-use-risingwave.mdx Converts to H2 Q&A format, adds alt text, and injects FAQ JSON-LD.
faq/faq-using-risingwave.mdx Converts to H2 Q&A format and injects FAQ JSON-LD.
faq/faq-overview.mdx Updates title/description and improves card copy/order.
deploy/deployment-modes-overview.mdx Updates title/description and adds sidebarTitle.
delivery/overview.mdx Updates title/description to emphasize sinks/delivery keywords.

- **Streaming state management**: Storing operators' internal state such as hash tables, aggregation buffers, and join state efficiently.
- **Point queries**: Ad-hoc queries on stored data that look up specific rows by key, which is a common access pattern for serving workloads.

For analytical queries that benefit from columnar storage, RisingWave supports native [Apache Iceberg table engine](/iceberg/iceberg-table-engine), allowing you to store and query data in columnar format alongside row-based storage.
Copy link

Copilot AI Mar 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The link target /iceberg/iceberg-table-engine does not exist in this repo (no corresponding .mdx), so this will render as a dead link. Consider pointing to an existing Iceberg engine page such as /iceberg/internal-iceberg-tables or the general /iceberg/overview page.

Suggested change
For analytical queries that benefit from columnar storage, RisingWave supports native [Apache Iceberg table engine](/iceberg/iceberg-table-engine), allowing you to store and query data in columnar format alongside row-based storage.
For analytical queries that benefit from columnar storage, RisingWave supports native [Apache Iceberg table engine](/iceberg/internal-iceberg-tables), allowing you to store and query data in columnar format alongside row-based storage.

Copilot uses AI. Check for mistakes.
Comment on lines +2 to +7
title: "RisingWave storage | Hummock row store & Apache Iceberg columnar engine"
sidebarTitle: "Storage"
description: Learn how RisingWave stores data (Hummock and Iceberg) and where persisted data lives.
description: "Understand how RisingWave stores data: Hummock row-based storage on object storage (S3, GCS) for streaming state, and native Apache Iceberg columnar engine for analytics. Two storage options compared."
---

This page explains **what it means to “store data” in RisingWave**, where the persisted data lives, and how to choose between RisingWave’s two storage options.
RisingWave offers two storage engines: **Hummock**, a row-based LSM-tree engine that stores tables, materialized views, and streaming state in object storage (S3, GCS, Azure Blob), and a native **Apache Iceberg columnar engine** for analytics workloads. This page explains what data gets persisted, where it lives, and how to choose between the two options.
Copy link

Copilot AI Mar 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The page describes Iceberg as a “columnar engine” and says RisingWave has “two storage engines”. In the rest of the docs Iceberg is referred to as the “Iceberg table engine” / Iceberg table format rather than a storage engine on its own. Consider adjusting the terminology here to match the existing Iceberg docs to avoid confusing readers about what is actually a RisingWave storage engine vs an Iceberg-backed table option.

Copilot uses AI. Check for mistakes.
---
import { Button } from '/snippets/button.mdx';

RisingWave is an open-source streaming database that is wire-compatible with PostgreSQL. It provides a unified platform for real-time data ingestion from 20+ sources (Kafka, CDC, S3), stream processing via incrementally maintained materialized views, low-latency serving with sub-20ms p99 query latency, and native Apache Iceberg lakehouse management. RisingWave stores data in object storage (S3, GCS, Azure Blob) for cost efficiency and infinite scalability, and can be deployed via Docker, Kubernetes, or the fully managed RisingWave Cloud.
Copy link

Copilot AI Mar 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The intro paragraph includes a specific performance claim (“sub-20ms p99 query latency”) without any benchmark link, methodology, or environment details. This kind of hard number tends to become inaccurate quickly and can be misleading in docs; consider removing the numeric claim or linking to a maintained benchmark page and stating the conditions under which it was measured.

Suggested change
RisingWave is an open-source streaming database that is wire-compatible with PostgreSQL. It provides a unified platform for real-time data ingestion from 20+ sources (Kafka, CDC, S3), stream processing via incrementally maintained materialized views, low-latency serving with sub-20ms p99 query latency, and native Apache Iceberg lakehouse management. RisingWave stores data in object storage (S3, GCS, Azure Blob) for cost efficiency and infinite scalability, and can be deployed via Docker, Kubernetes, or the fully managed RisingWave Cloud.
RisingWave is an open-source streaming database that is wire-compatible with PostgreSQL. It provides a unified platform for real-time data ingestion from 20+ sources (Kafka, CDC, S3), stream processing via incrementally maintained materialized views, low-latency serving, and native Apache Iceberg lakehouse management. RisingWave stores data in object storage (S3, GCS, Azure Blob) for cost efficiency and infinite scalability, and can be deployed via Docker, Kubernetes, or the fully managed RisingWave Cloud.

Copilot uses AI. Check for mistakes.
**Easy to use**: By aligning with PostgreSQL's syntax, functions, and data types, RisingWave minimizes the learning curve. Even for creating streaming jobs, there is no need to learn streaming-specific concepts — just write standard SQL.

**Powerful**: RisingWave fully supports and optimizes a variety of SQL features, including advanced features such OVER window and different kinds of JOINs. At the same time, we are also committed to expanding the expressive power of SQL, such as by adding semi-structured data types and corresponding expressions.
**Powerful**: RisingWave fully supports advanced SQL features including OVER window functions, multi-way JOINs (inner, outer, semi, anti), time-windowed aggregations (tumble, hop, session), and semi-structured data types (JSONB, arrays, structs).
Copy link

Copilot AI Mar 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line lists “semi” and “anti” as JOIN types. Elsewhere the SQL docs describe joined tables as supporting inner/outer/cross joins (see sql/query-syntax/from-clause.mdx), so this phrasing is inconsistent and may imply unsupported syntax. Consider aligning the wording with the documented join types or clarifying how semi/anti semantics are expressed (e.g., via EXISTS/NOT EXISTS) if that’s what’s intended.

Suggested change
**Powerful**: RisingWave fully supports advanced SQL features including OVER window functions, multi-way JOINs (inner, outer, semi, anti), time-windowed aggregations (tumble, hop, session), and semi-structured data types (JSONB, arrays, structs).
**Powerful**: RisingWave fully supports advanced SQL features including OVER window functions, multi-way JOINs (inner, outer, cross) and semi/anti join semantics (for example, using `EXISTS` / `NOT EXISTS`), time-windowed aggregations (tumble, hop, session), and semi-structured data types (JSONB, arrays, structs).

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

@yingjunwu yingjunwu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tech Writer Review: SEO & AEO optimization

Overall this is a solid SEO/AEO optimization pass. The FAQ restructuring from Accordions to H2 headings is the biggest win, and the JSON-LD structured data is a nice addition. A few items to address:


🔴 Issues to Fix

1. Many titles exceed Google's ~60 character display limit

These will get truncated in SERPs, which hurts CTR — the opposite of what we want:

Page Title Length
deploy/deployment-modes-overview "Deploy RisingWave | Docker, Kubernetes, Helm & Cloud deployment options" 73
get-started/use-cases "RisingWave use cases | Streaming analytics, fraud detection & real-time ETL" 77
ingestion/cdc-with-risingwave "Change data capture (CDC) with RisingWave | Real-time database replication" 75
ingestion/overview "Data ingestion patterns | Stream, batch & CDC ingestion into RisingWave" 72
reference/risingwave-flink-comparison "RisingWave vs. Apache Flink | Feature comparison for stream processing" 72
store/overview "RisingWave storage | Hummock row store & Apache Iceberg columnar engine" 72
processing/overview "Real-time data processing in RisingWave | Streaming & ad-hoc queries" 70
get-started/architecture "RisingWave architecture | Serving, streaming, meta & compactor nodes" 70
serve/overview "Query & serve data from RisingWave | SQL, FDW & visualization tools" 68

Recommend trimming to ≤60 chars. The part after | is the one Google tends to cut — so front-load the valuable keywords.

2. Some meta descriptions exceed ~160 characters and will get truncated

Examples:

  • faq/faq-overview: 214 chars
  • deploy/deployment-modes-overview: 186 chars
  • delivery/overview: 177 chars

Trim to ~150-155 chars. Put the most important keywords/info in the first 150 chars.

3. JSON-LD rendering in Mintlify needs verification

The {JSON.stringify({...})} pattern inside <script type="application/ld+json"> is a JSX/MDX approach. Need to confirm Mintlify actually executes this at build time and outputs valid JSON-LD in the HTML. If Mintlify doesn't process JSX expressions inside <script> tags, the structured data will be broken. Suggest testing with a deploy preview and validating with the Rich Results Test before merging.

4. Unverified numeric claims in new opening paragraphs

  • intro.mdx: "20+ sources" — verify the exact count of source connectors
  • intro.mdx: "sub-20ms p99 query latency" — is this benchmarked? What workload? This is a marketing claim that could undermine trust if not accurate
  • delivery/overview.mdx: "30+ downstream systems" — verify the actual count

If these numbers aren't precisely documented, use softer language or link to the connectors page.


🟡 Suggestions (Non-blocking)

5. intro.mdx opening paragraph is very dense

The new opening paragraph is a single 60+ word sentence. For AEO it's better to have a self-contained answer, but it should still be readable. Consider breaking it into 2-3 shorter sentences.

6. architecture.mdx opening paragraph is now very long

The original "RisingWave has four main components..." was clean and scannable. The new version packs all four node types with descriptions into one sentence. The table right below already explains each node — consider keeping the opener shorter and letting the table do the heavy lifting.

7. sql/overview.mdx: modmode fix is good

This is a bug fix — the original had mod: wide which was likely a typo. Good catch, but worth calling out in the PR description since it's a functional fix, not just SEO.

8. Link validity — please verify these paths exist

  • [Memory management and tuning](/operate/memory-control) added in faq-using-risingwave.mdx
  • [Apache Iceberg table engine](/iceberg/iceberg-table-engine) added in faq-when-to-use-risingwave.mdx

✅ What works well

  • FAQ restructuring from nested Accordions to H2 + subsections is a major readability improvement
  • Comparison tables in faq-when-to-use-risingwave (streaming vs OLAP, MV comparison) are much better than the original wall-of-text
  • <Note> blocks for important caveats (e.g., "reserved memory must be at least 512 MB")
  • Version history table for reserved memory is clearer than the nested Accordion approach
  • Alt text additions are good for accessibility
  • Card reordering in faq-overview ("When to use" before "Using") makes sense from a user journey perspective

Summary: Main blockers are (1) verify JSON-LD renders correctly in Mintlify, (2) trim titles/descriptions that exceed SERP display limits, and (3) verify numeric claims. The rest are polish items.

… content

- Fix 2 broken links: /operate/memory-control → /operate/tune-reserved-memory,
  /iceberg/iceberg-table-engine → /iceberg/internal-iceberg-tables
- Trim 9 titles that exceeded Google's ~60 char SERP display limit
- Trim 4 descriptions that exceeded ~160 chars
- Remove unverified "sub-20ms p99" performance claim from intro
- Soften "20+" and "30+" connector count claims
- Shorten dense opening paragraphs in intro.mdx and architecture.mdx
- Fix "semi, anti" join terminology per Copilot review
- Align "Iceberg table engine" terminology with existing docs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@yingjunwu
Copy link
Contributor Author

Correction to my earlier review:

Item #8 (link validity) — I listed incorrect paths. The actual links in the PR are:

  • [Tune reserved memory](/operate/tune-reserved-memory) ✅ exists
  • [native Iceberg tables](/iceberg/internal-iceberg-tables) ✅ exists

All 10 internal links added/modified in this PR have been verified and are valid. No link issues.

@yingjunwu yingjunwu merged commit f0a4f7b into main Mar 20, 2026
6 checks passed
@yingjunwu yingjunwu deleted the seo-aeo-optimization branch March 20, 2026 00:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants