## 文書サーバー SEO 改善と再構築

**2026-05-30**

本日、2つの軸で更新を公開しました。コンテンツレンダラーをページタイプ間で統一し、その上に完全なSEO整備を実施しています。

### レンダリングのリファクタリング

- **ボード、リスト、ボードグループ、ボードリストが単一のカードレンダラーを共有**:内側余白、背景、シャドウ、角の丸みがタイプ間で完全に一致します。リストのタイトルもボードと同じ `h5` 体裁になりました。
- **各ページに `<h1>` を1つだけ**、パンくず最後の項目に配置 — 自然な位置で、追加の視覚スペース不要、ページ見出しの唯一の情報源となります。
- **全面的なHTMLエスケープ**:ユーザー入力に由来するすべての文字列(名前、説明、パンくずラベル、canonical URL、OG画像URL)が `html_escape` を経てテンプレートに渡されます。`Q&A: when to use "file"` のような名称が属性を壊すことはなくなりました。
- **細部の調整**:カード行のアイコンとテキストの間隔、リストとボードの角の丸みの統一、リストタイトルの上下余白をボードカードに合わせて整えました。

### SEOと多言語URL

- **`/zh/...` および `/ja/...` URL**:各ページが、各言語ごとのクロール可能な独立URLでアクセス可能になりました。素のURL(例: `/policies/`)は引き続きデフォルト言語(英語)を提供します。
- **各ページに `<link rel="alternate" hreflang="...">`**:Googleがユーザーの言語に応じて正しいバージョンを表示できます。
- **`canonical`、Open Graph、Twitter Card、JSON-LD BreadcrumbList** タグを全ページに完備。SNSのリンクプレビューでタイトル・説明・画像が正しく表示されます。
- **`/sitemap.xml`**:バックグラウンドで毎時自動生成・更新。すべてのページと各言語のhreflang代替URLを含みます。
- **`/op/switch_lang/<code>`**:URLとCookieを同期させる新しい言語切替エンドポイント。「中文」をクリックすると `/zh/<現在のページ>/` に移動します。

### 理由

レンダリングのリファクタリングは、長年ページタイプごとに重複していた実装を整理するものです。SEO・多言語対応により、ドキュメントが発見可能でシェア可能になります:メインサイトのユーザーには言語設定を維持しつつ、検索エンジンには各言語を独立したクロール可能なページとしてインデックスさせます。
