SEO, metadata, and AIO optimization policy
Decision
- Prohibit ad-hoc per-page metadata output and centralize head generation in a shared layer (dedicated head responsibility under
Layout). - Ensure indexable pages never have contradictions across
title,description,canonical,hreflang, andog:url. - Make Open Graph and Twitter metadata mandatory for shareable pages, with absolute image URLs.
- Use
noindexonly for pages intentionally excluded from search results, aligned with sitemap inclusion rules. - For AIO (AI Overview and similar systems), avoid hacks and focus on high-quality primary content plus valid structured data.
Required metadata fields and rules
| Field | Rule |
|---|---|
title | Required on every page. Default format: `{Page Title} |
description | Required on every page, plain text, concise, and consistent with visible content. |
canonical | Required absolute URL, without query/hash, pointing to the preferred indexable URL. |
robots | Default for public pages: index,follow,max-image-preview:large. |
og:url | Must match canonical exactly. |
canonical / hreflang operation
- Emit
hreflangonly for translations that actually exist. - Use default-locale (
ja) representative URL forx-default. - Do not emit
hreflangfor untranslated locales. - Each localized page must canonicalize to itself (no cross-locale canonicalization).
OGP / Twitter cards
- The following are mandatory for shareable pages:
og:type(websiteorarticleby page type)og:titleog:descriptionog:urlog:image(absolute URL)og:image:alttwitter:card(summary_large_image)twitter:titletwitter:descriptiontwitter:image
- Use
/brand/og.jpgas the site-wide fallback image when a page does not provide a dedicated social image (the actual file will be added in a follow-up task).
noindex / sitemap alignment
- Pages with
noindex: truemust emitmeta robotsasnoindex,nofollowand be excluded from sitemap output. - Keep
X-Robots-Tag: noindexfor non-production hosts such asworkers.dev. - Keep
draftandnoindexas distinct meanings:draft: not publishable yetnoindex: published but intentionally excluded from search results
Structured data (core for AIO readiness)
- Keep existing
PersonandBreadcrumbList. - Add page-type structured data:
- Detail pages (blog, release notes, ADR):
Article(orTechArticlewhen appropriate) - Index pages (changelog, tools, etc.):
CollectionPage - About page:
ProfilePage
- Detail pages (blog, release notes, ADR):
- JSON-LD must reflect only rendered facts; do not include fabricated ratings, numbers, or claims.
Content principles for AIO reuse
- Do not add hidden AI-only text. Place a concise, high-signal intro near the top of each page.
- Keep heading hierarchy valid and prefer one main topic per page.
- Make definitions and procedures self-contained instead of relying on external context.
Context
Current implementation already covers title, description, canonical, and hreflang to some extent, but the following remain inconsistent or missing:
- Unified Open Graph and Twitter output policy
- Operational rules connecting
noindexand sitemap generation - Structured data policy by page type
- Shared content criteria that work for both search snippets and AI-generated summaries
Given the current multilingual architecture (ja as default locale, other locales as path prefixes), we need a single policy that improves machine readability without breaking existing routing.
Options
- Option A: Continue page-by-page metadata customization
- Option B: Keep only minimal tags (
title/description/canonical) - Option C: Define and enforce a shared metadata + structured data policy (chosen)
Rationale
- Consistency: Prevent canonical/hreflang/og:url mismatch.
- Operational safety: Reduce missing-tag regressions on new pages.
- Reusability: Make one source of truth reusable for search, social cards, and AI summaries.
- Extensibility: Enable phased rollout of social image automation and metadata checks.
Consequences
- Implementation work is required to introduce a shared SEO head responsibility (or expand current
Layoutresponsibilities). - Content Collection schemas need consistent SEO fields (
ogImage,noindex, etc.). - CI checks should detect missing required tags, canonical-hreflang inconsistencies, and noindex pages leaking into sitemap.
- Success criteria:
- 100% required metadata coverage on indexable pages
- 100%
canonicalandog:urlparity - 0 structured-data validation errors
hsb.horse